以下单位为块,1块可以是512Byte与可以是2048Byte。
64:MBR+备份分区。fatfs可以识别到文件系统的最小分区。
128:除MBR外,实现f_mkfs的最小块,函数内部与128比较,<128返回LEAVE_MKFS(FR_MKFS_ABORTED)
mcu内置flash小,只有
方法一:
使用f_mksf时,如果存储空间小,会依次使用fat12,fat16,fat32,如果存储范围在fat16以内,执意使用fat32,会出错,此时修改:

依然会出错,因为fat32会在1024,还是2048个扇区写东西,我们的扇区只有192,此时f_mkfs会失败。
方法二:
使用fat12,因为win10格式化,只显示fat,又没显示fat12,fat16,还是fat32,所以猜测是自动设置。
但是这样做后还是不行,最后有一个对齐的步骤将扇区大小改错了,调到一个非常大,明显异常的错误。需要屏蔽掉该行:


N_SEC_TRACK = 63
如果此时sz_vol大于63,减去63,也就是MBR与额外区域?难道想表达是除MBR的前64块以后的区域?但是后面是按总区域来算的,所以当sz_vol为64*2=128时出错,因为只有64的额外区域还被当做了MBR,那就无可用的块储存数据了。
验证过,可行。
三、f_mkfs例子:
opt.n_root = 0;
opt.n_fat = 0;
opt.align = 0;
opt.fmt = FM_FAT;
f_result = f_mkfs("0:", &opt, bpData, 2048);
四、附上最后结果


吃掉了20K,呵呵。
192k大小,还不行。