核心结论
不能直接使用 nand_disk.img 烧录到淘宝零售版 RDK X5!
根据社区多个案例(34988、35268),这是存储介质不匹配的典型问题:
| 镜像类型 | 目标存储 | 淘宝零售版 RDK X5 |
|---|---|---|
nand_disk.img |
SPI NAND Flash | |
emmc_disk.img |
eMMC |
问题分析
1. 硬件差异
RDK X5 EVB(官方开发板):
- 有 NAND 和 eMMC 两个版本
- SDK 中提供多种编译配置
淘宝零售版 RDK X5:
- 仅支持 eMMC 启动(板载 eMMC 存储)
- 不支持 NAND 启动模式
- 本质是 RDK X5 Module + 官方底板 的完整形态
2. 为什么 board_x5_evb_nand_debug_config.mk 编译的镜像不能用?
# 你使用的配置
board_x5_evb_nand_debug_config.mk
# ↓ 编译出
nand_disk.img (512 MiB, 4 KiB page)
# ↓ 烧录到
eMMC 设备
# = ❌ 分区表/文件系统格式不匹配
后果:
- 烧录工具可能报错(如 34988 中的
Uart xmodem download failed) - 即使烧录成功,系统也无法启动(
invalid extent block错误)
正确解决方案
方案 A:使用官方预编译镜像(推荐)
适用场景:应用开发、快速上手
# 1. 下载官方 eMMC 镜像(Ubuntu 22.04)
# 地址:https://archive.d-robotics.cc/downloads/os_images/rdk_x5/
# 选择最新版,如 v3.4.1 或 v3.5.0
# 2. 烧录方式(二选一)
# 方式 1:SD 卡启动 + 在板烧录到 eMMC
# 方式 2:使用 RDK Studio 工具(如果支持 UMS 模式)
# 3. 参考官方教程
# https://developer.d-robotics.cc/rdk_doc/Quick_start/install_os/rdk_x5
方案 B:本地编译 eMMC 版本镜像
适用场景:需要系统定制、底层开发
# 1. 确认 SDK 版本
# 使用 V1.1.2 Module SDK 或更新版本
# 2. 选择正确的编译配置
cd <sdk_root>
./bd.sh build horizon/x5/board_x5_evb_jammy_debug_config.mk
# 或
./bd.sh build horizon/x5/board_x5_evb_jammy_release_config.mk
# ⚠️ 关键:必须选择带 jammy 的配置(Ubuntu 22.04)
# 不要选择 board_x5_evb_nand_xxx_config.mk
# 3. 打包镜像
./bd.sh pack
# 4. 输出文件应该是
# disk_emmc.img 或类似的 eMMC 镜像
方案 C:获取零售版专用源码
现状:官方没有单独发布淘宝零售版的 SDK,但:
- RDK X5 Module SDK 可以通用(34476 确认)
- 编译时选择 EVB 配置 + eMMC 选项 即可
- 零售版 = Module + 官方底板,硬件一致
源码下载:
https://archive.d-robotics.cc/downloads/sdk/LNX6.1.83_PL5.1_V1.1.2/
烧录步骤(eMMC 版本)
方法 1:SD 卡中转烧录(最稳定)
# 1. 准备 SD 卡(8GB+)
# 用 Rufus 将官方镜像或自编译镜像烧录到 SD 卡
# 2. 从 SD 卡启动
- 插入 SD 卡
- 串口连接(115200)
- 上电,U-Boot 阶段按任意键中断
- 设置从 SD 卡启动:
setenv bootcmd 'mmc dev 1; fatload mmc 1:1 ${kernel_addr_r} Image; booti ${kernel_addr_r} - ${fdt_addr_r}'
saveenv
reset
# 3. 在板烧录到 eMMC
- 系统启动后登录
- 执行官方烧录脚本(参考文档)
- 通常是 dd 命令或专用工具
# 4. 切换回 eMMC 启动
setenv bootcmd 'mmc dev 0; fatload mmc 0:1 ${kernel_addr_r} Image; booti ${kernel_addr_r} - ${fdt_addr_r}'
saveenv
reset
# 5. 拔掉 SD 卡,重启验证
方法 2:RDK Studio 工具(如果支持)
# 1. 下载 RDK Studio
# https://developer.d-robotics.cc/rdk_doc/Tools/rdk_studio
# 2. 连接板子(USB + 串口)
# 3. 选择 eMMC 存储介质
# ⚠️ 不要选择 NAND!
# 4. 加载 disk_emmc.img 烧录
关键检查点
| 检查项 | 正确值 | 错误值 |
|---|---|---|
| 镜像类型 | disk_emmc.img |
nand_disk.img |
| 编译配置 | board_x5_evb_jammy_xxx_config.mk |
board_x5_evb_nand_xxx_config.mk |
| 烧录工具存储选择 | Emmc |
Nand |
| BOOT 引脚 | 下拉(eMMC 模式) | 浮空(NAND 模式) |
下一步建议
-
立即停止使用
nand_disk.img,避免损坏 eMMC 分区表 -
确认你的开发需求:
- 应用开发 → 直接用官方 Ubuntu 镜像
- 系统定制 → 用 Module SDK 编译 eMMC 版本
-
如果已经烧录失败:
- 尝试从 SD 卡恢复
- 或走官方硬件支持渠道:https://horizonrobotics.feishu.cn/share/base/form/shrcnpxBa3PjdjFmtxZS3tBXw0e
-
参考社区资源:
需要我帮你查找具体的编译命令或烧录脚本吗? 请告诉我你当前的 SDK 版本和具体卡在哪一步。