使用MfgTool烧写前需准备的文件

一. 简介

本文我们就来学习,如何将我们编译的 uboot,zImage(内核镜像),xxx.dtb设备树文件,还有制作的根文件系统,这四个文件烧写到开发板中,最后 开发板能正常启动。

本文这里使用 NXP(恩智浦)官方提供的 MfgTool烧写工具,烧写我们自己的文件。

二. 使用MfgTool烧录前准备的文件

本文使用 NXP(恩智浦)官方提供的 MfgTool烧写工具烧写系统。

具体使用 mfgtools-without-rootfs.tar.gz 烧写工具,即带文件系统的这个烧写工具。

我这里所使用的 ALPHA开发板是 nand-Flash版的,所以,这里所要烧录的 uboot,zImage,与设备树文件都必须是针对 nand-Flash版的。而 根文件系统rootfs没有 EMMC或 Nand-Flash的区分,无非就是 EMMC容量大一些(比 nand-Flash版开发板),根文件系统中也可以添加比 Nand-Flash版开发板多一些的其他文件或程序。

需要准备烧写的文件:

(1) 自己移植编译出来的 uboot 可执行文件: u-boot.imx 。
(2) 自己移植编译出来的 zImage 镜像文件和开发板对应的 .dtb( 设备树 ) ,对于 I.MX6U
ALPHA 开发板来说就是 imx6ull-alientek-emmc.dtb 。
(3) 自己构建的根文件系统 rootfs ,这里我们需要对 rootfs 进行打包。

1. uboot 文件

uboot使用 之前我们一直使用的 NXP 官方提供的 uboot源码编译,因为之前一直使用正点原子的 MfgTool烧录工具烧录的根文件系统,同时,也为了开发板通过 tftp服务可以从 ubuntu中加载 zImage和设备树文件,所以,uboot源码更改了 nand-Flash版对应的 bootargs参数值。

这里需要将 bootargs参数更回到 NXP官方提供的值。

打开 include/configs/mx6ull_alientek-nand.h文件,找到nand-Flash对应的 bootargs参数设置代码,如下代码:

#if defined(CONFIG_SYS_BOOT_NAND)
#define CONFIG_EXTRA_ENV_SETTINGS \
	CONFIG_MFG_ENV_SETTINGS \
	"panel=TFT43AB\0" \
	"fdt_addr=0x83000000\0" \
	"fdt_high=0xffffffff\0"	  \
	"console=ttymxc0\0" \
	"ipaddr=192.168.1.50\0" \
	"ethaddr=b8:ae:1d:01:00:00\0" \
	"gatewayip=192.168.1.1\0" \
	"serverip=192.168.1.66\0" \
	"netmask=255.255.255.0\0" \
	"bootargs=console=ttymxc0,115200 ubi.mtd=5 "  \
		"root=ubi0:rootfs rootfstype=ubifs "		     \
		CONFIG_BOOTARGS_CMA_SIZE \
        "mtdparts=gpmi-nand:4m(u-boot),128k(env),1m(logo),1m(dtb),8m(kernel),-(rootfs)\0"\
	"bootcmd=tftp 0x80800000 zImage;"\
		"tftp ${fdt_addr} imx6ull-alientek-nand.dtb;"\
		"bootz 0x80800000 - ${fdt_addr}\0"
else
.........................................

将上面的代码更改为如下:

#if defined(CONFIG_SYS_BOOT_NAND)
#define CONFIG_EXTRA_ENV_SETTINGS \
	CONFIG_MFG_ENV_SETTINGS \
	"panel=TFT43AB\0" \
	"fdt_addr=0x83000000\0" \
	"fdt_high=0xffffffff\0"	  \
	"console=ttymxc0\0" \
	"bootargs=console=ttymxc0,115200 ubi.mtd=4 "  \
		"root=ubi0:rootfs rootfstype=ubifs "		     \
		CONFIG_BOOTARGS_CMA_SIZE \
		"mtdparts=gpmi-nand:64m(boot),16m(kernel),16m(dtb),1m(misc),-(rootfs)\0"\
	"bootcmd=nand read ${loadaddr} 0x4000000 0x800000;"\
		"nand read ${fdt_addr} 0x5000000 0x100000;"\
		"bootz ${loadaddr} - ${fdt_addr}\0"
#else
.......................................

重新编译 uboot源码,生成的 u-boot.imx 文件备用。

2. 内核镜像 zImage 和 .dtb设备树文件

Linux内核镜像文件 zImage 与设备树文件 也是 NXP官方的 Kernel源码编译生成的,是前面我们在 NXP官方 kernel源码的基础上做改动,最终编译出的 nand-Flash版的 zImage和 设备树文件 imx6ull-alientek-nand.dtb 。

zImage所在目录: linux-imx-rel_imx_4.1.15_2.1.0_ga/arch/arm/boot

imx6ull-alientek-nand.dtb 所在目录:/linux-imx-rel_imx_4.1.15_2.1.0_ga/arch/arm/boot/dts

这两个文件 留待备用。

3. 自制的根文件系统rootfs

要烧录开发板上的 根文件系统,使用前面我制作的 rootfs。我所制作的 根文件系统rootfs 在 ubuntu系统下的 /linux/nfs_File 目录下。

这里我们需要对 rootfs 进行打包,进入到 Ubuntu 中的 rootfs 目录中,然后使用 tar 命令对其进行打包,命令如下:

wangtian@wangtian-virtual-machine:~/linux/nfs_File$ cd rootfs/
wangtian@wangtian-virtual-machine:~/linux/nfs_File/rootfs$ tar -cvjf rootfs.tar.bz2 *

完成以后会在 rootfs 目录下生成一个名为 rootfs.tar.bz2 的压缩包:

wangtian@wangtian-virtual-machine:~/linux/nfs_File/rootfs$ ls
中文测试  dev  hello    lib      mnt   root            sbin  tmp
bin       etc  hello.c  linuxrc  proc  rootfs.tar.bz2  sys   usr
wangtian@wangtian-virtual-machine:~/linux/nfs_File/rootfs$ 

三. 更改待烧录文件名

因为使用 NXP官方提供的 MfgTool工具进行烧写,我所使用的开发板是 Nand-Flash版,所以,需要确认NXP的 MfgTool工具内部对应的 Nand-Flash版开发板所对应烧写的四个文件是什么?即是哪个uboot文件,哪个内核镜像 zImage,哪个设备树文件以及哪个根文件系统。

注意:要烧写我自制的 系统,就需要将自制的四个文件替换掉 MfgTool工具中对应 Nand-Flash版的四个文件!!!

1. 确认 Nand-Flash版开发板对应的文件

主要替换下面两个文件夹下的文件:

L4.1.15_2.0.0-ga_mfg-tools/mfgtools-with-rootfs/mfgtools/Profiles/Linux/OS Firmware/firmware

L4.1.15_2.0.0-ga_mfg-tools/mfgtools-with-rootfs/mfgtools/Profiles/Linux/OS Firmware/files

firmware 文件夹下替换三种文件:Uboot,zImage,xxx.dtb 设备树文件

files文件夹下替换四种文件:Uboot,zImage,xxx.dtb 设备树文件,文件系统rootfs

自制的文件准备好以后,还不能直接进行烧写,必须对其进行重命名,否则的话 ucl2.xml 是识别不 出来的,前面讲解 ucl2.xml 语法的时候已经说过了,将自制的文件分别改名为如下名字:即使左边一列文件名改为右边一列名字:

|---------------------------|----------------------------------------|
| 自制文件的名字 | 重命名 |
| u-boot.imx | u-boot-imx6ull14x14evk_nand.imx |
| zImage | zImage |
| imx6ull-alientek-emmc.dtb | zImage-imx6ull-14x14-evk-gpmi-weim.dtb |
| rootfs.tar.bz2 | rootfs_nogpu.tar.bz2 |

注意:上面 NXP 官方对应 Nand-FLash版开发板的文件名,可以通过 MfgTool工具中结合 .vbs文件(mfgtool2-yocto-mx-evk-nand.vbs)与 ucl2文件可以确定。

自制的文件如下:

将以上四个文件改名后如下:

改名后文件分别替换 :

firmware 文件夹下替换三种文件:u-boot-imx6ull14x14evk_nand.imx,zImage,zImage-imx6ull-14x14-evk-gpmi-weim.dtb 设备树文件

files文件夹下替换四种文件:Uboot,zImage,xxx.dtb 设备树文u-boot-imx6ull14x14evk_nand.imx,zImage,zImage-imx6ull-14x14-evk-gpmi-weim.dtb 设备树文件,文件系统rootfs_nogpu.tar.bz2

下一篇文章,学习使用 NXP官方提供的 MfgTool工具烧写我自制的文件。

相关推荐
栀夏61313 分钟前
Linux 基础
linux
喻师傅22 分钟前
Linux-du命令使用方法
linux·服务器·命令
埋头编程~39 分钟前
【Linux】趣味讲解“权限“的那些事(重点讲解文件权限,内含su、sudo、chmod、chown、umask等指令)
java·linux·运维
和煦的糖果44 分钟前
Linux下的基本指令
linux·运维·服务器
Amelio_Ming1 小时前
linux semaphore信号量操作
linux
小强不秃头1 小时前
Linux C——网络编程
linux·c语言·开发语言
我是果子哥1 小时前
Git的安装 + 基本操作
linux·git
极狐GitLab官方1 小时前
一文读懂 Git fetch 和 Git pull 的终极区别(带实验结果)
linux
itxck1 小时前
【Linux】部署 flask
linux·运维·flask
oushaojun22 小时前
linux应用层读写i2c设备
linux·应用层·i2c