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接口,可定制宽温的工业组件,运行于条件恶劣的工业现场!

                  

 产品参数

FUNCTION

HMI-T335

主要参数

主控制器 

TI  Am335X 、Cortex-A8,600MHz~1GHZ(MAX)

内存 

256/512MB DDR3

闪存 

NAND 或 EMMC 可选

蜂鸣器

支持

时钟

ISL1208

看门狗

支持

电源管理

TPS65217C (可支持电池供电的移动应用)

复位

支持软件和硬件复位 (直接写寄存器)

I/O

串口

3 x RS232,1 x RS422或RS485(可选)

以太网

RJ45  1 x 10/100Mbps

USB

3 x USB HOST 、1 x  USB OTG

TF卡

1 x TF 卡

电容触摸

支持多点触摸

LED

3 x LED

CAN

1 x CAN

SPI接口

2

GPIO

多个3.3V LVTTL电平,可根据具体项目定制

通信

WIFI

1 x AP6181 SDIO WIFI 或1 x RTL 8188 USB WIFI可选,

(Wince 7.0暂时不支持SDIO WiFi)

多媒体 

Graphic Chip

支持2D/3D,仅对于AM3354/9

分辨率

 普清:800*480 高清1024*600,亦可定制不同分辨率的屏幕尺寸

LCD接口

16位 AT070TN92/NJ070N-23A 液晶屏

调试

JTAG

14pin

电源

电源

5.0 V或12.0V(+-5%)输入 ,两者不可同时输入

Power Consumption

1A(MAX,不带屏和U盘等外设)

尺寸 & 环境

尺寸 

150MM*116MM

工作温度

0 ~ 70° C (-20 ~ 75°C度可定制)

工作湿度

5 ~ 95 % ,冷凝结

其他 

RoHS

YES

认证

CE

软件支持

Wince7.0/Linux 4.4 

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

 

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值