sd卡读写开发文档

sd卡读写开发文档

ID:9282595

大小:813.50 KB

页数:9页

时间:2018-04-26

sd卡读写开发文档_第1页
sd卡读写开发文档_第2页
sd卡读写开发文档_第3页
sd卡读写开发文档_第4页
sd卡读写开发文档_第5页
资源描述:

《sd卡读写开发文档》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、SD卡读写关键是对SD的初始化、块扇区的读写、以及SD卡文件结构的掌握,初始化SD首先发送0x400x000x000x000x000x59应答0x01进入空闲模式在发送0x410x000x000x000x000x59应答0x00激活SD卡使用WinHex分析SD卡可以得到第一数据区即根目录区,在第520区,每扇区512字节,等等,分析后得结果用于,读数据的验证。本SD卡为1G的金士顿卡,扇区宽度为512字节,根据WinHex和读SD卡的结论得出解读,可以得出表一:读本SD卡的第0块物理扇区512字节,即常

2、说的引导扇区。MBR(主引导的区)的长度为446字节(0x00~0x1BD),以后每16个字节代表一个分区,共四个,该卡仅一个分区所以后面三个都是空的,这16个就是分区表:地址长度内容详解1BE100激活则为00,否则801BF101分区起始的磁头号1C020100起始扇区和柱面号,低6位时扇区号,?????1C2106分区类型,0B代表FAT32,06代表FAT161C3129分区结束的磁头号1C427FE0分区结束的扇区和柱面号1C6400000020地址20由该地址读到内容就是逻辑地址的0扇区1CA

3、4003C7BE0分区的总扇区数。493979由上述分析得出本SD卡的逻辑地址的0扇区应该在隐藏扇区中,块的扇区地址为0x00000020,读扇区得到的内容:如下图所示:具体分析如下图所示:名称偏移长度内容详细BS_jmpBoot03BUFF[0..2]一般为EBXX90或E9xxxxOEMName38BUFF[3..A]仅一个名字。无所谓每扇区字节数0B2BUFF[B..C]即0x0200=512即每个扇区有512个字节每簇的扇区数0D1BUFF[D]即每个簇有(64个)0x40扇区,也就是每个簇有64

4、*512=32k保留扇区数0E20400从第一扇区开始被保留的扇区数为04FAT表份数10102一般都是两个FAT表。两者宽度一样根目录项数1120002一般FAT16为512即0x0200总扇区数TotSec161320000当容量大于1M时,总扇区数就放在TotSec32处,此处放置0介质种类151F8表示固定存储介质,F0表示移动存储介质FATSz16162F2000X00F2表示一个分区占242个扇区共两分区SecPerTrk1823F00表示每磁道的扇区数。这里不是硬盘,无意义磁头数1A2无意义

5、HiddSec1C40x00000020FAT表前隐藏的扇区数32TotSec322040x003C7BE0该卡的总扇区数,也即该卡的最大容量为0x003C7BE0*512=1981936MDrvNum24100一般硬盘为80软盘为00保留25100共NT使用,此处必须为0BootSig26129扩展引导标记,表示后面的域可用VolID274内容随便,仅一IDVolLab2B11卷标11个字节,此处NOMAMEFilesysType368即文件类型,此处为FAT16可执行代码3E448…….引导分区字节…

6、..1分区头1BE-无1BF-1C0-1C2-1C3-1C4-1C6-1CA-2分区1CE-结构同上签名1FE255AA结束标志分析得出主目录所在扇区地址:主引导区数(1个)+保留扇区数(0x04个)+隐藏数(0x20个)+2个FAT表宽度(0Xf2*2)=521,即从第521个扇区(扇区地址为520)开始的32个扇区中存放根目录。读本SD卡的根目录的第一个扇区得出如图数据:本卡卷标名为UJNX,可见第一个32字节的文件为该根目录,但是他以文件夹的形式呈现,并且大小Size为0,在大多数正常情况下我们可以

7、认为无后缀名的,大小为零的文件为文件夹(我知道这个并不科学,谁有好的建议?)。可以看出32个扇区的根目录最多可以存储512个目录文件。文件就简单了,直接根据FAT表簇的地址读数据就是了。读FAT表:在FAT表中每两个字节的数据对应唯一的一个簇地址,每个簇有64个扇区,例如在第一个(地址为0x24)FAT表的第一个扇区中的数据如下:读文件1、根据32字节的目录获取文件名、类型、大小、起始簇的地址2、根据簇的地址高位和低位计算出簇的位置,并与对应的计算出该簇的起始扇区地址簇的起始扇区地址=根目录起始扇区+目录

8、扇区宽度+(簇地址-2)*每个簇的扇区宽度。3、读下一个簇的地址,根据上个簇对应的FAT表中的两个字节,计算出下个簇所在的簇地址,然后执行1步骤再读出64扇区个连续的数据,直到簇的地址为0xFFFF为止表示文件结束。读文件夹1、根据目录获取文件名,并跟踪簇地址,到所在第一个扇区,读该扇区下图视可见该扇区的内容是一张目录表,2E标示目录的级别,其簇地址应该代表上级目录地址,根据每32字节为一文件标示,E5标示已删除的文件,同样读

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。