wwyhw_sir
驱动牛犊
驱动牛犊
  • 注册日期2004-08-24
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1748回复:13

fat16问题

楼主#
更多 发布于:2005-04-27 16:31
我用的flash是kf96408,它有1024个block,我定义4个block为一个簇。一个page为一个扇区,这样的话1个簇为64个扇区。
在bpb中,对BPB_RootEntCnt的值,文档建议为512。那么我在设定BPB_FATSz16,也就是说我的每个分区表所占的扇区数,我从别人的文档看到对目录区的描述
templa
驱动牛犊
驱动牛犊
  • 注册日期2005-01-04
  • 最后登录2013-03-15
  • 粉丝0
  • 关注0
  • 积分55分
  • 威望8点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2005-04-27 17:04
如果不考虑你的保留区,FLASH作为纯粹是数据区的话:
你的总簇数是1024/4=256个,FAT16的表项大小是2字节,所以你的FAT总共占512字节,如果扇区大小是512,也就是1个扇区,加上备份FAT总共2扇区啊!
wwyhw_sir
驱动牛犊
驱动牛犊
  • 注册日期2004-08-24
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2005-04-27 20:49
对阿,我也是这么分的,,可我看到北航frank写的一片报告。上说“对目录区的描述
wwyhw_sir
驱动牛犊
驱动牛犊
  • 注册日期2004-08-24
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2005-04-27 20:58
是不是要改动目录项数啊?也就是说;
(64-1-2)*16=976,那这样的话,512岂不是不对了?疑惑啊,谁给解释一下啊!
lyy1981
驱动牛犊
驱动牛犊
  • 注册日期2005-04-02
  • 最后登录2010-11-01
  • 粉丝0
  • 关注0
  • 积分73分
  • 威望9点
  • 贡献值0点
  • 好评度6点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2005-04-27 22:35
BPB_RootEntCnt  指的是目录所占扇区数,不是目录个数吧
lyy1981
驱动牛犊
驱动牛犊
  • 注册日期2005-04-02
  • 最后登录2010-11-01
  • 粉丝0
  • 关注0
  • 积分73分
  • 威望9点
  • 贡献值0点
  • 好评度6点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2005-04-27 22:37
fat16分区表描述的是数据区而不包括目录区
templa
驱动牛犊
驱动牛犊
  • 注册日期2005-01-04
  • 最后登录2013-03-15
  • 粉丝0
  • 关注0
  • 积分55分
  • 威望8点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2005-04-28 08:39
wwyhw_sir,我认为你把每簇的扇区数设得太大了,总共8M(我没用过该芯片),如果扣除了保留区(用不掉64扇区的),剩下255簇,且作文件存放的浪费也太大了,把BPB_SecPerClus改小了试试!
wwyhw_sir
驱动牛犊
驱动牛犊
  • 注册日期2004-08-24
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2005-04-28 08:39
BPB_RootEntCnt 指的是目录所占扇区数,不是目录个数吧????
不是吧,文档中说应该是根目录的项数。对于fat16卷应使用512。
谁有做好的,flash的格式化程序啊。给个例子,让我参考一下。谢谢了
templa
驱动牛犊
驱动牛犊
  • 注册日期2005-01-04
  • 最后登录2013-03-15
  • 粉丝0
  • 关注0
  • 积分55分
  • 威望8点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2005-04-28 09:00
wwyhw_sir是对的,BPB_RootEntCnt确实是目录的项数,每项32字节,建议的512实际就是占16扇区(如果BPB_BytesPerSec=512),实际我所见到的64M优盘的BPB_SecPerClus也就是=2,另FAT的大小好象必须占尽扇区,所以看来一定要缩小BPB_SecPerClus了!
wwyhw_sir
驱动牛犊
驱动牛犊
  • 注册日期2004-08-24
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
9楼#
发布于:2005-04-28 14:55
templa,谢谢你的回复,我有点明白了。
wwyhw_sir
驱动牛犊
驱动牛犊
  • 注册日期2004-08-24
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
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。好像不打对应啊?疑惑啊????。
templa
驱动牛犊
驱动牛犊
  • 注册日期2005-01-04
  • 最后登录2013-03-15
  • 粉丝0
  • 关注0
  • 积分55分
  • 威望8点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
11楼#
发布于:2005-04-30 16:15
选择512是为了得到最好的兼容性,但我想好象没有要求说首簇一定要占满,剩下部分空下也可以吧。
NewTech
驱动大牛
驱动大牛
  • 注册日期2002-10-02
  • 最后登录2010-03-27
  • 粉丝0
  • 关注0
  • 积分16分
  • 威望263点
  • 贡献值0点
  • 好评度86点
  • 原创分0分
  • 专家分0分
12楼#
发布于:2005-05-03 02:09
以上各位的讨论存在的一点问题,如果在winxp下就会有问题!
wwyhw_sir
驱动牛犊
驱动牛犊
  • 注册日期2004-08-24
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
13楼#
发布于:2005-05-08 09:58
NewTech,问一下,会存在什么问题?我正是在winxp下开发。
游客

返回顶部