MfgTool 工具是NXP官方推荐的一个使用 USB OTG 来升级镜像的软件工具,它是 NXP 针对 i.MX 系列处理器专门使用的烧录工具,可以用来升级 Linux,单独烧录某一系统分区,独立地烧录 SPI Flash、NOR Flash、SD Card、Nand Flash,EMMC 等,只需简单的配置,就可以使用该工具将编译好 的文件系统和镜像文件烧录到开发板上,使用起来非常方便。而且 MfgTool 工具作为一个可量产性的工具,它支持多通道的烧录,在实际量产中,可以直接使用 Mfgtool 工具同时将文件系统与镜像文件烧录到多个开发板上。
优点:
缺点:
官方GitHub下载: https://github.com/NXPmicro/mfgtools 百度网盘: https://pan.baidu.com/s/1gsUgyBmdYQEJ75l_acW-XA?pwd=4t67 提取码:4t67
将野火提供uboot源码编译出的 uboot-dtb.imx
更名:
u-boot-mmc.imx
u-boot-nand.imx
然后进入到 mfgtool 目录中的 mfgtools-release\Profiles\Linux\OS Firmware\release
目录将相应文件替换即可
将 mfgtools-release\Profiles\Linux\OS Firmware
目录下的 ucl2.xml
替换为如下内容
也可以下载直接替换 ucl2.xml
登录后复制
<UCL>
<CFG>
<STATE name="BootStrap" dev="MX6ULL" vid="15A2" pid="0080"/>
<STATE name="Updater" dev="MSC" vid="066F" pid="37FF"/>
</CFG>
<LIST name="eMMC" desc="Choose eMMC as media">
<CMD state="BootStrap" type="boot" body="BootStrap" file ="firmware/u-boot-imx6ul%lite%%6uluboot%_emmc.imx" ifdev="MX6ULL">Loading U-boot</CMD>
<CMD state="BootStrap" type="load" file="firmware/zImage" address="0x80800000"
loadSection="OTH" setSection="OTH" HasFlashHeader="FALSE" ifdev="MX6SL MX6SX MX7D MX6UL MX6ULL">Loading Kernel.</CMD>
<CMD state="BootStrap" type="load" file="firmware/%initramfs%" address="0x83800000"
loadSection="OTH" setSection="OTH" HasFlashHeader="FALSE" ifdev="MX6SL MX6SX MX7D MX6UL MX6ULL">Loading Initramfs.</CMD>
<CMD state="BootStrap" type="load" file="firmware/zImage-imx6ul%lite%-%6uldtb%-emmc.dtb" address="0x83000000"
loadSection="OTH" setSection="OTH" HasFlashHeader="FALSE" ifdev="MX6ULL">Loading device tree.</CMD>
<CMD state="BootStrap" type="jump" > Jumping to OS image. </CMD>
<!-- create partition -->
<CMD state="Updater" type="push" body="send" file="mksdcard.sh.tar">Sending partition shell</CMD>
<CMD state="Updater" type="push" body="$ tar xf $FILE "> Partitioning...</CMD>
<CMD state="Updater" type="push" body="$ sh mksdcard.sh /dev/mmcblk%mmc%"> Partitioning...</CMD>
<!-- 烧录uboot 选择uboot的路径-->
<CMD state="Updater" type="push" body="$ dd if=/dev/zero of=/dev/mmcblk%mmc% bs=1k seek=768 conv=fsync count=8">clear u-boot arg</CMD>
<!-- access boot partition -->
<CMD state="Updater" type="push" body="$ echo 0 > /sys/block/mmcblk%mmc%boot0/force_ro">access boot partition 1</CMD>
<CMD state="Updater" type="push" body="send" file="%files_dir%/%my_uboot%" ifdev="MX6ULL">Sending u-boot.bin</CMD>
<CMD state="Updater" type="push" body="$ dd if=$FILE of=/dev/mmcblk%mmc%boot0 bs=512 seek=2">write U-Boot to sd card</CMD>
<CMD state="Updater" type="push" body="$ echo Update Complete!">Uboot Finishing</CMD>
</LIST>
<LIST name="NAND Flash" desc="Choose NAND as media">
<CMD state="BootStrap" type="boot" body="BootStrap" file ="firmware/u-boot.imx" ifdev="MX6ULL">Loading U-boot</CMD>
<CMD state="BootStrap" type="load" file="firmware/zImage" address="0x80800000"
loadSection="OTH" setSection="OTH" HasFlashHeader="FALSE" ifdev="MX6SL MX6SX MX7D MX6UL MX6ULL">Loading Kernel.</CMD>
<CMD state="BootStrap" type="load" file="firmware/%initramfs%" address="0x83800000"
loadSection="OTH" setSection="OTH" HasFlashHeader="FALSE" ifdev="MX6SL MX6SX MX7D MX6UL MX6ULL">Loading Initramfs.</CMD>
<CMD state="BootStrap" type="load" file="firmware/imx6ull-seeed-npi.dtb" address="0x83000000"
loadSection="OTH" setSection="OTH" HasFlashHeader="FALSE" ifdev="MX6ULL">Loading device tree.</CMD>
<CMD state="BootStrap" type="jump" > Jumping to OS image. </CMD>
<!--burn the uboot to NAND: -->
<CMD state="Updater" type="push" body="$ mount -t debugfs debugfs /sys/kernel/debug">Mounting debugfs</CMD>
<CMD state="Updater" type="push" body="$ flash_erase /dev/mtd%part_uboot% 0 0">Erasing Boot partition</CMD>
<CMD state="Updater" type="push" body="send" file="%files_dir%/%my_uboot%" ifdev="MX6ULL">Sending u-boot.bin</CMD>
<CMD state="Updater" type="push" body="$ kobs-ng init -x -v --chip_0_device_path=/dev/mtd%part_uboot% $FILE">Flashing Bootloader</CMD>
<CMD state="Updater" type="push" body="$ echo Update Complete!">Uboot Finishing</CMD>
</LIST>
</UCL>
解压后的 cfg.ini
文件默认为 EMMC
的烧写配置文件。
若想要烧写 NAND
版本镜像,将 cfg.ini
重命名为cfg-emmc.ini
,并将 cfg-nand.ini
文件重命名为 cfg.ini
即可。
将USB OTG与电脑连接,使用USB更新时不能插入SD卡。
根据以下BOOT拨码开关启动配置表,调整拨码开关为USB启动方式,
即1-4-5-7位拨到on,其他位拨到0
。即1-3-6位拨到on,其他位拨到0
。编号 | 名称 | NAND FLASH | eMMC | SD | USB |
1 | MODE0 | 0 | 0 | 0 | 1 |
2 | MODE1 | 1 | 1 | 1 | 0 |
3 | CFG1-4 | 1 | 0 | 0 | X |
4 | CFG1-5 | 0 | 1 | 0 | X |
5 | CFG1-6 | 0 | 1 | 1 | X |
6 | CFG1-7 | 1 | 0 | 0 | X |
7 | CFG2-3 | 0 | 1 | 0 | X |
8 | CFG2-5 | 0 | 0 | 1 | X |
提示: 也可以选择通过按键方式进入烧录模式,按键法可以不用拨码,拨码状态在之前的 EMMC 或者 NAND 都可以。上电按下MODE按键按下复位(RESET)按键松开复位(RESET)按键松开MODE按键此时软件就可以识别到USB了,然后烧录完毕后重启即可。
USB连接成功(如果是第一次进入 USB 模式的话可能会久一点,这个是免驱的,因此不需要安装驱动)。点击 Start
按钮开始烧录:
烧录中:
烧录完成:
根据以下BOOT拨码开关启动配置表,调整拨码开关为NAND启动方式,即2-3-6位拨到on,其他位拨到0
。
编号 | 名称 | NAND FLASH | eMMC | SD | USB |
1 | MODE0 | 0 | 0 | 0 | 1 |
2 | MODE1 | 1 | 1 | 1 | 0 |
3 | CFG1-4 | 1 | 0 | 0 | X |
4 | CFG1-5 | 0 | 1 | 0 | X |
5 | CFG1-6 | 0 | 1 | 1 | X |
6 | CFG1-7 | 1 | 0 | 0 | X |
7 | CFG2-3 | 0 | 1 | 0 | X |
8 | CFG2-5 | 0 | 0 | 1 | X |
重新上电,在出现 Hit any key to stop autoboot:
倒计时的时候按下键盘上的回车键,就会进入 uboot 的命令行模式。
当进入到 uboot 的命令行模式以后,左侧会出现一个 “=>” 标志。
uboot 启动的时候会输出一些信息:
输入 help
输入 version
免责声明:本文系网络转载或改编,未找到原创作者,版权归原作者所有。如涉及版权,请联系删