尝试使用CubeMX做stm32开发之十四:FatFs的基础知识

news2024/11/15 19:51:48

一、文件系统概念

文件系统:在存储介质中建立一种组织架构,以更好地储存和管理数据

文件系统一般包含:操作系统引导区、目录、文件等

文件系统中数据以文件的形式存储

文件系统中数据的存取需要遵循特定的格式

与直接操作存储介质相比(stm32中的flash存取函数),在文件系统中,一个完整的文件可以被分开为多个片段,存储到不连续的物理地址中;这些不连续的地址之间通过目录或链表的方式建立联系

二、FatFs概念

常用的文件系统有多种:FAT/FATFS、NTFS、CDFS、exFAT

其中,FatFs具有一些特点:免费开源;代码量小,裁剪方便,适合小型嵌入式系统;支持FAT12、FAT16、FAT32;支持多种存储媒介;基于ANSI C,独立于底层,平台兼容性好,可移植性强

源码下载地址:官网FatFs - Generic FAT Filesystem ModuleOpen source FAT filesystem for embedded projectshttp://elm-chan.org/fsw/ff/00index_e.html

系统包结构: 

文件名

功能

说明

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与应用层之间的接口函数

  • File Access(文件访问)
    • f_open - 打开/创建一个文件
    • f_close - 关闭一个打开的文件
    • f_read - 从文件中读取数据
    • f_write - 向文件写入数据
    • f_1seek - 移动读/写指针,扩展大小
    • f_truncate - 截断文件大小
    • f_sync - 刷新缓存数据
    • f_forward - 将数据转发到流
    • f_expand - 为文件分配一个连续块
    • f_gets - 读取一个字符串
    • f_putc - 写一个字符
    • f_puts - 写一个字符串
    • f_printf - 编写格式化字符串
    • f_tell - 取当前读/写指针
    • f_eof - 文件结尾测试
    • f_size - 获取文件大小
    • f_error - 测试错误
  • Directory Access(目录访问)
    • f_opendir - 打开一个目录
    • f_closedir - 关闭一个打开的目录
    • f_readdir - 读取目录项
    • f_findfirst - 打开目录并读取匹配的第一项
    • f_findnext - 读取匹配的下一项
  • File and Directory Management(文件和目录管理)
    • f_stat - 检查文件或子目录是否存在
    • f_unlink - 移除文件或子目录
    • f_rename - 重命名/移动文件或子目录
    • f_chmod - 更改文件或子目录属性
    • f_utime - 更改文件或子目录的时间戳
    • f_mkdir - 创建子目录
    • f_chdir - 更改当前目录
    • f_chdrive - 更改当前驱动器
    • f_getcwd - 检索当前目录和驱动器
  • Volume Management and System Configuration(卷管理和系统配置)
    • f_mount - 注册/注销卷的工作区
    • f_mkfs - 在逻辑驱动器上创建FAT卷
    • f_fdisk - 在物理驱动器上创建分区
    • f_getfree - 获取卷上的可用空间
    • f_getlabel - 获取卷标
    • f_setlabel - 设置卷标
    • f_setcp - 设置活动代码页

Media Access Interface(MAI,媒体访问接口)——FatFs与存储介质之间的接口函数

由于FatFs模块是独立于平台和存储介质的文件系统层,因此它与物理设备(如存储卡、硬盘和任何类型的存储设备)完全分离。因此存储设备控制模块不包含在FatFs中,FatFs通过MAI函数访问存储设备控制模块。

  • Storage Device Controls
    • disk_status - 获取设备状态
    • disk_initialize - 初始化设备
    • disk_read - 读数据
    • disk_write - 写数据
    • disk_ioct1 - 控制设备相关功能
  • Real Time Clock
    • get_fattime - 获取当前时间

三、小结

        FatFs文件系统适合stm32f103这种中小型嵌入式平台,开发者需要进行的工作主要集中在ffconf.h和diskio.c这两个文件中,并在实际中能够熟练调用ff.c中的API函数,但前提是对FatFs的整个架构有清晰的认识。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/79350.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

[附源码]计算机毕业设计基于SpringBt的演唱会购票系统论文2022Springboot程序

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

C++ MySQL Error 1366 incorrect string value引发的认识

C MySQL Error 1366 incorrect string value引发的认识 前言 在使用MySQL C API编写程序时,由于用到了中文,导致出现了MySQL error 1366 incorrect string value 问题,但令我同样不解的是我用同样的语句在cmd下可以正常执行。(M…

【算法】动态规划 ⑤ ( LeetCode 63.不同路径 II | 问题分析 | 动态规划算法设计 | 代码示例 )

文章目录一、问题分析二、动态规划算法设计1、动态规划状态 State2、动态规划初始化 Initialize3、动态规划方程 Function4、动态规划答案 Answer三、代码示例LeetCode 63. 不同路径 II : https://leetcode.cn/problems/unique-paths-ii/ 一个机器人位于一个 m x n 网格的左上…

java初步学习 String(基于小李的课进行自学,初学者)12

初步学习 String 基本概念 String类型即为字符串类型,即“103”,“abc”,"小陈"等字符类型,在工作中可用于加密,替换,截取,查找等工作 不过这种名词显然不能联想到工作的实际样子 例:…

[附源码]Python计算机毕业设计SSM基于框架的旅游订票系统(程序+LW)

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

IIS 之 添加MIME扩展类型及HTTP错误403

IIS 之 添加MIME扩展类型及HTTP错误403 我是艾西今天跟大家分享下IIS添加MIME及HTTP报错403 经常用IIS作为下载服务器的时候有时传上去的文件比如 example.mp4 文件名上传后,但是用http打开的时候确显示为 404 文件不存在。其实是IIS对文件的一种保护,…

基于java+springboot+mybatis+vue+mysql的校园志愿者管理系统

项目介绍 本校园志愿者管理系统以springboot作为框架,前端vue技术,b/s模式以及mysql作为后台运行的数据库,同时使用Tomcat用为系统的服务器。本系统主要包括首页、个人中心、志愿者管理、活动类型管理、活动信息管理、活动报名管理、活动通知…

游戏开发49课 性能优化7

4. 渲染优化 渲染优化的目的是减少Draw Calls,减少渲染状态切换开销,降低显存占用,降低带宽和GPU负担。在讲解渲染优化之前,先了解渲染性能消耗点。 Draw Call数量 Draw Call有些引擎也称为SetPass Call。一个Draw Call就是游戏调…

叫ChatGPT用html+css+js写一个圣诞节代码,看看什么样子?

最近ChatGPT这么火,那就让他给我写点代码吧。 如何注册一个账号,参考:注册ChatGPT详细指南 注册不了的小伙伴们,咱们评论区见,问一个最想问的问题,看到就给你回复! 我已经注册好了,…

代码随想录算法训练营第五十九天|503.下一个更大元素II、42. 接雨水

LeetCode 503.下一个更大元素II 链接:503.下一个更大元素II 思路: 本题其实和739. 每日温度更像一点,因为本题只有一个数组,而在下一个更大元素I中有两个,因此必须要一个哈希表来在另一个数组中查找相对应的数字。除…

yolov5检测结果不显示

安装完yolov5后,运行各种正常,后台也能显示识别信息,像这样。 而且在runs/detect/exp4文件夹中也会有正确的标识 但是我也想能在前台实时显示,像这样。 折腾了一个晚上也没有搞的定,甚至一度以为,是因为CPU…

SSM甜品店系统计算机专业毕业论文java毕业设计开题报告

💖💖更多项目资源,最下方联系我们✨✨✨✨✨✨ 目录 Java项目介绍 资料获取 Java项目介绍 计算机毕业设计java毕设之SSM甜品店系统-IT实战营_哔哩哔哩_bilibili项目资料网址: http://itzygogogo.com软件下载地址:http://itzygogogo.com/i…

【MindStudio训练营第一期】【昇腾AI训练营新手班学习笔记】可视化流程编排

准备 配置环境理解Python代码部分mxVision用户指南一份 步骤 案例的流程图: 图像输入和图像预处理 图像输入(appsrc插件) 通过python open和read到的图片数据,用SendData方法传入stream中,appsrc将数据发送给下游元…

《操作系统》期末考试卷3参考答案

《操作系统》期末考试卷(第3套) 参考答案与评分标准 一、单项选择题(共10题,每题2分,共20分) 题号 1 2 3 4 5 6 7 8 9 10 答案 D D C A C B A A B A 二、填空题(共8题,每空1分&…

Java学习之toString方法

目录 toString方法的功能 Object类的toString方法 源代码 子类没有重写的案例 子类重写toString 使用AltInsert自动重写 输出结果 最后一条 例子 toString方法的功能 返回该对象的字符串表示。默认返回:全类名(包名类名)哈希值的十六进…

【云服务器 ECS 实战】ECS 快照镜像的原理及用法详解

一、ECS 快照1. 阿里云 ECS 快照概述• ECS 增量快照机制2. 快照服务的开通与使用• 开通快照与 OSS 资源包的购买• 手动快照• 自动快照二、ECS 镜像1. 阿里云 ECS 镜像概述2. 自定义镜像的创建与使用• 导入镜像• 自定义镜像一、ECS 快照 1. 阿里云 ECS 快照概述 阿里云快…

[ Linux ] 进程信号递达,阻塞,捕捉

目录 1.core dump字段 1.1 Core dump是什么? 1.2 用代码看看Core Dump 1.3 core dump的作用 core dump一般会被关掉 2.阻塞信号 2.1 信号其他相关常见概念 2.2在内核中的表示 3.信号产生中 3.1 sigset_t 3.2信号集操作函数 3.2.1 sigprocmask 3.2.2 si…

Carla学习2:carla安装与使用

文章目录0. 建议1. carla学习相关链接1.1 官方资料1.1 学习教程2. Carla安装2.1 服务器端2.1.1 下载预编译版本(也可以使用下载源码并编译)2.1.2 启动服务器端及服务器端显示导航2.3 客户端2.3.1 创建python环境2.3.2 安装carla 的pythonAPI所需要的依赖…

自动平移门风淋室——化妆品行业的全面自动化门体

自动平移门风淋室工作原理:自动平移门风淋室包括单人风淋室,双人风淋室,多人风淋室,全不锈钢风淋室,快速卷帘门风淋室,防爆风淋室,风淋通道、转角风淋室、钢板烤漆风淋室, QS认证风淋室,全自动风淋室,臭氧杀菌风淋室,电加热风淋室,防静电风淋室,化妆品行业风淋室,汽…

一万五字的文章,超详细的画图,带你理解链表的基础和进阶题目(含快慢指针的讲解)

在今天的文章中,我将带来链表的面试题。在数据结构的学习过程中,画图是尤为重要的,所以在这些题目的讲解的过程中,我以画图为主。温馨提示:由于图片过大,手机观看可能出现模糊不清的情况,建议在电脑观看该篇…