电脑桌面
添加小米粒文库到电脑桌面
安装后可以在桌面快捷访问

深入理解文件系统VIP免费

深入理解文件系统_第1页
1/34
深入理解文件系统_第2页
2/34
深入理解文件系统_第3页
3/34
深入理解文件系统 深入理解文件系统(一) 一、通过格式化命令-看磁盘文件系统的建立过程 1、添加 format命令,单步调试 所有的底层驱动函数都已经准备好。添加格式化命令 format后,编译下载。 Format命令的执行主要是调用 f_mkfs()函数,下面进行单步调试。 以下主要列出函数的主要执行步骤: res=f_mkfs( 0, 1, 4096 ); //1表示不需要引导扇区。4096是 8个扇区。 进入f_mkfs()函数,这里只列出主要执行步骤: if (disk_ioctl(drv, GET_SECTOR_COUNT, &n_part) != RES_OK || n_part < MIN_SECTOR) return FR_MKFS_ABORTED;这个函数调用后,n_part=0x000F,3400 = 996 352,这是 SD的总块数。 allocsize /= SS(fs); 等于 8/* Number of sectors per cluster */ n_clst = n_part / allocsize; //等于 0x1E680 = 124 544 簇。 if (n_clst >= 0xFFF5) fmt = FS_FAT32; 所以文件系统确定为 FAT32类型。 n_fat = ((n_clst * 4) + 8 + SS(fs) - 1) / SS(fs); 等于 0x3CE = 974,表示 FAT要占据 974个扇区。 n_rsv = 33 - partition; 保留扇区 32个。 n_dir = 0; b_fat = b_part + n_rsv; /* FATs start sector 32扇区*/ b_dir = b_fat + n_fat * N_FATS; /* Directory start sector 0x3EE =1006,由于FAT表个数设为1个,所以目录区=FAT起始+FAT占用扇区数*/ b_data = b_dir + n_dir; /* Data start sector */ 以上三项确定 FAT区域、根目录区、数据区的起始扇区。 disk_ioctl(drv, GET_BLOCK_SIZE, &n) != RES_OK,这个函数调用没有正确返回 可擦出扇区的总数。接下来程序会出错,因此退出,修改 disk_ioctl()函数后,再次分析。把这个函数返回值直接改为32。并且把 FAT表的个数定义为2. N_FATS改为2后,根目录区、数据区的起始扇区的起始扇区变为0x7BC=1980扇区。继续往下执行。 n = (b_data + n - 1) & ~(n - 1); n_fat += (n - b_data) / N_FATS;这两句话对 fat所占扇区数进行了修正,保证擦除时,以32个扇区为一个单位。 n_clst = (n_part - n_rsv - n_fat * N_FATS - n_dir) / allocsize; =0x1E588。 tbl = fs->win; /* Clear buffer */ mem_set(tbl, 0, SS(fs)); 清零文件系统缓冲区。 mem_set(tbl, 0, SS(fs)); ST_DWORD(tbl+BS_jmpBoot, 0x...

1、当您付费下载文档后,您只拥有了使用权限,并不意味着购买了版权,文档只能用于自身使用,不得用于其他商业用途(如 [转卖]进行直接盈利或[编辑后售卖]进行间接盈利)。
2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。
3、如文档内容存在违规,或者侵犯商业秘密、侵犯著作权等,请点击“违规举报”。

碎片内容

深入理解文件系统

确认删除?
VIP
微信客服
  • 扫码咨询
会员Q群
  • 会员专属群点击这里加入QQ群
客服邮箱
回到顶部