loading...
关于FATFS
发表于:2024-08-02 |
字数统计: 373 | 阅读时长: 1分钟 | 阅读量:

关于FATFS

扇区数量

1
2
3
4
5
6
DRESULT disk_read (
BYTE pdrv, /* Physical drive nmuber to identify the drive */
BYTE *buff, /* Data buffer to store read data */
LBA_t sector, /* Start sector in LBA */
UINT count /* Number of sectors to read */
)

在disk_read函数里,LBA_t sector代表的是63个LBA的初始化表,数量也为63

其中LBA 0是512B的大小,是存储信息
其中LBA 1-62是保留区,里面的内容无效
第sector 63则是开始代码

在disk_ioctl函数里,设置的扇区数量不能低于(128 + 63)个,否则f_mkfs将会失败

在不同的fatfs中,最小的扇区数量也不同
如fatfs0.15中不能低于(128 + 63)个,而fatfs0.11中不能低于128个扇区

f_mkfs()格式化扇区

FATFS无法选择格式化的类型,只能由卷的参数决定

根据Microsoft发布的FAT规范,除exFAT之外的FAT子类型FAT12/FAT16/FAT32仅由卷上的集群数量决定,而不是其他。
因此,所创建卷的FAT子类型取决于卷大小和集群大小。
如果由参数指定的FAT类型和簇大小的组合对卷大小无效,则该函数将通过FR_MKFS_ABORTED失败。

在fatfs0.15中当低于(128+63)个扇区时,f_mkfs会返回14
在fatfs0.11中当低于128个扇区时,f_mkfs会返回-1
两个版本的fatfs中stm32f103zet6初始化均为FAT12

如何查看初始化为什么类型

进入f_mkfs()内部
使用CTRL + F搜寻下面的代码赋值式,再串口输出可以看到初始化为什么状态

1
sys =
上一篇:
STM32的启动汇编解析
下一篇:
多目录下CMakeLists写法