1、前言
MfgTools软件工具是NXP官方进行提供的用于I.MX系列的SoC进行系统烧写的一个软件,能在Windows系统上使用,通过USB OTG接口完成系统烧写,一般在开发板进行量产的时候进行使用,能提高系统的烧写效率,当然,肯定也能在系统调试时使用,对于该软件的获取,直接去NXP官方网站上即可获取。
2、MfgTools基本原理
接下来,将对MfgTools的系统烧写基本原理进行简单介绍,软件下载解压后,目录如下所示:
可以看到,MfgTools软件目录下的目录和文件非常多,但是我们并不需要全部了解和关心,了解进行系统烧写时需要用到和修改的就好,软件目录下的MfgTool2.exe就是烧写软件,以.vbs结尾的文件就是烧写的配置文件,该软件能支持多款I.MX系统的SoC系统烧写,还能支持Nand Flash、eMMC和SD卡等存储介质系统烧写,因此,在对每一款SoC进行系统烧写之前,肯定要进行配置,指定好需要烧写的芯片以及存储介质,.vbs结尾的文件就是配置脚本,能直接运行,例如,下面的.vbs脚本功能:
脚本文件 | 功能 |
mfgtool2-yocto-mx-evk-emmc.vbs | NXP官方评估板的eMMC烧写脚本 |
mfgtool2-yocto-mx-evk-nand.vbs | NXP官方评估板的Nand Flash烧写脚本 |
MfgTools烧写的基本原理为将目标板的启动模式设置为Serial Downloader模式(BOOT_MODE[1:0]=01),然后通过USB OTG接口将uboot、Linux kernel和dtb下载到DDR内存中,然后将DDR里面的Linux系统启动起来,接下来通过这个启动的Linux系统将目标镜像固化到Nand Flash或eMMC中。
接下来,看看烧写的固件在哪里,进入到下面的目录:
L4.1.15_2.0.0-ga_mfg-tools\mfgtools-without-rootfs\mfgtools\Profiles\Linux\OS Firmware
目录打开后,如下:
我们主要关注的是files和firmware这两个文件夹,还有ucl2.xml文件,其中files和firmware目录中保存了我们需要烧写的固件,files文件夹中保存了需要固化到存储介质的镜像文件,firmware文件夹中保存了我们需要启动的Linux系统镜像,ucl2.xml文件描述了整个烧写过程,决定了我们向哪个SoC烧写哪个固件,因此这些文件夹和目录非常重要,必须要清晰地了解。
在了解这些文件之前,先来看看前面介绍到.vbs脚本文件,例如mfgtool2-yocto-mx-evk-nand.vbs,烧写Nand Flash的配置文件,该文件代码如下:
Set wshShell = CreateObject("WScript.shell") wshShell.run "mfgtool2.exe -c ""linux"" -l ""NAND Flash"" -s
""sxuboot=sabreauto"" -s ""sxdtb=sabreauto"" -s
""6uluboot=14x14evk"" -s ""6uldtb=14x14-evk"" -s
""board=sabreauto"" -s ""nand=nand"" -s ""nanddtb=gpmi-weim"" -s
""part_uboot=0"" -s ""part_kernel=1"" -s ""part_dtb=2"" -s ""part_rootfs=3"" " Set wshShell = Nothing
目测,该脚本运行了目录下的mfgtool2.exe软件,并且定义了一堆的变量,变量都有相应的值,对于i.mx6ul这款SoC,总结一些重要的变量,如下:
"6uluboot=14x14evk" "6uldtb=14x14-evk" "nand=nand" "nanddtb=gpmi-weim" "part_uboot=0" "part_kernel=1" "part_dtb=2" "part_rootfs=3"
得到了这些变量后,接下来,我们看看ucl2.xml文件,该文件将决定烧写什么固件,怎么烧写,先来看看该文件的整体框架,如下所示:
可以看到,整个.xml文件是从"<UCL>"开始,然后以"</UCL>"结束,"<CFG>"到"</CFG>"之间貌似是配置相关的内容,判断当前是在给I.MX系列的哪个SoC进行镜像烧写,并且具有很多<LIST>描述的内容,"<LIST>"和"</LIST>"之间很明显是针对不同存储介质所要执行的烧写命令。
3、MfgTools更新固件
4、小结
原文:https://www.cnblogs.com/Cqlismy/p/12342156.html