深入浅出SD卡
从裸机驱动到LINUX源代码分析SD卡的应用。
xgbing
专注于嵌入式方向的软硬件设计与开发(ASM\C\C++,RTOS,Linux,android,以太网\嵌入式网络协议栈,蓝牙,WIFI,文件系统/嵌入式存储,显示\音频,单片机\DSP\ARM\Cortex,电路设计\PCB布板\硬件驱动\数字逻辑CPLD,FPGA\niosII),目前从事VirtualBox\qemu\KVM虚拟化研究工作。
展开
-
SD卡与fatfs文件系统(5)-在fatfs中使用多个SD卡分区
fatfs是支持多个分区的,但当SD读卡器插入到windows中时却只能认出第1个分区,windows认为可移动闪存设备只有一个分区(注意,移动硬盘除外)。正好可以利用这个特性,在SD卡中使用隐藏分区。例如将SD分为两个分区,第1个分区开放给用户,第2个分区保存一些内部数据。 要在fatfs中使用两个分区,需要配置:#define _DRIVES 2/* Number of lo原创 2014-11-26 22:08:28 · 7153 阅读 · 3 评论 -
SD卡与fatfs文件系统(4)
FatFs的初始化和加载的操作是在函数auto_mount中进行的。staticFRESULT auto_mount ( /* FR_OK(0): successful, !=0: any error occured */ const char **path, /* Pointer to pointer to the path name (drive number) */ FATFS原创 2014-03-27 23:49:29 · 5068 阅读 · 0 评论 -
SD卡与fatfs文件系统(3)
根目录是在文件格式化时就被创建,它在目录项位置在FAT区之后,每个目录表项占32个字节。在FAT区,第0个和第1个项被保留,从第2项开始记录根目录的目录项。在分区创建格式化后,第2项的内容仅仅是表示簇链的结束,它没有任何内容。 子目录或子目录下的目录创建时为文件或子目录分配的第一个簇的簇号,记录在它的目录项中,其他后续簇则由“FAT 表”中的“FAT表链”进行跟踪。子目录是在存储过程中根原创 2014-03-27 23:27:04 · 3147 阅读 · 0 评论 -
SD卡与fatfs文件系统(2)
SD卡FAT分区内容:(1)主引导记录MBR和分区表MBR和分区表占512个字节(占用第1个扇区的空间):分区表的内容:(2)分区引导记录DBR 中记录着文件系统的起始位置、大小、每簇扇区数、FAT表个数及大小等相关信息。分区启动扇区的内容是FDC或FDC扩展描述符:(3)文件分配表 文件系统分配磁盘空间按簇来分配。因此,文件占原创 2014-03-27 19:45:46 · 4513 阅读 · 0 评论 -
SD卡与fatfs文件系统(1)
SD的优势之一是它的便携性,它可以自由插拔,可以在嵌入式设备和PC机之间交换数据。如果使用FAT(File Allocation Table)文件系统,它便可以方便在安装windows的PC和嵌入式设备之间交换数据。一个完整的FAT文件系统代码量非常庞大,不适合资源较少的嵌入式系统,于是就需要一个微型的FAT文件系统,FatFs就是基于这样的目的而开发的。 FatFS是一个专为小型嵌入式原创 2014-03-27 00:16:57 · 17591 阅读 · 0 评论 -
SD卡的数据传输
(1)完成SD识别模式后,进入旁路模式;(2)发送CMD7选择一个SD卡进入数据传输模式;(3)发送读或写CMD进入读或写模式;(4)数据读写完成可再次进入旁路模式;(A)读模式(B)写模式原创 2014-03-26 19:12:44 · 3151 阅读 · 0 评论 -
SD的总线拓扑结构
(1)MMC的总线连接(2)SD卡的总线连接(3)SD卡和MMC卡的混合连接原创 2014-03-24 00:35:33 · 1845 阅读 · 0 评论 -
SD卡中重要的几个寄存器
它们是:原创 2014-03-24 00:15:12 · 2967 阅读 · 0 评论 -
SD卡命令的回应
SD卡不同的命令回应的数据长度可能不一致,这要看是什么命令。它的回应有以下几种类型:(1)R1第1位是开始标志,第2位是传输方向,第45:40位是命令命令的序号,第39:8位是重要的SD卡状态位,第7:1位是CRC,第0位是结束位。card status是SD卡的状态标志,很多命令都返回这个标志,它们返回的状态如下表所示:(2)R1bR1b的字段和R1一样。原创 2014-03-24 00:07:09 · 5966 阅读 · 1 评论 -
SD卡中的ACMD命令(the application specific commands)
ACMD命令是SD卡不同于MMC卡的部分。常用的有两个命令ACMD41和ACMD6:(1)ACMD41Asks to all cards to send their operations conditions.命令要求SD卡返回它的OCR(Operating Conditions Register)寄存器的内容。OCR寄存器记录的是支持的SD卡电压范围。OCR的第3原创 2014-03-23 23:30:53 · 4112 阅读 · 0 评论 -
SD卡中的命令CMD
SD卡中的命令是SD控制器和SD卡之间的桥梁,它封装了SD卡的实现细节,不影响SD卡中FLASH的读写变更。命令的长度是48位,它的字段如图:SD校准定义的CMD如下:原创 2014-03-23 23:18:24 · 8413 阅读 · 0 评论 -
at91_sdcard源码分析(5)-中断处理
中断处理的执行代码在MCI_Handler函数中://------------------------------------------------------------------------------/// Processes pending events on the given MCI driver./// \param pMci Pointer to a MCI driv原创 2014-03-23 22:49:52 · 1543 阅读 · 0 评论 -
at91_sdcard源码分析(4)-命令的发送
SendCommand函数发送一个命令到SD卡://------------------------------------------------------------------------------/// Sends the current SD card driver command to the card./// Returns 0 if successful; Otherw原创 2014-03-23 22:46:53 · 1557 阅读 · 1 评论 -
at91_sdcard源码分析(3)
//------------------------------------------------------------------------------/// Run the SDcard SD Mode initialization sequence. This function runs the 根据SD协议初始化SD卡(或MMC卡),此函数完成后进入数据传输模式/// i原创 2014-03-17 23:27:02 · 1722 阅读 · 0 评论 -
SD卡的初始化操作
SD卡的工作模式有以下几种:GO_IDLE_STATE(CMD0)是软件复位命令。InactiveState状态时不受此命令影响。其它状态下复位SD卡。复位后SD卡处于idle state状态下。SD卡在收到CMD0(软件复位)命令后,CMD线处于input状态,等待主机发送命令。此时,SD卡的地址RCA(Relative card address)默认为0,并且工作在最小原创 2014-03-17 22:38:00 · 8780 阅读 · 1 评论 -
SD总线访问模式
SD卡是以命令、回应和数据流进行通讯(1)命令命令的长度是48位,命令以‘0’开始,第2位为1表示是主机发往SD卡的命令,最后以CRC和结束位'1'结尾。(2)回应回应的长度是48位或136位。它和命令一样,以‘0’开始以‘1’结尾。第2位为0表示是从SD卡到主机。(3)数据流传送数据流的单位是BLOCK。读取操作:写入操作:原创 2014-03-16 12:56:26 · 1674 阅读 · 0 评论 -
at91_sdcard源码分析(2)
初始化操作。//------------------------------------------------------------------------------/// Initializes a MCI driver instance and the underlying peripheral./// \param pMci Pointer to a MCI driver i原创 2014-03-11 22:37:36 · 1184 阅读 · 0 评论 -
at91_sdcard源码分析(1)
程序结构中有mci.h/c和sdmmc_mci.h,这两个文件操作类型C++中父类和子类的操作,由于sdmmc_mci属于mci,所在前者是父类,后者是子类。typedef struct { /// Pointer to a MCI peripheral. AT91S_MCI *pMciHw; /// MCI peripheral identifier. unsig原创 2014-03-11 18:37:32 · 1399 阅读 · 0 评论 -
sd卡开始篇-介绍
SD卡全称是(Secure Digital Memory Card)。(1)外观SD卡的技术建是基于MultiMedia卡(MMC)格式上发展而来,大小和MMC差不多,SD卡与MMC卡保持着向上兼容,也就是说,MMC可以被新的SD设备存取,兼容性则取决于应用软件,但SD卡却不可以被MMC设备存取。(SD卡外型采用了与MMC厚度一样的导轨式设计,以使SD设备可以适合MMC)。设有SD原创 2014-03-11 18:26:26 · 7398 阅读 · 3 评论