FATFS文件系统问题

mygame0302 2013-08-06 10:27:08
在看fatfs文件系统的f_mkfs格式化函数时,对它的一些算法不解:

FAT16的情况下:
// 计算fat表占字节数 (n_clst * 2) + 4;
n_fat = (fmt == FS_FAT12) ? (n_clst * 3 + 1) / 2 + 3 : (n_clst * 2) + 4;
n_fat = (n_fat + SS(fs) - 1) / SS(fs); // 应该是计算fat表所占扇区数
n_rsv = 1; // 保留扇区,fat16固定为1
n_dir = (DWORD)N_ROOTDIR * SZ_DIR / SS(fs); // 计算根目录所占扇区数

b_fat = b_vol + n_rsv; /* FAT area start sector */
b_dir = b_fat + n_fat * N_FATS; /* Directory area start sector */
b_data = b_dir + n_dir; /* Data area start sector */

但是fat白皮书中根目录所占扇区数是这样的公式:
RootDirSectors = ((BPB_RootEntCnt * 32) + (BPB_BytsPerSec – 1)) / BPB_BytsPerSec;

不明白的地方:
1、n_fat = (n_fat + SS(fs) - 1) / SS(fs);
计算fat表所占扇区数为什么不是n_fat = n_fat / SS(fs);

2、n_dir = (DWORD)N_ROOTDIR * SZ_DIR / SS(fs);
计算根目录所占扇区数为什么不是 n_dir = ((DWORD)N_ROOTDIR * SZ_DIR + SS(fs) - 1) / SS(fs);
...全文
118 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

27,375

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 单片机/工控
社区管理员
  • 单片机/工控社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧