前段时间由于工作需要研究了am335x的usb启动功能,由于在网上找的方法不全,很多细节需要自己摸索,在这里我记录了自己的实现过程,现在已经能从usb更新系统镜像。
uniflash版本:3.3或3.4。 (5.x的好像不支持am33xx系列的芯片)
uniflash下载地址:https://processors.wiki.ti.com/index.php/CCS_UniFlash_v3.4.1_Release_Notes
uboot版本: uboot-201x的都可以,只要移植好能够在am335x上运行的都可以。
(网上说补丁我没有找到,其实不需要,自己简单改一下,也就是更改等待时间和开启cache加速)
系统版本最好为win7, win10的为识别为串口设备,需要手动安装驱动
一.基本原理
1.第一阶段
am335x从usb启动,irom中实现了usb虚拟网卡功能,上位机软件uniflash实现了dhcp服务和tftp服务,板子启动后通过dhcp获取到ip后,就会下载spl镜像到sram中运行(spl镜像名字为:u-boot-spl-restore.bin,是uboot编译出的u-boot-spl.bin改名得到的,这个名字是在uniflash的dhcp服务中设定的,板子的dhcp在获取到ip后,会接收到dhcp服务发出的vendor-class-identifier字段,这个里面包含的文件名为u-boot-spi-restore.bin);
2.第二阶段
spl配置为usbeth启动后(uboot配置时添加定义宏:CONFIG_SPL_USBETH_SUPPORT),spl会再次通过usb模拟网络,电脑会再次识别网络设备。这时spl再次通过dhcp获取ip,下载u-boot-restore.bin到板子的drr中运行,这时uboot就正常启动,更新过程就由 uboot控制了。
具体am335x的usb启动更新原理可以参考:http://software-dl.ti.com/processor-sdk-linux/esd/docs/latest/linux/Foundational_Components_Tools.html#sitara-uniflash
二.具体实现
1.使用spl支持usb启动,在配置文件include/configs/xxx.h