FatFs Moule,一种易于移植和使用的文件系统

发布于:2024-07-17 编辑:匿名 来源:网络

介绍  随着信息技术的发展,当今社会的信息量不断增加。

过去,由单片机组成的系统只是简单地按地址、按地址、按地址来存储介质。

字节的读/写已经不能满足人们实际应用的需求,因此采用文件系统来管理存储介质已经成为未来微控制器系统的一个发展方向。

目前常用的文件系统主要有微软的FATl2、FATl6、FAT32、NTFS以及Linux系统下的EXT2、EXT3等。

由于微软Windows的广泛应用,FAT文件系统是当前消费电子产品中最常用的,例如如U盘、MP3、MP4、数码相机等。

因此,很难找到一个易于移植和使用且占用硬件资源相对较少的系统。

较小但功能强大的 FAT 开源文件系统对于微控制器系统设计人员来说非常重要。

  FatFs Module是一个完全免费、开源的FAT文件系统模块,专为小型嵌入式系统设计。

它完全采用标准C语言编写,因此具有良好的硬件平台独立性,只需简单修改即可移植到PIC、AVR、SH、Z80、H8、ARM等系列单片机上。

支持FATl2、FATl6和FAT32,支持多种存储介质;具有独立的缓冲区,可以读/写多个文件,并且特别针对8位微控制器和16位微控制器进行了优化。

FatFs 模块有一个简化版本 Tiny-FatFs。

它与完整版FatFs的不同之处主要有两点:   ①占用内存更少,仅1 KB RAM;   ② 一次仅支持 1 个存储介质。

  FatFs的用法和Tiny-FatFs一样,只是包含不同的头文件,非常方便。

本文主要介绍Tiny-FatFs。

  1 Tiny-FatFs  1.1 移植前的准备   FatFs模块从一开始就被设计为可以在不同的微控制器上使用,因此具有良好的层次结构,如图图 1. 顶层是应用程序层。

用户无需关注FatFs Module的内部结构和复杂的FAT协议。

他们只需要调用FatFs Module为用户提供的一系列应用接口函数,如f_open、f_read、f_write、f_close等,就可以像在PC上一样轻松地读写文件。

  中间层FatFs模块实现FAT文件读/写协议。

FatFs Module 的完整版本提供了 ff。

c,ff。

h,Tiny-FatFs的简化版提供了tff.h。

c.tff。

H。

除非必要,用户一般不需要修改。

使用时直接包含所需版本的头文件即可。

   需要用户编写迁移代码的是FatFs Module提供的底层接口,包括存储介质读写接口DiskIO以及提供文件创建和修改时间的实时时钟。

  本移植硬件平台采用AVR单片机型号ATmegal28和SD卡。

ATmegal28 是一款 8 位 RISC 微控制器,具有高达 4 KB 的 RAM、1 KB 的内部闪存和丰富的外设。

软件平台为WINAVR,具有代码优化能力强、完全免费等优点。

  1.2移植步骤  1.2.1编写SPI与SD卡接口代码  本文使用SD卡的SPI通信模式。

SD卡的DI连接MOSI,DO连接MISO,CS连接SS。

这就需要ATmegal28提供SPI读/写接口代码,主要包括初始化、读取和写入。

SPI初始化包括SPI相关寄存器的初始化和相关I/O端口的初始化。

配置ATmega的SPI为主机模式,数据先传输高端,时钟速率为系统时钟的一半等,代码如下:   SPCR=(O<

MOSI 引脚和 Ss 引脚配置为输出,MISO 引脚配置为输入。

然后,您可以读/写。

  读取1字节SPI接口代码:  static BYTE rcvr_spi(void){  SPDR=OxFF;   loop_until_bit_is_set(SPSR, SPIF);   返回SPDR;   }   写入1字节SPI接口代码:  static void xmit_spi(BYTE dat){  SPDR=dat;   loop_until_bit_is_set(SPSR, SPIF)  }  带SPI 基于读写接口编写SD卡接口代码,需要编写3个基本接口函数:   ①向SD卡发送1条命令:  Static BYTE send-cmd(BYTE cmd, DWORD arg);   ②向SD卡发送1个数据包:   Static BOOL xmit—datablock(const BYTE * buff, BYTE token);   ③从SD卡接收1个数据包:  static BCK]L rcvr-datablock(BYTE*buff, UINT btr);   1.2.2 写入DiskIO  写入存储介质的接口代码后,即可写入DiskIO。

DiskIO结构如图2所示。

  Tiny-FatFs移植实际上需要编写6个接口函数,分别是:   ①DSTATUS disk_initialize(BYTE drv);   存储介质初始化功能。

由于存储介质是SD卡,所以实际上是对SD卡进行初始化。

drv 是存储介质编号。

由于Tinv-FatFs只支持一种存储介质,所以drv应该始终为O。

如果执行正确,则返回0,如果发生错误,则返回非O。

  ②DSTATUS disk_status(BYTE drV);   状态检测功能。

检查当前存储介质是否支持。

对于Tinv-FatFs来说,只要drv为0,就认为支持,然后返回O。

  ③DRESULT disk_read(BYTE drv, BYTE*buff, DWORD 扇区, BYTE.count);   读取扇区功能。

基于SD卡读取接口函数编写,*buff存储已读取的数据,sector为开始读取的起始扇区,count为需要读取的扇区数。

1 个扇区字节。

如果执行正确则返回 O,如果发生错误则返回非 0。

  ④DRESULT disk_write(BYTE drv, const BYTE*buff, DWORD 扇区, BYTE count);   写入扇区函数。

基于SD卡写入接口函数编写,*buff存储要写入的数据,sector是开始写入的起始扇区,count是需要写入的扇区数。

1 个扇区字节。

如果执行正确则返回 O,如果发生错误则返回非 0。

  ⑤DRESULT disk_ioctl(BYTE drv, BYTE ctrl, VoiI*buff);   存储介质控制功能。

ctrl是控制代码,*buff存储或接收控制数据。

你可以在这个函数中编写你需要的功能代码,比如获取存储介质的大小、检测存储介质是否上电、存储介质的扇区数等。

如果是简单的应用程序,不用写,直接return O即可。

  ⑥DWORD get_fattime(Void);   实时时钟功能。

返回 32 位无符号整数。

时钟信息包含在这 32 位中,如下:   bit31:25 年 (O...) 从今年到现在的年数   bit24:21 个月 (1...12 )  bit20:16 天 (1..31)  bitl5.1] 小时 (O..23)  bitl0:5 分钟 (O..59)  bit4:0 秒/2 (0. .29)  如果不使用实时时钟,您可以简单地返回一个数字。

正确编写DiskIO后,移植工作就基本完成了。

接下来的工作是配置 Tiny-FatFs。

  2 Tiny—FatFs 配置   Tiny—FatFs 是一个可配置、可修剪的文件系统,用户可以选择自己需要的功能。

Tiny-FatFs共有5个文件,分别是tff. c.tff. h、磁盘。

c.diskio。

h 和整数. H。

tff_c 和整数. h一般不需要改变。

之前的移植工作主要是改diskio。

c、配置Tiny-FatFs主要修改tff。

h 和 diskio. H。

  在磁盘上。

h、用户可以根据需要启用disk_write或disk_ioetl。

以下代码启用 disk_write 和 disk_ioctl:tff 中的   #define—R'EADONLY 0  #define—USE_IOCTL 1  。

h、用户可以根据需要对整个文件系统进行全面配置:  ①#define_MCU_ENDIAN。

可以设置两个值1和2。

默认设置为1以获得更好的系统性能。

如果单片机处于big-endian模式或者设置为1时系统无法正常运行,则必须设置为2。

  ② #define_FS_READONLY。

当设置为 1 时,启用只读操作。

当程序编译时,所有涉及写入文件系统的操作都将被删除以节省空间。

  ③#define_FS_MINIMIZE。

有 0、1、2、3 四个选项。

设置 0 表示可以使用 Tiny-FatFs 提供的所有用户功能;设置 1 禁用 f_stat、f_getfree、f_unlink、f_mkdir、f_chmod 和 f_rename;在1的基础上设置2来禁用f_opendir和f_readdir;在1和2的基础上设置3来禁用f_opendir和f_readdir。

然后禁用f_lseek。

用户可以根据需要将其剪裁以节省空间。

  3 TINY-FatFs读写测试  Tiny-FatFs功能非常强大,提供了丰富且易于使用的用户界面功能,如图3所示。

FatFs Moule,一种易于移植和使用的文件系统

  Tiny—FatFs功能齐全。

本文仅测试五个函数:f_mount、f_open、f_read、f_write 和 f_close 来读取 3.4 MB 文件和写入 1MB 文件。

文件名是 testl.数据和测试2。

数据。

主要代码如下:   经实际测试,单片机系统时钟为11.2 MHz时,读取3.4 MB文件大约需要20 s,平均约为KB/s;写入1MB文件大约需要6秒。

平均约为 KB/s。

这个读/写速度在资源有限的微控制器系统中是相当令人满意的。

综上所述,FatFs Module具有易于移植、功能强大且易于使用的优点,适合小型嵌入式系统;它完全免费、开源,也可用于教育、科研和商业目的。

FatFs Moule,一种易于移植和使用的文件系统

站长声明

版权声明:本文内容由互联网用户自发贡献,本站不拥有所有权,不承担相关法律责任。如果发现本站有涉嫌抄袭的内容,欢迎发送邮件 举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。

标签:

相关文章

  • 聚亿科技完成过亿元B轮融资,加速医疗器械CDMO业务发展

    聚亿科技完成过亿元B轮融资,加速医疗器械CDMO业务发展

    近日,聚亿科技(上海)有限公司(以下简称“聚亿科技”)宣布完成超过1亿元B轮融资。 本轮融资由君联资本、元盛创投联合领投,华盖资本、泰煜资本跟投,老股东国药资本继续跟投。 本轮融资将帮助聚亿科技加快医疗器械CDMO能力建设和医疗向产业转型布局,推动相关业务的进一步

    06-17

  • 欧盟宣布《芯片法案》计划大幅增加芯片产量份额

    欧盟宣布《芯片法案》计划大幅增加芯片产量份额

    当地时间2月8日,欧盟委员会宣布备受外界关注的《芯片法案》,计划大幅增加芯片产量份额。 欧盟在全球芯片产量中所占的份额。 根据该法案,欧盟将投入超过1亿欧元的公共和私人资金来支持芯片生产、试点项目和初创企业。 其中,1亿欧元将用于加强现有的研究、开发和创新,以确

    06-08

  • 中科深度智能创始人程伟中:用表情和动作赋予元宇宙“真正的活力”

    中科深度智能创始人程伟中:用表情和动作赋予元宇宙“真正的活力”

    虚拟人,又称数字人,通过3D建模创建图像,结合AI、MR技术、实时渲染、而云计算等技术手段让虚拟人可以实时互动。 早期,虚拟人多应用于动漫游戏领域。 随着AI深度学习的突破,虚拟人技术不断进步,企业家们开始了更多的商业化尝试。 这两年,市场需求已经不再满足于好看的车

    06-17

  • 日本人真的很擅长用无人机撑伞

    日本人真的很擅长用无人机撑伞

    无人机可以拍照、打环、撒农药,但有多少人会想到它们也能撑伞呢?这群来自日本的家伙想到了并做到了。 他们来自日本栃木县小山市的朝日电力服务软件公司。 他们开发的无人机雨伞将无人机与普通雨伞结合在一起,让用户不用自己打伞。 社长铃木健治表示,他们之所以设计这款无

    06-18

  • 江苏省出台促进集成电路产业发展多项政策

    江苏省出台促进集成电路产业发展多项政策

    省政府印发关于进一步推动集成电路产业高质量发展若干政策的通知(苏政条例〔〔〕2号)各市县(市、区)人民政府,省政府各委、办、局、省直单位:《关于进一步促进集成电路产业高质量发展的若干政策》现印发给你们,请认真贯彻执行。 2020年1月19日,江苏省人民政府(本文件

    06-18

  • 东北地区面膜IPO刚刚诞生,敷尔佳市值300亿

    东北地区面膜IPO刚刚诞生,敷尔佳市值300亿

    刚刚,东北又诞生了面膜IPO。 投资界-天天IPO获悉,今日(8月1日),哈尔滨敷尔佳科技股份有限公司(简称“敷尔佳”)正式登陆深交所,发行价55.68元/股,涨幅40%开盘价,市值一度突破亿元。 元。 敷尔佳的创始人是哈尔滨人——张立国。 张立国早年经商,做起了医药代理和批

    06-18

  • 奇瑞集团:上半年销量42.45万辆,同比增长80.4%

    奇瑞集团:上半年销量42.45万辆,同比增长80.4%

    奇瑞集团:上半年销量42.45万辆,同比增长80.4%。 奇瑞控股集团今天发布了销售报告。 6月集团销售8辆,同比增长58.3%,继续保持今年以来的快速增长。 1-6月,集团共销售汽车57辆,同比增长80.4%。 其中出口海外43台,同比增长0.4%;新能源汽车销售1辆,同比增长0.9%。

    06-18

  • 新闻 -富士康联手三家公司组建规模达1亿美元的早期风险投资基金

    新闻 -富士康联手三家公司组建规模达1亿美元的早期风险投资基金

    投资圈(ID:pedaily)8月29日消息,据包括富士康在内的外媒报道(((Foxconn)) ),四家在威斯康星州运营的公司今天宣布,将设立一个 1 亿美元的企业风险投资基金,以加速该州科技生态系统的建设。   据悉,苹果供应商富士康、保险供应商Northwestern Mutual、医疗保健供

    06-18

  • 8月份芯片交货时间延长至21周左右

    8月份芯片交货时间延长至21周左右

    全球芯片短缺的情况是否有所好转?答案可能会让很多人失望。 据海纳金融集团最新公布的数据显示,8月份芯片交付时间较上月增加6天,拉长至约21周,这是今年以来最长的交付时间。 Susquehanna分析师Chris Rolland表示,Broadcom和Analog芯片的交货时间有所延长,但电源管理和光

    06-08

  • 奥运的小蓝人今年很流行,为体育赛事设计一个动态图标需要几步?

    奥运的小蓝人今年很流行,为体育赛事设计一个动态图标需要几步?

    不知不觉,东京奥运俱乐部即将结束。 在这16天的比赛中,来自各国的运动员创造了太多令人瞩目和难忘的时刻。 作为本届奥运大会的东道国,日本在开幕式上为各国观众带来了精彩的表演,同样令人印象深刻。 比如,“小蓝人”的体育偶像表演无疑是全场最出色的。 结合传统艺术“超

    06-21

  • 前险峰长青经理合伙人李黎成立Next Capital,专注于新金融和新零售的早期投资

    前险峰长青经理合伙人李黎成立Next Capital,专注于新金融和新零售的早期投资

    据投资界10月17日消息,前险峰长青经理合伙人李黎近日宣布成立Next Capital。 基金规模4亿元人民币,重点投资科技互联网早期创业项目。 投资阶段从天使轮到A轮,投资金额从1万元到1万元不等。   据悉,征途资本首支人民币基金是一只期限为10年的基金。 LP主要分为三类:一是

    06-18

  • 阿里用UC“赋能”内容生产者:媒体要有做“天猫”的准备和机会

    阿里用UC“赋能”内容生产者:媒体要有做“天猫”的准备和机会

    十多天前,那篇揭露东南“渔奴”现象获得普利策奖的报道亚洲被朋友圈刷爆了屏幕,很快就有人指出,如此重磅的报道在中国并不多见,传统媒体集体缺席。 那么这就引出了另一个更根本的话题:优质内容如何在渠道博弈中占据主动,精准传递给读者,进而获得回报,实现可持续生产?

    06-18