此帖出自嵌入式系统论坛
最新回复
公式之所以在分子上加上(BPB_BytsPerSec–1),是为了保证根目录区没有填满整数个扇区时仍然适用。其实也可以将公式变成下面这样演算:
RootDirSectors = (BPB_RootEntCnt*32)/BPB_BytsPerSec
= RootDirSectors'(商) + 余数/BPB_BytsPerSec
其中RootDirSectors'就是(BPB_RootEntCnt*32)/BPB_BytsPerSec得到的整数部分,“余数/BPB_BytsPerSec”就是小数部分。
所以计算RootDirSectors的值就需要做如下判断:
(1)当余数=0时,RootDirSectors = RootDirSectors'
(2)当余数!=0时,RootDirSectors = RootDirSectors' + 1
所以文中所说的白皮书中的公式,我们可以根据我在前面提到的演算过程拆分成这样:
RootDirSectors =((BPB_RootEntCnt*32)+(BPB_BytsPerSec–1))/BPB_BytsPerSec
= RootDirSectors' + 余数/BPB_BytsPerSec + (BPB_BytsPerSec–1)/BPB_BytsPerSec
= RootDirSectors' + (余数 + (BPB_BytsPerSec–1))/BPB_BytsPerSec
这样无论余数是否为0,我们只需要对这个公式计算结果取整做为RootDirSectors,结果都和(1)、(2)的判断所得到的结果一样。
所以白皮书中的公式简化了判断,方便了计算。
详情
回复
发表于 2009-12-6 17:03
| ||
|
||
| |
|
|
| |
|
|
此帖出自嵌入式系统论坛
| ||
|
||
| |
|
|
| |
|
|
| |
|
|
| |
|
|
| |
|
|
此帖出自嵌入式系统论坛
| ||
|
||
EEWorld Datasheet 技术支持