FATFS 简单示例

前两天我的同事jacky出了一个基于mico实时操作系统的fatfs基础教程视频,这里先感谢下jacky花费大量时间的备课,将fatfs讲述的很详细,条理清晰,并且当场撸了一段代码实现了对文件的读写。为了传递这种乐于分享的精神,在取得他的同意后本人将视频做了一个文字版的整理。
本文所分享的内容:
1、对fatfs做一个介绍,让同学们有一个感性认识
2、基于jacky的实验现象和代码,做一个书面的整理,便于同学们在看完视频后回顾时有个参考。

       FatFS是一个为小型嵌入式系统设计的通用FAT(File Allocation Table)文件系统模块。FatFs 的编写遵循ANSI C,并且完全与磁盘I/O层分开。因此,它独立(不依赖)于硬件架构。它可以被嵌入到低成本的微控制器中而不需要做任何修改。
特点:Windows兼容的FAT文件系统;代码和工作区占用空间非常小;不依赖于平台,易于移植;RTOS的支持;多扇区大小的支持。
       简而言之,如果你是一名嵌入式工程师,单发现你需要存储的数据结构比较复杂、数据量比较大且需要持久化存储时,可以考虑移植fatfs到你的设备上,利用文件系统对进行数据操作和管理。

实验操作流程:
软件平台:micoder   SecureCRT
SDK:mico3.0.0
应用程序:fatfs_storelinklist(附件中给出此文件)
硬件:micokit3165,stlink或者jlink
1、将fatfs_storelinklist复制到mico3.0.0中demo文件下
2、编译下载
3、查看实验现象,如下:

本次代码实现的大框架是
1、将文件系统指向片外Flash,获取dir盘符路径: FATFS_LinkDriver( &SFLASHDISK_Driver, dir );
2、注册工作区到磁盘(片外Flash): err = f_mount( &FatFs, (TCHAR const*) dir, 0 );
3、对盘符进行格式化创建一个卷宗:f_mkfs( (TCHAR const*) dir, 0, _MAX_SS );
4、在当前目录创建文件:f_open( &fil, filename, FA_CREATE_ALWAYS| FA_WRITE |FA_READ);
5、对文件进行读写:f_write( &fil, pHead, sizeof(struct linklist), (void*) &byteswritten );
     f_read( &fil, &data, sizeof(struct linklist), (void *) &bytesread );
6、关闭文件,注销工作区,卸载设备驱动:  f_close( &fil );
       f_mount(NULL, (TCHAR const*) dir, 0);
       FATFS_UnLinkDriver( dir )
当然,随后我会附件给上源码,上述大框架是用于辅助代码阅读,以代码为标准。
整体上实现了文件系统的挂载,创建盘符,在此盘符下创建文件,对文件进行读写操作。
在这啰嗦一句:可以将dir类比成PC上的某个盘,而fil则是这个盘中的文件。

你可能感兴趣的:(FATFS 简单示例)