阅读:1748回复:13
fat16问题
我用的flash是kf96408,它有1024个block,我定义4个block为一个簇。一个page为一个扇区,这样的话1个簇为64个扇区。
在bpb中,对BPB_RootEntCnt的值,文档建议为512。那么我在设定BPB_FATSz16,也就是说我的每个分区表所占的扇区数,我从别人的文档看到对目录区的描述 |
|
沙发#
发布于:2005-04-27 17:04
如果不考虑你的保留区,FLASH作为纯粹是数据区的话:
你的总簇数是1024/4=256个,FAT16的表项大小是2字节,所以你的FAT总共占512字节,如果扇区大小是512,也就是1个扇区,加上备份FAT总共2扇区啊! |
|
板凳#
发布于:2005-04-27 20:49
对阿,我也是这么分的,,可我看到北航frank写的一片报告。上说“对目录区的描述
|
|
地板#
发布于:2005-04-27 20:58
是不是要改动目录项数啊?也就是说;
(64-1-2)*16=976,那这样的话,512岂不是不对了?疑惑啊,谁给解释一下啊! |
|
地下室#
发布于:2005-04-27 22:35
BPB_RootEntCnt 指的是目录所占扇区数,不是目录个数吧
|
|
5楼#
发布于:2005-04-27 22:37
fat16分区表描述的是数据区而不包括目录区
|
|
6楼#
发布于:2005-04-28 08:39
wwyhw_sir,我认为你把每簇的扇区数设得太大了,总共8M(我没用过该芯片),如果扣除了保留区(用不掉64扇区的),剩下255簇,且作文件存放的浪费也太大了,把BPB_SecPerClus改小了试试!
|
|
7楼#
发布于:2005-04-28 08:39
BPB_RootEntCnt 指的是目录所占扇区数,不是目录个数吧????
不是吧,文档中说应该是根目录的项数。对于fat16卷应使用512。 谁有做好的,flash的格式化程序啊。给个例子,让我参考一下。谢谢了 |
|
8楼#
发布于:2005-04-28 09:00
wwyhw_sir是对的,BPB_RootEntCnt确实是目录的项数,每项32字节,建议的512实际就是占16扇区(如果BPB_BytesPerSec=512),实际我所见到的64M优盘的BPB_SecPerClus也就是=2,另FAT的大小好象必须占尽扇区,所以看来一定要缩小BPB_SecPerClus了!
|
|
9楼#
发布于:2005-04-28 14:55
templa,谢谢你的回复,我有点明白了。
|
|
10楼#
发布于:2005-04-28 15:16
还有一个问题不大明白,北航frank写的一片报告。他用的是k9f2808,有1024个block,1block=32page,1page=512BYTE,他定义2block=1cluster.因此总的cluster=1024/2=516,因此他定义的fat占用的空间为516*2=1024=2page。mbr占用1page,fat总共占用4page。可他在目录区的定义为(5-57)page,(在bpb中调整目录项数,使其刚好占尽本簇).一共为53page。可是根目录的项数。对于fat16卷应使用512/16=32page。好像不打对应啊?疑惑啊????。
|
|
11楼#
发布于:2005-04-30 16:15
选择512是为了得到最好的兼容性,但我想好象没有要求说首簇一定要占满,剩下部分空下也可以吧。
|
|
12楼#
发布于:2005-05-03 02:09
以上各位的讨论存在的一点问题,如果在winxp下就会有问题!
|
|
13楼#
发布于:2005-05-08 09:58
NewTech,问一下,会存在什么问题?我正是在winxp下开发。
|
|