fatfs文件系统
来源:互联网 发布:谁在淘宝上买过精密管 编辑:程序博客网 时间:2024/06/05 13:07
hal库中的FATFS
使用STM32CubeMX添加FATFS下的user-defined,打开工程,查看main()可以发现代码中先调用了MX_FATFS_Init()函数,而此函数又调用了 FATFS_LinkDriver()函数,继续查找FATFS_LinkDriver()函数,发现此函数第一个变量为Diskio_drvTypeDef类型
typedef struct{ DSTATUS (*disk_initialize) (BYTE); DSTATUS (*disk_status) (BYTE); DRESULT (*disk_read) (BYTE, BYTE*, DWORD, UINT);#if _USE_WRITE == 1 DRESULT (*disk_write) (BYTE, const BYTE*, DWORD, UINT); #endif#if _USE_IOCTL == 1 DRESULT (*disk_ioctl) (BYTE, BYTE, void*); #endif}Diskio_drvTypeDef;
可以发现此结构体为对U盘底层操作的指针,在FatFs\src\drivers目录下,我们可以找到,其中已经为我们写好了SD卡,U盘,SRAM和SDRAM的相关底层操作
在fatfs.c文件中还有一个函数get_fattime(),此函数为获取当前系统的时间,经查抄可以发现此函数的实现格式为 ((DWORD)(year- 1980) << 25 | (DWORD)_month << 21 | (DWORD)day << 16)
根据功能需要实现的函数
ffconf.h文件的相关配置
函数和缓冲区配置
- _FS_TINY设置缓冲区的位置,假如设置为0,也就是每个文件(FIL结构体)中带一个buf,否则的话,整个文件系统公用一个buf。内存还是够的,所以选择为0。
- _FS_READONLY设置是否文件只读,系统需要可读写的,设置为0。
- _FS_MINIMIZE设置为0,因为以下的那些函数要用到,不简化。
- _USE_STRFUNC设置是否使用字符串函数,主要有f_gets, f_putc, f_puts, f_printf四个函数,暂时不用,因为我们的数据都是自定义结构体的存储方式,为了节省空间这个设置为0。
- _USE_MKFS设置是否实现f_mkfs函数。我们需要在设备初始化时完全格式化Flash,所以此函数需要。
- _USE_FORWORD设置
- _USE_FASTSEEK设置是否支持文件快速定位,它主要采用缓冲区来存储簇链映射图,以空间换时间,对于我们系统不合算,还是采用普通定位方式好。
本地化和命名空间配置
- _CODE_PAGE设置目标系统的本地化设置,本系统有ASCII支持就足够了,支持本地化的情况下,模块的大小将大幅增加,反而不符合我们选择FatFs的初衷,所以选择1。
- _USE_LFN设置长文件名,我们系统不支持,设为0。
- _MAX_LFN不用设置,因为不支持长文件名。
- _LFN_UNICODE设置长文件名是否支持Unicode,我们选择不支持,因为不支持长文件名。
- _FS_RPATH设置相对路径支持。相对路径在编程的时候特别方便,但是为了先移植成功,暂不支持。
物理驱动器配置
- _VOLUMES设置逻辑驱动器的个数,默认为1。
- _MULTI_PARTITION设置是否多个分区。不分区,设为0。
- _USE_ERASE设置擦除扇区。在f_mkfs和remove_chain两个函数中添加擦除的代码,设置为0。
系统配置
- _WORD_ACCESS设置是否支持字访问。不支持。
- _FS_REENTRANT设置是否重入。因为我们的系统文件访问不是很频繁,而且都是在一个任务中访问,所以不支持重入。
- _FS_TIMEOUT超时设置。
- _SYNC_t访问重入时的同步句柄。
- _FS_SHARE设置文件共享,能同时被几个文件同时打开。设置为0。
参考
http://blog.csdn.net/callmeback/article/details/6989098
阅读全文
0 0
- FatFS文件系统
- FatFS文件系统
- FATFS 文件系统
- fatfs文件系统
- FATFS文件系统
- fatfs文件系统
- FATFS文件系统
- Fatfs文件系统分析(1)-Fatfs
- FatFs文件系统的移植
- FatFs文件系统的移植
- fatfs文件系统移植
- FatFs文件系统的移植
- SD_STM32_SPI驱动+FatFs文件系统
- 转fatfs 文件系统选择
- SD_STM32_SPI驱动+FatFs文件系统
- AM3359 FATFS文件系统移植
- or1200移植fatFs文件系统
- FatFs文件系统的移植
- SVM学习(六):将SVM用于多类分类
- extjs滚动条超出内容可以拖动,autoScroll : false,
- 逆置元素
- kl16串口
- Android中修改ListView的分割线,xml和代码两种方式
- fatfs文件系统
- 正则表达式括号区分
- 【设计模式系列】单例模式
- JS数组
- 究竟啥才是互联网架构“高可用”
- UIView的setNeedsLayout, layoutIfNeeded 和 layoutSubviews 方法之间的关系解释
- Error日志信息
- Python欺骗问题
- 抽象类理解