一、使用fatfs的f_mkfs最小分区数是191原因:
在挂载ram_disk时参考的文章有提到:
“然后是GET_SECTOR_COUNT 用于f_mkfs格式化时获取可用的sector的数量,32bit-LBA的情况下至少为191”
自己也实际试过确实要不少于191,网上也没找到相关说明。debug跟踪到f_mkfs文件中
- 我定义的190个扇区每个扇区512个字节
- 进入f_mkfs代码中
这个函数会得到我设置的扇区数即190保存数sz_vol中
在这里sz_vol会被减去N_SEC_TRCK,N_SEC_TRCK宏定义为63,这个63组成如下
最小的文件系统结构:
- 引导扇区:1个扇区
- FAT表:假设需要128个扇区(具体数量取决于存储设备大小和FAT类型)
- 根目录区:32个扇区
- 其他必要的结构和保留扇区:30个扇区
- 总计:1 + 128 + 32 + 30 = 191个扇区
190-63 = 127 ;小于最少128个卷的大小,返回FR_MKFS_ABORTED,格式化失败;
二、长文件名
- Fatfs文件系统中存在短文件名和长文件名的概念。当文件名的字符长度短于13个字符时,称为短文件名。当长于13个字符则称为长文件名。
- 开启长文件名后文件名大写的问题才能解决
- 这个代码是扫描SD盘下的文件名,将.txt和.pzd结尾的文件扫描到file_lisT.txt这个文件中
- 关闭长文件名会倒是创建的file_lisT.txt文件是全大写的,匹配的文件后缀必须也是也是全部大写小写的.txt匹配不到
- 开启长文件名后可以就没问题
- 开启长文件名后选择GBK编码这时候编辑器也要改用GBK编码。