【ATU Book-i.MX9系列】OP-Gyro ( NXP i.MX93 ) eMMC 燒錄之疑難排解

一. 前言

世平集團 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 對接的示意圖。
image

下圖是 OP-Gyro ( i.MX93 ) 的 Debug UART Pin Define 的示意圖。
image

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 連接的示意圖。
image

各位讀者可以在這時候檢查 PC 上的裝置管理員,看一下 USB 輸入裝置是否有正確生成。

image

也可以透過 Command Line 輸入以下命令檢查 PC 有沒有認到 OP-Gyro ( i.MX93 ) 板子。

uuu.exe -lsusb


以下為 OP-Gyro ( i.MX93 ) 板子與 PC 連接上的 Command Line 示意圖。

image

如果讀者使用這個方法後還是無法看到上述的資訊,請再繼續參考
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 ) 的成功開機畫面。

image

再來,各位讀者可以參考以下 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

★博文內容均由個人提供,與平台無關,如有違法或侵權,請與網站管理員聯繫。

★文明上網,請理性發言。內容一周內被舉報5次,發文人進小黑屋喔~

參考來源

評論