RK3576 Android 14 SD卡启动实战:3处源码修改与V1.78工具制作全流程

发布时间:2026/7/10 9:58:36
RK3576 Android 14 SD卡启动实战:3处源码修改与V1.78工具制作全流程 RK3576 Android 14 SD卡启动全流程实战指南1. 环境准备与硬件选型在开始RK3576平台的SD卡启动调试前确保您已准备好以下硬件和软件环境硬件清单RK3576 EVB开发板带SD卡槽符合规格的SD卡建议选择工业级产品容量8GB-32GB实测64GB部分型号也可用速度等级Class10/UHS-I及以上推荐品牌SanDisk Extreme、Samsung Pro Endurance软件工具# 工具链验证命令 $ git --version git version 2.25.1 $ repo --version repo version v2.4.3开发环境配置要点推荐Ubuntu 20.04 LTS作为编译主机磁盘空间至少预留200GBAndroid源码约150GB安装必要依赖包sudo apt-get install git-core gnupg flex bison gperf build-essential \ zip curl zlib1g-dev gcc-multilib g-multilib libc6-dev-i386 \ lib32ncurses5-dev x11proto-core-dev libx11-dev lib32z-dev \ libgl1-mesa-dev libxml2-utils xsltproc unzip2. 源码修改关键步骤2.1 Android层配置修改进入device/rockchip/rk3576目录修改BoardConfig.mk# 修改前 PRODUCT_BOOT_DEVICE : 2a2d0000.ufs,2a330000.mmc PRODUCT_SDMMC_DEVICE : 2a310000.mmc # 修改后 PRODUCT_BOOT_DEVICE : 2a2d0000.ufs,2a330000.mmc,2a310000.mmc # PRODUCT_SDMMC_DEVICE : 2a310000.mmc修改说明在PRODUCT_BOOT_DEVICE中添加SD控制器节点2a310000.mmc注释掉PRODUCT_SDMMC_DEVICE定义避免冲突保留AVB相关配置如BOARD_AVB_ENABLE2.2 Kernel设备树调整修改内核设备树文件如rk3576-evb1.dtsisdmmc { supports-emmc; status okay; };关键参数解析参数作用推荐值supports-emmc启用eMMC兼容模式必须添加max-frequencySD卡工作频率150000000bus-width数据总线宽度4cap-sd-highspeed高速模式支持13. 固件编译与验证3.1 完整编译流程# 初始化repo repo init -u https://github.com/rockchip-linux/manifests -b android-14.0 # 同步代码 repo sync -j8 --no-tags --no-clone-bundle # 应用修改后编译 source build/envsetup.sh lunch rk3576_evb-userdebug make -j$(nproc) update.img编译产物验证$ ls -lh out/target/product/rk3576/update.img -rw-r--r-- 1 user user 1.8G Jul 15 10:30 update.img3.2 编译常见问题处理问题1SD控制器未识别[ 2.345678] mmc1: error -110 whilst initialising SD card解决方案检查设备树sdmmc节点配置验证硬件原理图电压切换电路更换SD卡测试问题2启动卡在uboot阶段MMC: no card present解决方案// 修改uboot配置 CONFIG_MMC_DW_ROCKCHIPy CONFIG_MMC_SDHCI_ROCKCHIPy4. SD卡制作工具实操使用瑞芯微SD卡制作工具V1.78的具体步骤工具准备下载SD_Firmware_Tool_v1.78.zip解压后以管理员身份运行SD_Firmware_Tool.exe制作流程插入SD卡到读卡器选择正确的磁盘设备务必确认避免误操作勾选SD启动模式选择编译生成的update.img点击开始创建按钮操作界面关键区域说明----------------------------- | ① 设备选择下拉框 | | ② 工作模式单选按钮 | | ③ 固件选择按钮 | | ④ 进度条显示区域 | | ⑤ 操作日志输出框 | -----------------------------5. 上电验证与调试5.1 启动流程检查正常启动日志应包含以下关键节点[ 0.000000] Booting Linux on physical CPU 0x0000000000 [ 0.220000] mmc1: new high speed SDHC card [ 0.250000] mmcblk1: mmc1:0001 SD32G 29.7 GiB [ 1.800000] android: mounting /mnt/runtime/default/emulated5.2 常见故障排查表现象可能原因排查方法卡在uboot设备树配置错误检查sdmmc节点status反复重启电源不稳定测量3.3V/1.8V电压识别为只读文件系统损坏重新制作SD卡速度异常慢时钟配置问题检查max-frequency参数6. 高级配置与优化6.1 双启动配置方案通过修改parameter.txt实现SD卡与eMMC双启动FIRMWARE_VER: 1.0 MACHINE_MODEL: RK3576 MACHINE_ID: 007 BOOT_FROM: sdmmc启动优先级配置同时插入SD卡和eMMC时修改BOOT_FROM字段sdmmc优先SD卡emmc优先eMMCauto自动选择6.2 性能优化参数在kernel的dts中添加SD卡性能优化配置sdmmc { clock-frequency 150000000; supports-sd; bus-width 4; cap-mmc-highspeed; cap-sd-highspeed; disable-wp; sd-uhs-sdr104; vqmmc-supply vccio_sd; vmmc-supply vcc_sd; };7. 工程实践建议批量生产方案使用dd命令制作镜像模板dd if/dev/sdb ofsd_boot.img bs4M statusprogress通过USB集线器同时烧录多张SD卡温度适应性测试工业级应用需验证-40℃~85℃工作范围关注低温下的SD卡初始化成功率长期运行稳定性建议启用内核错误检测CONFIG_MMC_DEBUGy CONFIG_MMC_BLOCK_DEFERRED_RESUMEy提示实际项目中遇到SD卡频繁掉卡的情况可尝试在电源滤波电路添加100nF10uF组合电容这种设计在多个工业现场验证有效。