一.? 簡介
本文我們就來學習,如何將我們編譯的 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 文件
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 *
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工具燒寫我自制的文件。