AM335X主板USB盘更新EMMC系统解决方案

AM335X的启动方案有两种,一种是NAND FLASH启动,这种启动方式可以很方便进行固件的更新,一般在u-boot下就可以快速更新。

另外一种启动方式是EMMC,比如我们大家都非常熟悉的beaglebone主板,它就是EMMC启动的。因为EMMC的特殊性,并没有办法

像NAND那样在u-boot下更新,因此盈鹏飞嵌入式为了方便用户,特别提出了如下解决方案--使用USB盘快速更新EMMC固件;

以下解决方案是在盈鹏飞嵌入式HMI-T335主板上演示通过。HMI-T335主板是一款针对于人机界面方向的主板。

它分为两个部分,一部分是用户的工程底板,一部分是核心模块CoM-T335核心模块(以TI AM335X为核心)。

以下是他们的简要介绍:

CoM-T335简要介绍:

CoM-T335 v1.1亮点:

Cortex-A8邮票孔AM335X核心模块,精设计,低成本,可信赖

◆ 高速Cortex-A8核心,最高运行1GHZ;

◆ 单颗256M/512M字节DDR3  SDRAM,成本更低廉;

◆ 大容量板载电子盘,更多用户空间;

◆ 精致邮票孔设计,超小尺寸40mm*40mm,批量使用成本更低;

◆ 1路10M/100M/1000M以太网;

◆ 核心板独立RTC, 走时精准;

◆ 最优秀的显示性能,分辨率高达1366*768;

◆ CPU内置6路RS232串口(其中1路232为COM_DBU);

◆ 外部扩展3*IIC,2*SPI接口;

◆ CPU内置双路CAN BUS,适合于现场工业控制;

◆ 支持SD卡接口,大容量存储;

◆ 高速USB 2.0  OTG接口;

◆引出JTAG接口(V1.1版本硬件,4线电阻触摸屏),便于裸机系统调试。

◆EMMC启动版本兼容BeagleboneBlack。

◆ 专业WINCE 7.0、LINUX 4.4、ANDROID操作系统支持,

◆支持SD卡初始化系统,可USB盘升级系统;

◆ 核心板高集成度,可以直接应用,可根据客户定制主板;

AM335x框图

CoM-T335v1.1实物图

HMI-T335简要介绍:

HMI-T335是基于AM335x(CoM-T335v1.1)核心模块的人机界面(可定制宽温)工控主板,稳定运行Wince7.0或Linux4.4系统。支持4串口(3路RS232、1路RS422或RS485)、CAN总线、电容屏多点触摸、WIFI、JTAG、百兆以太网等。可以广泛用于控制现场、医疗仪器、数控机床、环境保护监测等领域。

CoM-T335v1.1工控模块产品集成了 ARM Cortex-A8 1GHz(MAX) TI AM335X 处理器,稳定运行Wince 7.0 Linux 4.4。 CoM-T335v1.1提供了3.3V I/O接口,可定制宽温的工业组件,运行于条件恶劣的工业现场! 

产品参数:

前言

AM335x支持多种启动模式,针对不同的应用场景,需要的启动设备不同。本手册主要介绍从eMMC启动u-boot,读取U盘中镜像并更新。

1 USB更新原理简述

本章简单介绍HMI-T335启动原理及目前所支持的启动媒质。

1.1启动原理

AM335x 复位后执行片内ROM code,ROM code 加载u-boot到片内执行,u-boot初始化外部RAM,网络等设备,为引导linux内核做准备。由于AM335x片内的RAM大小有限(109KB),不能完全加在u-boot镜像,所以u-boot分成两级引导——SPL(MLO)与u-boot。ROM code 启动流程如图1-1所示:

图1-1 ROM code 启动流程

注:截图来源《AM335x and AMIC110 Sitara Processors Technical Reference Manual (Rev.Q)》。

1.2启动媒质

AM335x支持多种启动媒质,包括:NAND,MMC/SD card,SPI,UART,EMAC,USB,其中USB是本手册关注的重点。据AM335x的技术参考手册,ROM code所支持的USB协议是RNDIS并非USB mass storage,USB设备模拟成网络接口,所以ROM code不能直接运行U盘的启动镜像——即不能从U盘引导SPL与u-boot镜像。USB 初始化流程如图1-2所示:

图1-2

注:截图来源《AM335x and AMIC110 Sitara Processors Technical Reference Manual (Rev.Q)》。

2 软件原理

HMI-T335 烧写u-boot后,可实现从U盘读取镜像文件(目前,不包括u-boot本身)到RAM,继而写如NAND或eMMC。在u-boot板级文件中支持USB驱动,以及设置自动执行的指令。

u-boot USB驱动代码 (u-boot-2018.01/include/configs/hmi-t335.h)

#define CONFIG_USB_MUSB_DSPS

#define CONFIG_USB_MUSB_PIO_ONLY

#define CONFIG_USB_MUSB_DISABLE_BULK_COMBINE_SPLIT

/*

#define CONFIG_AM335X_USB0

#define CONFIG_AM335X_USB0_MODE MUSB_PERIPHERAL

*/

#define CONFIG_AM335X_USB1

#define CONFIG_AM335X_USB1_MODE MUSB_HOST

#ifdef CONFIG_SPL_BUILD

#undef CONFIG_DM_MMC

#undef CONFIG_TIMER

#undef CONFIG_DM_USB

自动执行的指令 (u-boot-2018.01/board/embfly/hmi-t335/board.c)

run_command("usb reset", 0);

                ret = usb_stor_nums();

                if(ret <= 0) return;

#if defined(CONFIG_NAND__BOOT)

                ret = run_command("fatload usb 0:1 0x82000000 /embfly-hmi-t335/rootfs.ubi", 0);

                if(!ret){

                        run_command("nand erase.part rootfs", 0);

                        run_command("nand write 0x82000000 rootfs ${filesize}", 0);

                }

                ret = run_command("fatload usb 0:1 0x82000000 /embfly-hmi-t335/zImage", 0);

                if(!ret){

                        run_command("nand erase.part rootfs", 0);

                        run_command("nand write 0x82000000 kernel", 0);

                }

                ret = run_command("fatload usb 0:1 0x82000000 /embfly-hmi-t335/hmi-t335.dtb", 0);

                if(!ret){

                        run_command("nand erase.part dtb", 0);

                        run_command("nand write 0x82000000 dtb ${filesize}", 0);

                }

                ret = run_command("fatload usb 0:1 0x82000000 /embfly-hmi-t335/logo.bmp", 0);

                if(!ret){

                        run_command("nand erase.part logo", 0);

                        run_command("nand write 0x82000000 logo ${filesize}", 0);

                }

自动执行的指令可以更新NAND或eMMC,在u-boot初始化板级代码时执行符合条件的指令。当存储媒质为NAND,定义CONFIG_NAND__BOOT宏,则会更新NAND镜像;当存储媒质为eMMC,定义 CONFIG_EMMC_BOOT宏,则会更新eMMC镜像。

要更新的文件在buildroot编译完成后生成,路径为:buildroot-2018.02.12/output/images/。需要注意的是,eMMC更新根文件系统时需同时更新MBR。

3 裸板初始化

①、emmc烧录系统流程,如下图所示:

②、如何制作一张可启动的TF卡呢?根据am335x的启动原理和u-boot烧写原理(烧写时,必须通过 fatload指令加载相关文件到内存才能进行烧写,该fatload指令只能加载根目录下文件,所以只能将tf卡分成一个区并做成根目录),我们首先要取一个空的tf卡,并将该tf卡格式化成fat16或者fat32的格式(不支持其他格式)。作好后,将需要烧写的文件(mlo、zImage、logo.bmp、hmi-t335.dtb、MBR、rootfs.ext4.gz,这几个文件名已经在u-boot代码中确认,不能变更其他名字)拷贝到tf卡上。到此为止做出来的卡插到HMI-T335评估板上还不能启动,我们必须激活这个主分区才能正常启动(请查看附录1_windows下和ubuntu下制作启动sd卡


以下是具体的操作步骤:

①、TF卡初始化:在ununtu主机或者windows主机上将TF卡进行分区,只分一个区即可,然后将该分区格式化成fat32格式,做成可启动的分区(windows下使用DISKPART指令;在linux下使用fdisk指令)。(详情请查看附录1_windows下和ubuntu下制作启动sd卡

②拷贝启动文件:在windows的主机上运行光盘资料\tools目录下的TI_SDCard_boot_Utility_v1_0.exe文件,该工具可以把相关启动文件一次性拷贝到TF卡上。

③、在"Select SD card drive"处选择正确的盘符,并把对应的文件都选择好,点击"Proceed"在弹出格式化磁盘的窗口“文件系统”栏选择FAT32格式,点击“开始”进行格式化,格式化完毕后,会将所有烧写的文件拷贝到卡上,关闭格式化窗口。

④、ubuntu linux下的也可以实现tf卡的制作,只需要以上几个文件直接拷贝到tf卡即可。在linux主机上拷贝完文件后,要确认文件是正确的,否则会出现无法引导。

⑤、准备HMI-T335主板一套,并保证基本系统可正常工作,DC12V电源适配器1个。

使用配套的RS232串口线连接HMI-T335调试串口CN12(AM335X的UART0),并在主机电脑中确认RS232串口的端口号。端口号确认后可在超级终端中进行设置。打开电脑超级终端,其设置如下图所示:

把拷贝烧写文件的TF卡插入TF卡座,上电烧写文件超级终端显示信息如下:

4更新示例

以HMI-T335 eMMC存储媒质的主板为例,介绍如何更新linux 系统镜像。步骤如下:

1,准备USB 2.0 U 盘;

2,U盘文件系统为FAT32,若不是请将其格式化;

3,在U盘根目录新建 “/embfly-hmi-t335/目录,将buildroot-2018.02.12/output/images/目录中镜像保存到/embfly-hmi-t335/目录;

  全部更新:

host# cp MBR rootfs.ext4.gz zImage hmi-t335.dtb   如图3-1所示:

图3-1

4,上电启动HMI-T335,u-boot初始化外设并从U盘读取镜像烧写到eMMC。如图3-2所示:

图3-2
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,100评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,308评论 3 388
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 159,718评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,275评论 1 287
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,376评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,454评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,464评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,248评论 0 269
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,686评论 1 306
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,974评论 2 328
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,150评论 1 342
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,817评论 4 337
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,484评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,140评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,374评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,012评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,041评论 2 351

推荐阅读更多精彩内容