最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

i.MX6ULL嵌入式Linux開發(fā)6-系統(tǒng)燒寫到eMMC與遇到的坑!

2021-08-17 00:24 作者:碼農愛學習-B站  | 我要投稿

前面幾篇文章,已經(jīng)搞定了Linux移植三巨頭:uboot、kernel(包含dtb)和rootfs,除了uboot是燒寫在SD中的,其它的都是在ubuntu虛擬機的nfs服務器中,運行時必須通過網(wǎng)絡將這些文件加載到開發(fā)板的內存中運行。

本篇就來研究,將這幾個文件打包燒寫到板子的eMMC中,實現(xiàn)嵌入式Linux系統(tǒng)的燒寫,這樣,在沒有網(wǎng)絡的情況下,板子也可以正常運行。系統(tǒng)燒寫使用的是NXP官方的MfgTool工具,通過USB OTG口來燒寫。

1 MfgTool介紹2 MfgTool燒寫步驟2.1 連接USB OTG2.2 切換撥碼開關模式 2.3 系統(tǒng)燒寫3 MfgTool燒寫原理3.1 firmeare文件夾 3.2 files文件夾3.3 ucl2.xml文件 3.4 xxx.vbs文件3.5 cfg.ini文件4 系統(tǒng)燒寫實踐4.1 燒寫NXP官方系統(tǒng) 4.2 燒寫自己的系統(tǒng)4.3 解決內核無法啟動的錯誤4.4 解決網(wǎng)絡沒有啟動的問題5 總結

1 MfgTool介紹

MfgTool是NXP官方提供的用于燒寫i.MX系列CPU的系統(tǒng)燒寫工具,該軟件需要在Windows環(huán)境下使用。

這是使用正點原子提供的已經(jīng)下載好的NXP燒寫工具:L4.1.15_2.0.0-ga_mfg-tools.tar.gz。

將軟件包解壓,里面還有2個.gz 壓縮包,一個是帶rootfs,一個是不帶rootfs,我們是需要燒寫文件系統(tǒng)的,所以選擇 mfgtools-with-rootfs.tar.gz 這個壓縮包,繼續(xù)解壓。

進入目錄 mfgtools-with-rootfs\mfgtools 中, 在此目錄下有幾個文件夾和很多的.vbs 文件:

  • Profiles文件夾:要燒寫的文件就放到這個文件夾中。

  • MfgTool2.exe:燒寫軟件,但不需要直接打開這個軟件燒寫。

  • 眾多的.vbs 文件:燒寫配置腳本,指定燒寫的芯片和地址,燒寫的時候通過雙擊這些.vbs文件來打開燒寫工具。因為我的這塊開發(fā)板是EMMC版本的,所以只需要關注mfgtool2-yocto-mx-evk-emmc.vbs這個vbs文件。

2 MfgTool燒寫步驟

2.1 連接USB OTG

MfgTool是通過USB OTG接口將系統(tǒng)燒寫進EMMC中的,我這塊野火板子的OTG接口在板子右側,使用USB線連接電腦(使用USB OTG連接時,需要先把SD卡拔出)。

2.2 切換撥碼開關模式

將撥碼開關撥到USB下載模式

撥碼編號NANDEMMCSDUSB10001211103100x4010x5011x6100x7010x8001x

連接電源,進入USB模式,連接成功后電腦右下角會有提示

2.3 系統(tǒng)燒寫

雙擊“mfgtool2-yocto-mx-evk-emmc.vbs” ,出現(xiàn)如下窗口:

如果出現(xiàn)“符合HID標準的供應商定義設備”就說明連接正常,可以進行燒寫。若硬件連接完畢,燒寫文件也配置好了,點擊Start按鈕即可一鍵燒寫。

3 MfgTool燒寫原理

我們需要燒寫uboot、kernel、.dtb 和 rootfs這四個文件,它們一起構成了linux系統(tǒng)。

進入如下的系統(tǒng)固件目錄中:

L4.1.15_2.0.0-ga_mfg-tools/mfgtools-with-rootfs/mfgtools/Profiles/Linux/OS Firmware

我們重點關注files、firmware這兩個文件夾,以及ucl2.xml這個文件。

MfgTool燒寫的工作過程主要分兩個階段

  • 第一階段:MfgTool先通過USB OTG先將firmware目錄uboot、kernel和.dtb這是三個文件下載到開發(fā)板的DDR內存中(注意不需要下載 rootfs),就相當于直接在開發(fā)板的內存上啟動Linux系統(tǒng)。

  • 第二階段:等Linux 系統(tǒng)啟動以后(這時可以方便的完成對EMMC的格式化、分區(qū)等操作),再向EMMC中燒寫完整的系統(tǒng),包括files目錄中的uboot、linux kernel、.dtb和rootfs這4個文件

3.1 firmeare文件夾

mfgtools/Profiles/Linux/OS Firmware/firmware文件夾里有很多NXP官方開發(fā)板使用的文件,包括.imx 結尾的uboot文件、一個zImage鏡像文件、很多.dtb結尾的設備樹文件,我們需要注意其中三個文件:

  • zImage:NXP官方I.MX6ULL EVK開發(fā)板的Linux鏡像文件

  • u-boot-imx6ull14x14evk_emmc.imx:NXP官方I.MX6ULL EVK開發(fā)板的uboot文件

  • zImage-imx6ull-14x14-evk-emmc.dtb:NXP 官方I.MX6ULL EVK開發(fā)板的設備樹

這3個文件即第一階段需要燒寫的文件,如果要燒寫我們的系統(tǒng),就要用自己編譯的文件替換這3個文件。

3.2 files文件夾

mfgtools/Profiles/Linux/OS Firmware/files目錄中的文件和firmware 目錄中的基本差不多,這里就要注意下面4個文件

  • zImage:同上

  • u-boot-imx6ull14x14evk_emmc.imx:同上

  • zImage-imx6ull-14x14-evk-emmc.dtb:同上

  • rootfs_nogpu.tar.bz2根文件系統(tǒng)(nogpu表示不包含GPU的內容)

這4個文件即第二階段需要燒寫的文件,如果要燒寫我們的系統(tǒng),就要用自己編譯的文件替換這4個文件。

3.3 ucl2.xml文件

mfgtools/Profiles/Linux/OS Firmware/ucl2.xml是一種XML格式的文件,用來指定files和firmware目錄要燒寫的uboot和設備樹文件。

ucl2.xml 以 “<UCL>” 開始, 以 “</UCL>” 結束。 “<CFG>”和“</CFG>”之間是配置相關內容,“<LIST>”和“</LIST>”之間的是針對不同存儲芯片的燒寫命令。

ucl2.xml文件有600多行,這里抽取主干結構來看一個該文件的主要運行流程:

ucl2.xml 首先會判斷當前要向I.MX系列的哪個型號的芯片燒寫系統(tǒng):

通過讀取芯片的VID和PID,即可判斷要燒什么處理器的系統(tǒng), 如VID=0X15A2,PID=0080,就表示要給I.MX6ULL燒寫系統(tǒng)。

3.4 xxx.vbs文件

ucl2.xml文件中確定了要燒寫的處理器型號以后,還要確定向什么存儲設備燒寫系統(tǒng),這是在mfgtools/mfgtool2-yocto-mx-evk-emmc.vbs中配置,右鍵,用文本編輯器打開這個文件(不要雙擊哦):

注意“wshShell.run”這一行,調用了 mfgtool2.exe 這個軟件,還給出了一堆的參數(shù),包含“eMMC”字樣,表示是向 EMMC 燒寫系統(tǒng)


下面繼續(xù)分析ucl2.xml文件中的燒寫過程

前面說了燒寫分兩個階段, 第一步是通過 USB OTG 向 DDR中下載系統(tǒng),第二步才是正常的燒寫。

根據(jù)當前是EMMC的板子,第1步燒寫uboot的命令如下:

file” 表示要下載的文件位置:

firmware/u-boot-imx6ul%lite%%6uluboot%_emmc.imx

“%lite%”“%6uluboot%”分別表示取lite6uluboot的值, 那lite和6uluboot的值是多少呢?在cfg.ini文件中有定義。

3.5 cfg.ini文件

mfgtools/cfg.ini文件是一個配置文件,內容如下:

可以看到,lite=l,6uluboot=14x14evk。


繼續(xù)分析ucl2.xml文件中的燒寫過程,將lite和6uluboot的值代入以后,要燒寫的uboot文件名就是:

firmware/u-boot-imx6ull14x14evk _emmc.imx

同樣的方法將.dtb(設備樹)和zImage都下載到DDR中以后就會跳轉去運行OS,這個時候會在MfgTool工具中會有“Jumping to OS image”提示語句,ucl2.xml中的跳轉命令如下:

啟動Linux系統(tǒng)以后就可以在EMMC上創(chuàng)建分區(qū),然后燒寫uboot、zImage、.dtb(設備樹)和根文件系統(tǒng)。

4 系統(tǒng)燒寫實踐

4.1 燒寫NXP官方系統(tǒng)

因為我的板子是512MB的DDR3+8G的EMMC,與NXP官方開發(fā)板類似,可以先試著燒寫NX官方的系統(tǒng),熟悉燒寫流程:

  • 撥碼開關撥到USB模式,拔出SD卡,連接USB

  • 板子上電,連接串口(用于查看具體的下載信息)

  • 按下開發(fā)板復位按鍵。

  • 雙擊打開“mfgtool2-yocto-mx-evk-emmc.vbs” ,確認出現(xiàn)“符合 HID 標準的供應商定義設備”等字樣,點擊Start按鈕。

注:燒錄開始時,會彈出大容量存儲器之類的窗口,并會出現(xiàn)短暫的No Device Connet的提示,不用理會。

注:官方的系統(tǒng)文件較大,燒錄時間較長。另外,若燒錄失敗,串口也沒打印信息,我剛開始就遇到了這種情況,然后我用野火提供的軟件包(系統(tǒng)文件比較小,燒錄在1分鐘左右)燒錄成功后,再回過頭來繼續(xù)燒錄NXP官方的就有串口輸出信息了。

我的板子燒錄官方系統(tǒng)時,不知什么原因一直燒錄不成功,如下圖,因為用不到官方的系統(tǒng),就先不管它,有時間再查。

4.2 燒寫自己的系統(tǒng)

準備要燒寫的文件:

  • 自己移植編譯出來的uboot文件:u-boot.imx(位于u-boot源碼主目錄中)

  • 自己移植編譯出來的zImage鏡像文件(位于Kernel源碼的arch/arm/boot目錄中)和開發(fā)板對應的.dtb(設備樹)mx6ull-myboard.dtb(位于Kernel源碼的arch/arm/boot/dts目錄中)

  • 自己構建的根文件系統(tǒng)rootfs

    rootfs需要先打包成rootfs.tar.bz2,進入Ubuntu中的nfs目錄下的rootfs目錄,使用tar命令打包:

    cd rootfs/
    tar -vcjf rootfs.tar.bz2 *

將這4個文件復制到Windows系統(tǒng)中準備燒錄。

總結一下要準備的文件,如下圖:

燒寫時,這里有兩種修改方式進行燒寫,一種是將自己的4個文件按照NXP官方的文件進行重命名,并替換掉官網(wǎng)的文件,即可直接燒錄。另一種是改造MfgTool燒寫工具,使得該燒寫工具能夠兼容自己板子的文件名。因為第2種修改比較麻煩,先使用第1種簡單的方式進行燒寫,只需要修改文件名即可。

需要替換的名稱為:

原名稱修改替換的名稱u-boot.imxu-boot-imx6ull14x14evk_emmc.imxzImagezImage(不需要重命名)imx6ull-myboard.dtbzImage-imx6ull-14x14-evk-emmc.dtbrootfs.tar.bz2rootfs_nogpu.tar.bz2

點擊Start開始燒寫,等待燒寫完成:

燒錄完,點擊Stop退出即可。

然后切換板子為EMMC啟動,復位重啟開發(fā)板,正常情況下應該就可以看到燒錄的系統(tǒng)正常啟動了。

但是,我這里出現(xiàn)了一點小差錯。

4.3 解決內核無法啟動的錯誤

在燒錄完系統(tǒng),切換到EMMC啟動時,我板子的內核沒有運行起來,提示“MMC:no card present”的錯誤:


好像是EMMC沒有找到,就無法啟動內核。

網(wǎng)上查找相關問題,根據(jù)這篇:https://blog.csdn.net/qq_43605009/article/details/113646312的描述,應該是uboot的里一個配置項搞錯了,就是這里:

我們的defconfig配置文件中,第一行最后那個不需要改,要改回默認的MX6ULL_EVK_EMMC_REWORK,改完,重新編譯uboot生成u-boot.imx,再次進行燒錄就能正常啟動內核了。(這里的MX6ULL_EVK_EMMC_REWORK的具體作用我還沒搞明白,有時間再研究)

正常啟動后,就可以看到和之前使用nfs網(wǎng)絡方式啟動一樣的效果了:

4.4 解決網(wǎng)絡沒有啟動的問題

板子插上網(wǎng)線,使用ifconfig命令查看網(wǎng)絡信息,發(fā)現(xiàn)沒有連接網(wǎng)絡,這是因為板子的網(wǎng)絡功能沒有打開。之前使用nfs掛載根文件系統(tǒng)的時候因為要使用nfs服務,Linux內核會打開eth0這個網(wǎng)卡,現(xiàn)在我們不使用nfs掛載根文件系統(tǒng), Linux內核就沒有自動打開eth 網(wǎng)卡。

我們可以手動打開,以打開eth1網(wǎng)卡為例,輸入如下命令打開 eth1:

然后可以為板子分配IP:

目前這種手動修改的方式,每次開機以后就沒有了,還需要重新設置??梢詫⒃O置網(wǎng)卡IP地址的命令添加到/etc/init.d/rcS開機啟動文件中,添加如下內容:

然后保存,reboot命令重啟開發(fā)板,重啟后就自動連上網(wǎng)了。


5 總結

本篇主要介紹了Linux移植的系統(tǒng)打包燒錄的EMMC的方法,使用MfgTool工具,將uboot、linux kernel、.dtb和rootfs這4個文件燒寫到板子的EMMC中。燒錄過程中,發(fā)現(xiàn)了之前修改uboot配置時的一個問題,導致內核無法啟動,修改后可以正常啟動。另外,還修改開機啟動文件,使得網(wǎng)絡能夠開機自動連接。



i.MX6ULL嵌入式Linux開發(fā)6-系統(tǒng)燒寫到eMMC與遇到的坑!的評論 (共 條)

分享到微博請遵守國家法律
繁昌县| 耿马| 文成县| 太康县| 吉木乃县| 徐水县| 白玉县| 固安县| 盐亭县| 鄯善县| 宝坻区| 绥德县| 普兰店市| 和田市| 平湖市| 英德市| 夹江县| 东兰县| 电白县| 石首市| 丰城市| 芷江| 民乐县| 丰台区| 麻江县| 舟曲县| 资中县| 胶州市| 两当县| 荆门市| 梅河口市| 丘北县| 富裕县| 浠水县| 巴马| 景德镇市| 荃湾区| 兴义市| 苏尼特左旗| 昂仁县| 武穴市|