FatFs(文件系统)

1官网

FatFs - 通用 FAT 文件系统模块 (elm-chan.org)

FatFs 是用于小型嵌入式系统的通用 FAT/exFAT 文件系统模块。FatFs 模块是按照 ANSI C (C89) 编写的,并且与磁盘 I/O 层完全分离。因此,它独立于平台。它可以集成到资源有限的小型微控制器中,如8051、PIC、AVR、ARM、Z80、RX等。此外,此处还提供用于微型微控制器的 Petit FatFs 模块。

特征
  • DOS/Windows 兼容 FAT/exFAT 文件系统。
  • 独立于平台。易于移植。
  • 程序代码和工作区的占用空间非常小。
  • 支持的各种配置选项:
    • ANSI/OEM 或 Unicode 格式的长文件名。
    • exFAT 文件系统、64 位 LBA 和 GPT 用于大型存储。
    • RTOS 的线程安全。
    • 多个卷。(物理驱动器和分区)
    • 可变扇区大小。
    • 包括 DBCS 在内的多个代码页。
    • 只读、可选 API、I/O 缓冲区等...

应用界面

层

FatFs 为应用程序提供了各种文件系统功能,如下所示。

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

媒体访问接口

层

由于 FatFs 模块是独立于平台和存储介质的文件系统层,因此它与物理设备(如存储卡、硬盘和任何类型的存储设备)完全分离。存储设备控制模块不是 FatFs 模块的任何部分,需要由实现者提供。FatFs 通过如下所示的简单媒体访问接口控制存储设备。此外,下载中还提供了某些平台的示例实现。此处提供了存储设备控制模块的功能检查器。

  • 存储设备控制
    • disk_status - 获取设备状态
    • disk_initialize - 初始化设备
    • disk_read - 读取数据
    • disk_write - 写入数据
    • disk_ioctl - 控制设备相关功能
  • 实时时钟
    • get_fattime - 获取当前时间

项目的文件

文件类别文件名说明
FATFS核心文件ff.c, ff.hFAT文件系统的核心实现和头文件
磁盘I/O接口diskio.c, diskio.h底层磁盘I/O函数的实现和声明,用于硬件平台特定的存储设备操作
FATFS配置ffconf.hFATFS的行为配置,如文件系统类型、长文件名支持等
整数类型定义integer.h提供一致的数据类型定义,用于跨平台兼容性
内存管理ffsystem.c, ffsystem.hFATFS的内存分配和释放函数的实现和声明
Unicode支持ffunicode.c, ffunicode.hUnicode字符编码转换相关函数,用于长文件名支持
主程序入口main.c系统初始化、线程创建、文件系统管理等
项目构建Makefile自动化编译脚本,用于构建整个项目
MMC/SD卡驱动mmc_stm32f1_spi.cSTM32F103微控制器的SPI接口的MMC/SD卡驱动程序
实时时钟rtc_stm32f1.c, rtc_stm32f1.h实时时钟(RTC)功能的实现和声明
系统启动代码startup_stm32f100.c微控制器启动代码,负责硬件初始化和引导加载
链接脚本STM32F100RBT6.ld指定链接器如何将源文件组合成可执行文件,以及内存空间分配
配置文件stm32sp.ini, tt.ini可能用于配置STM32F103微控制器的特定参数或系统行为
图形界面相关stm32_mmc.png可能是用于显示MMC接口连接示意图的图像文件
微控制器型号相关STM32F100.h包含STM32F100微控制器型号的寄存器映射和功能描述
串行通信接口uart_stm32f1.c, uart_stm32f1.h串行通信接口(UART)的实现和声明
打印函数库xprintf.c, xprintf.h基于xprintf库的 printf 函数的实现和声明,用于高效的打印功能

FATFS的核心文件通常包括以下几个:

  1. diskio.c: 这是磁盘输入输出(Disk I/O)功能的C语言源代码文件。它可能包含了操作磁盘设备、读写数据等函数。
  2. diskio.h: 这是磁盘输入输出相关头文件,用于定义了在C语言中访问磁盘所需的结构和宏。
  3. ff.c: 这可能是名为“ff”的库或项目的C语言源代码文件。具体功能需要根据上下文来判断。
  4. ff.h: 这是名为“ff”的库或项目的头文件,用于定义了在C语言中使用该库所需的数据结构和接口。
  5. ffconf.h: 这是“ff”库的配置文件,其中可能包含了编译和链接时需要的特定选项或参数。
  6. ffunicode.c: 这可能是一个处理Unicode字符的C语言源代码文件,与文本编码转换有关。
  7. integer.h: 这是整数类型的头文件,通常包含了标准C语言中的int、long int等整数类型定义。
  8. ffsystem.c 和 ffsystem.h:这些文件包含了FATFS的内存分配和释放函数的实现和声明。

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

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

相关文章

华为智能驾驶方案剖析

华为ADS智驾方案始终坚持激光雷达毫米波雷达摄像头的多传感器融合路线,行业降本压力下硬件配置从超配逐步转向贴合实际需求,带动整体硬件成本下降。 1)单车传感器数量呈现下降趋势,包括激光雷达从3个减配至1个、毫米波雷达从6R减配至3R、摄像…

【硬件开发】安规电容X电容和Y电容

为什么有安规电容 国家为了保护人民的安全要求,电容器失效后,不会导致电击,不危及人身安全的安全电容器 安规电容的作用 滤除雷电冲击波,以及插拔插座的高频噪声 X电容 聚酯电容 位置 X电容位于火线和零线之间 作用 滤除…

Swift 中更现代化的调试日志系统趣谈(二)

概述 在上篇 Swift 中更现代化的调试日志系统趣谈(一) 博文中,我们初步讨论了如何利用 Swift OSLog 框架中的 Logger 日志记录器替代“简陋”的 print 方法来记录我们的调试消息。 而接下来我们会再接再厉,继续调试日志系统的进一步介绍。 在本篇博文中,您将学到如下内容…

timm中模型更换huggingface模型链接

现在timm默认使用huggingface的链接了,错误链接如下: (MaxRetryError("HTTPSConnectionPool(hosthuggingface.co, port443): Max retries exceeded with url: /timm/swinv2_tiny_window8_256.ms_in1k/resolve/main/model.safetensors (Caused by C…

MySQL:表的内连接和外连接、索引

文章目录 1.内连接2.外连接2.1 左外连接2.2 右外连接 3.综合练习4.索引4.1见一见索引4.2 硬件理解4.3 MySQL 与磁盘交互基本单位(软件理解)4.4 (MySQL选择的数据结构)索引的理解4.5 聚簇索引 VS 非聚簇索引 5.索引操作5.1 创建索引5.2 查询索引5.3 删除索引 1.内连接 内连接实…

Keepalive技术

文章目录 一、Keepalive基础vrrp技术Keepalived介绍Keepalived架构 二、 Keepalived 相关文件配置文件组成全局配置虚拟路由器配置 三、配置lvs和keepalive联动服务器架构抢占模式配置配置单播、组播配置通知模块日志功能脑裂现象 四、keepalived和nginx联动keepalive和其他应用…

嵌入式Linux系统编程 — 5.5 sleep、usleep和nanosleep系统休眠函数

目录 1 为什么需要休眠 2 sleep、usleep和nanosleep函数 2.1 sleep函数 2.2 usleep函数 2.3 nanosleep函数 3 示例程序 1 为什么需要休眠 有时需要将进程暂停或休眠一段时间, 进入休眠状态之后,程序将暂停运行,直到休眠结束。 以下是一…

Is ChatGPT a Good Personality Recognizer? A Preliminary Study?

ChatGPT是一个很好的人格识别者吗?初步调研 摘要1 介绍2 背景和相关工作3 实验3.1 数据集3.2 提示策略3.3 基线3.4 评估指标3.5 实现细节3.6 Overall Performance (RQ1)3.7 ChatGPT在人格识别上的公平性 (RQ2)3.8 ChatGPT对下游任务的人格识别能力(RQ3&a…

javaEE——Servlet

1.web开发概述 所谓web开发,指的是从网页中向后端程序发送请求,与后端程序进行交互 2.java后端开发环境搭建 web后端(javaEE)程序需要运行在服务器中的,这样前端才可以访问得到 3.服务器是什么? ①服务器就是一款软件,可以向其发送请求&#…

深入解析HDFS:定义、架构、原理、应用场景及常用命令

引言 Hadoop分布式文件系统(HDFS,Hadoop Distributed File System)是Hadoop框架的核心组件之一,它提供了高可靠性、高可用性和高吞吐量的大规模数据存储和管理能力。本文将从HDFS的定义、架构、工作原理、应用场景以及常用…

【UML用户指南】-24-对高级行为建模-进程和线程

目录 1、概念 2、主动类 3、通信 4、同步 5、常用建模技术 5.1、对多控制流建模 5.2、对进程间通信建模 在UML中,可以将每一个独立的控制流建模为一个主动对象,它代表一个能够启动控制活动的进程或线程。 进程是一个能与其他进程并发执行的重量级…

2024新版大屏互动微信上墙源码大屏互动神器年会婚庆微现场3D签到

2024年大屏幕互动源码动态背景图和配乐素材搭建教程 php宝塔搭建部署活动现场大屏幕互动系统php源码,可以用来构建具有互动功能的大屏幕系统,为活动现场提供各种互动体验。 修复版的系统源码在原有功能的基础上,增加了更加完善的用户体验和稳…

002-关于Geogebra软件的介绍及与MatLab的区别

为什么要学Geogebra? 因为和MatLab的科学计算相比,GeoGebra重点突出教学展示,对于教师、学生人群来讲再合适不过了,尤其是可以融入到PPT里边呈现交互式动画,想想听众的表情!这不就弥补了看到PPT播放数学公…

GIT 基于master分支创建hotfix分支的操作

基于master分支创建hotfix分支的操作通常遵循以下步骤: 切换到master分支: 首先,确保你的工作区是最新的,并且你在master分支上。如果不在master分支,你需要先切换过去。 Bash git checkout master 拉取最新的master…

STM32第十二课:ADC检测烟雾浓度(MQ2)

文章目录 需求一、MQ-2 气体传感器特点应用电路及引脚 二、实现流程1.开时钟,分频,配IO2.配置ADC的工作模式3.配置通道4.复位,AD校准5.数值的获取 需求实现总结 需求 使用ADC将MQ2模块检测到的烟雾浓度模拟量转化为数字量。 最后&#xff0c…

2.00004 优化器执行计划生成的流程是怎么样的?

文章目录 整体架构关键结构体PlannerInfo (pathnodes.h:195)PlannerGlobal (pathnodes.h:95)函数栈关键函数pg_plan_query (postgres.c:885)planner (planner.c:274)standard_planner (planner.c:287)subquery_planner (planner.c:628)整体架构 关键结构体 PlannerInfo (pathn…

Servlet_Web小结

1.web开发概述 什么是服务器? 解释一:服务器就是一款软件,可以向其发送请求,服务器会做出一个响应. 可以在服务器中部署文件,让他人访问 解释二:也可以把运行服务器软件的计算机也可以称为服务器。 web开发: 指的是从网页中向后…

JUC工具类: Semaphore详解

Semaphore底层是基于AbstractQueuedSynchronizer来实现的。Semaphore称为计数信号量,它允许n个任务同时访问某个资源,可以将信号量看做是在向外分发使用资源的许可证,只有成功获取许可证,才能使用资源。立刀旁 目录 # 带着BAT大厂…

EDA 虚拟机 Synopsys Sentaurus TCAD 2016.03 下载

下载地址(制作不易,下载使用需付费,不能接受的请勿下载): 链接:https://pan.baidu.com/s/1baw0IhmnFOKVkJMI3zkD_A?pwdcheo 提取码:cheo

联邦的基础配置

一、联邦的定义 联邦:在AS内部部署全互联的IBGP对等体可以很好解决IBGP路由传递的问题,但是扩展性低,大型网络中会带来沉重负担,针对此问题可以用路由反射器解决,也可以利用联邦解决,联邦也被称为联盟。大…