2.2 SD1.x与SD2.0标准的识别
由于大容量SDHC的出现,SD1.x满足不了SDHC的容量要求,标准已经升级为SD2.0。但也因此出现了许多电子设备无法驱动大容量SD卡的情况,如何识别SD1.x与SD2.0就显得尤为重要。SD2.0的SPI模式初始化流程如图3所示。
判断是否为SD2.0卡,CMD8(SD2.0新增的命令)是关键。若卡是SD2.0,则发送CMD8将会返回有效响应;若是SD1.x,则返回非法响应,这样就可以识别SD卡的类型。
SD1.x与SD2.0的最大不同在于命令地址的表示。SD1.x的地址单位是字节,而SD2.0的地址单位是扇区,地址仍然采用32位4个字节来表示。因此在读写操作时应该根据不同的卡对地址进行相应的处理,若是SD1.x则写入字节地址,若为SD2.0则写入扇区地址。
3 FAT32文件系统
目前有3种FAT文件系统:FAT12、FAT16和FAT32。它们的区别在于文件分配表(File Allocation Table,FAT)中每一表项的大小(也就是所占的位数):FAT12为12位,FATl6为16位,FAT32为32位。本设计选择FAT32文件系统。
由于文件存储在硬盘上占用的存储器空间以簇为最小单位,FAT32文件系统不适合管理容量低于512 MB的存储器。簇如果太大,存储小文件会浪费大量的存储空间;如果太小,FAT表会变大,不方便管理。综合考虑,FAT32每簇大小为4 KB。
3.1FAT32文件系统结构
FAT32文件系统可以分为以下几部分;保留区(reserved region),存放FAT文件系统的重要参数和引导程序;FAT区(FAT region),记录簇(cluster)的使用情况;根目录区(root directory region),记录根目录信息,FAT32文件系统舍弃了这个区,根目录区可以指定为任意一个簇;文件目录数据区(file and directory data region),是各种文件数据实际存放的区域。
保留区中的BPB表从扇区0偏移11个字节开始,共占25字节。表2是格式化为FAT32文件系统的8 GBSD卡首扇区中读出的BPB参数内容。
在保留区之后是FAT区,存有文件分配表。一般文件系统中有2份文件分配表FAT1和FAT2,每份FAT表占用空间的大小可从BPB表中查得。
上一页 [1] [2] [3]