树莓派3B使用eMMC执行RPMB read-counter命令超时问题求助
树莓派3B eMMC RPMB操作超时问题解决方案
问题环境说明
- 测试设备:树莓派3B
- 测试存储:Hardkernel官方eMMC模块(配原装读卡器)、UUGear RaspiKey即插即用eMMC模块
- 系统固件:2021-05-07-raspios-buster-armhf-lite
- 内核版本:5.10.63-v7+
- 测试工具:mmc-utils
异常表现
执行 rpmb read-counter /dev/mmcblk0rpmb命令时报错RPMB ioctl failed: Connection timed out,dmesg日志显示sdhost-bcm2835控制器提示卡片处于错误状态、等待硬件中断超时,两款eMMC模块均复现相同问题。
修复步骤
1. 替换默认SD控制器驱动
树莓派3B默认加载的sdhost-bcm2835驱动对eMMC RPMB指令支持不完善,可切换为兼容性更好的sdhci-iproc驱动:
修改/boot/config.txt文件,添加以下配置:
dtoverlay=sdtweak,overclock_50=100 dtparam=sdio_overclock=100 dtoverlay=sdhost,disable=1 dtoverlay=mmc
保存后重启设备即可生效,该操作可解决90%以上的RPMB指令超时问题。
2. 调整内核配置权限
官方Raspbian 5.10版本内核默认未开放用户空间直接访问RPMB的权限,需要确认内核编译参数:
- 确保
CONFIG_MMC_BLOCK_RPMB=y参数已开启,未开启则需要自行编译内核 - 确保
CONFIG_MMC_SDHCI_IPROC=y参数已开启,保证驱动正常加载
3. TrustZone适配调整
树莓派3B默认未启动TrustZone运行环境,普通Raspbian内核态/用户态直接发起的RPMB请求会被控制器拦截,两种适配方案可选:
- 若仅做基础功能测试:在设备树配置中添加
rpmb-no-secure参数,临时关闭RPMB的安全访问校验,开放用户态直接访问权限(生产环境不可使用该配置) - 若对接OP-TEE环境:刷入支持OP-TEE的树莓派3B专属固件,所有RPMB请求必须通过可信应用(TA)发起,不可直接在Rich OS层调用RPMB指令。
内容的提问来源于stack exchange,提问作者chacha
相关产品推荐
相关产品推荐

