Skip to main content

Micro SD 卡启动

本文以 LPA3588 主机为例,介绍如何制作一张 可启动 Micro SD 卡 并通过其引导系统。插入 Micro SD 卡后,系统将优先从 Micro SD 卡 启动,并加载相应的根文件系统。


一、准备工作

1. 固件获取

固件可通过以下两种方式获得:

  • 自行编译:使用 Neardi 官方提供的 SDK 编译生成 update.img
  • 直接下载支持与下载 页面获取已发布固件。

⚠️ 强烈建议使用最新版本的 SDK 或固件,部分旧版本可能不支持从 SD 卡启动,可能导致无法识别或启动异常。


2. 硬件与工具

需要准备以下硬件与工具:

  • LPA3588 主机
  • Windows 电脑
  • Micro SD 卡(≥16GB,Class10/UHS-I 及以上)
  • Micro SD 卡读卡器

说明

  • Class10 表示最低写入速度 ≥ 10MB/s;
  • UHS-I 属于 Ultra High Speed 总线规范,最大传输速度可达 104MB/s;
  • 建议选择大品牌、高质量的高速卡,以确保系统运行的稳定性。

将 Micro SD 卡插入读卡器,并接入 Windows 电脑 USB 接口。

sd03


3. 烧写工具

烧写工具为 SDDiskTool_v1.78

解压后运行 SD_Firmware_Tool.exe

Micro SD卡烧录

使用注意事项


二、制作 Micro SD 启动卡

  1. 打开 SD_Firmware_Tool.exe
  2. 选择目标 Micro SD 卡(务必确认选择正确的磁盘,避免误擦除 PC 本地硬盘);
  3. 仅勾选 SD 启动
  4. 点击 选择固件 → 指定 update.img 文件;
  5. 点击 开始创建,耐心等待写入完成。

完成后,该 Micro SD 卡即可作为 可启动卡 使用。


三、从 Micro SD 卡启动

将制作好的 Micro SD 启动卡插入 LPA3588 板载卡槽

insert_sdcard

重启主机后,BootROM 将自动检测 Micro SD 卡,并按启动链顺序加载:

TPL/SPL → U-Boot → Kernel → 根文件系统


四、启动验证

要确认系统是否成功从 Micro SD 卡启动,可采用以下方法:

1. 串口日志验证

通过串口观察启动过程:

  • 出现 Booting from SD Card 或类似提示;

  • U-Boot 阶段识别并切换到 mmc1

    ...
    U-Boot SPL board init
    U-Boot SPL 2017.09-ge4e124926e-230922 #lxh (Sep 25 2023 - 10:58:38), fwver: v1.13
    ...

    U-Boot 2017.09-gf34fefcc0c-241224 # (Sep 18 2025 - 22:24:16 +0800)
    Model: Rockchip RK3588 Evaluation Board
    ...
    mmc@fe2c0000: 1, mmc@fe2e0000: 0
    switch to partitions #0, OK
    mmc1 is current device
    Bootdev(atags): mmc 1
    MMC1: Legacy, 52Mhz
    ...
  • Kernel 启动日志中会显示内核版本与挂载参数,例如:

    Starting kernel ...

    [ 1607.107138] Booting Linux on physical CPU 0x0000000000 [0x412fd050]
    [ 1607.107159] Linux version 6.1.99 (joshua@ubuntu2204-docker) (aarch64-none-linux-gnu-gcc (GNU Toolchain for the A-profile Architecture 10.3-2021.07 (arm-10.29)) 10.3.1 20210621, GNU ld (GNU Toolchain for the A-profile Architecture 10.3-2021.07 (arm-10.29)) 2.36.1.20210621) #4 SMP Thu Sep 18 21:58:32 CST 2025

    [ 1607.304464] Kernel command line: storagemedia=sd androidboot.storagemedia=sd root=PARTUUID=614e0000-0000 rw rootwait ...

⚠️ 注意:

  • 单从串口日志往往无法准确判断 U-Boot 和 Kernel 来源于 eMMC 还是 Micro SD 卡;
  • 可通过 擦除 eMMC 或 SD 卡的一方 来验证真实启动来源;
  • 由于 eMMC 与 Micro SD 卡分区表相同,PARTUUID 也相同,可能出现系统随机挂载不同 rootfs 的情况。

2. 根文件系统验证

方法一:不同系统对比

  • eMMC 烧录 Buildroot
  • Micro SD 卡烧录 Ubuntu
  • 启动进入 Ubuntu,即可确认来自 Micro SD 卡。

方法二:标志文件法

在拔出 SD 卡的情况下启动 LPA3588,在 eMMC 的文件系统中创建标志文件:

touch /root/emmc_flag

插入 SD 卡并重启后,��若该文件消失,则说明 rootfs 来自 SD 卡。

方法三:命令确认

findmnt -no SOURCE /

若挂载点为 /dev/mmcblk1pX,说明系统运行于 SD 卡的 rootfs。

一般 mmcblk0 为 eMMC,mmcblk1 为SD卡。

可以通过 lsblkblkid /dev/mmcblk1pX 等命令进一步查看 eMMC 和 SD 卡的分区信息(blkid 命令须在 root 用户下使用)。


3. 擦除 eMMC 验证

可使用烧录工具擦除 eMMC 的扇区,再插入 Micro SD 启动卡后重启。若能启动成功,即可确认系统来源于 SD 卡。

如何擦除RK开发板eMMC或SD卡上的指定扇区


五、常见问题排查

1. 问题排查

问题可能原因解决方法
工具无法识别 Micro SD 卡未先插入读卡器请先插卡再运行工具
烧录失败未使用管理员权限管理员身份运行工具
启动仍从 eMMC固件过旧 / parameter.txt 配置不支持使用最新 SDK 或固件重新烧录
启动卡无法识别SD 卡质量差 / 不符合速度等级更换高质量高速 Micro SD 卡(≥Class10/UHS-I)

2. 使用 SD 卡启动时遇到以下问题 MMC error: The cmd index is 16, ret is -110

这种情况通常是 SD 卡通信失败,ret is -110是超时,uboot 完全读不到 SD 卡数据,可以进行以下检查:

SD 卡接触不良/卡槽松动

SD 卡不兼容,坏卡;可以换大品牌 SD 卡,尽量用 SDR104 / Class10 正规卡

✅ 至此,已在 LPA3588 主机上完成 Micro SD 启动卡的制作及验证。