历史上的今天
今天是:2024年10月25日(星期五)
2021年10月25日 | stm32专题十九:FatFs文件系统简介
2021-10-25 来源:eefocus
在上一篇博客中,是使用SPI-FLASH存储整数、小数和字符串等,通过调用SPI_FLASH_BufferWrite函数,把数组内容写入到SPI Flash芯片的指定地址上,在需要的时候从该地址把数据读取出来,再对读出来的数据以ASCII码的格式进行解读。
但是,这样直接存储数据会带来极大的不便,如难以记录有效数据的位置,难以确定存储介质的剩余空间,以及应以何种格式来解读数据。就如同一个巨大的图书馆无人管理,杂乱无章地存放着各种书籍,难以查找所需的文档。对于SPI Flash芯片或者SD卡之类的大容量设备,我们需要一种高效的方式来管理它的存储内容。
这些管理方式即为文件系统,它是为了存储和管理数据,而在存储介质建立的一种组织结构,这些结构包括操作系统引导区、目录和文件。常见的 windows 下的文件系统格式包括 FAT32、NTFS、exFAT。在使用文件系统前,要先对存储介质进行格式化。格式化先擦除原来内容,在存储介质上新建一个文件分配表和目录。这样,文件系统就可以记录数据存放的物理地址,剩余空间。
目录和文件分配表:

之前提到,把文件系统格式化后,会把目录存放在磁盘的开头。由上图所示,文件目录中有3条信息,记录了3个文件。每条目录信息又有很多细节,记录了文件的地址、大小、日期时间、权限等。看上去,似乎有目录就足够记录文件信息了,但还不够,继续往下看。

可以看到,文件目录是记录了文件存储在哪个扇区,而文件分配表记录了这个扇区存储了哪些内容,以及这个内容的下一个部分的位置。那么现在就可以知道,读取文件的流程如下(以读取B.txt为例):
1 从文件目录中找到B.TXT开始的扇区(12);
2 当读取完第12个扇区后,从文件分配表中知道,接下来要读取12扇区的内容,依次...,当读完65扇区后,发现下一个指向FF,此时文件B.TXT全部读取完成;
接下来看删除文件对文件分配表的影响:

由于新创建的D文件比较大,所以会占据原C文件的全部存储空间,然后在C文件的结尾还会占据一部分空间。那么此时,单凭文件目录已经无法知道D文件的具体存储细节了,因为D文件此时不是连续存储,来看此时文件目录的变化:

文件分配表在此时就能发挥作用,如下图所示:

最后一个问题,以什么形式来解读文件。在windows操作系统中,就是以后缀名来区分。如.txt以记事本打开(解读),.mp3以音乐播放器打开(解读)。
史海拾趣
|
0 引 言 电子研发工程师最常采用的EMI/EMC防范措施不外乎是屏蔽、滤波、接地和布线,但是随着电子系统的集成化,在考虑成本、质量、功能,又要兼顾产品推出速度的要求下,工程师们必须在设计初始阶段就展开EMI/EMC预测分析和设计,避免在研发 ...… 查看全部问答> |
|
1、若线程A和线程B都可对一数据C进行访问,但其他线程则无权访问,此时应采取什么机制对数据C进行保护?2、若数据C只能被线程A访问,应采取什么机制对数据C保护?3,若数据C可被任一线程访问,应采取什么机制保护数据?(可能我的描述有差,总之就 ...… 查看全部问答> |
|
环境:Uboot + Eboot + Wince 6.0,S3C6410 CPU,Samsung K9G8G08 1G Bytes NandFlash。 现象: 1、EBoot下载nk.bin文件后第一次启动wince,控制面板-->存储管理器中可以看到 part00、*part01两个分区,part00为BINFS格式,类型:0 ...… 查看全部问答> |
|
用LM4F120采样拾音器的输出信号,将采样的数据读到value[0]中,用KEIL仿真看value[0]的值,在0和4095波动,此时用万用表读取拾音器输出信号,只是0.30V而已,请问是什么设置不对呢。… 查看全部问答> |
|
本人做一个tms320f28035的EPwm+ADC的测试程序,可是看了半天的资料,tms320f28035的ADC还是不会编程转换,datasheet中也没有相关的实例,求高手指点。谢谢… 查看全部问答> |
|
本帖最后由 paulhyde 于 2014-9-15 03:21 编辑 我做了个旋转LED时钟 需要用到红外对管 但是手中没有红外接收管 只有3个脚的红外接收头 我想问 可以把红外接收管换成 红外接收头吗 我自己总感觉不大可能 首先接收管只要有红外光就可以导通 从而 ...… 查看全部问答> |




