FAT32文件层,这个文件层体系不是十分的复杂。但为了寻找一个根目录的文件,得几经周折,所写的程序也非常的庞大。
首先,我们为了知道我们的SD卡的基本信息,这些信息一般被存储在BPB表中,而BPB表位于DBR中,也就是逻辑扇区0号。但逻辑0扇区并不在0号扇区之中,使用WinHex,看0扇区,结果如下所示。
0x0190之前的区域全是0,省略掉了。从图中看出,这必定不是DBR,而是主引导扇。图中红圈的地方,标示出了DBR所在的位置,红圈的位置是MBR的0x01C6~0x01C9。而从WinHex能看出,我的SD卡的DBR是在地址0x5600开始的。而红圈的数据为小端模式的,一般来说,单片机的数据存储格式为大端,所以需要一个转化。而0x2B000000这个小端数据转化为大端之后为0x2B(我个人认为小端就是把高字节存在低位,低字节存在高位)。而之前读取SD卡的CSD寄存器可知,一个扇区是512byte的。所以经过简单的算式便可算出DBR的位置。
0x002B * 0x0200 = 0x5600。
那么,我们就可以寻找到DBR了,从WinHe