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

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

3天內(nèi)不再提示

i.MX6ULL系統(tǒng)燒寫指南

玩轉(zhuǎn)單片機 ? 來源:玩轉(zhuǎn)單片機 ? 作者:noah ? 2022-10-24 10:58 ? 次閱讀

前幾篇移植都是通過網(wǎng)絡來測試的,在實際的產(chǎn)品開發(fā)中肯定不可能通過網(wǎng)絡來運行,否則沒網(wǎng)的時候產(chǎn)品豈不是就歇菜了。因此需要將 uboot、linux kernel(內(nèi)核)、.dtb(設備樹)和 rootfs 這四個文件燒寫到板子上的 EMMC、NAND 或 QSPI Flash 等其他存儲設備上,這樣不管有沒有網(wǎng)絡產(chǎn)品都可以正常運行,可以借助NXP 官方提供的 MfgTool 工具通過 USB OTG 口來燒寫系統(tǒng),此軟件在 Windows 下使用,對新手非常友好; mfg_tools 這個工具本意是給 NXP 自己的開發(fā)板設計的燒寫軟件,所以肯定帶有自家開發(fā)板對應的 uboot、linux kernel 和 rootfs 的文件。

| 獲取MfgTool

讀者可以直接去官網(wǎng)下載,這里使用的是原子提供的,可以在原子公開資料包中獲取,具體路徑如下:

5、開發(fā)工具->3、NXP官方原版MFG_TOOL燒寫工具->L4.1.15_2.0.0-ga_mfg-tools.tar.gz。

解壓后的文件如下:

29469b18-51a6-11ed-a3b6-dac502259ad0.png

|準備工具

解壓后里面還有2個.gz 壓縮包,一個是帶rootfs,一個是不帶rootfs,我們是需要燒寫文件系統(tǒng)的,所以選擇 mfgtools-with-rootfs.tar.gz 這個壓縮包并解壓,然后進入目錄 mfgtools-with-rootfsmfgtools 中, 在此目錄下有幾個文件夾和很多的.vbs 文件:

296b3504-51a6-11ed-a3b6-dac502259ad0.png

相關(guān)解析:

Profiles文件夾:要燒寫文件就放到這個文件夾中;
MfgTool2.exe:燒寫軟件,一般不會直接打開這個軟件燒寫;
眾多的.vbs 文件:就是配置腳本,燒寫的時候通過雙擊這些.vbs 文件來打開燒寫工具;
注意:mfg_tools 不僅能燒寫I.MX6U,而且也能給 I.MX7、I.MX6Q 等芯片燒寫,所以在燒寫之前必須要進行配置,指定燒寫的是什么芯片,燒寫到哪里去,就需要依靠不同的.vbs 配置腳本進行配置;

299d602e-51a6-11ed-a3b6-dac502259ad0.png

眾多的.vbs 燒寫腳本是可以刪除的,但是避免不必要的麻煩就不刪除;本人使用的開發(fā)板是EMMC 版核心板,因此只會用到 mfgtool2-yocto-mx-evk-emmc.vbs 這個燒寫腳本,如果用其他的核心板請參考相應的燒寫腳本。

| 燒寫步驟

連接USB OTG

MfgTool 是通過 USB OTG 接口將系統(tǒng)燒寫進 EMMC 中的,需要使用USB線連接電腦

29bc4e44-51a6-11ed-a3b6-dac502259ad0.png

撥碼開關(guān)撥到 USB 下載模式

需要根據(jù)實際開發(fā)板進行切換,下圖是野火開發(fā)板的撥碼開關(guān)真值表;

29f543de-51a6-11ed-a3b6-dac502259ad0.png

如果插了 TF 卡,請彈出 TF 卡,否則電腦不能識別 USB!等識別出來以后再插上 TF 卡!

第一次連接會有提示,一旦第一次設置好設備以后,后面每次連接都不會有任何提示了;

2a01c0fa-51a6-11ed-a3b6-dac502259ad0.png

系統(tǒng)燒寫

開發(fā)板連接電腦以后雙擊“mfgtool2-yocto-mx-evk-emmc.vbs”,就會出現(xiàn)下面那個窗口:

2a16c0a4-51a6-11ed-a3b6-dac502259ad0.png

如果出現(xiàn)“符合 HID 標準的供應商定義設備”就說明連接正常,可以進行燒寫,如果出現(xiàn)其他的字符那么就要檢查連接是否正確。點擊“Start”按鈕即可開始燒寫;

|系統(tǒng)燒寫原理

需要燒寫uboot、kernel、.dtb 和 rootfs這四個文件,它們一起構(gòu)成了linux系統(tǒng)。 進入如下目錄中:

L4.1.15_2.0.0-ga_mfg-tools/mfgtools-with-rootfs/mfgtools/Profiles/Linux/OS Firmware
目錄文件如下:

2a2d1e3a-51a6-11ed-a3b6-dac502259ad0.png

文件夾“OS Firmware”看名字就知道是存放系統(tǒng)固件的,重點還是關(guān)注 files、firmware 這兩個文件夾,以及 ucl2.xml 這個文件。

MfgTool 工作過程主要分兩個階段:

①、將 firmware 目錄中的 uboot、linux kernel 和.dtb(設備樹),然后通過 USB OTG 將這個文件下載到開發(fā)板的 DDR 中,目的就是在 DDR 中啟動 Linux 系統(tǒng),為后面的燒寫做準備。

②、經(jīng)過第①步的操作,此時 Linux 系統(tǒng)已經(jīng)運行起來了,系統(tǒng)運行起來以后就可以很方便的完成對 EMMC 的格式化、分區(qū)等操作。EMMC 分區(qū)建立好以后就可以從 files 中讀取要燒寫的 uboot、linux kernel、.dtb(設備樹)和 rootfs 這 4 個文件,然后將其燒寫到 EMMC 中,這個就是 MfgTool 的大概工作流程。

firmeare 文件夾

打開 firmware 文件夾,里面有很多的.imx 結(jié)尾的 uboot 文件、一個 zImage 鏡像文件、很多.dtb結(jié)尾的設備樹文件。這些文件都是NXP官方開發(fā)板使用的,不同的板子使用不同的文件,其中需要關(guān)心這三個文件:

2a35b018-51a6-11ed-a3b6-dac502259ad0.png

這三個文件就是 I.MX6ULL EVK 開發(fā)板燒寫系統(tǒng)的時候第一階段所需的文件。如果要燒寫自己的系統(tǒng),就需要給編譯出來的文件改成上表的名稱;

files 文件夾

上圖三個文件下載到開發(fā)板的 DDR 上以后燒寫的第一階段就完成了,第二階段就是從 files 目錄中讀取整個系統(tǒng)文件,并將其燒寫到 EMMC 中。files 目錄中的文件和firmware 目錄中的基本差不多,都是不同板子對應的 uboot、設備樹文件,同樣,只關(guān)心下圖的四個文件:

2a50261e-51a6-11ed-a3b6-dac502259ad0.png

如果要燒寫自己編譯出來的系統(tǒng),就需要用編譯出來的文件替換上面四個文件;

ucl2.xml 文件

ucl2.xml用來指定files和firmware目錄要燒寫的uboot和設備樹文件。ucl2.xml 以“”開始,以“”結(jié)束?!?CFG>”和“”之間是配置相關(guān)內(nèi)容,主要是判斷當前是給 I.MX 系列的哪個芯片燒寫系統(tǒng)?!?LIST>”和“”之間的是針對不同存儲芯片的燒寫命令。整體框架如下:


    
    ......
     
    ......
    


    
     
    


    
     
    
    
     
    
    
     
    
    
     
    
    
     
    


    
     
    


    
     
    


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

2a5d5168-51a6-11ed-a3b6-dac502259ad0.png

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

mfgtool2-yocto-mx-evk-emmc.vbs 文件

ucl2.xml文件中確定了要燒寫的處理器型號以后,還要確定向什么存儲設備燒寫系統(tǒng),這是在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”這一行,這里一行調(diào)用了 mfgtool2.exe 這個軟件,并且還給出了一堆的參數(shù),其中就有“eMMC”字樣,說明是向 EMMC 燒寫系統(tǒng),要燒寫的存儲設備就這樣確定下來了。 繼續(xù)分析ucl2.xml文件中的燒寫過程 前面說了燒寫分兩個階段,第一步是通過 USB OTG 向 DDR中下載系統(tǒng),第二步才是正常的燒寫。通過 USB OTG 向 DDR 下載 uboot 的命令如下:
Loading U-boot 
“file”表示要下載的文件位置,在firmware目錄下,文件名字為:
u-boot-imx6ul%lite%%6uluboot%_emmc.imx
“%lite%”和“%6uluboot%” 分別表示取lite和6uluboot的值,在cfg.ini文件中有定義。

cfg.ini文件

mfgtools/cfg.ini文件是一個配置文件,內(nèi)容如下:

[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%”和“%6uluboot%”分別表示取 lite 和 6uluboot 的值,而 lite=l,6uluboot=14x14evk,因此將這個值代入以后就是:

u-boot-imx6ull14x14evk _emmc.imx
這里向 DDR 中下載的是 firmware/ u-boot-imx6ull14x14evk _emmc.imx 這個 uboot 文件。同樣的方法將.dtb(設備樹)和 zImage 都下載到 DDR 中以后就會跳轉(zhuǎn)去運行 OS,這個時候會在 MfgTool 工具中會有“Jumping to OS image”提示語句,ucl2.xml 中的跳轉(zhuǎn)命令如下:
 Jumping to OS image. 
啟動 Linux 系統(tǒng)以后就可以在 EMMC 上創(chuàng)建分區(qū),然后燒寫 uboot、zImage、.dtb(設備樹)和根文件系統(tǒng)。

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

燒寫步驟如下:

1、連接好 USB,撥碼開關(guān)撥到 USB 下載模式。

2、彈出 TF 卡,然后按下開發(fā)板復位按鍵。

3、打開 串口工具。

4、雙擊“mfgtool2-yocto-mx-evk-emmc.vbs”,打開下載軟件,如果出現(xiàn)“符合 HID 標準的供應商定義設備”等字樣就說明下載軟件已經(jīng)準備就緒。點擊“Start”按鈕開發(fā)燒寫 NXP 官方系統(tǒng),燒寫過程如圖所示:

2a8b4596-51a6-11ed-a3b6-dac502259ad0.png

燒錄過程會輸出一些信息

2a994f24-51a6-11ed-a3b6-dac502259ad0.png

等待好幾分鐘,串口沒輸出就是下載完:

2af72086-51a6-11ed-a3b6-dac502259ad0.png

燒寫完成以后點擊“Stop”按鈕停止燒寫,然后點擊“Exit”鍵退出。拔出 USB 線,將開發(fā)板上的撥碼開關(guān)撥到 EMMC 啟動模式,然后重啟開發(fā)板,此時就會從 EMMC 啟動。只是啟動以后的系統(tǒng)是 NXP 官方給 I.MX6ULL EVK 開發(fā)板制作的,這個系統(tǒng)需要輸入用戶名,用戶名為“root”,沒有密碼:

2b10c45a-51a6-11ed-a3b6-dac502259ad0.png

成功進入系統(tǒng):

2b3da57e-51a6-11ed-a3b6-dac502259ad0.png

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

準備要燒寫的文件: 自己移植編譯出來的uboot文件(u-boot.imx),自己移植編譯出來的zImage鏡像文件,開發(fā)板對應的.dtb(設備樹)mx6ull-myboard.dtb,自己構(gòu)建的根文件系統(tǒng)rootfs; rootfs需要先打包成rootfs.tar.bz2,進入Ubuntu中的nfs目錄下的rootfs目錄,使用tar命令打包:

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

全部復制到windows桌面,然后修改一下名稱;

2be2c522-51a6-11ed-a3b6-dac502259ad0.png

文明名稱一定要和下面的名稱一致;

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

先將上圖中的 zImage、u-boot-imx6ull14x14evk_emmc.imx 和 zImage-imx6ull-14x14-evk-emmc.dtb 這三個文件拷貝到 mfgtools-with-rootfs/mfgtools/Profiles/Linux/OS Firmware/firmware 目錄中,替換掉原來的文件。然后將上圖中的所有 4 個文件都拷貝到 mfgtools-with-rootfs/mfgtools/Profiles/Linux/OS Firmware/files目錄中,這兩個操作完成以后就可以進行燒寫了。雙擊“mfgtool2-yocto-mx-evk-emmc.vbs”,打開燒寫軟件,按照燒錄流程燒錄,點擊“Start”按鈕開始燒寫;

燒錄完成,切換到EMMC啟動,成功進入系統(tǒng);

2c00617c-51a6-11ed-a3b6-dac502259ad0.png

|網(wǎng)絡開機自啟動設置

用 NFS 掛載根文件系統(tǒng)的時候因為要使用 NFS服務,因此 Linux 內(nèi)核會打開 eth0 這個網(wǎng)卡,現(xiàn)在不使用 NFS 掛載根文件系統(tǒng),因此 Linux內(nèi)核也就不會自動打開 eth0 網(wǎng)卡了,可以手動打開網(wǎng)卡;

//查看eth0和eth1是否都存在
ifconfig -a


// 打開 eth0 網(wǎng)卡
ifconfig eth0 up


//查看網(wǎng)卡,會看到eth0網(wǎng)卡
ifconfig


//自動設置IP地址
udhcpc -i eth0 // 通過路由器分配 IP 地址


// 手動設置 IP 地址
ifconfig eth0 192.168.1.251 netmask 255.255.255.0 //設置 IP 地址和子網(wǎng)掩碼
route add default gw 192.168.1.1 //添加默認網(wǎng)關(guān)
開機自動打開網(wǎng)卡 設置網(wǎng)卡 IP 地址的命令添加到/etc/init.d/rcS 文件中:
#!/bin/sh 
 
PATH=/sbin:/bin:/usr/sbin:/usr/bin:$PATH
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/lib:/usr/lib 
export PATH LD_LIBRARY_PATH  


mount -a 
mkdir /dev/pts 
mount -t devpts devpts /dev/pts 


echo /sbin/mdev > /proc/sys/kernel/hotplug 
mdev -s


#網(wǎng)絡開機自啟動設置
ifconfig eth0 up
#udhcpc -i eth0 
ifconfig eth0 192.168.2.50 netmask 255.255.255.0
route add default gw 192.168.2.1
修改了根文件系統(tǒng)就需要重新壓縮,然后燒錄到EMMC中,再從EMMC啟動系統(tǒng),再ping百度來驗證網(wǎng)絡是否能用:

2c140420-51a6-11ed-a3b6-dac502259ad0.png

移植工作就到這里,后續(xù)學習 Linux驅(qū)動開發(fā)!

審核編輯:湯梓紅

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • Linux
    +關(guān)注

    關(guān)注

    87

    文章

    11207

    瀏覽量

    208714
  • 移植
    +關(guān)注

    關(guān)注

    1

    文章

    376

    瀏覽量

    28096
  • 開發(fā)板
    +關(guān)注

    關(guān)注

    25

    文章

    4896

    瀏覽量

    97058
  • 燒寫
    +關(guān)注

    關(guān)注

    0

    文章

    57

    瀏覽量

    14237

原文標題:i.MX6ULL|系統(tǒng)燒寫

文章出處:【微信號:玩轉(zhuǎn)單片機,微信公眾號:玩轉(zhuǎn)單片機】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    i.MX6ULL 驅(qū)動開發(fā)7—按鍵輸入捕獲與GPIO輸入配置與高低電平讀取

    本篇主要介紹了i.MX6ULL的按鍵檢測的使用,主要的知識點是設備樹的修改,以及GPIO的輸入配置與高低電平的讀取。
    的頭像 發(fā)表于 05-24 09:11 ?6090次閱讀
    <b class='flag-5'>i.MX6ULL</b> 驅(qū)動開發(fā)7—按鍵輸入捕獲與GPIO輸入配置與高低電平讀取

    使用i.MX6ULL開發(fā)板進行Linux根文件系統(tǒng)的完善

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

    移植NXP官方linux 5.4內(nèi)核到i.MX6ULL開發(fā)板

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

    i.MX6UL/i.MX6ULL開發(fā)常見問題】單獨編譯內(nèi)核,uboot生成很多文件,具體用哪一個?

    i.MX6UL/i.MX6ULL開發(fā)常見問題》基于米爾電子 i.MX6UL/i.MX6ULL產(chǎn)品(V.10)2.3單獨編譯內(nèi)核,uboot生成很多文件,具體用哪一個?答:內(nèi)核編譯出來
    發(fā)表于 07-01 17:50

    i.MX6ULL開發(fā)板硬件資源

    迅為i.MX6ULL 終結(jié)者開發(fā)板硬件資源非常豐富,幾乎將 i.MX6ULL 芯片的所有資源都擴展引出到底板上了,底板提供了豐富的外設接口,開發(fā)板的尺寸是 190mm*125mm,充分考慮了人性化設計,整體顯得十分大。
    發(fā)表于 12-29 06:18

    i.MX6ULL核心板資源

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

    初識 i.MX6ULL 寄存器

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

    I.MX6ULL無法枚舉USB2514是為什么?

    你好目前,I.MX6ULL開發(fā)存在一些問題。其中之一是OTG USB2無法正常掛載USB2514,無法正確枚舉下游設備,只顯示設備id。usb設計要注意什么。
    發(fā)表于 04-03 06:55

    I.MX6ULL UART傳輸問題求解

    I.MX6ULL UART傳輸問題
    發(fā)表于 04-21 08:09

    珠海明遠智??萍悸?lián)合NXP強勢推出i.MX6ull核心板

    NXP I.MX6ULL是一個高性能、低功耗、高性價比處理器系列,基于ARM Cortex-A7內(nèi)核,主頻可達900MHz。i.MX 6ULL應用處理器包括一個集成的電源管理模塊,可以省掉外部
    發(fā)表于 04-24 14:10 ?543次閱讀

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

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

    基于NXP i.MX6ULL處理器的FETMX6ULL-C核心板

    “性價比高,功能接口豐富,資料齊全,穩(wěn)定性強”這是許多用戶對飛凌FETMX6ULL-S核心板的評價。作為NXP公司一顆經(jīng)典的MPU,i.MX6ULL的市場認可度無需多言。而作為NXP公司的金牌
    發(fā)表于 04-11 15:05 ?1128次閱讀
    基于NXP <b class='flag-5'>i.MX6ULL</b>處理器的FETMX<b class='flag-5'>6ULL</b>-C核心板

    i.MX6ULL】驅(qū)動開發(fā)4——點亮LED(寄存器版)

    本篇主要介紹了如何通過操作寄存器來點亮i.MX6ULL開發(fā)板上的led,通過編寫LED對應的驅(qū)動程序和應用程序,實現(xiàn)程序設計的分層。
    的頭像 發(fā)表于 05-21 21:26 ?2922次閱讀
    【<b class='flag-5'>i.MX6ULL</b>】驅(qū)動開發(fā)4——點亮LED(寄存器版)

    【北京迅為】i.MX6ULL開發(fā)板移植 Debian 文件系統(tǒng)

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

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

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