Linux SD问题总结与解决
最近一段时间碰到了一些关于SD的问题,这里做一下记录。SD卡问题如下:
(1)SD卡无法识别
(2)SD卡可以识别,但是分区无法识别
(3)SD卡可以识别,分区可以识别,但是SD卡挂载出现报错
(4)以上都没有问题,但是读写SD卡出现报错(报错打印五花八门,还有的时候导致系统重启)
(5)卡没有拔出,但是串口打印“rapidly remove”快读拔出
总的来说linux SD卡模块共有两大部分,一个是卡识别阶段(一是上电时卡已经插上了此时通过总线扫描的方式,直接检测卡,一个是动态的通过中断方式监测卡是否插入),一个是数据传输阶段(读,写,擦),每个过程出现的问题都几乎算是碰到了,很圆满。下面贴一下每种报错下的截图以及解决方法。
SD卡无法识别
截图:
尝试不同容量和品牌的卡,发现卡可以识别,但是有的卡不能识别(不能识别的卡,在其它设备上或者电脑上面可以识别),此时将不能识别的卡格式化文件系统为FAT32,看能否识别,不能识别则需要考虑硬件信号问题,此问题硬件修改(SD布线没有按照参考设计导致)解决
SD卡可以识别,但是分区无法识别
尝试其他容量和不同品牌的卡,发现卡可以识别,但有的卡不能识别分区,此时必定是硬件某些地方匹配问题导致,时钟口或者是数据口通信错误(调整clk引脚接地电容的阻值)
SD卡可以识别,分区可以识别,但是SD卡挂载出现报错
截图忘了放哪里了。。。
挂载失败 有几个原因:(1)卡不识别(2)卡可以识别,但是分区无法识别(3)卡,分区都能识别,但是修复命令出错(4)卡,分区都能识别,但是格式化命令出错 (5)卡,分区都能识别,卡修复命令,格式化命令没出错,mount出错,因为卡文件系统不是fat32 。。。以上都没有问题,mount就不会出问题
以上都没有问题,但是读写SD卡出现报错(报错打印五花八门,还有的时候导致系统重启)
出现此问题的原因就是由于CLK和CMD数据线出现干扰导致,那么,干扰信号从哪里来?这里就需要硬件进行摸索排查,定位或猜测可能的干扰源以及是什么频率的信号导致的干扰
卡没有拔出,但是串口打印“rapidly remove”快读拔出