芯课堂 | FatFs文件系统的移植及应用指南


1、FatFs文件系统简介
FatFs是用于小型嵌入式系统的通用FAT/exFAT文件系统模块。FatFs模块是按照ANSI C(C89)编写的,与磁盘控制层完全分离。因此,它独立于平台和存储设备,具有良好的硬件平台独立性。它可以集成到资源有限的小型微控制器中,如8051、PIC、AVR、ARM、Z80、RX等,支持多种存储设备如 SD 卡、MMC、USB闪存、NAND/NOR 闪存等。FatFs支持 FAT12/16/32 文件系统格式,具有高效、简洁、易于移植的特点。
2、FatFs的主要结构组成
(1) 用户应用层
文件操作API接口函数:如 f_open、f_read、f_write、f_close 等。这些函数用于用户操作文件和目录,如打开、读取、写入和关闭文件等 。
(2) 文件系统层
•文件控制块(FIL):用于表示一个已打开的文件,包含文件的状态、文件的指针、当前位置等信息。
•目录控制块(DIR):用于表示一个已打开的目录,包含目录的结构、当前读取位置等。
•文件系统对象(FATFS):用于表示整个文件系统的状态,包括当前挂载的信息、文件系统类型、扇区大小等。
•文件分配表(FAT):FAT 文件系统核心的数据结构,用于管理文件的簇链,标识文件占用了哪些簇,以及这些簇是否已被分配、空闲或损坏。
(3) 缓存管理层
FatFs 会在 RAM 中保留一个扇区缓冲区,用于加速文件读写操作,将块设备的读写操作优化为扇区大小。
(4) 低级设备抽象层
FatFs 通过硬件抽象层与具体的存储设备交互,即磁盘接口。支持多种存储设备媒介(SD 卡、USB、NAND、NOR Flash)。
·disk_read():从存储设备中读取数据。
·disk_write():向存储设备写入数据。
3、FatFs的移植及使用
(1)FatFs源码下载,FatFs官方网站:http://elm-chan.org/fsw/ff/。
图1 FatFs源码下载网页
如图1所示,通过官网下载到最新的FatFs源码包,源码包解压后得到相关文件如图2所示,文件包含了:存放于documents文件夹的相关使用的帮助文档、存放于source文件夹中的FatFs源代码以及许可证信息,这里我们主要聚焦于源码部分。
(2)FatFs源码移植。
ffsystem.c 通常是一个可选文件,提供了操作系统依赖的函数,这些函数用于动态内存分配和多任务环境中的互斥锁管理(当启用 FF_FS_REENTRANT 配置时),这里我们不启用相关函数功能。因此我们对其余的6个程序模块进行移植,这里以华芯微特UI_Creator上位机swm34s工程为例,如图3所示,针对FAtfs移植来进行相关的讲解。
图3 UI_Creator上位机工程FatFs模块
FatFs主要通过对低级设备抽象层(即diskio.c模块)进行程序修改移植。
在 diskio.c 中,有以下5个函数实现:
•disk_status(): 获取磁盘状态。
•disk_initialize(): 初始化磁盘(通常是 SPI 或 SD 卡的初始化)。
•disk_read(): 从磁盘读取数据。
•disk_write(): 向磁盘写入数据。
•disk_ioctl(): 控制磁盘的操作,比如获取磁盘扇区、块大小、擦除等。
在上位机工程中,我们支持对SD卡及串行闪存盘进行文件系统移植,需添加硬件初始化及磁盘操作的相关头文件(SWM341.h、FlashDisk.h<闪存盘读写擦操作的头文件>),其次是添加设备定义编号,程序如图3编程界面红框所示。
在diskio.c的6个功能函数中,对对应设备部分进行编程或功能函数植入,其中包括:①在disk_status()中实现磁盘设备ID读取检测(闪存设备),实现状态信息返回,如图4所示;
图4
②在disk_initialize()中对相关存储设备硬件IO接口进行初始化,如图5所示;
图5
③在disk_read()、disk_write()中添加对硬件设备相关的读写操作函数接口,如图6所示;
图6
④在disk_ioctl()中可添加需要的磁盘操作功能,如图7所示;
图7
至此,我们基本完成了FatFs文件系统的移植。
(3)FatFs的使用。
移植完FatFs后,需要通过f_mount()函数实现对文件系统的挂载,而后ff.c所提供的标准文件操作接口来实现文件读写。以上位机工程为例,通过在lv_fs_fatfs.c中,将 FatFs 提供的文件系统接口与 LVGL 的文件 I/O 接口关联起来,如图8所示,实现了LVGL从文件系统中加载资源,比如图像、字体、数据文件等。
图8 LVGL(LittlevGL)中使用 FatFs 文件系统
值得一提的是,作为FatFs文件系统的配置文件,ffconf.h允许用户通过修改其程序源码中的宏定义来选择开启或关闭特定的功能、调整文件系统的行为、优化内存资源占用和性能,从而满足嵌入式系统的不同要求。
FatFs的相关移植使用也可参考华芯微特SWM341基础库中的SFC\SFC_FATFS例程,如图9所示。
图9 SWM341基础库SFC\SFC_FATFS例程
- |
- +1 赞 0
- 收藏
- 评论 0
本文由samsara转载自华芯微特32位MCU公众号,原文标题为:芯课堂 | FatFs文件系统的移植及应用指南,本站所有转载文章系出于传递更多信息之目的,且明确注明来源,不希望被转载的媒体或个人可与我们联系,我们将立即进行删除处理。
相关推荐
【经验】华芯微特SWM341/SWM34S系列MCU环境配置指南
华芯微特MCU的系列之SWM341&SWM34S,内核相同,34S在341基础上内置了SDRAM。341芯片使用M33内核,基于ARM-V8指令集的架构,对应的工具版本有更高的要求。本文中华芯微特将为大家介绍SWM341/SWM34S系列MCU环境配置指南。
Synwit_UI_Creator(ugui)平台之MDK工程构建篇
本文由华芯微特给大家介绍面向小尺寸TFT-LCD屏驱市场量身打造的Synwit_UI_Creator(ugui)自研开发套件,以及如何进行MDK工程构建。
华芯微特SWM341系列主控制器LIN接口应用指南
LIN(Local Interconnect Network)是一种基于UART数据格式、主从结构的低成本通信总线,通常用于车门、雨刮器、车灯等对通信速率要求不高的应用场景。本文基于华芯微特SWM341系列主控制器介绍LIN接口应用。
华芯微特(Synwit)32位MCU选型表
华芯微特 - ARM CORTEX-M33 MCU,32位微控制器,ARM CORTEX-M0微控制器,ARM CORTEX-M4 MCU,ARM CORTEX-M0 MCU,MCU,SWM19SC9T6-50,SWM241PBT7-80,SWM260PBT7-80,SWM181RCT6-50,SWM211,SWM21DC8U7-50,SWM211G6S7-65,SWM181C9T6-50,SWM241KBT7-80,SWM34SRET6-50,SWM21PG6S7-65,SWM34SVET6-50,SWM341RET7-50,SWM260KBT7-80,SWM320RET7-50,SWM201G6S7-65,SWM181DBU6-40,SWM211C8T7-50,SWM201C6T7-50,SWM341CET7-50,SWM190CBT7-50,SWM201,SWM320VET7-50,SWM320,SWM20PG6S6-65,SWM341,SWM241,SWM260,SWM181,SWM19SCBT7-50,SWM320CET7-50,SWM190,SWM32SRET6-50,SWM190RBT7-50,SWM241CBT7-50,SWM181CBT6-50,SWM20DC6U7-50,SWM21DK6U7-50,SWM341VET7-50,SWM260CBT7-50,SWM34SCET6-50
探讨华芯微特SWM221系列芯片之电机应用及控制
在微控制器市场面临性能、集成度与成本挑战的当下,SWM221系列芯片以其卓越性能与创新设计,受到市场与用户的认可。本文华芯微特将深入介绍SWM221系列芯片在电机控制领域的应用及控制技术。
SWM341单片机运行Rust教程,一切从点灯开始
Swm341是一款非常优秀的国产单片机芯片,聚焦于显示控制,有着非常多的硬件资源可供使用,开发非常方便。另外Rust目前开始变得流行,执行效率也非常高,因此想在Swm341中尝试使用运行Rust开发,本文进行介绍。
华芯微SWM221系列32位微控制器,主频72Mhz,适配多种通讯接口,适合TFTLCD彩屏显示及控制应用
SWM221系列是一款ARM Cortex-M0内核的32位微控制器,主频72Mhz,128KB Flash,8KB Sram配置了单片机基础功能模块,本篇将介绍华芯微SWM221系列芯片在TFTLCD彩屏显示及控制的应用。
华芯微特(Synwit)32位MCU选型指南
公司介绍&产品分类 TFT-LCD 显示和人机界面(HMI)用微控制器 电机专用微控制器 大家电 & 工控通用微控制器 32位微控制器选型表
华芯微特 - 高性能电机芯片,32位MCU,ARM CORTEX-M4 32位微控制器,微控制器,32位微控制器,高性价比电机芯片,ARM CORTEX-M4 MCU,工控通用微控制器,电机专用微控制器,ARM CORTEX-M0 MCU,MCU,ARM CORTEX-M0 32位微控制器,SWM34X,SWM320 SERIES,SWM 201C6T7-50,SWM19SCBT6-50,SWM190 SERIES,SWM 201 系列,SWM32SRET6,SWM181CCT6-50,SWM260KBT7-80,SWM190KBT6-80,SWM201G6S7-65,SWM 201,SWM 201G6S7-65,SWM 19S 系列,SWM201,SWM260 SERIES,SWM320,SWM19S,SWM160,SWM20PG6S6,SWM20D,SWM32SRET6-50,SWM 20PG6S6-65,SWM 190,SWM181CBT6-50,SWM260CBT7-50,SWM260PBT7-80,SWM 260 系列,SWM32S,SWM181 SERIES,SWM181RCT6-50,SWM20P,SWM260CBT7,SWM160C8T7-50,SWM190CBT6-50,SWM20G,SWM 190 系列,SWM 260,SWM 181,SWM201 SERIES,SWM320RET7-50,SWM181DBU6-40,SWM181CBT6,SWM160 SERIES,SWM 341,SWM 341 系列,SWM190 系列,SWM201C6T7-50,SWM 181 系列,SWM320VET7-50,SWM341,SWM190RBT6-50,SWM20PG6S6-65,SWM260,SWM181,SWM320CET7-50,SWM190,电机控制,高压风扇,电动摩托车,按摩椅,TFT-LCD显示,个人护理,空净,冰箱,电动工具,人机界面,工控仪表,工业仪表,洗衣机滚筒,电锯,热水器风机,电动车仪,电动人力车,人机界面(HMI),医疗辅助,电焊机,洗衣机,用户界面,电动自行车,电钻,生活电器,电机,风扇,抽油烟机风机,厨房电器,TFT-LCD 显示,生命检测仪,呼吸机,饮水机,可穿戴设备,血压计,电力仪表,白色家电,TFT-LCD控制,空调,咖啡机,扫地机,工业互联,车辆仪表,测温仪,水泵,吸尘器,仪器仪表,电动车仪表,热水器,智能家居,遥控钥匙,微波炉,车载诊断,防盗器,电机驱动,仪表盘,工业控制,HMI,电饭锅,工控,电动车 HMI,医疗辅助 HMI,吹风机,落地扇,电动车,空气净化器,体征测量,家用电器,智能开关,智能控制,吊扇,冰箱压缩机,车载设备,大家电,家用电器 HMI
华芯微特MCU(ARM Cortex-M4/安谋科技“星辰”STAR-MC1内核)32位微控制器产品列表
华芯微特 - 32位微控制器,ARM CORTEX-M4/安谋科技“星辰”STAR-MC1内核32位微控制器,MCU,SWM19SC9T6-50,SWM241PBT7-80,SWM181RCT6-50,SWM211,SWM211G6S7-65,SWM22PE8S7-63,SWM181C9T6-50,SWM241KBT7-80,SWM34SRET6-50,SWM21PG6S7-65,SWM221CBT7-50,SWM34SVET6-50,SWM341RET7-50,SWM320RET7-50,SWM260KBT7-80,SWM181DBU6-40,SWM211C8T7-50,SWM21PE6S7-63,SWM341CET7-50,SWM190CBT7-50,SWM320,SWM221,SWM166,SWM341,SWM221KBU7-50,SWM241,SWM260,SWM181,SWM320CET7-50,SWM19SCBT7-50,SWM190,SWM32SRET6-50,SWM166D8U6-40,SWM21DD8U7-40,SWM34SMEU6-40,SWM190RBT7-50,SWM221E8S7-63,SWM181CBT6-50,SWM341VET7-50,SWM21DK6U7-50,SWM34SCET6-50,SWM260CBT7-50
Synwit_UI_Creator(ugui)平台之PC端界面设计篇
本文介绍华芯微特面向小尺寸TFT-LCD屏驱市场量身打造的Synwit_UI_Creator(ugui)自研开发套件。UI_Creator(ugui)开发套件分为上位机和下位机。UI_Creator(ugui)目前已适配华芯微特SWM166/SWM19S/SWM341/SWM211四款屏驱芯片系列。
【产品】32位微控制器SWM341系列SWM34SRET6-50,助力4.3寸800*480 TFTLCD显示的例程应用
华芯微特推出32位微控制器SWM341系列,简单介绍了和系列之一的SWM34SRET6-50驱动4.3寸800*480 TFTLCD显示的例程应用。
【IC】革新未来,智驭控制新纪元——华芯微特发布SWM221系列微控制器芯片
华芯微特最新发布的SWM221系列芯片却以其卓越性能与创新设计,备受市场与用户的认可好评。为深度了解SWM221系列芯片的优势所在,本文笔者有幸邀请广东华芯微特集成电路有限公司市场总监,为我们一同解析。
【经验】SWM341 DMA2D模块介绍
DMA2D是专用于图像处理的专业DMA。特别是刷单色屏,刷图片,刷Alpha(透明)混合效果全靠它,而且可以大大降低CPU利用率。主要实现了两个功能,一个是DMA数据传输功能,另一个是2D图形加速功能。
SWM341 系列 MCU数据手册
华芯微特 - 32 位微处理器,32 位微控制器,MCU,SWM341VET6(7)–50,SWM34SV,SWM34SRET6,SWM341RET7,SWM34SVET6,SWM34SR,SWM341R系列,SWM341V系列,SWM34SRET6-50,SWM34SVET6-50,SWM341 系列,SWM341RET7-50,SWM34SCET6,SWM341CET7,SWM341V,SWM341CET7-50,SWM341R,SWM341,SWM34SMEU6-40,SWM34SR系列,SWM34SMEU6,SWM34SV系列,SWM341VET7,SWM341VET7-50,SWM34SCET6-50,电机驱动,工业控制,白色家电,屏幕领域,压缩机驱动
华芯微特MCU 32 位微控制器产品列表
华芯微特 - 32 位微控制器,MCU,SWM19SC9T6-50,SWM241PBT7-80,SWM181RCT6-50,SWM211,SWM211G6S7-65,SWM181C9T6-50,SWM22PE8S7-63,SWM241KBT7-80,SWM221EBS7-63,SWM34SRET6-50,SWM21PG6S7-65,SWM221CBT7-50,SWM34SVET6-50,SWM341RET7-50,SWM260KBT7-80,SWM320RET7-50,SWM181DBU6-40,SWM211C8T7-50,SWM21PE6S7-63,SWM341CET7-50,SWM190CBT7-50,SWM166,SWM221,SWM320,SWM341,SWM241,SWM221KBU7-50,SWM260,SWM181,SWM19SCBT7-50,SWM320CET7-50,SWM190,SWM166D8U6-40,SWM32SRET6-50,SWM21DD8U7-40,SWM34SMEU6-40,SWM190RBT7-50,SWM181CBT6-50,SWM21DK6U7-50,SWM341VET7-50,SWM260CBT7-50,SWM34SCET6-50
电子商城
现货市场
服务

可定制排针排母间距:0.8~2.54mm,排数:1~3,电流:最大不超过10A;环境温度:-45度~+125度;寿命/拔插次数:不超过5000次。
最小起订量: 5000 提交需求>

可定制连接器单PIN电流最大不超过10A;环境温度:-45度~+125度;寿命/拔插次数:不超过5000次。
最小起订量: 5000 提交需求>
登录 | 立即注册
提交评论