推荐星级:
  • 1
  • 2
  • 3
  • 4
  • 5

BBBlackEMMC烧写全记录

更新时间:2019-12-12 09:52:05 大小:608K 上传用户:xuzhen1查看TA发布的资源 标签:bbblackemmc 下载积分:0分 评价赚积分 (如何评价?) 打赏 收藏 评论(0) 举报

资料介绍

BeagleBone Black eMMC 烧写全记录( 基于AM335x SDK06)

eMMC 存储介质目前越来越广泛的应用在嵌入式系统中, AM335x 的用户也越来越多

的使用EMMC 作为系统的主要存储介质。目前AM335x 的几款官方demo 板中,只有

BeagleBone Black上加入了对eMMC 芯片的支持,很多用户也是参考BeagleBone Black进

行自己AM335x 系统的eMMC 设计。笔者最近分别通过TI Uniflash 和SD卡完成了

BeagleBone Black上eMMC 芯片的烧写验证工作,软件基于AM335x Linux SDK06,总结出

来供大家参考。

1. 使用TI UniFlash工具通过USB RNDIS烧写

1.1 TI Uniflash简 介

Uniflash 是TI 开发的存储器烧写工具,可以支持AM335x 系统的NAND Flash,NOR

Flash, SPI Flash,eMMC 烧写。可以参考wiki 上的guide:

http://processors.wiki.ti.com/index.php/Sitara_Uniflash_Quick_Start_Guide ,在Windows 宿

主机上下载并安装Uniflash,并按照其中3.3 节所述在Windows 宿主机上安装USB RNDIS

驱动。

1.2 eMMC 烧写原理

本文介绍的验证方法是使用Uniflash 工具通过USB 对BeagleBone Black上的eMMC 进

行烧写,原理是通过Romcode,SPL和u-boot 三个阶段,将一个专门用于eMMC 烧写的

Linux 操作系统在BeagleBone Black板上运行起来,并自动运行脚本进行烧写。


部分文件列表

文件名 大小
BBBlackEMMC烧写全记录.pdf 608K

部分页面预览

(完整内容请下载后查看)
BeagleBone Black eMMC 烧写全记录 ( 基于 AM335x SDK06)  
eMMC 存储介质目前越来越广泛的应用在嵌入式系统中,  
的使用 EMMC 作为系统的主要存储介质。目前 AM335x 的几款官方 demo 板中,只有  
BeagleBone Black上加入了对 eMMC 芯片的支持,很多用户也是参考 BeagleBone Black进  
行自己 AM335x 系统的 eMMC 设计。笔者最近分别通过 TI Uniflash SD卡完成了  
AM335x 的用户也越来越多  
BeagleBone BlackeMMC 芯片的烧写验证工作,软件基于  
AM335x Linux SDK06,总结出  
来供大家参考。  
1. 使用 TI UniFlash工具通过 USB RNDIS烧写  
1.1 TI Uniflash简介  
Uniflash TI 开发的存储器烧写工具,可以支持  
AM335x 系统的 NAND FlashNOR  
Flash, SPI Flash eMMC 烧写。可以参考 wiki 上的 guide:  
,在 Windows 宿  
主机上下载并安装 Uniflash,并按照其中 3.3 节所述在 Windows 宿主机上安装 USB RNDIS  
驱动。  
1.2 eMMC 烧写原理  
本文介绍的验证方法是使用  
Uniflash 工具通过 USBBeagleBone Black上的 eMMC 进  
行烧写,原理是通过 RomcodeSPLu-boot 三个阶段,将一个专门用于  
Linux 操作系统在 BeagleBone Black板上运行起来,并自动运行脚本进行烧写。  
eMMC 烧写的  
第一阶段,通过设置 AM335x sysboot 管脚,使 AM335x 的启动项包含 USB0启动。  
BeagleBone Black的默认启动设置为: MMC1->MMC0->UART0->USB0MMC1 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 中的  
DHCPTFTP命令,将 Windows 宿主机上 Uniflash 设定的 tftp 目录下的用于烧录 eMMC  
Linux uImage 下载到板子的 DDR3中并运行。这个 Linux uImage 会通过执行启动脚本,  
通过 tftp 的方式,将 Windows 宿主机上 Uniflash 设定的 tftp 目录下名为 debrick.sh 脚本下  
载并执行, debrick.sh 可实现 eMMC 的擦除和烧写。  
1.3 eMMC 烧写流程  
1.3.1 制作 u-boot-spl-restore.binu-boot-restore.img  
用于烧录 eMMC 的特殊的 SPLu-boot.img 可以通过指定特定的编译参数编译  
SDK06  
U-boot 源码获得,在编译之前需要加几个  
patch 如下:  
1) 延长 USB RNDIS连接等待时间的 patch:  
/drivers/usb/gadget/ether.c 文件:  
index de880ff..926c6f2 100644  
--- a/drivers/usb/gadget/ether.c  
+++ b/drivers/usb/gadget/ether.c  
@@ -108,7 +108,11 @@ static const char driver_desc[] = DRIVER_DESC;  
|USB_CDC_PACKET_TYPE_PROMISCUOUS \  
|USB_CDC_PACKET_TYPE_DIRECTED)  
+#if defined(CONFIG_RESTORE_FLASH) && defined(CONFIG_SPL_USBETH_SUPPORT)  
+#define USB_CONNECT_TIMEOUT (15 * CONFIG_SYS_HZ)  
+#else  
#define USB_CONNECT_TIMEOUT (3 * CONFIG_SYS_HZ)  
+#endif  
2) 使能 U-boot cache 用于加快传输时间的 patch:  
/include/configs/am335x_evm.h 文件:  
index 90e35ee..efa1e90 100644  
--- a/include/configs/am335x_evm.h  
+++ b/include/configs/am335x_evm.h  
@@ -236,6 +236,7 @@  
#define CONFIG_CMD_FAT  
#define CONFIG_FAT_WRITE  
#define CONFIG_CMD_EXT2  
+#define CONFIG_CMD_CACHE  
3) bootcmd启动参数,在 /include/configs/am335x_evm.h 182行修改如下:  
#ifdef CONFIG_SPL_USBETH_SUPPORT  
#define CONFIG_BOOTCOMMAND \  
"dcache on; " \  
"setenv autoload no; " \  
"setenv ethact usb_ether; " \  
"dhcp; "  
\
"if tftp 81000000 uImage; then "  
\

全部评论(0)

暂无评论

上传资源 上传优质资源有赏金

  • 打赏
  • 30日榜单

推荐下载