1. sdcard 的工作原理
器件理解: sdcard 与tf 卡的区别(摘自:tf卡和sd卡的区别 - 知百科)
目前手机手机用的严格的说叫TF卡,也叫microsd卡,和传统的sdcard是不同的。
1. 定义不同。SD是一种完全开发的标准(系统),用于多媒体。TF是极其细小的快速存储卡。闪迪发明。
2. 外观大小不同。TF卡叫t-flash卡,全名叫transflash,又叫microsd卡. 是SD卡的1/4的大小。
3. 产品不同,目前手机都是使用tf卡,体积小节省空间,TF卡可以安装卡套充当sdcard使用。
4. 适用范围不同,TF是功能机中,sdcard都是多媒体机器中。
5.安全性,sdcard的侧面有个读写操作的控制快 ,能控制读写内容不被轻易改变。但是tf卡没有这个功能。
6. 原理不同,tf卡是快闪存存储卡,是记忆卡,基于NANDMLC的技术,俗称小卡;sdcard是基于半导体快闪记忆器,俗称大卡。
TF的工作原理
当设备需要读取或写入TF卡中的数据时,首先需要将TF卡插入相应的插槽中。当插入TF卡后,设备会发送对应的指令给TF卡,以控制数据的读取或写入操作。TF卡会根据指令来寻址存储芯片中的数据,并通过数据线将数据传输给设备。
2. sdcard 的代码逻辑
要驱动SD卡工作,主要涉及两个步骤。
第一个步骤是SD卡的识别过程。
第二个步骤是对SD卡进行读写过程,即主机控制器和SD卡之间进行数据传输的过程。
要使SD卡能正常工作,一是要给SD卡供给稳定的电压,二是要SD卡按用户规定的方式工作。这两项工作的实现,都是主机控制器通过给SD卡发送控制命令来实现的。
主机(SDIO控制器)要驱动SD卡工作,要使用许多的命令,包括应用层命令ACMD 和 通用命令 CMD. 主机(SDIO控制器)把命令发送给SD卡,SD卡会作出回应,这里的回应叫做响应,响应命令分为6类,分别是R1、R1b、R2、R3、R6、R7。
主机(SDIO控制器)给SD卡发送命令之后,SD卡会作出响应,响应中包含主机(SDIO控制器)需要的数据,这些数据有SD的信息,容量,和存储数据等等。
上面已经提到了,SD卡工作,主要是识别和数据传输,它的识别过程有些复杂,写代码的时候,可以参考协议给的初始化流程图。数据传输包括读和写,单字节和多字节读写。下两节描述识别初始化流程图和数据读写时序图。
代码:
mmc_rescan(struck work_struct *work) -- > mmc_resacan_try_freq(host,host->f_min)
--> mms_powwer_up, mmc_hw_reset_for_init(host)-->mmc_attach_sdio(host)-->
mmc->mmc_send_io_op_cond (host, &ocr) -->mmc_wait_for_cmd(host, &cmd, MMC_CMD_RETRIES) -->mmc_wait_for_req-->mmc_resume_bus, __mmc_start_req
-->mmc_wait_for_req_done --> wait_for_completon_io(&mrq->completion)
其中completion 是一个完成量。所以这个问题表象是一个超时问题,实际上一个信号等待时间。
偷懒的修改方案: sd卡槽的几路供电设置成always.
s