当前位置:首页 > 公众号精选 > 嵌入式微处理器
[导读]前言由于不可抗拒因素,原定性产品替换一颗器件,该器件的目的是防止外界EMI干扰,位置处于处理器和SD卡之间,器件是为每个SD卡信号线连接100Ω电阻。更换后,SD卡探测正常,从SD卡读写几十KB文件功能正常, 从SD卡数据500KB以上的文件永远无法读完,系统其他功能依旧正常,再...

前言

由于不可抗拒因素,原定性产品替换一颗器件,该器件的目的是防止外界EMI干扰, 位置处于处理器和SD卡之间,器件是为每个SD卡信号线连接100Ω电阻。

更换后,SD卡探测正常,从SD卡读写几十KB文件功能正常, 从SD卡数据500KB以上的文件永远无法读完,系统其他功能依旧正常,再次插拔SD卡不可识别,只能关机重启。

问题原因:新旧器件的寄生电容有差异,SD卡时钟信号畸形,处理器SD控制器

下面看看整个曲折排查过程


方向错误

前天,报告故障时同事没有把事情给我描述清除,仅说“更换EMI器件后,从SD卡里执行系统更新时被卡住了,进度条走不完”。我到产线的确每次都能复现改描述问题。庆幸,容易复现以前都好办,可我的排查方向错了,被问题描述误导而去检查设备驱动是否存在问题,比如mmc驱动里某个核心死锁、等待信号量、while循环、状态机混乱。

纳闷着产品都量产好几年了,从SD卡执行系统更新功能我还特别关注过可靠性。生怕好好一台设备升级变砖。于是一下午在新、老器件上尝试对比差异。生产部门的示波器很难用,只用它初略对比信号高、低电平范围,没能捕获到实际频率响应特性,粗略观测到两设备插入SD卡后某几个信号线逻辑电平不一致,一个高电平、一个低电平,至于原因未知。

快下班时同事告知:“设备可以正常保存数据文件到SD卡。”。

What?有这么神奇?

设备业务数据每个文件只有200KB以内,我尝试着用dd命令在SD卡根目录创建若干不同大小文件,再telnet到设备上逐个 hexdump它们,发现500KB文件大小是个分水岭。

阅读手册

次日,对比新老器件的手册说明,两器件的差异仅仅在于寄生电容上,老器件寄生电容8.5pF,新器件36pF。其实这个时候动手算算时间响应系数、SD卡工作频率、在芯片手册时序特性就能确认故障点在这了,本产品的SDIO时钟频率48MHz。

SDIO这部分我不是太熟悉,尝试在群里请求帮助

抱几台设备去实验室做对比实验,用着熟悉的示波器,操作起来游刃有余。

老器件的波形勉强还行,至少算是个正弦波,新器件的波形已经被寄生电容展宽成 斜三角波。初步怀疑布线质量差劲,波形抖动,访问大文件时时钟抖动累加影响处理器时序,状态机混乱。访问小文件时任务小巧。数个时钟偏差不足以引起单次读写任务执行。



眼图

是德科技的这款示波器默认没开放眼图功能,要使用眼图也行,1万RMB购买软件扩展功能lisence。我只能退而求其次使用它的 Mask(模板)功能 。这个功能原理和眼图类似,下文我还是用眼图来称呼它。Mask功能缺少眼图下移动标杆测量的能力, 不能测量“眼镜”开口大小,无法得知3dB位置,一拖动动屏幕任何参数,Mask数据都会丢失。

怎么让处理器保持读取数据内容呢?

让处理器反复地在SD卡上拷贝1MB文件就行了,记得末尾清除文件系统缓存,防止linux在内存里缓存SD卡文件。

while [ 1 ]do cp /mnt/sd/1MB.img /mnt/sd/unuse.img echo 3 > /proc/sys/vm/drop_caches # 清除缓存done每个眼图都保持1min测试时长

老器件的波形实际上也是存在抖动的,好在抖动不剧烈,抖动位置规则的分布在5个密集区域。


新器件的眼图我需要说明一下,文章开头描述“只要访问SD卡500KB以上的数据无响应,不再有时钟”。于是我对测试shell做了小修改,每次仅处理10KB的文件,接着让总线休息一下,避免shell执行太快SD控制器的来不及停止就继续执行。有了这个延时,所以新器件1min眼图效果和老器件是不能直接对比的,初略看他的抖动会比老器件的强。

  • 老器件48MHz持续运行1min,约产生2880M个时钟。

  • 新器件48MHz执行10KB,停歇1秒循环1min,约产生600K个时钟

  • 所以1min里老器件工作量是新器件的4800倍=2880*10^6/600,约是老器件12.5ms=60s * 1000 / 4800的眼图效果

while [ 1 ]do cp /mnt/sd/10KB.img /mnt/sd/unuse.img sleep 1 # 等待,否则同样会无响应 echo 3 > /proc/sys/vm/drop_caches # 清除缓存done


降频

人生苦短,姑且假设问题就是处在频率太高、寄生电容太大。尝试粗略修改处理器SDIO时钟频率,如果降低频率后能正常工作就可以定位故障点了。

大笔一挥,直接降低SDIO时钟为设置的一半,SDIO有这点好处,只要在SD卡的工作范围内,则可以在0-maxMHz范围内任意频率工作。


再次测试读写1MB文件,呕吼,两设备都正常执行。再次测量眼图,这回新器件的shell脚本可以和老器件的相同,不需要延时。可看出他们眼图1min效果是相同的。


END
来源:写个解,作者:吴解君版权归原作者所有,如有侵权,请联系删除。
嵌入式ARM

扫描二维码,关注更多精彩内容

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

4月30日消息,西安紫光国芯UniIC宣布正式推出全新SSD产品,共有四大系列,包括面向行业应用的高端产品“CTD700”、

关键字: 紫光展锐 芯片

TWSC 2985系列SD6.0存储芯片 国内首颗支持4K LDPC纠错技术 增强纠错、耐久可靠、性能升级

关键字: 德明利 半导体 存储 芯片 国产存储企业

2024年4月11日,中国——意法半导体的ST25R100近距离通信(NFC)读取器芯片独步业界,集先进的技术功能、稳定可靠的通信连接和低廉的成本价格于一身,在大规模制造的消费电子和工控设备内,可以提高非接触式互动功能的...

关键字: 嵌入式 数据读取器 芯片

其最新一代开创性系统集成芯片及配套软件将为4600万辆汽车提供更多安全和便利功能 上海2024年4月17日 /美通社/ -- Mobileye今日宣布,其已向客户交付其最新的EyeQ™6 Lite (EyeQ...

关键字: 芯片 MOBILEYE ADAS 自动驾驶

随着2024年的到来,北斗系统建设已走过栉风沐雨、接续奋斗的30年,几代北斗人也走过了北斗系统建设从无到有,从有源定位到无源定位,从服务中国到服务亚太,再到全球组网的“三步走”发展历程。

关键字: 华大北斗 芯片

复位电路是一种用来使电路恢复到起始状态的电路设备,它的操作原理与计算器有着异曲同工之妙,只是启动原理和手段有所不同。复位电路,就是利用它把电路恢复到起始状态

关键字: 复位电路 电容 电源

微控制单元(Microcontroller Unit;MCU) ,又称单片微型计算机(Single Chip Microcomputer )或者单片机,是一种针对特定应用的控制处理而设计的微处理器芯片,其工作频率(在1M...

关键字: MCU 芯片 半导体

今日凌晨,中国台湾东部的花莲县连续发生地震,最高强度为6.3级,震源深度10公里,据中国地震台网分析,本次地震均为4月3日台湾花莲县海域发生的7.3级地震的余震。中国台湾地区在全球半导体供应链中扮演者重要角色,其10nm...

关键字: 固态硬盘 芯片 存储

在科技飞速发展的今天,电子设备已经成为了我们日常生活中不可或缺的一部分。而在这些电子设备的内部,一个不可或缺的组成部分便是开关电源芯片。作为电源管理集成电路的核心,开关电源芯片在电子设备中发挥着至关重要的作用。本文将深入...

关键字: 开关电源 芯片

开关电源芯片作为电子设备中的重要组成部分,是实现电源转换和管理的核心器件。随着科技的不断进步,开关电源芯片的种类也在不断增加,各具特色,满足了不同设备和应用场景的需求。本文将深入探讨开关电源芯片的种类及其科技应用,带领读...

关键字: 开关电源 芯片
关闭
关闭