本节使用 NXP 官方提供的 MfgTool 工具通过 USB OTG 口来烧写系统。
此软件在 Windows 下使用,对于我们来说太友好了。将此压缩包进行解压,解压完成以后会出现一个名为 L4.1.15_2.0.0-ga_mfg-tools 的文件夹, 进入此文件夹,此文件夹的内容如图 所示:
可以看出,有两个.txt 文件和两个.gz 压缩包。.txt 文档就不去看了,重点是这两个.gz 压缩包,这两个压缩包的区别在名字上已经写的很详细了。“without-rootfs”和“with-rootfs”,一个是带 rootfs 和一个是不带 rootfs。mfg_tools 这个工具本意是给 NXP 自己的开发板设计的烧写软件,所以肯定带有自家开发板对应的 uboot、linux kernel 和 rootfs 的文件。我们肯定是要烧写文件系统的,所以选择 mfgtools-with-rootfs.tar.gz 这个压缩包,继续对其解压, 解压出一个名为 mfgtools-with-rootfs 的文件夹,此文件夹就包含有我们需要的烧写工具。
进入目录 mfgtools-with-rootfs\mfgtools 中,在此目录下有几个文件夹和很多的.vbs 文件
MfgTool2.exe 就是烧写软件,但是我们不会直接打开这个软件烧写,mfg_tools 不仅能烧写
I.MX6U,而且也能给 I.MX7、I.MX6Q 等芯片烧写,所以在烧写之前必须要进行配置,指定烧写的是什么芯片,烧写到哪里去,烧写的时候通过双击这些.vbs 文件来打开烧写工具。这些.vbs 烧写脚本既可以根据处理器的不同,由用户选择向 I.MX6D、I.MX6Q、I.MX6S、I.MX7、I.MX6UL 和 I.MX6ULL 等的哪一款芯片烧写系统。也可以根据存储芯片的不同,选择向 EMMC、NAND 或 QSPI Flash 等的哪一种存储设备烧写,功能非常强大!!
MfgTool 是通过 USB OTG 接口将系统烧写进 EMMC 中的,正点原子 I.MX6U-ALPHA 开发板上的USB OTG 口如图
在烧写之前,需要先用USB 线将上图 中的USB_OTG1 接口与电脑连接起来。
将拨码开关拨到“USB”模式。一切准备就绪以后,按一下开发板的复位键,此时就会进入到 USB 模式,如果是第一次进入 USB 模式的话可能会久一点,这个是免驱的,因此不需要安装驱动。
开发板连接电脑以后双击“mfgtool2-yocto-mx-evk-emmc.vbs”,打开下载对话框
如果出现“符合 HID 标准的供应商定义设备”就说明连接正常,可以进行烧写,如果出现其他的字符那么就要检查连接是否正确。点击“Start”按钮即可开始烧写,烧写什么东西呢? 肯定是烧写 uboot、Linux kernel、.dtb 和 rootfs,那么这四个应该放到哪里 MfgTool 才能访问到呢?进入如下目录中:
L4.1.15_2.0.0-ga_mfg-tools/mfgtools-with-rootfs/mfgtools/Profiles/Linux/OS Firmware
此目录中的文件如图
文件夹“OS Firmware”看名字就知道是存放系统固件的,我们重点关注 files、firmware 这两个文件夹,以及ucl2.xml 这个文件。在具体看这三个文件和文件夹之前,我们先来简单了解一下 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 的大概工作流程。
准备好要烧写的原材料:
①、自己移植编译出来的uboot 可执行文件:u-boot.imx。
②、自己移植编译出来的 zImage 镜像文件和开发板对应的.dtb(设备树),对于 I.MX6U-ALPHA 开发板来说就是 imx6ull-alientek-emmc.dtb。
③、自己构建的根文件系统 rootfs,这里我们需要对 rootfs 进行打包,进入到 Ubuntu 中的rootfs 目录中,然后使用 tar 命令对其进行打包,命令如下:
cd rootfs/tar -vcjf rootfs.tar.bz2 *
完成以后会在 rootfs 目录下生成一个名为 rootfs.tar.bz2 的压缩包,将 rootfs.tar.bz2 发送到windows 系统中。将上面提到的这 4 个文件都发送到Windows 系统中。材料准备好以后还不能直接进行烧写,必须对其进行重命名,否则的话ucl2.xml 是识别不出来的,
原名字 | 新名字 |
---|---|
zImage | zImage(不需要重命名) |
u-boot.imx | u-boot-imx6ull14x14evk_emmc.imx |
rootfs.tar.bz2 | rootfs_nogpu.tar.bz2 |
imx6ull-alientek-emmc.dtb | zImage-imx6ull-14x14-evk-emmc.dtb |
将zImage、u-boot-imx6ull14x14evk_emmc.imx 和 zImage-imx6ull-14x14-evk-emmc.dtb 这三个文件拷贝到 mfgtools- withrootfs/mfgtools/Profiles/Linux/OS Firmware/firmware 目录中,替换掉原来的文件。然后将所有 4 个文件都拷贝到 mfgtools-with-rootfs/mfgtools/Profiles/Linux/OS Firmware/files目录中,这两个操作完成以后我们就可以进行烧写了。双击“mfgtool2-yocto-mx-evk-emmc.vbs”,打开烧写软件,点击“Start”按钮开始烧写,由于我们自己制作的 rootfs 比较小,因此烧写相对来说会快一点。烧写完成以后设置开发板从EMMC 启动,启动我们刚刚烧写进去的系统,测试有没有问题。