I.MX6ULL-MINI烧写固件
烧写uboot、Linux Kernel、.dtb、rootfs到EMMC
本文使用正点原子修改过的的MfgTool工具通过USB OTG口将uboot、Linux Kernel、.dtb、rootfs这四个文件烧写到板子的EMMC
进入工具软件目录后,有很多的.vbs文件,该文件为烧写脚本,运行该脚本会自动打开MfgTool2.exe运行程序并根据脚本内容将相应的文件烧进对应的芯片,本次使用Mfgtool2-eMMC-ddr512-eMMC.vbs脚本烧写固件到I.MX6U-MINI的EMMC中
1、硬件设置
使用typeC连接USB OTG到电脑,并将拨码开关拨到USB下载模式,并且需要弹出TF卡,不然无法识别USB。
2、烧写流程
2.1、MfgTool 烧写原理
MfgTool 其实是先通过 USB OTG 先将 uboot、 kernel 和.dtb(设备树)这是三个文件下载到开发板的 DDR 中,注意不需要下载 rootfs。就相当于直接在开发板的 DDR上启动 Linux 系统,等 Linux 系统启动以后再向 EMMC 中烧写完整的系统,包括 uboot、 linux kernel、.dtb(设备树)和 rootfs,因此 MfgTool 工作过程主要分两个阶段:
①、将 firmware 目录中的 uboot、 linux kernel 和.dtb(设备树),然后通过 USB OTG 将这个文件下载到开发板的 DDR 中,目的就是在 DDR 中启动 Linux 系统,为后面的烧写做准备。
②、经过第①步的操作,此时 Linux 系统已经运行起来了,系统运行起来以后就可以很方便的完成对 EMMC 的格式化、分区等操作。 EMMC 分区建立好以后就可以从 files 中读取要烧写的 uboot、 linux kernel、 .dtb(设备树)和 rootfs 这 4 个文件,然后将烧写到 EMMC 中,这个就是 MfgTool 的大概工作流程。
上面的步骤在你运行.vbs脚本文件并点击”start“后都会开始自动运行,可以通过串口看到打印的相关信息
2.2、.vbs脚本文件
该脚本文件会调用打开MfgTool2.exe应用程序,并且文件中确定了要向什么存储设备烧写系统,如果要修改烧写的存储设备,则修改修改该文件下的”wshShell.run“这一行,文件内容如下:
Set wshShell = CreateObject("WScript.shell")
wshShell.run "mfgtool2.exe -c ""linux"" -l ""eMMC"" -s
""board=sabresd"" -s ""mmc=1"" -s ""6uluboot=14x14evk"" -s
""6uldtb=14x14-evk"""
Set wshShell = Nothing
2.2、uboot、Linux kernel、.dtb、rootfs文件存放位置
L4.1.15_2.0.0-ga_mfg-tools/mfgtools-with-rootfs/mfgtools/Profiles/Linux/OS Firmware
"OS Firmware"用于存放系统固件,下面有files、 firmware 这两个文件夹,以及 ucl2.xml 这个文件。
2.2.1、firmware 文件夹
该文件夹下存放第一步骤要烧写的三个固件:uboot、Linux kernel、.dtb
2.2.2、files 文件夹
该文件夹下存放最后真正要烧写进存储设备的四个固件文件:uboot、Linux kernel、.dtb、rootfs
2.2.3、ucl2.xml 文件
该文件用于指定烧写上面两个文件夹下的哪个uboot和设备树
例如通过USB OTG下载uboot,则该文件应该有包括以下内容:
<CMD state="BootStrap" type="boot" body="BootStrap" file ="firmware/uboot-imx6ul%lite%%6uluboot%_emmc.imx" ifdev="MX6ULL">Loading U-boot
</CMD>
上面的命令就是BootStrap阶段,也就是第一阶段,“file”表示要下载的文件位置,在firmware目录下,文件名字为u-boot-imx6ul%lite%%6uluboot%_emmc.imx,在 L4.1.15_2.0.0-ga_mfg-tools\mfgtools-with-rootfs\mfgtools-with-rootfs\mfgtools 下找到cfg.ini文件,该文件里包含了开发板的一些信息,查看 cfg.ini 文件可得 lite=l 以及一些字符串代表的值。“%lite%”和“%6uluboot%”分别表示取 lite 和 6uluboot 的值,而 lite=l, 6uluboot=14x14evk,因此将这个值代入以后就是:u-boot-imx6ull14x14evk _emmc.imx
所以,这里向 DDR 中下载的是 firmware/u-boot-imx6ull14x14evk _emmc.imx 这个 uboot 文件。同样的方法将.dtb(设备树)和 zImage 都下载到 DDR 中以后就会跳转去运行OS,这个时候会在 MfgTool 工具中会有“Jumping to OS image”提示语句, ucl2.xml 中的跳转命令如下:
<CMD state="BootStrap" type="jump" > Jumping to OS image. </CMD>
运行OS就是启动Linux,然后就可以进行第二步骤,在EMMC创建分区,然后烧写uboot、zImage、.dtb和根文件系统了。
3、总结
使用正点原子修改过的MFG_TOOL工具烧写
要往I.MX6ULL烧写固件,可以使用正点原子修改好的Mfgtool工具,并将要烧写的uboot、Linux kernel、.dtb、rootfs分别放进上面的firmware文件夹和files文件夹中,记得要将固件名字改成跟本来在这个文件夹中的固件名一直,就是替换掉原来的固件的同时名字也要改成一样,这样才能跟ucl2.xml文件中的固件名字对上(或者你也可以直接修改ucl2.xml文件中的固件名),然后直接运行.vbs脚本文件即可。
总结一句话,将四个固件都覆盖firmware文件夹和files文件夹中的固件并且名字也要一样,然后运行.vbs脚本文件即可