嵌入式linux SD读取数据导致死机问题

发布时间 2023-10-29 11:21:43作者: 木子的秋天

一、碰到的问题

  1. 通过ssh命令将文件写入到SD卡中,发现有一张SD卡(金士顿)可以成功写入,而另一张SD(闪迪)一直写入失败。
  2. 应用层读取文件时,有一张SD卡(金士顿)可以成功读取数据;另一张SD卡(闪迪)有很大的概率会导致司机。

二、SD卡驱动硬件电路

图 1. SD卡驱动硬件电路

三、调试过程

  1. 查看SD卡驱动加载的日志,发现SDCLK的时钟信号为50MHz,考虑到C79可能会影响到时钟信号,去掉C79。
  2. 去掉C79,后插入闪迪的SD卡,日志中提示:“mmc0: error -110 whilst initialising SD card clock”。
  3. 对SD卡驱动的加载过程进行跟踪,闪迪SD的识别过程正常,但在时钟切换为50MHz时,发生错误。
  4. 将SD卡的时钟从50MHz修改25MHz时,闪迪SD的识别过程,读写数据正常。
  5. 怀疑是静电管D14、D15、D16的容值过大,导致数据信号变形。
  6. 将静电管更换为容值更小的型号(3pF),闪迪SD卡工作正常。