一. 前言
世平集團 ATU 伊布小編 (一部) 團隊針對 i.MX 相關技術整理了一系列博文,希望能夠透過這些博文協助大家更了解 i.MX 的相關技術,未來 ATU 伊布小編 (一部) 團隊也會持續更新此系列的相關博文還懇請支持!這篇文章主要是延續 【ATU Book-i.MX9系列】OP-Gyro ( i.MX93 ) 系統燒錄介紹 做更多資料的分享。各位讀者如果在 OP-Gyro 上燒錄 eMMC 遇到問題就可以參考本篇文章做疑難排除,後續本篇文章將會針對 OP-Gyro ( i.MX93 ) 不能成功燒錄的狀況做說明與分析。
二. i.MX93 特性說明
i.MX93 平台可以透過 BOOT_MODE 來決定要進入 Serail Download Mode 來做 Image 燒錄;或是可以透過 BOOT_MODE 來決定選擇從 eMMC 及 SD Card 等設備來做開機,而當預選取的 BOOT_MODE 在開機過程發生錯誤時,i.MX93 就會進入 Serail Download。( 細節可參考 i.MX 93 Applications Processor Reference Manual 文件的 9.3 章節 )
由於 OP-Gyro ( i.MX93 ) 預設的 BOOT_MODE 是選擇在 eMMC,所以根據上述特性如果 eMMC 裡面沒有 Bootloader 程式存在的話,OP-Gyro ( i.MX93 ) 一上電將會進入 Serial Download 模式,這裡值得一提的是所有 i.MX 平台的行為都是這樣,這套邏輯可以適用在各個 i.MX 平台上。再來本篇文章將透過這個邏輯對 OP-Gyro ( i.MX93 ) 不能成功燒錄的狀況做排除。
三. 問題排除
讀者們在 OP-Gyro 上燒錄 eMMC 遇到問題可以參考以下做法做排除。
1. 確認 OP-Gyro ( i.MX93 ) 上沒有 SD Card
2. 檢查 OP-Gyro ( i.MX93 ) 的 Debug UART 有無正確跟 PC 對接好
OP-Gyro ( i.MX93 ) 針對 USB 燒錄有做一個設計,當 SD Card 未使用並且 UART Debug 先插再上電,這樣可以將 BOOT_MODE 設置為 Serial Download。
下圖是 OP-Gyro ( i.MX93 ) Debug UART 與 PC 對接的示意圖。
下圖是 OP-Gyro ( i.MX93 ) 的 Debug UART Pin Define 的示意圖。
3. 檢查 PC 裝置管理員的 USB 輸入裝置 是否有生成。
依照 【ATU Book-i.MX9系列】OP-Gyro ( i.MX93 ) 系統燒錄介紹 這篇文章 的 eMMC 燒錄章節可以得知,需要先將 OP-Gyro ( i.MX93 ) 上的 Download Port ( USB1 ) 連接到 PC 端,再把 OP-Gyro ( i.MX93 ) 上電。
以下為 OP-Gyro ( i.MX93 ) 板子與 PC 連接的示意圖。
各位讀者可以在這時候檢查 PC 上的裝置管理員,看一下 USB 輸入裝置是否有正確生成。
也可以透過 Command Line 輸入以下命令檢查 PC 有沒有認到 OP-Gyro ( i.MX93 ) 板子。
uuu.exe -lsusb
以下為 OP-Gyro ( i.MX93 ) 板子與 PC 連接上的 Command Line 示意圖。
如果讀者使用這個方法後還是無法看到上述的資訊,請再繼續參考 2. 清除 eMMC 上的資料 方法排除問題。
2. 清除 eMMC 上的資料
稍早 二. i.MX93 特性說明 章節有提到,如果 eMMC 裡面沒有 Bootloader 程式存在的話,OP-Gyro ( i.MX93 ) 一上電將會進入 Serial Download 模式,所以讀者可以先檢查看看現在是不是 OP-Gyro ( i.MX93 ) 一上電就直接開進 Linux 系統了。
如果讀者在 Terminal 軟體有看到開進 U-Boot 或 Linux 系統的 Log,就代表 OP-Gyro ( i.MX93 ) 上的 eMMC 裡面已經有資料並且沒有進入 Serial Download 模式。
以下為 U-Boot Log 的示意畫面。
U-Boot 2023.04-lf_v2023.04+g49b102d988 (Nov 21 2023 - 07:28:53 +0000)
CPU: i.MX93(52) rev1.1 1700 MHz (running at 1692 MHz)
CPU: Industrial temperature grade (-40C to 105C) at 29C
... ( 以下忽略 )
下圖是 OP-Gyro ( i.MX93 ) 的成功開機畫面。
再來,各位讀者可以參考以下 2 種方法下命令來清除 eMMC 資料,並更新 OP-Gyro ( i.MX93 ) eMMC 裡的軟體。
開進 Linux 後清除 eMMC 資料 ( 方法一 )
主要是先開進 Linux 系統後,再透過以下命令對 mmcblk0boot0 填 0 清除 Bootloader 再重開機。
root@opgyro:~# echo 0 > /sys/block/mmcblk0boot0/force_ro
root@opgyro:~# dd if=/dev/zero of=/dev/mmcblk0boot0 bs=1M count=1
1+0 records in
1+0 records out
1048576 bytes (1.0 MB, 1.0 MiB) copied, 0.332632 s, 3.2 MB/s
root@opgyro:~# echo 1 > /sys/block/mmcblk0boot0/force_ro
root@opgyro:~# sync
root@opgyro:~# reboot
在 u-boot 下清除 eMMC 資料 ( 方法二 )
請先確保 SD Card 有拔除,接著上電並進入 u-boot,這裡使用 mmc erase 命令來清除 eMMC Partition 1 從 64 Block 後的資料。
eth0: ethernet@42890000, eth1: ethernet@428a0000 [PRIME]
Fastboot: Normal
Normal Boot
Hit any key to stop autoboot: 0
u-boot=>
u-boot=> mmc partconf 0 1 1 1
u-boot=> mmc erase 0x40 0x4fc0
MMC erase: dev # 0, block # 64, count 20416 ...
Caution! Your devices Erase group is 0x400
The erase range would be change to 0x0~0x4fff
20416 blocks erased: OK
u-boot=> reset
resetting ...
透過上述方法可以做到清除 eMMC 的前綴資料,接著請再重新透過 uuu.exe 做 eMMC 燒錄試試。
四、 結論
本篇文章介紹了如何排除 OP-Gyro ( i.MX93 ) 不能燒錄 eMMC 的問題,文章中提到的方法技術也可以運用在大多數的 i.MX 系列平台上,後續也懇請各位讀者多多支持 【ATU Book-i.MX9系列】OP-Gyro ( NXP i.MX93 ) 的系列博文。若未來讀者們有 i.MX 的相關問題歡迎隨時與世平集團做討論。
五、 參考文件
[1] https://www.cnblogs.com/arnoldlu/p/10762009.html
[2] https://zh.wikipedia.org/zh-tw//dev/zero
[3] https://community.nxp.com/t5/i-MX-Processors/how-to-change-boot-partiton-on-u-boot-fslc-branch-patches-2014/m-p/338315
[4] https://blog.csdn.net/qq_28877125/article/details/111083581
[5] https://kunyichen.wordpress.com/2021/05/13/note-i-mx8mp-boot-from-mmcxboot0/
[6] https://wx.comake.online/doc/cd823hf8s9hd22-SSA330/customer/development/reference/emmc.html
評論