【ATU Book-i.MX9系列】OP-Gyro ( NXP i.MX93 ) eMMC 烧录之疑难排解

日期2024-07-19

一. 前言

世平集团 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

★方案内容均由个人提供,与平台无关,如有违法或侵权,请联系大大芯方案专属信箱