注意:当时遇到烧录之后各种重启问题,还有system.img 文件同步不过去的原因,都是因为没有加flash刷新flush the memory.
MFGTool是飞思卡尔提供的烧写工具,使用起来非常方便。但是,在使用MFGTool有几点是需要注意的,否则就会在烧写过程中遇到一些问题:
1、在使用MFGTool前,文件cfg.ini 和 UICfg.ini是必须要在同一个文件夹下,同时这两个文件一定要配置正确。
UICfg.ini用来配置每次同时可以烧写开发板的个数:
[UICfg]
PortMgrDlg=1
cfg.ini用来配置芯片类型和板子信息以及烧写内容存储方式:
[profiles]
chip = MX6DL Linux Update -----------芯片为i.mx6dl
[platform]
board = SabreSD ------------板子型号
[LIST]
name = i.MX6DL-ubuntu-SabreSD-SD ---------------烧写内容及存储方式
cfg.ini一定要根据你的板子和要烧写到哪里来设置,设置的信息和你使用的板子要匹配。
2、ucl2.xml
MFGTool烧写过程是完全按照ucl2.xml进行的。具体ucl2.xml的内容你可以到MFGTool-Dir/Profiles/MX6DL Linux Update/OS Firmware下查看。ucl2.xml中的烧写命令为linux命令(文档Manufacturing Tool V2 Quick Start Guide中有介绍)这里不再详述。
3、boot mode方式要正确
在烧写前要设置板子为下载模式,才可以进行烧写。
总结一下使用MFGTool烧写过程如下:
1)配置cfg.ini和UICfg.ini文件
2)设置boot mode为download模式
3)用OTG-USB线连接开发板和PC机
4)打开终端,并运行MfgTool2.exe
5)给开发板上电,出现如下HID-compliant device,点击Start开始下载。
4、如何使用MFGTool烧写image到你自己设计的板子上?
编译生成板子上需要跑的U-boot、uImage和文件系统rootfs(具体操作查看你参考设计的板子的User Guider中有详细的步骤和介绍)
Sending U-Boot
write U-Boot to sd card
Sending kernel uImage
write kernel image to sd card………….
Sending and writting rootfs
根据ucl2.xml文件中的内容来创建你自己设计板子的烧写过程,只要修改原有的U-Boot 和 kernel就够了。
以下时ucl2.xml文件:
//全局变量
//ucl2.xml将烧录过程分成两个阶段:BootStrap和Updater
//dev、vid和pid:分别对应两个阶段的设备名、设备对应连接的USB vid和pid号
//针对imx6系列,在 BootStrap阶段,有效的设备名只有MX6Q、MX6D、MX6SL。在Updater阶段,有效的设备名只有MSC
Android-Marsboard-eMMC
" desc="Choose eMMC as media">
//根据cfg.ini 文件中定义的name 选择(ucl2.xml中LIST name要与cfg.ini文件中定义的name相对应)
u-boot.bin">Loading U-boot
//下载当前目录的u-boot.bin 文件到RAM
uImage" address="
0x10800000" loadSection="OTH" setSection="OTH" HasFlashHeader="FALSE">Loading Kernel.
//下载当前目录的uImage文件到RAM的0x10800000地址处
initramfs.cpio.gz.uboot" address="
0x10C00000" loadSection="OTH" setSection="OTH" HasFlashHeader="FALSE">Loading Initramfs.
//下载当前目录的initramfs.cpio.gz.uboot文件到内存的0x10C00000地址处
Jumping to OS image.
//通知内嵌ROM代码跳转到内存中的镜像执行
Erasing Boot partition
//擦除信息mtd0
Sending U-Boot
//将files/android/u-boot.bin文件发送到目标机
write U-Boot to SPI-NOR
//烧写将$FILE下载到/dev/mtd0位置,bs=512,指定读/写的blocks大小为512bytes
Clear Params
//擦除信息mtd1
Sending partition shell
//将files/android/u-boot.bin文件发送到目标机
//将当前目录的mksdcard-android.sh.tar 分区脚本文件,发送到目标机
Partitioning...
//解压脚本文件
Partitioning...
//执行脚本文件
Formatting sd partition
//从下面开始烧录内核、文件系统
boot.img">Sending kernel uImage
//将files/android/boot.img 发送到目标机
/dev/mmcblk0p1">write boot.imgflush the memory.//刷新,等待数据传送完成
Formatting data partitionSending data partition shellExtracting data partition shellMaking data encryptableFormatting system partitionFormatting cache partitionflush the memory.Formatting device partition Sending and writting system.img//利用pipe 传输大数据
flush the memory.//执行flush刷新操作,等到数据传输完毕