RK3328 SOC启动卡滞:等待根设备/dev/mmcblk1p2求助
RK3328内核启动卡根设备故障排查方案
1. 确认U-Boot中MMC设备映射与启动参数
- 在U-Boot命令行执行
mmc list,查看SD卡对应的设备序号(比如mmc@ff500000: 0或mmc@ff520000: 1),RK3328通常内置eMMC对应mmc0,SD卡对应mmc1;无eMMC时SD卡会变为mmc0。 - 执行
printenv bootargs,确认根设备参数为root=/dev/mmcblkXp2(X对应上述序号),必须添加rootwait参数(等待存储设备初始化完成),完整示例:root=/dev/mmcblk1p2 rootwait rw console=ttyS2,1500000。
2. 检查自定义DTS的SDMMC配置
- 确认SDMMC控制器节点(如
&sdmmc)的status = "okay";未被注释,且引脚配置与rock-pi-e.dts一致(避免精简时误删引脚复用、电气属性配置)。 - 检查时钟配置:确保SDMMC节点正确引用时钟源(如
clocks = <&cru HCLK_SDMMC>, <&cru CLK_SDMMC>;),且clock-frequency设置合理(RK3328 SDMMC默认支持50MHz或更高)。 - 若开发板SD卡有独立电源使能引脚,需在DTS中配置对应GPIO并设置默认高电平(如
pinctrl-names = "default"; pinctrl-0 = <&sdmmc_pwr>;,并定义对应的引脚节点)。
3. 验证SD卡分区与根文件系统完整性
- 用
fdisk -l /dev/sdX(X为SD卡本地设备号)确认p2分区为ext4格式,且分区表无损坏。 - 执行
e2fsck -f /dev/sdX2检查根文件系统完整性,修复可能的损坏。 - 核对Buildroot输出目录
output/images/rootfs.ext4的大小与写入SD卡的p2分区大小一致,确认镜像生成无异常。
4. 检查内核SD/MMC相关编译配置
- 进入Buildroot执行
make linux-menuconfig,确认以下配置开启:CONFIG_MMC=yCONFIG_MMC_ROCKCHIP=y(RK3328 SDMMC控制器驱动)CONFIG_MMC_BLOCK=y(SD块设备支持)CONFIG_EXT4_FS=y(根文件系统格式支持)CONFIG_MMC_DEBUG=y(可选,用于调试)
5. 启用内核调试信息定位问题
- 在bootargs中添加
earlyprintk=serial,ff130000,1500000(对应UART2节点地址),让内核更早输出初始化日志,查看SDMMC控制器初始化、卡识别阶段的报错。 - 开启
CONFIG_DEBUG_FS=y后,内核启动后可通过cat /sys/kernel/debug/mmc0/ios(对应设备序号)查看SD卡的工作状态。
内容的提问来源于stack exchange,提问作者David Welshon
相关产品推荐
相关产品推荐

