eMMC 存储介质目前越来越广泛的应用在嵌入式系统中, AM335x 的用户也越来越多的使用EMMC 作为系统的主要存储介质。目前AM335x 的几款官方demo 板中,只有BeagleBone Black上加入了对eMMC 芯片的支持,很多用户也是参考BeagleBone Black进行自己AM335x 系统的eMMC 设计。笔者最近分别通过TI Uniflash 和SD卡完成了BeagleBone Black上eMMC 芯片的烧写验证工作,软件基于AM335x Linux SDK06,总结出
1.2 eMMC 烧写原理
本文介绍的验证方法是使用Uniflash 工具通过USB 对BeagleBone Black上的eMMC 进行烧写,原理是通过Romcode,SPL和u-boot 三个阶段,将一个专门用于eMMC 烧写的Linux 操作系统在BeagleBone Black板上运行起来,并自动运行脚本进行烧写。第一阶段,通过设置AM335x 的sysboot 管脚,使AM335x 的启动项包含USB0启动。
BeagleBone Black的默认启动设置为: MMC1-》MMC0-》UART0-》USB0, MMC1 和MMC0 分别连接了eMMC 和SD卡,如果eMMC 为空,并且不插SD卡,芯片上电后执行的Romcode 就会执行USB启动。Romcode 会初始化USB RNDIS以太网络通信协议,通过Windows 宿主机上Uniflash 自带的DHCP服务器进程拿到分配的IP 地址,然后再通过Windows 宿主机上Uniflash 自带的TFTP服务器进程将Uniflash 设定的tftp 目录下用于eMMC 烧写的特殊的SPL下载到AM335x 的内部ram 中并运行。
第二阶段,用于eMMC 烧写的特殊的SPL执行之后,会初始化USB RNDIS以太网络通信协议,并通过Windows 宿主机上Uniflash 自带的DHCP服务器程序拿到分配的IP 地址,然后再通过宿主机上Uniflash 自带的TFTP服务器程序将Uniflash 设定的tftp 目录下用于eMMC 烧写的特殊的U-boot.img 下载到板子上的DDR3中并运行。
第三阶段,用于eMMC 烧写的特殊的U-boot.img 执行之后,通过执行u-boot 中的DHCP和TFTP命令,将Windows 宿主机上Uniflash 设定的tftp 目录下的用于烧录eMMC的Linux uImage 下载到板子的DDR3中并运行。这个Linux uImage 会通过执行启动脚本,通过tftp 的方式,将Windows 宿主机上Uniflash 设定的tftp 目录下名为debrick.sh 脚本下载并执行, debrick.sh 可实现eMMC 的擦除和烧写。
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
全部0条评论
快来发表一下你的评论吧 !