为了学习SD/SDIO协议,看了一下linux中初始化SD卡的流程,结合代码更容易SD初始化是怎么做的. 下面图截自:"SD Specifications Part 1 Physical Layer Simplified Specification Version 4.10" SD卡在sd模式下的初始化流程图,sd协议还有spi模式暂不研究. 这个流程图对应于linux 代码就在 /driver/mmc/core/sd.c static int mmc_sd_init_card(s…
  转自:http://www.cnblogs.com/fengeryi/p/3472728.html   mmc_sd_init_card剩下的关于UHS-I的分支结构. uhs-I的初始化流程图如图: 红线标出的部分是已经做了的事,与上一篇那个流程图是一致的,之后就是if分支中做的事. if分支中的函数mmc_sd_init_uhs_card: /* * UHS-I specific initialization procedure */ static int mmc_sd_init_uhs…
mmc_sd_init_card剩下的关于UHS-I的分支结构. uhs-I的初始化流程图如图: 红线标出的部分是已经做了的事,与上一篇那个流程图是一致的,之后就是if分支中做的事. if分支中的函数mmc_sd_init_uhs_card: /* * UHS-I specific initialization procedure */ static int mmc_sd_init_uhs_card(struct mmc_card *card) { int err; u8 *status; if…
前面对SD卡控制器有了一个主要的介绍.事实上SD控制器层更过的意义是为core层提供一种操作SD卡硬件的一种方法.当然不同的控制器对硬件控制的方法不尽同样,可是他们终于都能像core层提交一个统一的封装有操作方法的数据结构,那便是即将闪亮登场的struct mmc_host_ops....相应的host文件为s3cmci.c. 接下来就来揭开与之相应的struct mmc_host_ops结构的神奇面纱.... static struct mmc_host_ops s3cmci_ops = {…
SD卡是嵌入式设备中很常用的一种存储设备,体积小,容量大,通讯简单,电路简单所以受到很多设备厂商的欢迎,主要用来记录设备运行过程中的各种信息,以及程序的各种配置信息,很是方便,有这样几点是需要知道的 SD 卡是基于 flash 的存储卡. SD 卡和 MMC 卡的区别在于初始化过程不同.SD卡并不是我们通常意义上的手机扩展卡,那种卡叫做TF卡,但是通讯以及驱动模式是类似的. SD 卡的通信协议包括 SD 和 SPI 两类,SD卡上电之后默认处于SD状态. SD 卡使用卡内智能控制模块进行 FLA…
本文主要介绍Linux 环境下 SD 卡建立两个分区的操作流程: 操作环境:Linux Ubuntu 2016.4 操作目的:将 SD 卡分为两个分区:第一分区格式为 FAT32,大小 500M.第二个分区为 ext4,占剩下的所有空间,用来装 Ubuntu 的文件系统 具体操作如下: 一 . 使用 lsblk 或者 fdisk -l 查看系统上的存储设备,找出 SD 卡的设备名,我的系统上 SD 卡的设备名是:/dev/sdb,包含一个分区,分区名是 sdb1 二 . 使用命令 fdisk 开…
/SPI2 读写一个字节 //TxData:要写入的字节 //返回值:读取到的字节 u8 SPI2_ReadWriteByte(u8 TxData) { u16 retry=0;   while((SPI2->SR&1<<1)==0) //等待发送区空 { retry++; if(retry>=0XFFFE)return 0;  //超时退出 }    SPI2->DR=TxData;      //发送一个byte  retry=0; while((SPI2->…
二.MMC/SD卡的模型和工作原理 PIN脚.SD卡总线.SD卡结构.SD卡寄存器.上电过程 SD卡寄存器:  OCR:操作电压寄存器: 只读,32位 第31位: 表示卡上电的状态位   CID: 卡身份识别寄存器 只读 128位 生产厂商.产品ID,生产日期和串号等   CSD: 部分可写 128位 卡的容量.擦出扇区大小.读写最大数据块的大小.读操作的电流.电压等等  CSR: 卡配置寄存器 64位 数据位宽   RCA: 16位 相关的卡地址寄存器,卡识别过程中主控器和卡协商出来的一个地址…
为了使SD卡初始化进入SPI模式,我们需要使用的命令有3个:CMD0,ACMD41,CMD55(使用ACMD类的指令前应先发CMD55,CMD55起到一个切换到ACMD类命令的作用). 为什么在使用CMD0以后不使用CMD1?CMD1是MMC卡使用的指令,虽然本文并不想讨论MMC卡的问题,但是我还是要说:为了实现兼容性,上电或者发送CMD0后,应该首先发送CMD55+ACMD41确认是否有回应,如果有回应则为SD卡,如果等回应超时,则可能是MMC卡,再发CMD1确认. 正确的回应内容应该是:  …
点击打开链接 内容来自以下博客: http://blog.csdn.net/qianjin0703/article/details/5918041 Linux设备驱动子系统第二弹 - SD卡 (有介绍SD卡硬件)http://blog.csdn.net/wavemcu/article/details/7366852     linux2.6内核SD Card Driver详细解析之一http://blog.chinaunix.net/uid-147915-id-3063162.html     …