在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

i.MX6ULL嵌入式Linux開發6-系統燒寫到eMMC

碼農愛學習 ? 來源:碼農愛學習 ? 作者:碼農愛學習 ? 2022-03-17 09:17 ? 次閱讀

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

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

1 MfgTool介紹

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

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

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

i.MX6ULL嵌入式Linux開發6-系統燒寫到eMMC

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

i.MX6ULL嵌入式Linux開發6-系統燒寫到eMMC

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

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

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

2 MfgTool燒寫步驟

2.1 連接USB OTG

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

2.2 切換撥碼開關模式

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

撥碼編號 NAND EMMC SD USB
1 0 0 0 1
2 1 1 1 0
3 1 0 0 x
4 0 1 0 x
5 0 1 1 x
6 1 0 0 x
7 0 1 0 x
8 0 0 1 x

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

i.MX6ULL嵌入式Linux開發6-系統燒寫到eMMC

2.3 系統燒寫

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

i.MX6ULL嵌入式Linux開發6-系統燒寫到eMMC

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

3 MfgTool燒寫原理

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

進入如下的系統固件目錄中:

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

i.MX6ULL嵌入式Linux開發6-系統燒寫到eMMC

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

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

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

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

3.1 firmeare文件夾

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

zImage:NXP官方I.MX6ULL EVK開發板的Linux鏡像文件

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

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

這3個文件即第一階段需要燒寫的文件,如果要燒寫我們的系統,就要用自己編譯的文件替換這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根文件系統(nogpu表示不包含GPU的內容)

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

3.3 ucl2.xml文件

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

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

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

Loading U-bootLoading Kernel.Loading Initramfs.Loading device tree. Jumping to OS image. 

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

i.MX6ULL嵌入式Linux開發6-系統燒寫到eMMC

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

3.4 xxx.vbs文件

ucl2.xml文件中確定了要燒寫的處理器型號以后,還要確定向什么存儲設備燒寫系統,這是在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

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

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

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

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

Loading U-boot 

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

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

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

3.5 cfg.ini文件

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

[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=l,6uluboot=14x14evk。

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

firmware/u-boot-imx6ull14x14evk _emmc.imx

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

 Jumping to OS image. 

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

4 系統燒寫實踐

4.1 燒寫NXP官方系統

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

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

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

按下開發板復位按鍵。

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

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

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

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

i.MX6ULL嵌入式Linux開發6-系統燒寫到eMMC

4.2 燒寫自己的系統

準備要燒寫的文件:

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

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

自己構建的根文件系統rootfs

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

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

將這4個文件復制到Windows系統中準備燒錄。

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

i.MX6ULL嵌入式Linux開發6-系統燒寫到eMMC

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

需要替換的名稱為:

原名稱 修改替換的名稱
u-boot.imx u-boot-imx6ull14x14evk_emmc.imx
zImage zImage(不需要重命名)
imx6ull-myboard.dtb zImage-imx6ull-14x14-evk-emmc.dtb
rootfs.tar.bz2 rootfs_nogpu.tar.bz2

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

i.MX6ULL嵌入式Linux開發6-系統燒寫到eMMC

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

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

但是,我這里出現了一點小差錯。

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

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

i.MX6ULL嵌入式Linux開發6-系統燒寫到eMMC

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

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

i.MX6ULL嵌入式Linux開發6-系統燒寫到eMMC

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

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

i.MX6ULL嵌入式Linux開發6-系統燒寫到eMMC

4.4 解決網絡沒有啟動的問題

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

i.MX6ULL嵌入式Linux開發6-系統燒寫到eMMC

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

ifconfig eth1 up 

然后可以為板子分配IP:

ifconfig eth1 192.168.5.108 netmask 255.255.255.0  //設置 IP 地址和子網掩碼 

route add default gw 192.168.5.1     //添加默認網關
i.MX6ULL嵌入式Linux開發6-系統燒寫到eMMC

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

#config eth1
ifconfig eth1 up 
ifconfig eth1 192.168.5.108 netmask 255.255.255.0 
route add default gw 192.168.5.1 
i.MX6ULL嵌入式Linux開發6-系統燒寫到eMMC

然后保存,reboot命令重啟開發板,重啟后就自動連上網了。

5 總結

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

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 嵌入式
    +關注

    關注

    5093

    文章

    19178

    瀏覽量

    307710
  • Linux
    +關注

    關注

    87

    文章

    11345

    瀏覽量

    210406
  • 文件
    +關注

    關注

    1

    文章

    570

    瀏覽量

    24822
收藏 人收藏

    評論

    相關推薦

    i.MX6ULL嵌入式Linux開發1-uboot移植初探

    本系列教程以i.MX6ULL處理器的ARM開發板為實驗基礎,學習記錄嵌入式Linux開發的各種知識與經驗,主要內容包括
    的頭像 發表于 03-07 08:57 ?3932次閱讀
    <b class='flag-5'>i.MX6ULL</b><b class='flag-5'>嵌入式</b><b class='flag-5'>Linux</b><b class='flag-5'>開發</b>1-uboot移植初探

    如何在嵌入式Linux開發板上配置Qt運行環境

    本文基于I.MX6ULL芯片的Linux開發板,介紹如何在嵌入式Linux開發板上配置Qt運行環
    發表于 10-10 09:56 ?2669次閱讀

    使用i.MX6ULL開發板進行Linux根文件系統的完善

    上一篇推文講了怎么移植根文件系統,并在i.MX6ULL開發板中運行起來,但是會出現一些提示,現在來進行根文件的完善。
    發表于 10-17 11:13 ?832次閱讀

    移植NXP官方linux 5.4內核到i.MX6ULL開發

    本文描述移植NXP官方 linux 5.4 內核到i.MX6ULL開發板。
    發表于 12-19 11:10 ?2115次閱讀

    移植5.4內核到迅為I.MX6ULL開發

    圖所示:接下來我們開始寫編譯生成的鏡像到i.MX6ULL終結者開發板。Uboot我們依然使用開發板光盤資料里面的“i.MX6UL終結者光盤
    發表于 06-29 10:13

    編譯IMX6ULL開發板的Uboot和Linux內核

    `迅為I.MX6ULL終結者開發板對應的Uboot源碼在光盤資料的“i.MX6UL終結者光盤資料5_uboot linux源碼終結者Uboot和Li
    發表于 07-15 10:47

    i.MX6ULL開發板硬件資源

    迅為i.MX6ULL 終結者開發板硬件資源非常豐富,幾乎將 i.MX6ULL 芯片的所有資源都擴展引出到底板上了,底板提供了豐富的外設接口,開發板的尺寸是 190mm*125mm,充分
    發表于 12-29 06:18

    i.MX6ULL核心板資源

    操作系統鏡像&寫工具提供資料提供相關的 BSP 源代碼、文件系統源代碼其它默認配置i.MX6ULL、512MB DDR3、4GB EMMC
    發表于 07-12 17:50

    初識 i.MX6ULL 寄存器

    裸機開發_L1_匯編LED實驗0. 本節目標1. 硬件層電路2. 初識 i.MX6ULL 寄存器2.1 i.MX6ULL 時鐘控制寄存器2.2 i.MX6ULL IO復用寄存器2.3
    發表于 12-20 07:13

    i.MX6ULL的相關資料下載

    i.MX6ULL終結者三大手冊,加速學習和開發速度,一秒化無形!《嵌入式Linux開發指南》+《開發
    發表于 12-27 06:13

    飛凌i.MX6ULL開發板的評測,再次進階擁有更高的性價比

    處理器MCIMX6Y2開發設計,采用先進的ARMCortex-A7內核,運行速度高達800MHz。i.MX6ULL應用處理器包括一個集成的電源管理模塊,降低了外接電源的復雜性,并簡化了上電時序。
    發表于 10-27 11:55 ?1508次閱讀
    飛凌<b class='flag-5'>i.MX6ULL</b><b class='flag-5'>開發</b>板的評測,再次進階擁有更高的性價比

    【北京迅為】i.MX6ULL開發板移植 Debian 文件系統

    【北京迅為】i.MX6ULL開發板移植 Debian 文件系統
    的頭像 發表于 02-10 15:34 ?1235次閱讀
    【北京迅為】<b class='flag-5'>i.MX6ULL</b><b class='flag-5'>開發</b>板移植 Debian 文件<b class='flag-5'>系統</b>

    基于i.MX6ULL的掉電檢測設計與軟件測試

    基于i.MX6ULL的掉電檢測設計與軟件測試基于i.MX6ULL平臺設計實現掉電檢測功能,首先選擇一路IO,利用IO電平變化觸發中斷,在編寫驅動時捕獲該路GPIO的中斷,然后在中斷響應函數中發
    的頭像 發表于 11-09 10:40 ?925次閱讀
    基于<b class='flag-5'>i.MX6ULL</b>的掉電檢測設計與軟件測試

    【新品】i.MX6ULL工業嵌入式核心板!NXP低功耗MPU,LCD顯示

    核心板新品上市ECK20-6Y2XA系列核心板是億佰特基于NXPCortex-A7內核i.MX6ULL處理器精心設計的,采用郵票孔連接的低成本、低功耗、高性價比、高可靠性的嵌入式核心板。可廣泛應用于工業控制、HMI、IoT等領域
    的頭像 發表于 11-15 01:04 ?310次閱讀
    【新品】<b class='flag-5'>i.MX6ULL</b>工業<b class='flag-5'>嵌入式</b>核心板!NXP低功耗MPU,LCD顯示

    【迅為電子】i.MX6UL和i.MX6ULL芯片區別與開發板對比

    【迅為電子】i.MX6UL和i.MX6ULL芯片區別與開發板對比
    的頭像 發表于 11-28 14:31 ?571次閱讀
    【迅為電子】<b class='flag-5'>i.MX6</b>UL和<b class='flag-5'>i.MX6ULL</b>芯片區別與<b class='flag-5'>開發</b>板對比
    主站蜘蛛池模板: 九九精品免费观看在线 | 黄网在线免费看 | 久操精品在线观看 | 四虎影院永久免费观看 | 午夜视频在线免费播放 | 黄色午夜剧场 | 在线视频观看一区 | 国产馆精品推荐在线观看 | 日韩一级片在线免费观看 | 欧美性色视频 | 操操操插插插 | 三级黄色短视频 | 伊人干| 美女扒开尿口给男人桶视频免费 | 国产毛片哪里有 | 亚洲欧美一区二区三区图片 | 久久久久国产一级毛片高清板 | 男人j进女人j免费视频视频 | 717影院理论午夜伦不卡久久 | 色播视频在线观看免费 | 两性色视频 | 琪琪see色原在线20 | 欧美日韩一区在线观看 | 欧美xxxx性高清 | 91青草视频 | 日日摸人人看97人人澡 | 亚洲国产欧美精品一区二区三区 | 成人高清毛片a | 久久久久久久久综合影视网 | 久久精品国产免费高清 | 日韩操 | 在线色综合 | 色多多视频在线观看播放 | 美女被草视频在线观看 | 黄色短视频免费看 | 免费人成网站在线高清 | 欧美日韩一日韩一线不卡 | 国产成人教育视频在线观看 | 亚洲丰满熟妇毛片在线播放 | 欧美日韩国产一区 | 视频在线免费观看网址 |