[profiles]
chip = Linux #对应mfgtoolsProfilesLinuxOS Firmware中“Linux”
#MfgTool2.exe中会使用路径:Profiles${chip}OS Firmware
[platform]
board = MY-IMX6 #没有用,可以忽略
[LIST]
name = Linux-3.14.52
#对应mfgtoolsProfilesLinuxOS Firmwareucl2.xml中 LIST name=”Linux-3.14.52”
[variable] #mfgtoolsProfilesLinuxOS Firmwareucl2.xml中会引用如下的变量,引用变量的方法:%variable_name%
ek_name = imx6
ek_spec = 6q
#在ucl2.xml中引用:file=”uboot-%ek_name%-%ek_spec%.imx”,即file=”uboot-imx6-6q.imx”
rootfs_file = fsl-image-qt5.tar.bz2
#在ucl2.xml中引用:file=”%rootfs_file%”,即file=fsl-image-qt5.tar.bz2
<UCL> #Update Command List
<CFG>#全局配置信息:(MFGTools工具通过USB烧写,不同芯片中USB的vid、pid不同)
<STATE name="BootStrap" dev="MX6Q" vid="15A2" pid="0054"/>
#name="BootStrap":烧写的第一阶段(引导阶段),将固件引导到内存DDR中
<STATE name="Updater" dev="MSC" vid="066F" pid="37FF"/>
#name="Updater":烧写的第二阶段(更新阶段),将镜像烧写到Flash中
CFG>
<LIST name="Linux-3.14.52" desc="Target OS: Linux-3.14.52">
#LIST name="Linux-3.14.52",与 mfgtoolscfg.ini 中[LIST] name = Linux-3.14.52对应
#CMD中type:命令分两类,在主机上执行的命令和在目标版上执行的命令
#在主机上执行的命令:boot、load、jump
#在目标板上执行的命令:push,主机将body中的命令发送到目标板并执行
#body="$:在目标板中执行shell命令
#body="send":传输文件到开发板中,后续命令可以使用变量“$FILE”,来获取传输过来的文件
#body="pipe:执行shell命令并从stdio管道读取数据
#body="frf":等待所有数据传输完成和处理
#第一阶段:引导阶段,将固件引导到内存DDR中
<CMD state="BootStrap" type="boot" body="BootStrap" file ="uboot-%ek_name%-%ek_spec%.imx">boot: u-boot.imxCMD>
#state="BootStrap":对应全局配置信息<CFG>中的<STATE name="BootStrap"
#type="boot":主机上运行的命令,将file参数指定的文件下载到RAM中
#body="BootStrap"在type="boot"中固定为BootStrap
#file=:指向将要下载到RAM中的文件
<CMD state="BootStrap" type="load" file="zImage" address="0x12000000"
loadSection="OTH" setSection="OTH" HasFlashHeader="FALSE" ifdev="MX6Q MX6D">load: mfg-zImage-myimx6CMD>
#type="load":主机上运行的命令,将file参数指定的文件下载到RAM中
#file="zImage":将要下载的文件
#address="0x12000000":下载到RAM中地址
#命令参数loadSection="OTH" setSection="OTH" HasFlashHeader="FALSE"绝大多数情况下这三个参数值不用改
#ifdev="MX6Q MX6D":条件判断如果,设备是MX6Q或MX6D,则执行这条命令,否则不执行,
#"MX6Q MX6D"必须是在<CFG>#全局配置信息中配置过的dev="MX6Q"
<CMD state="BootStrap" type="load" file="initramfs-imx_mfgtools.cpio.gz.u-boot" address="0x12C00000"
loadSection="OTH" setSection="OTH" HasFlashHeader="FALSE" ifdev="MX6Q MX6D">load: initramfsCMD>
<CMD state="BootStrap" type="load" file="%ek_name%-%ek_spec%.dtb" address="0x18000000"
loadSection="OTH" setSection="OTH" HasFlashHeader="FALSE" ifdev="MX6Q MX6D">load: device tree.CMD>
<CMD state="BootStrap" type="jump">jump: OS imageCMD>
#跳到第二阶段
#第二阶段(更新阶段),将镜像烧写到Flash中
<CMD state="Updater" type="push" body="$ flash_erase /dev/mtd0 0 0" ifdev="MX6Q MX6D">exec: erase spi flashCMD>
#在目标板上执行的命令:push,主机将body中的命令发送到目标板并执行
#body="$:在目标板中执行shell命令
<CMD state="Updater" type="push" body="send" file="uboot-%ek_name%-%ek_spec%.imx">send: u-boot.imxCMD>
#body="send":传输文件到开发板中,后续命令可以使用变量“$FILE”,来获取传输过来的文件
。。。
<CMD state="Updater" type="push" body="pipe tar -jxv -C /mnt/mmcblkxp2" file="image-linux-31452/%rootfs_l31452_file%">pipe: rootfsCMD>
#body="pipe:执行shell命令并从stdio管道读取数据
<CMD state="Updater" type="push" body="frf">frf: rootfsCMD>
#body="frf":等待所有数据传输完成和处理
。。。
<CMD state="Updater" type="push" body="$ echo Update Complete!">DoneCMD>
LIST>
UCL>
[UICfg]
PortMgrDlg=1
#设置要烧写的目标板个数,可以在批量生产中使用