资讯
HOME
资讯
正文内容
用nand flasher 360 iCEasy商城为您传授BeagleBone® Black eMMC烧写全记录
发布时间 : 2024-10-06
作者 : 小编
访问数量 : 23
扫码分享至微信

iCEasy商城为您传授BeagleBone® Black eMMC烧写全记录

eMMC存储介质目前越来越广泛的应用在嵌入式系统中,AM335x的用户也越来越多的使用eMMC作为系统的主要存储介质。目前AM335x的几款官方demo板中,只有BeagleBone®Black上加入了对eMMC芯片的支持,很多用户也是参考BeagleBone®Black进行自己AM335x系统的eMMC设计。笔者最近分别通过TI Uniflash和SD卡完成了BeagleBone®Black上eMMC芯片的烧写验证工作,软件基于AM335xLinux SDK06,总结出来供大家参考。

一、使用TI UniFlash工具通过USBRNDIS烧写

1、TI Uniflash简介

Uniflash是TI开发的存储器烧写工具,可以支持AM335x系统的NAND Flash,NORFlash,SPIFlash,eMMC烧写。可以参考wiki上的guide,在Windows宿主机上下载并安装Uniflash,并按照其中3.3节所述在Windows宿主机上安装USBRNDIS驱动。

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的LinuxuImage下载到板子的DDR3中并运行。这个LinuxuImage会通过执行启动脚本,通过tftp的方式,将Windows宿主机上Uniflash设定的tftp目录下名为debrick.sh脚本下载并执行,debrick.sh可实现eMMC的擦除和烧写。

3、eMMC烧写流程

(1)制作u-boot-spl-restore.bin和u-boot-restore.img

用于烧录eMMC的特殊的SPL和u-boot.img可以通过指定特定的编译参数编译SDK06的U-boot源码获得,在编译之前需要加几个patch如下:

延长USB RNDIS连接等待时间的patch,修改/drivers/usb/gadget/ether.c文件:

使能U-boot中cache用于加快传输时间的patch。修改/include/configs/am335x_evm.h 文件:

修改bootcmd启动参数,在/include/configs/am335x_evm.h中182行修改如下:

加入以上 3 个 patch 之后,在 u-boot 源码目录下输入以下编译指令:

在U-boot源码目录下的boards.cfg文件中,可以看到am335x_evm_restore_flash_usbspl这个编译选项设定了宏RESTORE_FLASH,SPL_USBETH_SUPPORT。

生成的u-boot.img和u-boot-spl.bin分别在在flash-restore\和flash-restore\spl目录下,要将其改为u-boot-restore.img和u-boot-spl-restore.bin并放置Windows宿主机上Uniflash设定的tftp目录下。

(2)制作uImage

用于烧录eMMC的LinuxuImage,以Initcramf的方式包含了一个用于烧录的Ramdisk文件系统,下面是具体配置和生成的步骤。

在SDK06的Linux源码目录下,执行:

配置内核所包含的文件系统目录。

将用于烧录的Ramdisk文件系统解压到虚拟机的某个目录下,如/home/zhoujian/Flasher。进入general setup目录,按图1-1配置Initcramfs所在目录。

▲图1-1

进入Device Drivers,按照图1-2、图1-3、图1-4和图1-5配置kernel对USBRNDIS的支持

▲图1-2选择进入DeviceDrivers

▲图1-3选择进入USB support

▲图1-4选择进入USB Gadgetsupport

▲图1-5在USB GadgetDrivers中,只保留Ethernet Gadget(with CDC Ethernet support)和RNDIS support

保存退出后,执行:

将生成的\arch\arm\boot\uImage 放置 Windows 宿主机上 Uniflash 设定的 tftp 目录下。如果对速度有要求,可在menuconfig的界面中,选择[Device Drivers]->[ Network devicesupport]->[ Ethernet driversupport],如图 1-6 所示,将 kernel 中的 CPSW 驱动去掉,从而停掉系统启动后的以太网DHCP脚本的执行,以节省时间。

▲图1-6

(3)进行烧写

将eMMC烧录脚本debrick.sh放置Windows宿主机上Uniflash设定的tftp目录下。将要烧写到eMMC中的MLO,u-boot.img和uImage压缩成debrick.sh脚本指定的boot_partition.tar.gz:

将要烧写到eMMC中的文件系统压缩文件名改为 rootfs_partition.tar.gz,和boot_partition.tar.gz一起放置 Windows 宿主机上 Uniflash 设定的tftp 目录下。在 Windows 上运行 Uniflash,可以按图 1-7 所示指定 tftp 目录为C:\AM335x_Flashtool\images

▲图 1-7

点击 Start Flashing 按钮,通过 USB 线连接BeagleBone® Black和宿主机,eMMC 的烧写可自动完成。

二、使用SD卡烧写

BeagleBone® Black上带有SD卡,也可以通过SD卡进行eMMC的烧写,可将SDK06自带的prebuild image中的MLO,u-boot.img,uImage以及上一章提到的用于烧写eMMC的文件系统烧写到 SD 卡中,然后将 SD 卡中的内容通过 Ubuntu 虚拟机显示出来,并对此文件系统中的内容做如下改动。

将 SD 卡上文件系统中的/etc/init.d/fetcher.sh 改为:

将debrick.sh脚本拷贝到SD卡上文件系统中的/home/root/目录下,并将其中tftp传输的部分去掉:

将要烧写到eMMC中的MLO,u-boot.img和uImage压缩成debrick.sh脚本指定的boot_partition.tar.gz:

将要烧写到eMMC中的文件系统压缩文件名改为 rootfs_partition.tar.gz,和boot_partition.tar.gz一起拷贝到 SD 卡上文件系统中的/home/root/目录下。

在给BeagleBone® Black上电之前,插上制作好内容的 SD 卡,按住板子的 S2 开关,然后通过 USB 线连接BeagleBone® Black和宿主机给板子上电,会自动执行eMMC的烧写。

三、总结和参考文档

Linux 系统从eMMC上启动,需要修改 u-boot 的 mmcdev 参数,将其由默认的 0 改为1,也可以直接修改/include/configs/am335x_evm.h中的 73 行为"mmcdev=1\0"\,然后重新编译。

第一次烧写,可以从板子的 J1 插针引出 UART0 信号到主机超级终端查看烧写流程。

如果用户是自己做的板子,那么也可以在针对自己板子移植好的 U-boot 和 Linux 源代码的基础上,按照上面所讲的加入对eMMC烧写的支持。

对于 Linux SDK 07,操作步骤基本类似,未来会继续验证。

相关问答

XBOX360 自制系统升级怎么用网线?怎么知道电脑与XBOX连接了?-...

XBOX360自制系统升级怎么用网线?怎么知道电脑与XBOX连接了?举报XBOX360自制系统升级怎么用网线?怎么知道电脑与XBOX连接了?游戏机微软微软Xbox360游戏机...

 丛台酒业  损失类贷款 
王经理: 180-0000-0000(微信同号)
10086@qq.com
北京海淀区西三旗街道国际大厦08A座
©2024  上海羊羽卓进出口贸易有限公司  版权所有.All Rights Reserved.  |  程序由Z-BlogPHP强力驱动
网站首页
电话咨询
微信号

QQ

在线咨询真诚为您提供专业解答服务

热线

188-0000-0000
专属服务热线

微信

二维码扫一扫微信交流
顶部