色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

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

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

3天內不再提示

Linux系統燒寫實操

CHANBAEK ? 來源:嵌入式攻城獅 ? 作者:嵌入式攻城獅 ? 2023-04-18 15:20 ? 次閱讀

系統燒寫實操

Linux系統燒寫初探一文中介紹了mfgtool燒寫工具及其工作原理,下面以 I.MX6U-ALPHA EMMC開發板為平臺,分別介紹如何燒寫 NXP官方系統,以及燒寫自制系統

1. 燒寫NXP官方系統

燒寫 NXP官方的系統到 I.MX6U-ALPHA EMMC開發板(512MB DDR3 + 8G EMMC)中,具體步驟如下:

  • 連接好USB,撥碼開關撥到USB下載模式
  • 彈出TF卡,然后按下開發板復位按鍵
  • 打開MobaXterm串口助手終端
  • 雙擊mfgtool2-yocto-mx-evk-emmc.vbs
  • 點擊Start按鈕燒寫 NXP 官方系統

燒寫過程如下示

圖片

MobaXterm串口助手終端上顯示的燒寫過程

圖片

燒寫完成后點擊Stop按鈕停止燒寫,點擊Exit鍵退出

圖片

拔出USB線,將撥碼開關撥到EMMC啟動模式,重啟后就會從EMMC啟動

圖片

此時啟動后的系統是 NXP給 I.MX6ULL EVK開發板制作的,需要輸入用戶名,用戶名為“root”,沒有密碼

2. 燒寫自制系統

燒寫自制系統到 I.MX6U-ALPHA EMMC開發板(512MB DDR3 + 8G EMMC)中。 準備好自制的 uboot、kernel、. dtb 和 rootfs(壓縮包)這四個燒寫文件,對其進行重命名

##根文件系統 rootfs 打包
cd rootfs/ 
tar -vcjf rootfs.tar.bz2 *

圖片

將改名后的uboot、kernel、. dtb 這三個文件拷貝到firmware目錄中,替換掉原來的文件

將改名后的所有四個文件拷貝到files目錄中

雙擊mfgtool2-yocto-mx-evk-emmc.vbs文件,打開燒寫軟件,點擊Start按鈕即可燒寫

圖片

燒寫完成后從EMMC啟動系統,如下圖示可見自制系統已經燒寫成功

圖片

3. 改造燒寫工具

3.1 改造Mfgtool

上面是將 NXP官方的系統更換成自制的系統來完成燒寫,下面將介紹如何改造 MfgTool工具,讓其支持自己的開發板。 改造MfgTool,主要從以下三方面著手

確定系統文件名字:確定系統文件名字是為了兼容不同的產品

圖片

新建.vbs文件:復制 mfgtool2-yocto-mx-evk-emmc.vbs 文件,重新按需要命令,比如命名成 mfgtool2-andyxi-emmc.vbs

修改OS Firmware文件夾里的 ucl2.xml文件:改為如下所示內容



    "BootStrap" dev="MX6UL" vid="15A2" pid="007D"/>
    "BootStrap" dev="MX6ULL" vid="15A2" pid="0080"/>
    "Updater" dev="MSC" vid="066F" pid="37FF"/>
class="hljs-name"CFG>
	
  
  <LIST name="eMMC" desc="Choose eMMC as media">
    "BootStrap" type="boot" body="BootStrap" file
    ="firmware/u-boot-andyxi-emmc.imx" ifdev="MX6ULL">Loading Ubootclass="hljs-name"CMD>
    "BootStrap" type="load" file="firmware/zImage-andyxi-emmc" address="0x80800000"
    loadSection="OTH" setSection="OTH" HasFlashHeader="FALSE" 
    ifdev="MX6SL MX6SX MX7D MX6UL MX6ULL">Loading Kernel.class="hljs-name"CMD>
    "BootStrap" type="load" file="firmware/%initramfs%" address="0x83800000"
    loadSection="OTH" setSection="OTH" HasFlashHeader="FALSE"
    ifdev="MX6SL MX6SX MX7D MX6UL MX6ULL">Loading Initramfs.class="hljs-name"CMD>
    "BootStrap" type="load" file="firmware/imx6ull-andyxi-emmc.dtb" address="0x83000000"
    loadSection="OTH" setSection="OTH" HasFlashHeader="FALSE"
    ifdev="MX6ULL">Loading device tree.class="hljs-name"CMD>
    "BootStrap" type="jump" > Jumping to OS image. class="hljs-name"CMD>

    
    "Updater" type="push" body="send" file="mksdcard.sh.tar">Sending partition shellclass="hljs-name"CMD>
    "Updater" type="push" body="$ tar xf $FILE ">Partitioning...class="hljs-name"CMD>
    "Updater" type="push" body="$ sh mksdcard.sh /dev/mmcblk%mmc%"> Partitioning...class="hljs-name"CMD>

    
    "Updater" type="push" body="$ dd if=/dev/zero
    of=/dev/mmcblk%mmc% bs=1k seek=768 conv=fsync count=8">clear u-boot arg

    
    "Updater" type="push" body="$ echo 0 > /sys/block/mmcblk%mmc%boot0/force_ro">
    access boot partition 1class="hljs-name"CMD>
    "Updater" type="push" body="send" file="files/u-boot-andyxi-emmc.imx" ifdev="MX6ULL">
    Sending u-boot.binclass="hljs-name"CMD>
    "Updater" type="push" body="$ dd if=$FILE of=/dev/mmcblk%mmc%boot0 bs=512 seek=2">
    write U-Boot to sd cardclass="hljs-name"CMD>
    "Updater" type="push" body="$ echo 1 > /sys/block/mmcblk%mmc%boot0/force_ro">
    re-enable read-only accessclass="hljs-name"CMD>
    "Updater" type="push" body="$ mmc bootpart enable 1 1 /dev/mmcblk%mmc%">
    enable boot partion 1 to bootclass="hljs-name"CMD>

    
    "Updater" type="push" body="$ while [ ! -e
    /dev/mmcblk%mmc%p1 ]; do sleep 1; echo \\"waiting...\"; done ">Waiting for the partition ready
    "Updater" type="push" body="$ mkfs.vfat /dev/mmcblk%mmc%p1">
    Formatting rootfs partitionclass="hljs-name"CMD>
    "Updater" type="push" body="$ mkdir -p /mnt/mmcblk%mmc%p1"/>
    "Updater" type="push" body="$ mount -t vfat /dev/mmcblk%mmc%p1 /mnt/mmcblk%mmc%p1"/>

    
    "Updater" type="push" body="send" file="files/zImage-andyxi-emmc">
    Sending kernel zImageclass="hljs-name"CMD>
    "Updater" type="push" body="$ cp $FILE /mnt/mmcblk%mmc%p1/zImage">
    write kernel image to sd cardclass="hljs-name"CMD>

    
    "Updater" type="push" body="send" file="files/imx6ull-andyxi-emmc.dtb" ifdev="MX6ULL">
    Sending Device Tree fileclass="hljs-name"CMD>
    "Updater" type="push" body="$ cp $FILE /mnt/mmcblk%mmc%p1/imx6ull-andyxi-emmc.dtb" ifdev="MX6ULL">
    write device tree to sd cardclass="hljs-name"CMD>
    "Updater" type="push" body="$ umount /mnt/mmcblk%mmc%p1">
    Unmounting vfat partitionclass="hljs-name"CMD>

    
    "Updater" type="push" body="$ mkfs.ext3 -F -E nodiscard /dev/mmcblk%mmc%p2">
    Formatting rootfs partitionclass="hljs-name"CMD>
    "Updater" type="push" body="$ mkdir -p /mnt/mmcblk%mmc%p2"/>
    "Updater" type="push" body="$ mount -t ext3 /dev/mmcblk%mmc%p2 /mnt/mmcblk%mmc%p2"/>
    "Updater" type="push" body="pipe tar -jxv -C /mnt/mmcblk%mmc%p2" 
    file="files/rootfs-andyxi-emmc.tar.bz2" ifdev="MX6UL MX7D MX6ULL">Sending and writting rootfsclass="hljs-name"CMD>
    "Updater" type="push" body="frf">Finishing rootfs writeclass="hljs-name"CMD>
    "Updater" type="push" body="$ umount /mnt/mmcblk%mmc%p2">Unmounting rootfs partitionclass="hljs-name"CMD>
    "Updater" type="push" body="$ echo Update Complete!">Doneclass="hljs-name"CMD>
class="hljs-name"LIST>
class="hljs-name"UCL>

3.2 燒寫測試

MfgTool 工具修改好后就可以進行燒寫測試了,將自制的 uboot、linux kernel、和 .dtb 這三個文件拷貝到firmware目錄中,替換掉原來的文件; 將所有四個文件拷貝到files目錄中

雙擊 mfgtool2-andyxi-emmc.vbs文件,打開燒寫軟件,點擊“Start”按鈕即可燒寫。 燒寫完成,設置撥碼開關為 EMMC 啟動,重啟開發板,系統啟動信息如下圖示:

圖片

開發板最終卡在 “Starting kernel …”,內核啟動失敗。 下面介紹如何解決內核啟動失敗的問題

3.3 解決內核啟動失敗

仔細觀察 uboot 輸出的 log 信息,會發現如下圖所示的兩行信息:

圖片

可見在讀取設備樹文件時就出錯了。 重啟 uboot,進入到命令行模式,輸入如下命令查看 EMMC 的分區 1 里面有沒有設備樹文件

mmc dev 1 	//切換到EMMC
ls mmc 1:1 	//輸出EMMC1分區1中的所有文件

圖片

可見此時 EMMC的分區1中是存在設備樹文件的,只是名字不同,因此讀取 imx6ull-14x14-evk.dtb肯定會出錯。 出現這個錯誤的原因是 uboot里默認的設備樹名字是imx6ull-14x14-evk.dtb,解決方法有以下兩種:

重新設置 bootcmd環境變量值:在 uboot的命令行模式下,重設 bootcmd 和 bootargs 這兩個環境變量的值

setenv bootcmd 'mmc dev 1;fatload mmc 1:1 80800000 zImage;fatload mmc 1:1 83000000
			    imx6ull-andyxi-emmc.dtb;bootz 80800000 - 83000000'
setenv bootargs 'console=ttymxc0,115200 root=/dev/mmcblk1p2 rootwait rw'
saveenv

修改 uboot源碼:上面方法每次重新燒寫都要再設置,以下方法只需設置一次,uboot源碼 include/configs/mx6ull_andyxi_emmc.h文件里,在宏 CONFIG_EXTRA_ENV_SETTINGS中找到如下所示內容:

"findfdt="\\
"if test $fdt_file = undefined; then " \\
    "if test $board_name = EVK && test $board_rev = 9X9; then " \\
	"setenv fdt_file imx6ull-9x9-evk.dtb; fi; " \\
    "if test $board_name = EVK && test $board_rev = 14X14; then " \\
	"setenv fdt_file imx6ull-14x14-evk.dtb; fi; " \\
    "if test $fdt_file = undefined; then " \\
	"echo WARNING: Could not determine dtb to use; fi; " \\
"fi;\\0" \\

findfdt 是用于確定設備樹文件名字的環境變量, fdt_file環境變量保存著設備樹文件名。 上面代碼中的兩個設備樹都是 NXP官方開發板使用的。 因此將 findfdt 值改為如下內容:

"findfdt="\\
"if test $fdt_file = undefined; then " \\
    "setenv fdt_file imx6ull-andyxi-emmc.dtb; " \\
"fi;\\0" \\

修改后重新編譯 uboot,然后將新的 uboot燒寫到開發板后重啟測試,內核啟動正常。 至此自制系統燒寫完成,并測試成功,開發板可以在沒有網絡的情況下正常啟動

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

    關注

    60

    文章

    7936

    瀏覽量

    264482
  • Linux
    +關注

    關注

    87

    文章

    11292

    瀏覽量

    209331
  • Linux系統
    +關注

    關注

    4

    文章

    593

    瀏覽量

    27392
  • 開發板
    +關注

    關注

    25

    文章

    5032

    瀏覽量

    97375
  • 燒寫
    +關注

    關注

    0

    文章

    57

    瀏覽量

    14278
收藏 人收藏

    評論

    相關推薦

    Linux系統移植開發篇2:linux鏡像

    本文章為《STM32MP157 Linux系統移植開發篇》系列中的一篇,筆者使用的開發平臺為華清遠見FS-MP1A開發板(STM32MP157開發板)。stm32mp157是ARM雙核,2個A7核
    發表于 09-29 16:00 ?3169次閱讀
    <b class='flag-5'>Linux</b><b class='flag-5'>系統</b>移植開發篇2:<b class='flag-5'>燒</b>寫<b class='flag-5'>linux</b>鏡像

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

    本篇主要介紹了Linux移植的系統打包燒錄的EMMC的方法,使用MfgTool工具,將**uboot、linux kernel、.dtb和rootfs這4個文件**寫到板子的EMMC
    的頭像 發表于 03-17 09:17 ?5189次閱讀
    i.MX6ULL嵌入式<b class='flag-5'>Linux</b>開發6-<b class='flag-5'>系統</b><b class='flag-5'>燒</b>寫到eMMC

    ok2440linux系統

    用u***linux系統的時候,linux操作系統zImage成功,但是
    發表于 04-27 18:34

    【OK210試用體驗】之(二)——Linux系統寫和Android HDMI顯示

    ` 本帖最后由 郎中令2000年 于 2015-7-21 01:47 編輯 在開箱貼之后,今天帖子的主要內容是對OK210測試板進行Linux系統和Android系統寫,并在
    發表于 07-09 14:46

    【OK210試用體驗】SDLinux系統

    的。WinPM.EXE在我win7 64位上打開失敗,后來在虛擬機中用xp系統寫成功。搞開發還是得用xp啊!寫過程中可以使用串口查看寫過程的。
    發表于 07-26 08:36

    TQ210 Linux系統

    :  使用以下命令把linux文件系統鏡像下載到開發板的內存中,然后程序會把linux文件系統鏡像寫到NAND FLASH中。   ./d
    發表于 10-30 16:53

    TQ210 Linux系統

    下命令把linux文件系統鏡像下載到開發板的內存中,然后程序會把linux文件系統鏡像寫到NAND FLASH中?! ?/dnw root
    發表于 11-09 10:48

    3399 開發板Linux 系統

    `` Linux 鏡像寫 平臺:iTOP-3399開發板系統Linux 系統 1 RKTool 驅動安裝 解 壓 光 盤 02 工 具
    發表于 02-14 15:22

    [充電樁計費控制單元主板]如何一鍵寫啟動Linux系統

    飛凌嵌入式于日前推出CDZ-335xD充電樁計費控制單元主板,完全符合國網充電樁標準,下面簡單的介紹一下如何通過SD卡一鍵Linux系統。所謂的一鍵
    發表于 04-13 16:46

    Linux系統寫DNW報錯這是什么問題

    按照Linux 3.0.1用戶手冊“一鍵Linux系統”相關內容,在最后一步寫時DNW報錯:** Unable to read "u-
    發表于 01-13 06:41

    如何linux鏡像

    使用tftp下載方式進行鏡像的驗證,以及使用scp方式來更新linux內核與設備樹。STM32CubeProgrammer寫方式STM32CubeProgrammer工具已經在前面的章節進行了安裝,現在我們可以通過使用這個工具來燒錄
    發表于 02-16 06:18

    STM32MP157 Linux系統移植開發篇2:linux鏡像

    使用tftp下載方式進行鏡像的驗證,以及使用scp方式來更新linux內核與設備樹。 STM32CubeProgrammer寫方式 STM32CubeProgrammer工具已經在前面的章節進行了安裝,現在我們可以通過使用這個工具來燒錄
    發表于 12-17 18:22 ?11次下載
    STM32MP157 <b class='flag-5'>Linux</b><b class='flag-5'>系統</b>移植開發篇2:<b class='flag-5'>燒</b>寫<b class='flag-5'>linux</b>鏡像

    STM32MP157系列教程連載-Linux系統移植篇2:STM32MP1微處理器之系統鏡像

    STM32MP157系列教程連載-Linux系統移植篇2:STM32MP1微處理器之系統鏡像寫第 1 章 系統鏡像
    發表于 12-17 18:22 ?14次下載
    STM32MP157系列教程連載-<b class='flag-5'>Linux</b><b class='flag-5'>系統</b>移植篇2:STM32MP1微處理器之<b class='flag-5'>系統</b>鏡像<b class='flag-5'>燒</b>寫

    Linux系統寫初探

    嵌入式 Linux開發中通常是用網絡來進行測試,但最終的產品中可能不會通過網絡來運行。因此需要將 uboot、linux kernel、.dtb(設備樹) 和 rootfs這四個文件寫到開發板
    的頭像 發表于 04-18 15:24 ?944次閱讀
    <b class='flag-5'>Linux</b><b class='flag-5'>系統</b><b class='flag-5'>燒</b>寫初探

    數位板的手寫實現原理

    數位板的手寫實現原理
    的頭像 發表于 05-26 11:48 ?1433次閱讀
    主站蜘蛛池模板: 22eee在线播放成人免费视频| 娇小老少配xxxxx| 人与禽物videos另类| 综合色一色综合久久网vr| 精品国产乱码久久久久久软件 | 国产黄a三级三级三级| 轻点慢点1V2啊高H抽插| 99国产在线观看| 暖暖高清视频免费| 最新国产亚洲亚洲精品视频| 久久99视频免费| 亚洲香蕉视频在线播放| 国产亚洲精品成人a在线| 水蜜桃亚洲一二三四在线| 囯产免费精品一品二区三区视频| 日本漫画无彩翼漫画| MATURETUBE乱妇| 青青在线视版在线播放| Zoofilivideo人馿交| 欧美午夜不卡在线观看| av天堂影音先锋在线| 欧美群交XXXCOM| japanese幼儿videos| 全文都是肉高h文| 大肥女ass樱桃| 少妇精品久久久一区二区三区| 俄罗斯19girl video9| 色哟哟网站入口在线观看视频| 国产AV一区二区三区日韩| 天美传媒在线观看完整高清| 天美麻豆成人AV精品视频| 国产av在线看的| 午夜国产理论| 国产亚洲精品线观看不卡| 亚洲精品无码专区在线播放| 九色91精品国产网站| 真人女人无遮挡内谢免费视频%| 快播黄色电影| 99久久国产宗和精品1上映| 欧美伊人久久大香线蕉综合69| 成人中文字幕在线|