系統(tǒng)燒寫初探
嵌入式 Linux開發(fā)中通常是用網(wǎng)絡(luò)來進(jìn)行測(cè)試,但最終的產(chǎn)品中可能不會(huì)通過網(wǎng)絡(luò)來運(yùn)行。 因此需要將 uboot、linux kernel、. dtb(設(shè)備樹) 和 rootfs這四個(gè)文件燒寫到開發(fā)板的 EMMC、NAND或 QSPI Flash等存儲(chǔ)設(shè)備上,這樣不管有沒有網(wǎng)絡(luò)都可以正常運(yùn)行。 本文將介紹 NXP官方提供的 I.MX系列 CPU燒寫軟件MfgTool及其工作原理
1. MfgTool工具介紹
MfgTool工具是 NXP提供的專門用于給 I.MX系列 CPU燒寫系統(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文件夾:存放要燒寫的文件
- MfgTool2.exe:燒寫軟件
mfg_tools可以燒寫I.MX6U、I.MX7、I.MX6Q等芯片,所以燒寫前必須要進(jìn)行配置,指定燒寫芯片,燒寫到哪里去。 mfgtools文件夾中有很多.vbs文件就是配置腳本,燒寫時(shí)通過雙擊這些腳本文件來打開燒寫工具
2. MfgTool原理介紹
下面以 I.MX6U-ALPHA EMMC開發(fā)板為平臺(tái),介紹 MfgTool的工作原理,了解其工作流程
2.1 燒寫方式
連接 USB線:通過 USB OTG接口將系統(tǒng)燒寫進(jìn) EMMC中
撥碼開關(guān)撥到 USB下載模式:撥碼到如下圖所示模式,注意要彈出TF卡
2.2 系統(tǒng)燒寫原理
開發(fā)板連接電腦以后雙擊mfgtool2-yocto-mx-evk-emmc.vbs,若出現(xiàn)“符合HID標(biāo)準(zhǔn)的供應(yīng)商定義設(shè)備”就說明連接正常,可以進(jìn)行燒寫,若出現(xiàn)其他字符就需要檢查連接是否正確。 點(diǎn)擊“Start”按鈕即可開始燒寫
那么 uboot、Linux kernel、. dtb和 rootfs這四個(gè)文件應(yīng)該放到哪個(gè)文件夾里,才可以被 MfgTool訪問到呢。 進(jìn)入如下目錄中:
mfgtools/Profiles/Linux/OS 固件
OS Firmware文件夾就是存放系統(tǒng)固件的,重點(diǎn)關(guān)注 files和 firmware文件夾,以及 ucl2.xml文件。 MfgTool 工作過程主要分兩個(gè)階段:
- 將firmware目錄中的uboot、kernel和.dtb三個(gè)文件,通過USB OTG下載到開發(fā)板的DDR中,并在DDR中啟動(dòng)系統(tǒng),為后面的燒寫做準(zhǔn)備
- 系統(tǒng)啟動(dòng)后,完成對(duì)EMMC的格式化、分區(qū)等操作,分區(qū)建好后就可以從files中讀取要燒寫的uboot、kernel、. dtb和 rootfs這四個(gè)文件,并將其燒寫到EMMC中
下面介紹 files文件夾、firmware文件夾、ucl2.xml文件
firmware文件夾:存放第一階段需要的三個(gè)文件,注意燒寫自已的系統(tǒng)時(shí),需要將自己的文件名字改為和下表中一致,否則 ucl2.xml識(shí)別不出來
files文件夾:存放第二階段需要的四個(gè)文件,將其燒寫到 EMMC 中,燒寫自已的系統(tǒng)時(shí),需將自己的文件名字改為和下表中一致,否則 ucl2.xml 無法識(shí)別
ucl2.xml文件:用來選擇燒寫文件,以UCL開始,/UCL結(jié)束,整體框架如下
CFG和/CFG之間是配置相關(guān)內(nèi)容,判斷給 I.MX系列的哪個(gè)芯片燒寫系統(tǒng)。 通過讀取芯片的VID和PID即可判斷出當(dāng)前要燒寫什么處理器的系統(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è)備燒寫系統(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中燒寫系統(tǒng)后,返回到 ucl2.xml中找到相應(yīng)的燒寫命令。 以 uboot 燒寫為例,通過 USB OTG向 DDR下載 uboot的命令如下:
# mfgtools文件夾下找到cfg.ini文件,該文件里包含了開發(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”提示語句,ucl2.xml中的跳轉(zhuǎn)命令如下:
type="jump" > Jumping to OS image. class="hljs-name"CMD>
啟動(dòng) Linux 系統(tǒng)以后就可以在 EMMC 上創(chuàng)建分區(qū),然后燒寫 uboot、 zImage、 .dtb(設(shè)備樹) 和根文件系統(tǒng)
-
NXP
+關(guān)注
關(guān)注
61文章
1334瀏覽量
187552 -
Linux
+關(guān)注
關(guān)注
87文章
11465瀏覽量
212840 -
WINDOWS
+關(guān)注
關(guān)注
4文章
3608瀏覽量
90973 -
Linux系統(tǒng)
+關(guān)注
關(guān)注
4文章
603瀏覽量
28324 -
燒寫
+關(guān)注
關(guān)注
0文章
57瀏覽量
14552
發(fā)布評(píng)論請(qǐng)先 登錄
【OK210試用體驗(yàn)】SD燒寫Linux系統(tǒng)
3399 開發(fā)板Linux 系統(tǒng)燒寫
Linux系統(tǒng)燒寫DNW報(bào)錯(cuò)這是什么問題
如何燒寫linux鏡像
NXP PMIC芯片燒寫步驟

什么是單片機(jī)燒寫軟件?如何燒寫
STM32MP157 Linux系統(tǒng)移植開發(fā)篇2:燒寫linux鏡像

STM32MP157系列教程連載-Linux系統(tǒng)移植篇2:STM32MP1微處理器之系統(tǒng)鏡像燒寫

Linux固件燒寫中的陷阱:文件系統(tǒng)異步寫入引發(fā)的問題

評(píng)論