elm FatFs文件系统移植总结

本文详述了elm FatFs文件系统的移植过程,包括其介绍、移植步骤、使用注意事项和示例。FatFs因其易用性和移植性而在MCU中广泛应用。移植涉及驱动接口的实现、注册以及文件系统的挂载与卸载。文章还提供了挂载和使用文件系统的代码示例。
摘要由CSDN通过智能技术生成

1 前言

本文将根据我的一些理解,针对elm FatFs文件系统做一个初步总结。

2 elm FatFs文件系统介绍

顾名思义FatFs文件系统就是针对FAT文件系统来的,主要是应用于MCU中,STM32官方提供的文件系统就是这个,STM32CubeMx工具也集成了这个文件系统,同时一些国产MCU操作系统中也集成了这个文件系统,比如RTT(rt-thread),它是第三方提供的开源代码,是一个日本人开发的,开源官网为: http://elm-chan.org/fsw/ff/00index_e.html .

FatFs文件系统之所以这么流行,主要是因为它简单易用,移植非常方便。

FatFs Module

图1 FatFs Module

如上图,中间绿色部分为FatFs文件系统模块。APP通过FatFs模块来实现对存储模块的读写访问。FatFs模块不但可以管理单个存储设备,同时也可以管理多个,如下图所示:

FatFs可以管理一到多个存储设备

图2 FatFs可以管理一到多个存储设备

如上图,蓝色部分为FatFs模块,绿色部分为读写外部存储设备的驱动接口。蓝色部分与绿色部分是分开的,也就是说,FatFs是与底层分开的,它是完全抽象出来的独立于HAL层之上的中间件模块。上层APP正是通过这个中间件模块来实现对底层存储模块的访问,而访问的手段或接口集合我们称之为驱动。一个驱动往往与一个具体的存储设备对应,FatFs与驱动是分开的,那么,我们需要将存储设备对应的操作驱动注册或链接到文件系统中,这样,文件系统才知道它底层有这个一个存储设备,并且可以通过这个驱动来操作它,当然,也可以注册多个设备的驱动,如上图右边的图b,这样,文件系统就知道它底层有多个存储设备,并在注册的过程中,为每个驱动分配一个唯一的卷号,以便后面使用卷号来操作存储设备中的文件。

3 FatFs文件系统移植

FatFs源码文件组织

图3 FatFs源码文件组织

如上图,蓝色部分为FatFs文件系统,ff.h负责对APP提供使用接口,ffconf.h为FatFs文件系统的配置参数,integer.h为FatFs文件系统内部通用数据类型定义,便于跨平台移植,diskio.h负责连接FatFs与存储设备驱动。因此,基于不同的存储设备,实现FatFs与底层驱动的对接是关键。

要实现FatFs与底层驱动的对接,我们首先得为底层存储设备实现一套驱动接口,FatFs为这个底层存储设备驱动专门定义了一个数据结构:

typedef struct
{
  DSTATUS (*disk_initialize) (BYTE);                     /*!< Initialize Disk Drive                     */
  DSTATUS (*disk_status)     (BYTE);   
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值