系統燒寫初探
嵌入式 Linux開發中通常是用網絡來進行測試,但最終的產品中可能不會通過網絡來運行。 因此需要將 uboot、linux kernel、. dtb(設備樹) 和 rootfs這四個文件燒寫到開發板的 EMMC、NAND或 QSPI Flash等存儲設備上,這樣不管有沒有網絡都可以正常運行。 本文將介紹 NXP官方提供的 I.MX系列 CPU燒寫軟件MfgTool及其工作原理
1. MfgTool工具介紹
MfgTool工具是 NXP提供的專門用于給 I.MX系列 CPU燒寫系統的軟件,可以在 NXP官網下載,該軟件在 Windows下使用,本文中使用的是 L4.1.15_2.0.0-ga_mfg-tools.tar.gz,解壓后的文件夾內容如下圖:
選擇 with-rootfs的壓縮包繼續解壓,解壓完后,進入 mfgtools文件夾,其內容如下圖示:
其中:
- Profiles文件夾:存放要燒寫的文件
- MfgTool2.exe:燒寫軟件
mfg_tools可以燒寫I.MX6U、I.MX7、I.MX6Q等芯片,所以燒寫前必須要進行配置,指定燒寫芯片,燒寫到哪里去。 mfgtools文件夾中有很多.vbs文件就是配置腳本,燒寫時通過雙擊這些腳本文件來打開燒寫工具
2. MfgTool原理介紹
下面以 I.MX6U-ALPHA EMMC開發板為平臺,介紹 MfgTool的工作原理,了解其工作流程
2.1 燒寫方式
連接 USB線:通過 USB OTG接口將系統燒寫進 EMMC中
撥碼開關撥到 USB下載模式:撥碼到如下圖所示模式,注意要彈出TF卡
2.2 系統燒寫原理
開發板連接電腦以后雙擊mfgtool2-yocto-mx-evk-emmc.vbs,若出現“符合HID標準的供應商定義設備”就說明連接正常,可以進行燒寫,若出現其他字符就需要檢查連接是否正確。 點擊“Start”按鈕即可開始燒寫
那么 uboot、Linux kernel、. dtb和 rootfs這四個文件應該放到哪個文件夾里,才可以被 MfgTool訪問到呢。 進入如下目錄中:
mfgtools/Profiles/Linux/OS 固件
OS Firmware文件夾就是存放系統固件的,重點關注 files和 firmware文件夾,以及 ucl2.xml文件。 MfgTool 工作過程主要分兩個階段:
- 將firmware目錄中的uboot、kernel和.dtb三個文件,通過USB OTG下載到開發板的DDR中,并在DDR中啟動系統,為后面的燒寫做準備
- 系統啟動后,完成對EMMC的格式化、分區等操作,分區建好后就可以從files中讀取要燒寫的uboot、kernel、. dtb和 rootfs這四個文件,并將其燒寫到EMMC中
下面介紹 files文件夾、firmware文件夾、ucl2.xml文件
firmware文件夾:存放第一階段需要的三個文件,注意燒寫自已的系統時,需要將自己的文件名字改為和下表中一致,否則 ucl2.xml識別不出來
files文件夾:存放第二階段需要的四個文件,將其燒寫到 EMMC 中,燒寫自已的系統時,需將自己的文件名字改為和下表中一致,否則 ucl2.xml 無法識別
ucl2.xml文件:用來選擇燒寫文件,以UCL開始,/UCL結束,整體框架如下
CFG和/CFG之間是配置相關內容,判斷給 I.MX系列的哪個芯片燒寫系統。 通過讀取芯片的VID和PID即可判斷出當前要燒寫什么處理器的系統
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>
確定了處理器后,就要確定向什么存儲設備燒寫系統,這時需要再次用到 mfgtool2-yocto-mx-evk-emmc.vbs文件,此文件內容如下:
Set wshShell = CreateObject("WScript.shell")
#調用了mfgtool2.exe這個軟件,并給出了相應的參數
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中燒寫系統后,返回到 ucl2.xml中找到相應的燒寫命令。 以 uboot 燒寫為例,通過 USB OTG向 DDR下載 uboot的命令如下:
# mfgtools文件夾下找到cfg.ini文件,該文件里包含了開發板的一些信息
# 可知 “%lite%”和“%6uluboot%”分別表示取lite和6uluboot的值
# 而lite=l,6uluboot=14x14evk,因此代入以后就是:
# u-boot-imx6ull14x14evk _emmc.imx
按上面的方法將.dtb 和 zImage都下載到 DDR中以后就會跳轉去運行OS,這時在MfgTool工具中會有“Jumping to OS image”提示語句,ucl2.xml中的跳轉命令如下:
type="jump" > Jumping to OS image. class="hljs-name"CMD>
啟動 Linux 系統以后就可以在 EMMC 上創建分區,然后燒寫 uboot、 zImage、 .dtb(設備樹) 和根文件系統
-
NXP
+關注
關注
60文章
1286瀏覽量
184819 -
Linux
+關注
關注
87文章
11329瀏覽量
209967 -
WINDOWS
+關注
關注
4文章
3554瀏覽量
88996 -
Linux系統
+關注
關注
4文章
595瀏覽量
27449 -
燒寫
+關注
關注
0文章
57瀏覽量
14322
發布評論請先 登錄
相關推薦
評論