
C8051F020对CF卡向指定扇区写数据的命令是30H或31H,其操作亦与读数据相似,只不过在写入数据后要等到CF卡中数据稳定并进入空闲状态才能结束这一过程。
在CF卡读写时,分别向第2、3、4、5、6个寄存器写入CF卡需要访问的扇区位置,其写入模式有2种:即CHS(Cylinder/Head/Sector)模式和LBA(Logical Block Address)模式。通过设置第6个寄存器的第6位LBA确定其模式:即如果LBA=0,则为CHS模式;如果LBA=I,则为LBA模式。
由CHS模式到LBA模式的转换如下:

其中LBA是逻辑块地址,Cn是柱面号,HpC是每个柱面的磁头数,Hn是磁头数,Sn是扇区号,SpH是每个磁头(簇)的扇区数。
&n
bsp; 3 CF卡的文件存储
FAT(File Allocation Table)文件系统产生于20世纪70年代末到80年代初,是微软的MS-DOS操作系统所支持的文件系统。目前FAT文件系统有3种类型:FATl2、FATl6和FAT32。它们的不同是在磁盘上实际的FAT结构中每个记录(Entry)所占的位数不同。FATl2占12位(1.5字节),FATl6占16位(2字节),FAT32占32位(4字节)。每一个记录中的数据都按照低字节在前、高字节在后排列。
在CF卡格式化时,首先要了解CF卡的容量等一系列信息。通过对CF卡写入命令ECH就可以读出1个扇区,其中包含了该CF卡的一些参数的信息,如容量、默认的柱面数、默认的磁头数、每个扇区的字节数、每个磁道的扇区数和CF卡上总的扇区数等。这为格式化CF卡提供了重要的数据。
在格式化后的CF卡中,FAT文件系统由如下4部分组成:
0区:保留区(引导区)。
1区:FAT区。
2区:根目录区(FAT32中存在的是浮动的FDT表)。
3区:文件、目录与数据区(下面简称数据区)。
引导区中包含了整个FAT文件系统的重要信息,即BPB(BIOS Parameter Block)。下面为BPB的几个重要数据结构:

在FAT32格式下,BPB﹒RootEntCnt为'0',因此RootDirSec总是为'0'。
如果BPB.FATSzl6不为'0',就可以根据下面公式计算数据区的第一个扇区地址。
FirstDataSec="BPB".ResvdSecCnt+(BPB.NumFATs*BPB.FATSzl6)+RootDirSec (4)
因此数据区所占用的扇区数:
DataSec="BPB".TotSecl6-FirstDataSec (5)
根目录的第一个扇区地址(在FATl2、FATl6下):
FirstRootDirSec="BPB".ResvdSecCnt+(BPB.NumFATs*BPB.FATSzl6)
上一页 [1] [2] [3] 下一页