FATFS文件系统

FATFS文件系统

什么是文件系统?

文件系统简介

  • 文件系统就是对存储在存储介质中的数据进行管理的程序。
  • 因为呢,计算机的世界,一切的数据(视频,音乐,图片)以二进制代码表示,如果没有文件系统进行管理这么庞大的数据,那么对于使用者使用数据而言将是极为不方便的。
  • 不使用文件系统,你想读取某个部分的数据,要找到数据位于的地址,你不会清楚文件大小,同时写入数据时,会存在数据覆盖问题

Windows文件格式

  • windows为例,使用文件系统
    • 清晰知道每个磁盘的剩余空间大小
    • 多少文件夹
    • 多少文件
  • 文件格式
    • FAT32
    • NTFS
    • exFAT

存储介质格式化

使用文件系统前需要注意的

  • 需要对存储介质进行格式化。
  • 格式化会在存储介质上新建一个文件分配表和目录。
  • 这样文件系统就可以记录数据存放的物理地址和剩余空间

磁盘分区

请添加图片描述


文件系统的结构与特性

文件系统结构

​ 在使用文件系统时,数据以文件的形式存储。写入新文件时,在目录中创建一个文件索引它指示了文件存放的物理地址,再把数据存储到该地址中。

​ 当需要读取数据时,可以从目录中找到该文件的索引,进而读取数据。数据结构,链表辅助,在不连续空间存储。

​ 目录存放着,文件的名称,占据大小空间,位置,

​ 利用特殊数据结构,最大利用存储空间

文件系统空间示意图请添加图片描述

请添加图片描述

C语言中的文件操作

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-TYNMqwFe-1690026904862)(C:\Users\1\AppData\Roaming\Typora\typora-user-images\1688638203364.png)]

FATFS文件系统介绍

​ 它是面向小型嵌入式系统的一种通用的FAT文件系统。完全有AISIC语言编写,并且完全独立于底层的I/0介质。

​ 很容易地移植进8051,PIC,AVR,ARM等。

  • FATFS支持FAT12,FAT16,FAT32等格式。
  • 利用其SPI Flash芯片驱动,将FATFS文件系统代码移植到工程之中,可利用各种文件系统函数,对flash操作
  • 可从其官网下载源码
  • 野火为例
    • R0.14a版本
  • 文件版本不用太过纠结,核心函数不会变,只是对bug进行修复

FATFS源码介绍

请添加图片描述

程序中的关系网络

请添加图片描述

FATFS移植需要用户修改的函数

请添加图片描述

FATFS中间层添加途径

1.通过源码移植
  • 主要学习开发源码移植技巧
  1. 将源码拷贝至工程文件夹目录

  2. 添加进keil5工程

  3. 添加源码头文件路径

  4. 尝试构建程序,解决错误。(大部分内容在disio.c中修改)

    • 部分函数未定义,(需要用户自己写,比如获取文件创建时间的函数),如果不要用到删除即可,注释,
    • 实现未定义的函数在c文件中
  5. 实现FATFS和底层驱动的接口’

    1. disk_status获取设备状态的接口
    2. disk_initalize 初始化设备接口
    3. disk_read,disk_write
    4. disk_ioct 设备属性接口
  6. 修改ffconf.h头文件,配置FatFs文件系统的具体功能

    1. #define FF_USE-MKFS 1 格式化
    2. #define FF_CODE-PAGE 936 修改编码页,支持中文文件名
    3. #define FF_USE-LFN 1 支持长文件名
    4. #define FF_MAX_SS 4096 修改支持最大的设备扇区大小 与flash设备对应1个扇区(4字节)
使用过程
1.挂在文件系统在一个设备上
  • 使用f_mount函数
2.打开一个文件
  • f_open
3.数据的读取或写入
  • f_read
  • f_write
4.操作之后关闭文件
  • f_close
2.STM32CubeMx
  • 推荐使用这种方式,方便
  • 注:这两种方法实现的工程文件仅部分不同,但效果一致
    • 部分源码由cubeMx_ST工程师修改的,对多设备支持更好
4.操作之后关闭文件
  • f_close
2.STM32CubeMx
  • 推荐使用这种方式,方便
  • 注:这两种方法实现的工程文件仅部分不同,但效果一致
    • 部分源码由cubeMx_ST工程师修改的,对多设备支持更好
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值