一、通过格式化命令-看磁盘文件系统的建立过程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=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;/*FATsstartsector32扇区*/b_dir=b_fat+n_fat*N_FATS;/*Directorystartsector0x3EE=1006,由于FAT表个数设为1个,所以目录区=FAT起始+FAT占用扇区数*/b_data=b_dir+n_dir;/*Datastartsector*/以上三项确定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+