欢迎访问SMT设备行业平台!
行业资讯  >  行业动态  >  eMMC三大高频故障排错大全:启动失败、HS400降速、写保护失效
eMMC三大高频故障排错大全:启动失败、HS400降速、写保护失效
昨天 17:03   浏览:173   作者:小萍子

一、前置说明

1.1 适用范围

适配JEDEC JESD84-B5.1/B5.2标准eMMC 5.0/5.1版本,覆盖瑞芯微RK、全志A、高通QCOM、NXP、展锐主流主控平台;适配Linux、Android、裸机Boot调试场景,面向研发调试、量产返修、硬件改版全流程。

1.2 调试工具&日志指令

硬件工具:示波器、差分探头、电源纹波仪、万用表、编程器、阻抗测试仪

软件工具:mmc-utils、emmc-tool、uboot mmc调试指令、内核dmesg、寄存器读写工具

日志指令(Linux)# 查看eMMC内核报错、降速、初始化日志          
dmesg | grep mmc          
# 读取EXT_CSD全寄存器          
mmc extcsd read /dev/mmcblk0          
# 查看当前工作模式、速率、总线配置          
cat /sys/class/mmc/mmc0/ios/*          
# 读写保护状态查询          
mmc status get /dev/mmcblk0

1.3 eMMC供电&信号定义

VCC:3.3V 存储内核主供电;VCCQ:1.8V/1.2V IO供电;CLK/CMD/DAT0~DAT7/DQS:8路差分数据+选通信号;RST_N:硬件复位脚。

image.png


 

二、故障一:eMMC启动失败(Uboot初始化超时、内核识别不到、ROM启动跳转失败)

2.1 分级故障现象&典型报错

1.一级故障:Uboot阶段无eMMC设备枚举,打印 CMD0 timeout、CMD8 timeout、No card detected

2.二级故障:枚举成功,分区识别失败,打印 read boot partition fail、BOOT1/BOOT2 CRC error

3.三级故障:内核挂载失败,打印-110传输超时、ECC error、分区表损坏

2.2 根因分层(硬件>固件>配置>芯片)

2.2.1 硬件类(占启动故障70%)

供电异常:VCC 3.3V纹波>120mV、VCCQ压降超标、上电时序颠倒(IO供电晚于主供电)、退耦电容缺失/容值错误(标准每路IO配0.1uF+10uF电容)

链路异常:PCB走线长度>80mm、CLK/CMD差分阻抗非50Ω、数据线串阻错值(标准22Ω,误用0Ω/51Ω)、虚焊、连锡、DAT0启动专用走线干扰

复位异常:RST_N上拉失效、复位时长不满足JEDEC标准(最小1us低电平复位)

2.2.2 Uboot/固件类

Boot分区配置错误:未开启BOOT1硬件启动位、BOOT分区大小与芯片出厂参数不匹配

固件兼容问题:Uboot时钟配置超标、1.2V IO电压未使能、老旧Uboot不兼容新版eMMC固件

启动镜像损坏:Preloader/BL31/ATF烧录偏移错误、Boot分区擦写不完全

2.2.3 芯片&寄存器类

EXT_CSD[177] BOOT_CONFIG寄存器配置错误,禁用硬件启动分区

芯片生命周期耗尽、永久ECC报错、BOOT区域物理损坏

出厂OTP熔丝配置只读启动,禁止外部烧录启动

2.3 标准化排错流程(由简到繁,量产通用)

1.基础上电检测:万用表测VCC=3.3V、VCCQ空载=1.8V,启动瞬态压降≤0.2V;纹波仪测3.3V纹波≤100mV

2.Uboot极简排查:关闭HS400,强制切换1bit SDR模式,执行mmc dev 0; mmc info,能识别则为高速模式配置问题,不能识别排查硬件

3.寄存器核验:读取EXT_CSD[177]确认BOOT启动使能、EXT_CSD[1]芯片健康状态

4.硬件点位修复:补全退耦电容、统一22Ω串联阻抗、缩短CLK走线、修正上电时序(VCC先上电,10ms后VCCQ上电)

5.镜像重烧:解锁BOOT分区,按厂商偏移重烧Preloader,校验BOOT分区CRC

2.4 高频报错一键解决方案

报错日志

直接根因

整改方案

CMD0 timeout

供电缺失、RST_N常低、主控MMC控制器未复位

修复复位电路,补3.3V供电,更换主控MMC引脚

CMD8 response error

IO电压不匹配(eMMC需1.8V,主控输出1.2V)

Uboot切换VCCQ电平,匹配芯片IO域

BOOT partition crc fail

Boot镜像损坏、分区偏移错误

mmc erase boot分区,重烧原厂loader

 

三、故障二:HS400模式自动降速(常态化降级HS200/SDR52,跑不满额定速率、频繁重传)

3.1 故障判定标准

正常:eMMC5.1芯片协商锁定HS400-ES 400MHz,DQS差分采样;异常:初始化协商失败、运行中自动降级,dmesg打印 mmc0: switch to HS200 due to err-110、data crc error、retry transfer

3.2 降级根因(优先级:信号完整性>供电>寄存器>驱动)

3.2.1 硬件必查项

信号完整性SI劣化:CLK/DQS走线不等长、差分阻抗偏离50Ω、走线长度>60mm、DQS缺少差分端接电阻

电源瞬态能力不足:1.2V IO电源负载能力不足,高速读写瞬态压降>0.15V,触发主控降速保护

串阻适配错误:HS400专用22Ω高精度电阻,误用0Ω会震荡,47Ω会幅值不足

3.2.2 EXT_CSD寄存器配置错误(量产最高发)

EXT_CSD[183] Bit7:HS400_EN使能位未置1,硬件禁用高速模式

EXT_CSD[185]:驱动强度配置偏高,信号过冲触发CRC报错

EXT_CSD[202]:温度降速阈值配置过低,常温主动降速

未开启DQS相位校准:主控DQS采样相位偏移,数据采样错误降级

3.2.3 驱动&平台配置问题

设备树dts未开启hs400-es、未配置delay相位参数

内核开启过度容错降速:内核参数mmc.core.prevent_hs400=1 强制禁用高速

主控MMC控制器版本老旧,不支持双边沿DQS采样

3.2.4 芯片本身问题

老旧晶圆eMMC、擦写寿命>80%、内部温度传感器漂移,厂商固件主动限速保护。

3.3 分步排错流程(从0成本软件排查到硬件改版)

1.第一步:核验模式使能读取寄存器:mmc extcsd read /dev/mmcblk0 | grep HS400,确认HS400_EN=1;核查dts开启hs400_es、1.2v_io配置

2.第二步:排查供电瞬态示波器抓取高速读写时1.2V波形,瞬态压降≤0.1V,加大1.2V输出电容至22uF+0.1uF组合

3.第三步:相位校准调试Uboot开启DQS自动相位校准,手动微调CLK-DQS相位偏移,消除采样误码

4.第四步:PCB硬件整改CLK/DAT/DQS走线等长误差≤5mil,DQS差分对地端接49.9Ω电阻,走线长度严控≤60mm

5.第五步:容错降级关闭内核去掉mmc降速容错参数,调高CRC报错重试次数,关闭温控主动降速

3.4 临时规避&根治方案

临时调试:Uboot强制锁定HS400,关闭自动降级 mmc set speed 400000000

量产根治:统一1.2V IO供电、DQS差分端接、等长布线、寄存器固化HS400使能位

 

四、故障三:eMMC写保护失效(开启写保护后仍可擦写、永久保护解除失败、临时保护不生效)

4.1 三类失效现象

1.软件临时写保护(PWP)失效:设置分区只读,依旧可写入、格式化

2.硬件永久写保护(EWP)失效:WP引脚拉高,全盘仍可读写

3.Boot分区写保护失效:锁定BOOT区后,可恶意擦除Loader启动镜像

4.2 eMMC写保护原理前置

临时分区保护PWP:EXT_CSD[31]~[34]分区只读配置,软件可控,可随时解除

全盘永久保护EWP:硬件WP_N引脚拉高+OTP熔丝绑定,熔丝熔断后不可解除

Boot专属保护:EXT_CSD[178] BOOT_WP寄存器,锁定BOOT1/BOOT2分区

4.3 分场景根因+排错修复

4.3.1 临时分区写保护(PWP)失效

根因:1. 主控驱动绕过MMC协议读写,直接底层DMA写入;2. EXT_CSD写保护寄存器未固化,重启自动清零;3. 文件系统挂载权限覆盖硬件保护;4. mmc工具权限不足,写入寄存器失败

排错步骤

1.核查寄存器:mmc extcsd read /dev/mmcblk0 | grep PART_WP,确认分区保护位置1

2.关闭内核绕过保护参数:删除dts中mmc,dma-bypass-wp配置

3.固化保护位:开启EXT_CSD[175] WP_LOCK位,防止重启重置

4.文件系统叠加只读:mount -o remount,ro /data 双层防护

4.3.2 硬件全盘永久写保护(EWP)失效

根因:1. WP_N引脚悬空/未上拉,eMMC默认解除保护;2. OTP熔丝未熔断,硬件WP无效;3. 主控引脚复用,WP_N被配置为普通IO;4. 芯片出厂禁用EWP功能

排错步骤

1.硬件核验:WP_N外接10K上拉至VCC3.3V,稳定高电平

2.引脚核验:主控取消WP_N复用功能,专属为eMMC保护脚

3.熔丝核验:读取OTP区域,确认EWP熔丝熔断,未熔断则编程器熔断熔丝(不可逆)

4.3.3 Boot启动分区写保护失效

根因:EXT_CSD[178] BOOT_WP未使能、Uboot mmc raw写指令绕过分区保护、主控安全启动关闭

修复指令:          
# 锁定BOOT1分区只读          
mmc bootpart protect set /dev/mmcblk0 boot1          
# 禁止Uboot底层擦写Boot分区          
setenv mmc_boot_wp 1; saveenv

4.4 写保护失效避坑要点

1. 仅靠系统mount只读无法防护底层读写,必须搭配eMMC寄存器硬件保护;2. EWP熔丝熔断不可逆,量产前务必备份镜像;3. 部分工业级eMMC出厂默认关闭全盘WP,需厂商解锁寄存器权限。

 

五、三大故障通用量产预防规范

5.1 硬件PCB标准化规范

eMMC供电:3.3V纹波≤100mV,1.2V IO瞬态压降≤0.1V,每引脚就近0.1uF退耦

信号:CLK/CMD/DAT/DQS 50Ω阻抗,串阻统一22Ω,走线总长≤60mm,DQS差分等长

复位&WP:RST_N、WP_N全部10K上拉,禁止悬空设计

5.2 软件寄存器固化规范

量产烧录阶段固化:HS400_EN、BOOT启动位、分区写保护位,禁止默认软件配置

内核固定参数:关闭mmc自动降速、关闭DMA绕过写保护、固定DQS相位

5.3 芯片来料检测规范

来料必测:EXT_CSD寄存器完整性、IO电压适配性、EWP熔丝状态、剩余擦写寿命,剔除改版晶圆、翻新eMMC芯片。

六、附录:eMMC调试寄存器速查表

寄存器地址

功能定义

正常值

EXT_CSD[177]

BOOT启动分区配置

0x48 开启BOOT1启动

EXT_CSD[183]

HS400模式使能

Bit7=1 开启高速

EXT_CSD[31]

用户分区写保护

0x01 只读锁定

EXT_CSD[178]

Boot分区写保护

0x03 双分区锁定

 


头条号
小萍子
介绍
推荐头条