在烧录官方OriginCar镜像后,RDK X5系统无法正常启动,只有绿灯常亮,橙灯不闪烁

问题分析

根据串口日志,核心问题是:

1. SD 卡容量异常

mmcblk1: mmc1:d555 SD032 30.6 MiB

SD 卡只识别到 30.6 MiB,但 OriginCar 镜像远大于此,说明烧录不完整或SD 卡有问题。

2. 根分区无法挂载

VFS: Cannot open root device "mmcblk1p2" or unknown-block(179,2): error -6
Kernel panic - not syncing: VFS: Unable to mount root fs

系统找不到 mmcblk1p2 分区,导致启动失败。

3. SPI NAND 启动也失败

ERROR: Failed to checksum image id=1 (-97)

板载 Flash 的镜像校验失败,可能是烧录过程中断或镜像损坏。


解决方案

步骤 1:检查 SD 卡烧录

# 1. 确认 SD 卡实际容量(插入电脑查看)
# 2. 重新下载官方镜像,校验 MD5/SHA256
# 3. 使用正确方式烧录(推荐 balenaEtcher 或 dd)

# Linux 烧录示例(假设镜像为 origincar.img,SD 卡为 /dev/sdX)
sudo dd if=origincar.img of=/dev/sdX bs=4M status=progress conv=fsync
sync

步骤 2:验证烧录结果

烧录后检查分区:

sudo fdisk -l /dev/sdX
# 应该看到多个分区,包括 boot 和 rootfs

步骤 3:尝试从 SD 卡启动

  1. 插入烧录好的 SD 卡到 RDK X5
  2. 上电,观察串口日志
  3. 确认是否识别到完整容量的 SD 卡

步骤 4:如果 SD 卡启动成功,修复 SPI NAND

# 登录系统后,使用官方工具烧录到 SPI NAND
# 具体命令参考官方文档

可能原因

原因 概率 排查方法
SD 卡烧录不完整 高 检查烧录工具日志,确认写入字节数
SD 卡质量差/假卡 中 更换品牌 SD 卡(推荐 SanDisk/Kingston)
镜像文件损坏 中 重新下载,校验哈希值
SD 卡槽接触不良 低 重新插拔,清洁触点

建议

  1. 更换 SD 卡:使用 Class 10 及以上、容量≥16GB 的品牌卡
  2. 更换烧录工具:推荐使用 balenaEtcher
  3. 检查镜像完整性:下载后校验官方提供的哈希值

社区有类似案例,建议搜索关键词查看最新解决方案:

根据你提供的串口日志,问题非常明确:系统无法从 SD 卡启动,导致内核崩溃并反复重启。

:red_circle: 核心问题定位

从日志中可以看到两个关键错误:

1. 内存区域重叠(启动初期)

[    0.000000] OF: reserved mem: OVERLAP DETECTED!
[    0.000000] ion_reserved_rdk overlaps with ion_reserved@A4100000

这说明设备树配置有问题,但系统仍尝试继续启动。

2. 无法挂载根文件系统(致命错误)

[    4.127546] /dev/root: Can't open blockdev
[    4.131658] VFS: Cannot open root device "mmcblk1p2" or unknown-block(179,2): error -6
[    4.139684] Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(179,2)

这是系统无法启动的直接原因:内核找不到 SD 卡上的根文件系统分区(mmcblk1p2)。

3. 后续启动循环失败

ERROR:   Failed to checksum image id=1 (-97)
ERROR:   boot mode 5 main bl2 fail and switch to bakeup1…

系统进入启动失败循环,最终进入 DFU/XModem 下载模式。


:hammer_and_wrench: 解决方案(按优先级排序)

方案 1:更换 SD 卡(最可能的原因):star::star::star::star::star:

社区多个案例反馈特定 SD 卡与 X5 兼容性差,即使同一张卡在 X3 上能用,在 X5 上也会失败。

操作步骤:

  1. 准备一张新的 SD 卡(建议 8-64GB,Class 10 以上)
  2. 使用官方推荐工具烧录:
    • BalenaEtcher(首选)
    • Win32 Disk Imager
    • 避免使用 Rufus(不稳定)
  3. 烧录完成后安全弹出SD 卡
  4. 插入 X5 重新测试

推荐 SD 卡品牌:闪迪、三星、金士顿(避免杂牌)


方案 2:重新烧录镜像(确保完整性):star::star::star::star:

操作步骤:

# 1. 重新下载官方镜像(验证 MD5/SHA256)
# 下载地址:https://archive.d-robotics.cc/downloads/os_images/rdk_x5/

# 2. 使用 BalenaEtcher 重新烧录
# 烧录前格式化 SD 卡:使用 SD Card Formatter 官方工具
# https://www.sdcard.org/downloads/formatter/

# 3. 烧录完成后检查分区
# 电脑上应该能看到 boot 分区(约 256MB)和 rootfs 分区

关键检查点:

  • 烧录工具是否完成写入(无报错)
  • SD 卡分区结构是否完整
  • 尝试降级到 3.3.3 稳定版 测试(排除新版本兼容性问题)

方案 3:升级 Miniboot(关键!):star::star::star:

旧版 miniboot 可能无法正确识别新 SD 卡或新系统镜像。

参考教程:

升级步骤:

  1. 下载最新 miniboot 固件
  2. 按照官方文档通过 USB 烧录 miniboot
  3. 再烧录系统镜像
  4. 重新测试启动

方案 4:最小系统测试 :star::star:

排除外设干扰:

  • 只保留:SD 卡 + 电源(5V5A)+ 串口
  • 拔掉:HDMI、USB 设备、摄像头、网线等
  • 观察串口输出是否变化

:clipboard: 快速排查清单

检查项 操作 预期结果
SD 卡烧录 用 BalenaEtcher 重新烧录 分区完整可见
SD 卡兼容性 更换另一张 SD 卡 能正常启动
镜像版本 尝试 3.3.3 稳定版 排除新版本 bug
Miniboot 升级到最新版本 提高兼容性
电源 使用 5V5A 官方电源 供电稳定

:bullseye: 建议操作顺序

1. 换一张 SD 卡(优先!)
2. 用 BalenaEtcher 烧录 3.3.3 稳定版镜像
3. 如仍失败,升级 miniboot
4. 串口持续监控启动日志

:pushpin: 相关社区案例


:red_question_mark: 需要补充的信息

如果以上方案都无效,请提供:

  1. SD 卡品牌和容量
  2. 烧录工具和镜像版本
  3. 是否升级过 miniboot
  4. 板卡硬件版本(X5 RDK V1.0 还是其他版本)

建议先在社区搜索类似问题,或发帖时附上完整串口日志,会有更多开发者帮助排查!:+1: