赞
踩
文件系统:在存储介质中建立一种组织架构,以更好地储存和管理数据
文件系统一般包含:操作系统引导区、目录、文件等
文件系统中数据以文件的形式存储
文件系统中数据的存取需要遵循特定的格式
与直接操作存储介质相比(stm32中的flash存取函数),在文件系统中,一个完整的文件可以被分开为多个片段,存储到不连续的物理地址中;这些不连续的地址之间通过目录或链表的方式建立联系
常用的文件系统有多种:FAT/FATFS、NTFS、CDFS、exFAT
其中,FatFs具有一些特点:免费开源;代码量小,裁剪方便,适合小型嵌入式系统;支持FAT12、FAT16、FAT32;支持多种存储媒介;基于ANSI C,独立于底层,平台兼容性好,可移植性强
系统包结构:
文件名 | 功能 | 说明 |
ffconf.h | FATFS模块配置文件 | 需要根据需求来配置参数 |
ff.h | FATFS和应用模块公用的包含文件 | 不需要修改 |
ff.c | FATFS模块源码 | 不需要修改 |
diskio.h | FATFS和disk I/O模块公用的包含文件 | 不需要修改 |
diskio.c | FATFS和disk I/O模块接口层文件 | 与平台相关的代码,需要用户根据存储介质编写函数 |
interger.h | 数据类型定义 | 与编译器有关 |
option文件夹 | 可选的外部功能(比如支持中文等) | 汉字实验把字库放到SPI FLASH需要修改 |
diskio.c和diskio.h是硬件层,需要根据存储介质修改;尤其是diskio.c,所谓文件系统移植,相当一部分工作量在于对这个文件的修改
ff.c和ff.h是FATFS的文件系统层和文件系统的API层,一般情况下开发者直接调用即可
ffconf.h文件包含相关配置宏,所谓文件系统裁剪,主要是对其中的宏定义进行修改
系统组织架构:
其中,FatFs module一般不需要开发者修改,只需要对Low Level disk I/O layer进行适当的开发和调整,根据硬件的具体情况
大体上可以将FatFs划分为两个层级:Application Interface(应用接口)和Media Access Interface(MAI,媒体访问接口)
Application Interface(应用接口)——FatFs与应用层之间的接口函数
Media Access Interface(MAI,媒体访问接口)——FatFs与存储介质之间的接口函数
由于FatFs模块是独立于平台和存储介质的文件系统层,因此它与物理设备(如存储卡、硬盘和任何类型的存储设备)完全分离。因此存储设备控制模块不包含在FatFs中,FatFs通过MAI函数访问存储设备控制模块。
FatFs文件系统适合stm32f103这种中小型嵌入式平台,开发者需要进行的工作主要集中在ffconf.h和diskio.c这两个文件中,并在实际中能够熟练调用ff.c中的API函数,但前提是对FatFs的整个架构有清晰的认识。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。