SD卡文件系统读写文档格式.docx
《SD卡文件系统读写文档格式.docx》由会员分享,可在线阅读,更多相关《SD卡文件系统读写文档格式.docx(15页珍藏版)》请在冰豆网上搜索。
![SD卡文件系统读写文档格式.docx](https://file1.bdocx.com/fileroot1/2023-1/31/e56c9d3e-5125-4d84-ac1e-6cc7ac598f2e/e56c9d3e-5125-4d84-ac1e-6cc7ac598f2e1.gif)
普通SD,高速SD,SDHC。
v2、SD卡内部结构
SD卡由9线接口控制,数
写
保
护
据线包括:
CMD,CLK,DAT0-
DAT3。
包括6个寄存器
写保护
v3、SD通信模式
一个主机一般情况下可以挂多张SD卡,最大10个堆
叠的卡。
主机访问模式:
SD模式;
SPI模式
v4、SD卡通信
主机和SD卡之间的通信是通过命令和数据流实现
的,如下图所示:
命令发送/数据传输
二、SD卡通信协议
v1、SD卡接口可以支持两种操作模式
1、SD卡模式
2、SPI模式
主机系统可以选择以上其中任一模式,SD卡模式
允许4线的高速数据传输。
SPI模式允许简单通用的
SPI通道接口,这种模式相对于SD模式的不足之处
是丧失了速度。
nSD模式
(1)
SD模式总线连接图
nSD模式
(2)
SD模式针脚定义
SD总线允许1线和4线数据信号设置。
nSPI模式
(1)
SPI模式连接图
nSPI模式
(2)
SPI模式针脚定义
注意:
SPI模式时,数据信号需要在主机端用10-
100K欧的上拉电阻。
v2、SD模式介绍
SD模式下的命令和数据都有一个开始位和结束位。
数据传输格式主要有命令、响应和数据格式。
命令格式
命令:
在CMD上传输的用于启动一个操作的比特流
由主机发往从机,可以是点对点也可以是广播的。
n响应格式
响应格式
响应:
在CMD上传输的用于回答命令的比特流,由从
机发往主机。
n数据格式
数据格式
数据:
是在DAT上传输的比特流,双向传输。
v3、SD模式下的单块读
读SD卡的顺序为:
发送读命令à
接受到响应信号à
读数据
v4、SD模式下的单块写
写SD卡的顺序为:
发送写命令à
接受响应信号à
入数据à
发送CRC
v5、SD模式下的常用命令
n基本命令Class0
n读命令Class2
n写命令Class4
n擦除命令Class5
三、SD卡文件系统的实现
v1、文件系统
文件系统:
文件命名、存储和组织的总体结构。
WindowsXP支持下列三种文件系统:
FAT16、
FAT32和NTFS。
FAT16(文件分配表):
它最大可以管理2GB的分
区,但每个分区最多只能有65536个簇(簇是磁盘
空间的配置单位)。
v2、SD卡存储结构
MBR区
SD卡存储结构包括:
MBR区、
保留扇区
保留扇区、FAT1文件分配表1、
FAT2文件分配表2、FDT文件根目
录区、UserData。
FAT1
FAT2
FDT区
UserData
n保留扇区(BPB表)
名称
占用字节数
内容
说明
BPB_BytesPerSec
BPB_SecPerChus
BPB_RsvdSecCnt
BPB_NumFATs
BPB_RootEntCnt
BPB_TotSec16
BPB_MediaType
BPB_FATSize16
BPB_SecPerTrk
BPB_NumHeads
BPB_HiddSec
2
4
0x0200
0x08
扇区大小为512字节
每簇有8个扇区
有4个保留扇区
有2个FAT表
0x0004
0x02
0x0000
0xF8
有512个登记项
0表示总扇区数大于65536
磁盘介质为硬盘
0x00F2
0x3F
每个FAT表占242个扇区
每个磁道有63个扇区
磁头数为255
0x00FF
0x00000000
0x00078A00
有0个隐藏扇区
BPB_TotSec32
共有494080个扇区
nFAT文件分配表
(1)
文件在磁盘中以簇为单位进行存储,同一个文件的数
据可能不连续地存储在几个簇上,FAT表就是记录文件
簇与簇之间的连接信息,这就是所谓的链式存储。
FAT表中,族号是按照顺序依次排列的。
Cluster2
Cluster3
FAT
Clustern-1
Clustern
nFAT文件分配表
(2)
链式存储:
为每个文件构造链表,文件的每个
族号存储下一个族号的序号,每个族号都固定对
应一个存储块。
5
6
11
20
起始族号
下个
族号
最末
……
FAT区
文件文件文件文件
文件
块N
DATA区
块0
块1
块2
块3
nFAT文件分配表(3)
通用的FAT表及其意义如下:
FAT12代码
0x000
FAT16代码
FAT32代码
所表示的意义
空簇
0x002-0xFEF
0x0002-0xFFEF
0x00000002-
0xFFFFFF0E
文件的下一簇
0xFFF
0xFF7
0xFFFF
0xFFF7
0xFFFFFF0F
0x00000001
文件的最后一簇
坏簇
nFDT表
FDT表(也称为文件根目录区),主要记录分区中目
录和文件的名称、属性、起始簇号等信息。
偏移量
字节数
意义
DIR_Name1
8
文件的名称,首字节为0x00表
示未使用
DIR_Name2
DIR_Attr
扩展名
12
22
24
26
28
属性[1]
DIR_Reserved
DIR_WrtTime
DIR_WrtDate
DIR_FstCluLO
DIR_FileSize
10
建立时间,校验等信息
最后写入时间
最后写入日期
起始簇的低16位
文件的大小,目录的此项为0
v3、文件操作
起始扇区号=隐藏扇区数+保留扇区数+2*(FAT表占
用扇区数)+根目录区所占扇区数+(起始簇号-2)*每
簇的扇区数
读文件:
FAT表à
起始族号à
起始扇区号à
最后
一个族号?
à
读下一个族号à
扇区号à
……最后
一个族号
v4、写文件/删除文件
写文件:
确定FDT登记项(文件名及信息)à
计
算所需要的族数à
写FDT表à
写FAT1表à
写数据
删除文件:
将FDT表中的数据置为0à
FAT1中的数据
置为0
四、DE2实例
v1、DE2试验平台
v2、DE2硬件结构
适合模式:
1线SD模式、SPI模式。
v3、DE2读/写文件
文件系统采用FAT16,文件名支持8.3格式。
写文件
读文件
五、总结
nSD卡其容量大、体积小等特点,为手机、PDA、电子图
书等数码产品提供了圆满的嵌入式解决方案!