系統(tǒng)燒寫(xiě)初探
嵌入式 Linux開(kāi)發(fā)中通常是用網(wǎng)絡(luò)來(lái)進(jìn)行測(cè)試,但最終的產(chǎn)品中可能不會(huì)通過(guò)網(wǎng)絡(luò)來(lái)運(yùn)行。 因此需要將 uboot、linux kernel、. dtb(設(shè)備樹(shù)) 和 rootfs這四個(gè)文件燒寫(xiě)到開(kāi)發(fā)板的 EMMC、NAND或 QSPI Flash等存儲(chǔ)設(shè)備上,這樣不管有沒(méi)有網(wǎng)絡(luò)都可以正常運(yùn)行。 本文將介紹 NXP官方提供的 I.MX系列 CPU燒寫(xiě)軟件MfgTool及其工作原理
1. MfgTool工具介紹
MfgTool工具是 NXP提供的專門(mén)用于給 I.MX系列 CPU燒寫(xiě)系統(tǒng)的軟件,可以在 NXP官網(wǎng)下載,該軟件在 Windows下使用,本文中使用的是 L4.1.15_2.0.0-ga_mfg-tools.tar.gz,解壓后的文件夾內(nèi)容如下圖:
選擇 with-rootfs的壓縮包繼續(xù)解壓,解壓完后,進(jìn)入 mfgtools文件夾,其內(nèi)容如下圖示:
其中:
- Profiles文件夾:存放要燒寫(xiě)的文件
- MfgTool2.exe:燒寫(xiě)軟件
mfg_tools可以燒寫(xiě)I.MX6U、I.MX7、I.MX6Q等芯片,所以燒寫(xiě)前必須要進(jìn)行配置,指定燒寫(xiě)芯片,燒寫(xiě)到哪里去。 mfgtools文件夾中有很多.vbs文件就是配置腳本,燒寫(xiě)時(shí)通過(guò)雙擊這些腳本文件來(lái)打開(kāi)燒寫(xiě)工具
2. MfgTool原理介紹
下面以 I.MX6U-ALPHA EMMC開(kāi)發(fā)板為平臺(tái),介紹 MfgTool的工作原理,了解其工作流程
2.1 燒寫(xiě)方式
連接 USB線:通過(guò) USB OTG接口將系統(tǒng)燒寫(xiě)進(jìn) EMMC中
撥碼開(kāi)關(guān)撥到 USB下載模式:撥碼到如下圖所示模式,注意要彈出TF卡
2.2 系統(tǒng)燒寫(xiě)原理
開(kāi)發(fā)板連接電腦以后雙擊mfgtool2-yocto-mx-evk-emmc.vbs,若出現(xiàn)“符合HID標(biāo)準(zhǔn)的供應(yīng)商定義設(shè)備”就說(shuō)明連接正常,可以進(jìn)行燒寫(xiě),若出現(xiàn)其他字符就需要檢查連接是否正確。 點(diǎn)擊“Start”按鈕即可開(kāi)始燒寫(xiě)
那么 uboot、Linux kernel、. dtb和 rootfs這四個(gè)文件應(yīng)該放到哪個(gè)文件夾里,才可以被 MfgTool訪問(wèn)到呢。 進(jìn)入如下目錄中:
mfgtools/Profiles/Linux/OS 固件
OS Firmware文件夾就是存放系統(tǒng)固件的,重點(diǎn)關(guān)注 files和 firmware文件夾,以及 ucl2.xml文件。 MfgTool 工作過(guò)程主要分兩個(gè)階段:
- 將firmware目錄中的uboot、kernel和.dtb三個(gè)文件,通過(guò)USB OTG下載到開(kāi)發(fā)板的DDR中,并在DDR中啟動(dòng)系統(tǒng),為后面的燒寫(xiě)做準(zhǔn)備
- 系統(tǒng)啟動(dòng)后,完成對(duì)EMMC的格式化、分區(qū)等操作,分區(qū)建好后就可以從files中讀取要燒寫(xiě)的uboot、kernel、. dtb和 rootfs這四個(gè)文件,并將其燒寫(xiě)到EMMC中
下面介紹 files文件夾、firmware文件夾、ucl2.xml文件
firmware文件夾:存放第一階段需要的三個(gè)文件,注意燒寫(xiě)自已的系統(tǒng)時(shí),需要將自己的文件名字改為和下表中一致,否則 ucl2.xml識(shí)別不出來(lái)
files文件夾:存放第二階段需要的四個(gè)文件,將其燒寫(xiě)到 EMMC 中,燒寫(xiě)自已的系統(tǒng)時(shí),需將自己的文件名字改為和下表中一致,否則 ucl2.xml 無(wú)法識(shí)別
ucl2.xml文件:用來(lái)選擇燒寫(xiě)文件,以UCL開(kāi)始,/UCL結(jié)束,整體框架如下
CFG和/CFG之間是配置相關(guān)內(nèi)容,判斷給 I.MX系列的哪個(gè)芯片燒寫(xiě)系統(tǒng)。 通過(guò)讀取芯片的VID和PID即可判斷出當(dāng)前要燒寫(xiě)什么處理器的系統(tǒng)
name="BootStrap" dev="MX6SL" vid="15A2" pid="0063"/>
name="BootStrap" dev="MX6D" vid="15A2" pid="0061"/>
name="BootStrap" dev="MX6Q" vid="15A2" pid="0054"/>
name="BootStrap" dev="MX6SX" vid="15A2" pid="0071"/>
name="BootStrap" dev="MX6UL" vid="15A2" pid="007D"/>
name="BootStrap" dev="MX7D" vid="15A2" pid="0076"/>
name="BootStrap" dev="MX6ULL" vid="15A2" pid="0080"/>
name="Updater" dev="MSC" vid="066F" pid="37FF"/>
class="hljs-name"CFG>
name="SDCard" desc="Choose SD Card as media">
class="hljs-name"LIST>
name="eMMC" desc="Choose eMMC as media">
class="hljs-name"LIST>
name="Nor Flash" desc="Choose Nor flash as media">
class="hljs-name"LIST>
name="Quad Nor Flash" desc="Choose Quad Nor flash as media">
class="hljs-name"LIST>
name="NAND Flash" desc="Choose NAND as media">
class="hljs-name"LIST>
name="SDCard-Android" desc="Choose SD Card as media">
class="hljs-name"LIST>
name="eMMC-Android" desc="Choose eMMC as media">
class="hljs-name"LIST>
確定了處理器后,就要確定向什么存儲(chǔ)設(shè)備燒寫(xiě)系統(tǒng),這時(shí)需要再次用到 mfgtool2-yocto-mx-evk-emmc.vbs文件,此文件內(nèi)容如下:
Set wshShell = CreateObject("WScript.shell")
#調(diào)用了mfgtool2.exe這個(gè)軟件,并給出了相應(yīng)的參數(shù)
wshShell.run "mfgtool2.exe -c ""linux"" -l ""eMMC"" -s
""board=sabresd"" -s ""mmc=1"" -s ""6uluboot=14x14evk"" -s
""6uldtb=14x14-evk"""
Set wshShell = Nothing
確定是向 EMMC中燒寫(xiě)系統(tǒng)后,返回到 ucl2.xml中找到相應(yīng)的燒寫(xiě)命令。 以 uboot 燒寫(xiě)為例,通過(guò) USB OTG向 DDR下載 uboot的命令如下:
# mfgtools文件夾下找到cfg.ini文件,該文件里包含了開(kāi)發(fā)板的一些信息
# 可知 “%lite%”和“%6uluboot%”分別表示取lite和6uluboot的值
# 而lite=l,6uluboot=14x14evk,因此代入以后就是:
# u-boot-imx6ull14x14evk _emmc.imx
按上面的方法將.dtb 和 zImage都下載到 DDR中以后就會(huì)跳轉(zhuǎn)去運(yùn)行OS,這時(shí)在MfgTool工具中會(huì)有“Jumping to OS image”提示語(yǔ)句,ucl2.xml中的跳轉(zhuǎn)命令如下:
type="jump" > Jumping to OS image. class="hljs-name"CMD>
啟動(dòng) Linux 系統(tǒng)以后就可以在 EMMC 上創(chuàng)建分區(qū),然后燒寫(xiě) uboot、 zImage、 .dtb(設(shè)備樹(shù)) 和根文件系統(tǒng)
-
NXP
+關(guān)注
關(guān)注
60文章
1265瀏覽量
182979 -
Linux
+關(guān)注
關(guān)注
87文章
11215瀏覽量
208741 -
WINDOWS
+關(guān)注
關(guān)注
3文章
3523瀏覽量
88330 -
Linux系統(tǒng)
+關(guān)注
關(guān)注
4文章
590瀏覽量
27320 -
燒寫(xiě)
+關(guān)注
關(guān)注
0文章
57瀏覽量
14241
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論