最近使用FATFS读写NANDFLASH,研究了一下小型文件系统的中的簇和扇区的具体含义,簇是文件系统使用的单位,扇区是物理介质(FLASH)使用的单位。
比如现在使用文件系统FAT32创建一个文件,FAT32初始化为4K一个簇。FLASH的一个扇区为1K。新建的文件大小为1K,那实际文件系统要为他分配1个簇(文件系统需要操作整数倍簇),就是4K,需要读写至少四个扇区。
在FATFS中具体操作如下:簇的大小是根据使用者在格式化是通过函数f_mkfs()定的,文件需要操作的FLASH的扇区大小是根据ffconf.h中的参数定的(FF_MIN_SS和FF_MAX_SS这两个参数),如果需要操作多个硬盘且扇区大小不一样,FF_MIN_SS和FF_MAX_SS这两个参数的区间范围需要包括所有需要的扇区大小。并在函数disk_ioctl()中设置每个硬盘的扇区大小。每一个硬盘的扇区大小FATFS可通过函数disk_ioctl()获得。
扇区大小指的是FLASH操作的最小单位,这个需要根据使用的不同介质具体定。比如SD卡需要查询支持的扇区大小并通过命令设置,nandflash需要根据自己使用的均衡算法定。