记一次emmc走线干扰导致的启动异常

本文详细记录了解决手机生产线上出现的开机定屏问题过程。初步怀疑为软件问题,但深入分析后发现EMMC读写异常。通过关闭HS400模式,确认为信号干扰所致,最终通过增强EMMC驱动能力解决问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

产线生产手机,出现部分手机开机定屏。刷以前的软件能正常启动到Android界面,初步怀疑是软件问题。拿到机器后,接usb,发现有usb端口,但由于是user版本,无法连接adb进行调试。直接刷成userdebug版本,机器正常启动。怀疑是客户的软件问题,让客户提供debug版本的软件,发现内核有报错信息,也就是emmc读写异常。

mmcblk0: error -84 transferring data, sector 147456, nr 512, cmd response 0x900, card status 0x0 

刷成我们这边的软件,机器能正常启动,一样有报错信息。工厂那边做过交叉试验,交换好的机器和不良机器的emmc,发现不良现象也不完全是跟着emmc走。emmc原厂过来,拿单体回去分析,没发现emmc异常。所有的线索都断了。cpu厂商那边建议关闭hs400来测试,发现机器能正常启动,内核也没有报错信息。最终,他们测量了emmc的信号,发现有信号干扰(EMMC走线的过孔和VDDMEM的电源平面走在一起/走线也过长),通过加强emmc(data0..data7)驱动能力来加强抗干扰能力
emmc资料

http://www.wowotech.net/tag/emmc

http://www.wowotech.net/basic_tech/emmc_bus_protocol.html

 

### EMMC启动与SPI启动的区别及应用场景 #### 主要区别 EMMC(嵌入式多媒体卡)和SPI(串行外设接口)Flash作为两种不同的存储介质,在启动方式上存在显著差异。 对于EMMC,其启动过程依赖于专用的初始化协议。该协议允许主机通过命令集来配置、读取和写入数据到EMMC芯片内部的不同分区中[^1]。相比之下,SPI Flash通常采用更简单的通信机制完成启动加载程序(Bootloader)。由于SPI Flash的数据传输速率相对较低,因此更适合用于较小规模固件或操作系统内核的引导加载[^3]。 #### 数据传输速度 在数据传输效率方面,EMMC表现出明显优势。它支持高速四线制甚至八线制模式下的多输入/输出(MIPI M-PHY),从而实现更高的带宽以及更快的数据访问速度。而SPI Flash一般仅提供单线或双线操作,默认情况下工作频率也远低于现代EMMC标准所定义的速度范围[^4]。 #### 成本考量 从成本角度来看,SPI Flash因其结构简单且易于集成的特点而在某些特定场合下更具经济性;特别是当目标应用不需要大容量持久化存储时更是如此。然而,如果考虑到长期维护和支持等因素,则可能倾向于选择更为成熟稳定的解决方案——即具备更大容量和更好性能表现的EMMC产品[^2]。 #### 应用场景 - **EMMC适用场景** - 对于需要快速启动并处理大量文件系统的设备来说是非常理想的选择; - 移动电话和平板电脑等消费电子产品广泛采用了这种技术; - **SPI Flash适用场景** - 更适合那些对初始投资较为敏感的小批量生产项目; - 特定工业控制领域内的小型微控制器单元也可能偏好此类方案,因为它们往往只需要少量代码空间即可满足需求。 ```python # Python伪代码展示如何区分这两种启动方式 def detect_boot_mode(): if check_emmc_device(): print("Detected as EMMC boot mode.") elif check_spi_flash_device(): print("Detected as SPI flash boot mode.") detect_boot_mode() ```
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值