@[TOC](Linux 文章总结)
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卡出现报错(报错打印五花八门,还有的时候导致系统重启)![SD卡读写错误截图](https://img-blog.csdnimg.cn/20190919120308240.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MzEzODU3MA==,size_16,color_FFFFFF,t_70)
出现此问题的原因就是由于CLK和CMD数据线出现干扰导致,那么,干扰信号从哪里来?这里就需要硬件进行摸索排查,定位或猜测可能的干扰源以及是什么频率的信号导致的干扰
卡没有拔出,但是串口打印“rapidly remove”快读拔出
出现上述打印,以及红色字体标注的地方,就代表着卡的cd pin脚由于出现了0,1,0的电平变化导致出现了rapidly remove的打印,正常拔卡是不会出现这种打印的。此时需要硬件关注cd脚的电平变化。
下面是我的个人公众号,喜欢linux c,c++,嵌入式的欢迎加入: