1,原子哥和各位武林高手打扰了,最近在学习你的FAT32文件系统,有史以来的难啊,好多句子着实读不懂,望原子哥解惑一下,感激不尽,我简单的解释一下我对初始化的理解“是将FAT32的文件格式拷贝到SD卡里面”,对吗?
初始化?SD卡的初始化是将SD卡切换为SPI模式.而FAT的初始化,则是得到FAT的一些必要信息.比如文件系统的类型(FAT12/FAT16/FAT32等),根目录的地址,fat表等.
拷贝那是操作上的事情了.
2,bootsector710 *bs = 0; 这个定义是不是定义一个指向数据结构bootsector710的结构体指针*bs?
就是定义一个bootsector710类型的指针.
3,bs = (bootsector710 *)fat_buffer; 这个语句的意思是结构体bootsector710 的指针bs指向数据缓存区?可不可以直接写为bs=fat_buffer?
这句话的意思是强制将fat_buffer的数据按顺序转换为bootsector710结构体数据,然后bs指向这些数据,相当于一次赋值给了bs的各成员.
不能写成bs=fat_buffer.
4,pr = (partrecord *)((partsector *)fat_buffer)->psPart;//first partition这个句子怎么解释呢?
将fat_buffer的内容先强制转换为partsector类型的数据,然后将partsector ->psPart的数据强制转换为partrecord 类型的数据,然后pr指针指向它.
5,if(bs->bsJump[0]!=0xE9 && bs->bsJump[0]!=0xEB)return 5;//对付没有bootsect的sd卡 //dead with the card which has no bootsect
这个句子我觉得是 if(bs->bsJump[0]=0xE9 && bs->bsJump[0]=0xEB)return 5;是判断当前扇区是不是DBR所在的分区,如果是,当前扇区为DBR分区,如果不是,当前扇区为MBR分区,对吗?
这个看资料就可以了.
6,bpb = (bpb710 *)bs->bsBPB;这个句子怎么解释呢?
参考第4个问题.
|