前幾篇移植都是通過(guò)網(wǎng)絡(luò)來(lái)測(cè)試的,在實(shí)際的產(chǎn)品開發(fā)中肯定不可能通過(guò)網(wǎng)絡(luò)來(lái)運(yùn)行,否則沒網(wǎng)的時(shí)候產(chǎn)品豈不是就歇菜了。因此需要將 uboot、linux kernel(內(nèi)核)、.dtb(設(shè)備樹)和 rootfs 這四個(gè)文件燒寫到板子上的 EMMC、NAND 或 QSPI Flash 等其他存儲(chǔ)設(shè)備上,這樣不管有沒有網(wǎng)絡(luò)產(chǎn)品都可以正常運(yùn)行,可以借助NXP 官方提供的 MfgTool 工具通過(guò) USB OTG 口來(lái)燒寫系統(tǒng),此軟件在 Windows 下使用,對(duì)新手非常友好; mfg_tools 這個(gè)工具本意是給 NXP 自己的開發(fā)板設(shè)計(jì)的燒寫軟件,所以肯定帶有自家開發(fā)板對(duì)應(yīng)的 uboot、linux kernel 和 rootfs 的文件。
| 獲取MfgTool
讀者可以直接去官網(wǎng)下載,這里使用的是原子提供的,可以在原子公開資料包中獲取,具體路徑如下:
5、開發(fā)工具->3、NXP官方原版MFG_TOOL燒寫工具->L4.1.15_2.0.0-ga_mfg-tools.tar.gz。
解壓后的文件如下:
|準(zhǔn)備工具
解壓后里面還有2個(gè).gz 壓縮包,一個(gè)是帶rootfs,一個(gè)是不帶rootfs,我們是需要燒寫文件系統(tǒng)的,所以選擇 mfgtools-with-rootfs.tar.gz 這個(gè)壓縮包并解壓,然后進(jìn)入目錄 mfgtools-with-rootfsmfgtools 中, 在此目錄下有幾個(gè)文件夾和很多的.vbs 文件:
相關(guān)解析:
Profiles文件夾:要燒寫文件就放到這個(gè)文件夾中; MfgTool2.exe:燒寫軟件,一般不會(huì)直接打開這個(gè)軟件燒寫; 眾多的.vbs 文件:就是配置腳本,燒寫的時(shí)候通過(guò)雙擊這些.vbs 文件來(lái)打開燒寫工具;注意:mfg_tools 不僅能燒寫I.MX6U,而且也能給 I.MX7、I.MX6Q 等芯片燒寫,所以在燒寫之前必須要進(jìn)行配置,指定燒寫的是什么芯片,燒寫到哪里去,就需要依靠不同的.vbs 配置腳本進(jìn)行配置;
眾多的.vbs 燒寫腳本是可以刪除的,但是避免不必要的麻煩就不刪除;本人使用的開發(fā)板是EMMC 版核心板,因此只會(huì)用到 mfgtool2-yocto-mx-evk-emmc.vbs 這個(gè)燒寫腳本,如果用其他的核心板請(qǐng)參考相應(yīng)的燒寫腳本。
| 燒寫步驟
連接USB OTG
MfgTool 是通過(guò) USB OTG 接口將系統(tǒng)燒寫進(jìn) EMMC 中的,需要使用USB線連接電腦;
撥碼開關(guān)撥到 USB 下載模式
需要根據(jù)實(shí)際開發(fā)板進(jìn)行切換,下圖是野火開發(fā)板的撥碼開關(guān)真值表;
如果插了 TF 卡,請(qǐng)彈出 TF 卡,否則電腦不能識(shí)別 USB!等識(shí)別出來(lái)以后再插上 TF 卡!
第一次連接會(huì)有提示,一旦第一次設(shè)置好設(shè)備以后,后面每次連接都不會(huì)有任何提示了;
系統(tǒng)燒寫
開發(fā)板連接電腦以后雙擊“mfgtool2-yocto-mx-evk-emmc.vbs”,就會(huì)出現(xiàn)下面那個(gè)窗口:
如果出現(xiàn)“符合 HID 標(biāo)準(zhǔn)的供應(yīng)商定義設(shè)備”就說(shuō)明連接正常,可以進(jìn)行燒寫,如果出現(xiàn)其他的字符那么就要檢查連接是否正確。點(diǎn)擊“Start”按鈕即可開始燒寫;
|系統(tǒng)燒寫原理
需要燒寫uboot、kernel、.dtb 和 rootfs這四個(gè)文件,它們一起構(gòu)成了linux系統(tǒng)。 進(jìn)入如下目錄中:
L4.1.15_2.0.0-ga_mfg-tools/mfgtools-with-rootfs/mfgtools/Profiles/Linux/OS Firmware目錄文件如下:
文件夾“OS Firmware”看名字就知道是存放系統(tǒng)固件的,重點(diǎn)還是關(guān)注 files、firmware 這兩個(gè)文件夾,以及 ucl2.xml 這個(gè)文件。
MfgTool 工作過(guò)程主要分兩個(gè)階段:
①、將 firmware 目錄中的 uboot、linux kernel 和.dtb(設(shè)備樹),然后通過(guò) USB OTG 將這個(gè)文件下載到開發(fā)板的 DDR 中,目的就是在 DDR 中啟動(dòng) Linux 系統(tǒng),為后面的燒寫做準(zhǔn)備。
②、經(jīng)過(guò)第①步的操作,此時(shí) Linux 系統(tǒng)已經(jīng)運(yùn)行起來(lái)了,系統(tǒng)運(yùn)行起來(lái)以后就可以很方便的完成對(duì) EMMC 的格式化、分區(qū)等操作。EMMC 分區(qū)建立好以后就可以從 files 中讀取要燒寫的 uboot、linux kernel、.dtb(設(shè)備樹)和 rootfs 這 4 個(gè)文件,然后將其燒寫到 EMMC 中,這個(gè)就是 MfgTool 的大概工作流程。
firmeare 文件夾
打開 firmware 文件夾,里面有很多的.imx 結(jié)尾的 uboot 文件、一個(gè) zImage 鏡像文件、很多.dtb結(jié)尾的設(shè)備樹文件。這些文件都是NXP官方開發(fā)板使用的,不同的板子使用不同的文件,其中需要關(guān)心這三個(gè)文件:
這三個(gè)文件就是 I.MX6ULL EVK 開發(fā)板燒寫系統(tǒng)的時(shí)候第一階段所需的文件。如果要燒寫自己的系統(tǒng),就需要給編譯出來(lái)的文件改成上表的名稱;
files 文件夾
上圖三個(gè)文件下載到開發(fā)板的 DDR 上以后燒寫的第一階段就完成了,第二階段就是從 files 目錄中讀取整個(gè)系統(tǒng)文件,并將其燒寫到 EMMC 中。files 目錄中的文件和firmware 目錄中的基本差不多,都是不同板子對(duì)應(yīng)的 uboot、設(shè)備樹文件,同樣,只關(guān)心下圖的四個(gè)文件:
如果要燒寫自己編譯出來(lái)的系統(tǒng),就需要用編譯出來(lái)的文件替換上面四個(gè)文件;
ucl2.xml 文件
ucl2.xml用來(lái)指定files和firmware目錄要燒寫的uboot和設(shè)備樹文件。ucl2.xml 以“
ucl2.xml 首先會(huì)判斷當(dāng)前要向 I.MX 系列的哪個(gè)芯片燒寫系統(tǒng),代碼如下:...... ......
通過(guò)讀取芯片的VID和 PID 即可判斷出當(dāng)前要燒寫什么處理器的系統(tǒng),如果 VID=0X15A2,PID=0080,那么就表示要給 I.MX6ULL 燒寫系統(tǒng)。
mfgtool2-yocto-mx-evk-emmc.vbs 文件
ucl2.xml文件中確定了要燒寫的處理器型號(hào)以后,還要確定向什么存儲(chǔ)設(shè)備燒寫系統(tǒng),這是在mfgtools/mfgtool2-yocto-mx-evk-emmc.vbs中配置;
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重點(diǎn)是“wshShell.run”這一行,這里一行調(diào)用了 mfgtool2.exe 這個(gè)軟件,并且還給出了一堆的參數(shù),其中就有“eMMC”字樣,說(shuō)明是向 EMMC 燒寫系統(tǒng),要燒寫的存儲(chǔ)設(shè)備就這樣確定下來(lái)了。 繼續(xù)分析ucl2.xml文件中的燒寫過(guò)程 前面說(shuō)了燒寫分兩個(gè)階段,第一步是通過(guò) USB OTG 向 DDR中下載系統(tǒng),第二步才是正常的燒寫。通過(guò) USB OTG 向 DDR 下載 uboot 的命令如下:
“file”表示要下載的文件位置,在firmware目錄下,文件名字為:Loading U-boot
u-boot-imx6ul%lite%%6uluboot%_emmc.imx“%lite%”和“%6uluboot%” 分別表示取lite和6uluboot的值,在cfg.ini文件中有定義。
cfg.ini文件
mfgtools/cfg.ini文件是一個(gè)配置文件,內(nèi)容如下:
[profiles] chip = Linux [platform] board = SabreSD [LIST] name = SDCard [variable] board = sabresd mmc = 0 sxuboot=sabresd sxdtb=sdb 7duboot=sabresd 7ddtb=sdb 6uluboot=14x14ddr3arm2 6uldtb=14x14-ddr3-arm2 6ulldtb=14x14-ddr3-arm2 ldo= plus= lite=l initramfs=fsl-image-mfgtool-initramfs-imx_mfgtools.cpio.gz.u-boot seek = 1 sxnor=qspi2 7dnor=qspi1 6ulnor=qspi1 nor_part=0
“%lite%”和“%6uluboot%”分別表示取 lite 和 6uluboot 的值,而 lite=l,6uluboot=14x14evk,因此將這個(gè)值代入以后就是:
u-boot-imx6ull14x14evk _emmc.imx這里向 DDR 中下載的是 firmware/ u-boot-imx6ull14x14evk _emmc.imx 這個(gè) uboot 文件。同樣的方法將.dtb(設(shè)備樹)和 zImage 都下載到 DDR 中以后就會(huì)跳轉(zhuǎn)去運(yùn)行 OS,這個(gè)時(shí)候會(huì)在 MfgTool 工具中會(huì)有“Jumping to OS image”提示語(yǔ)句,ucl2.xml 中的跳轉(zhuǎn)命令如下:
啟動(dòng) Linux 系統(tǒng)以后就可以在 EMMC 上創(chuàng)建分區(qū),然后燒寫 uboot、zImage、.dtb(設(shè)備樹)和根文件系統(tǒng)。Jumping to OS image.
|燒寫 NXP 官方系統(tǒng)
燒寫步驟如下:
1、連接好 USB,撥碼開關(guān)撥到 USB 下載模式。
2、彈出 TF 卡,然后按下開發(fā)板復(fù)位按鍵。
3、打開 串口工具。
4、雙擊“mfgtool2-yocto-mx-evk-emmc.vbs”,打開下載軟件,如果出現(xiàn)“符合 HID 標(biāo)準(zhǔn)的供應(yīng)商定義設(shè)備”等字樣就說(shuō)明下載軟件已經(jīng)準(zhǔn)備就緒。點(diǎn)擊“Start”按鈕開發(fā)燒寫 NXP 官方系統(tǒng),燒寫過(guò)程如圖所示:
燒錄過(guò)程會(huì)輸出一些信息:
等待好幾分鐘,串口沒輸出就是下載完:
燒寫完成以后點(diǎn)擊“Stop”按鈕停止燒寫,然后點(diǎn)擊“Exit”鍵退出。拔出 USB 線,將開發(fā)板上的撥碼開關(guān)撥到 EMMC 啟動(dòng)模式,然后重啟開發(fā)板,此時(shí)就會(huì)從 EMMC 啟動(dòng)。只是啟動(dòng)以后的系統(tǒng)是 NXP 官方給 I.MX6ULL EVK 開發(fā)板制作的,這個(gè)系統(tǒng)需要輸入用戶名,用戶名為“root”,沒有密碼:
成功進(jìn)入系統(tǒng):
|燒寫自己的系統(tǒng)
準(zhǔn)備要燒寫的文件: 自己移植編譯出來(lái)的uboot文件(u-boot.imx),自己移植編譯出來(lái)的zImage鏡像文件,開發(fā)板對(duì)應(yīng)的.dtb(設(shè)備樹)mx6ull-myboard.dtb,自己構(gòu)建的根文件系統(tǒng)rootfs; rootfs需要先打包成rootfs.tar.bz2,進(jìn)入U(xiǎn)buntu中的nfs目錄下的rootfs目錄,使用tar命令打包:
cd rootfs/ tar -vcjf rootfs.tar.bz2 *
全部復(fù)制到windows桌面,然后修改一下名稱;
文明名稱一定要和下面的名稱一致;
原名稱 | 修改替換的名稱 |
---|---|
u-boot.imx | u-boot-imx6ull14x14evk_emmc.imx |
zImage | zImage(不需要重命名) |
imx6ull-myboard-emmc.dtb | zImage-imx6ull-14x14-evk-emmc.dtb |
rootfs.tar.bz2 | rootfs_nogpu.tar.bz2 |
先將上圖中的 zImage、u-boot-imx6ull14x14evk_emmc.imx 和 zImage-imx6ull-14x14-evk-emmc.dtb 這三個(gè)文件拷貝到 mfgtools-with-rootfs/mfgtools/Profiles/Linux/OS Firmware/firmware 目錄中,替換掉原來(lái)的文件。然后將上圖中的所有 4 個(gè)文件都拷貝到 mfgtools-with-rootfs/mfgtools/Profiles/Linux/OS Firmware/files目錄中,這兩個(gè)操作完成以后就可以進(jìn)行燒寫了。雙擊“mfgtool2-yocto-mx-evk-emmc.vbs”,打開燒寫軟件,按照燒錄流程燒錄,點(diǎn)擊“Start”按鈕開始燒寫;
燒錄完成,切換到EMMC啟動(dòng),成功進(jìn)入系統(tǒng);
|網(wǎng)絡(luò)開機(jī)自啟動(dòng)設(shè)置
用 NFS 掛載根文件系統(tǒng)的時(shí)候因?yàn)橐褂?NFS服務(wù),因此 Linux 內(nèi)核會(huì)打開 eth0 這個(gè)網(wǎng)卡,現(xiàn)在不使用 NFS 掛載根文件系統(tǒng),因此 Linux內(nèi)核也就不會(huì)自動(dòng)打開 eth0 網(wǎng)卡了,可以手動(dòng)打開網(wǎng)卡;
//查看eth0和eth1是否都存在 ifconfig -a // 打開 eth0 網(wǎng)卡 ifconfig eth0 up //查看網(wǎng)卡,會(huì)看到eth0網(wǎng)卡 ifconfig //自動(dòng)設(shè)置IP地址 udhcpc -i eth0 // 通過(guò)路由器分配 IP 地址 // 手動(dòng)設(shè)置 IP 地址 ifconfig eth0 192.168.1.251 netmask 255.255.255.0 //設(shè)置 IP 地址和子網(wǎng)掩碼 route add default gw 192.168.1.1 //添加默認(rèn)網(wǎng)關(guān)開機(jī)自動(dòng)打開網(wǎng)卡 設(shè)置網(wǎng)卡 IP 地址的命令添加到/etc/init.d/rcS 文件中:
#!/bin/sh PATH=/sbin:/bin:/usr/sbin:/usr/bin:$PATH LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/lib:/usr/lib export PATH LD_LIBRARY_PATH mount -a mkdir /dev/pts mount -t devpts devpts /dev/pts echo /sbin/mdev > /proc/sys/kernel/hotplug mdev -s #網(wǎng)絡(luò)開機(jī)自啟動(dòng)設(shè)置 ifconfig eth0 up #udhcpc -i eth0 ifconfig eth0 192.168.2.50 netmask 255.255.255.0 route add default gw 192.168.2.1修改了根文件系統(tǒng)就需要重新壓縮,然后燒錄到EMMC中,再?gòu)腅MMC啟動(dòng)系統(tǒng),再ping百度來(lái)驗(yàn)證網(wǎng)絡(luò)是否能用:
移植工作就到這里,后續(xù)學(xué)習(xí) Linux驅(qū)動(dòng)開發(fā)!
審核編輯:湯梓紅
-
Linux
+關(guān)注
關(guān)注
87文章
11310瀏覽量
209616 -
移植
+關(guān)注
關(guān)注
1文章
379瀏覽量
28142 -
開發(fā)板
+關(guān)注
關(guān)注
25文章
5059瀏覽量
97547 -
燒寫
+關(guān)注
關(guān)注
0文章
57瀏覽量
14301
原文標(biāo)題:i.MX6ULL|系統(tǒng)燒寫
文章出處:【微信號(hào):玩轉(zhuǎn)單片機(jī),微信公眾號(hào):玩轉(zhuǎn)單片機(jī)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論