0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看威廉希尔官方网站 视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

英创信息威廉希尔官方网站 工控主板FAT文件系统的稳健读写方法介绍

英创信息威廉希尔官方网站 来源:英创信息威廉希尔官方网站 作者:英创信息威廉希尔官方网站 2020-01-16 09:33 次阅读

在基于WinCE的嵌入式系统中,通常NandFlash + FAT文件系统是最为常用的数据存储方式。对这类设备长期运行情况的跟踪,我们发现在一定的应用情况下,FAT文件系统存在失效的可能,而文件系统的失效导致系统在重启中不能读取系统注册表或应用程序文件,宏观的现象就是设备不能正常运行。

经过对FAT文件失效情况的分析,我们发现出现失效的系统往往有以下两种文件操作:

1、需要保存运行日志文件,每条日志记录大约两百字节水平,整个日志文件可包含上万条记录,即日志文件大小在2MB水平。应用程序对日志的操作是随机的。

2、系统有一个容量上兆的配置文件,应用程序可能根据运行的情况,动态修改配置的内容。

以上这两种文件操作,对NandFlash + FAT的存储单位,由于文件都比较大,都可能导致大规模的NandFlash块擦除及数据搬动。当此时CPU负载还比较重时,FAT文件系统内部的某种缺陷就可能暴露出来,从而危害设备的稳定运行。

针对上述两种应用的特点,以规避FAT文件系统出现致命缺陷为目的,我们设计了一层新的文件操作API函数,来替代常规的文件API函数。新的API包括以下6个函数:

• HANDLE CreateFileEm(……);
• BOOL ReadFileEm(……);
• BOOL WriteFileEm(……);
• DWORD SetFilePointerEm(……);
• DWORD GetFileSizeEm(……);
• BOOL CloseHandleEm(……);

这6个API函数的名称与对应的常规函数名称基本一致,只是在末尾增加了“Em”两个字母以示区别,函数的参数与常规函数的参数则完全一致。应用程序只需做简单的修改,就可使用我们所提供的新方法。

新的文件操作的要点,是把一个日志文件或配置文件,映射为NandFlash下的子目录,文件的内容则分成若干个子文件(以下称为量子文件,以表示它的不可分割性),量子文件按序号0000依次递增9999,每个量子文件的大小为NandFlash的扇区大小,在英创工控主板中NandFlash的扇区Size为2KB,当前量子文件写满2KB后,会自动生成当前序号+1的新量子文件。API内部建有当前量子文件的数据缓冲区,当读写仅限于当前量子文件大小(即2KB)时,不会产生实质性的NandFlash读写,从而降低NandFlash的读写负担。即使进行实质性的写操作,因为总是2KB,FAT文件系统的工作量也被降到最低。

新的API函数尽管可支持不同线程操作同一文件,但若出现不同线程对同一个量子文件进行读写操作,则可能存在数据丢失的情况、读取的数据不是最新数据的情况。因此应用程序应尽量避免不同线程对同一个量子文件进行读写操作。

在200MHz主频的CE5.0系统中(如 EM9160、EM9360等),新API函数的文件写操作的平均速度在90KB/s – 95KB/s范围,文件读操作的平均速度在600KB/s – 700KB/s范围。

一般情况下若写入的数据处在一个量子文件大小区域内,为了提高NandFlash的操作效率,不会立即触发实质性的NandFlash写。但之后一定时间内(设置为2秒),没有进一步的写操作,新API的后备线程会自动把应用程序写入的数据实质性写入NandFlash的对应量子文件中。因此这里存在,在实质性写入发生之前,系统由于某种情况出现重启(Power Cycling),应用程序写入的数据就会丢失的情况。这是为避免致命性错误,应用程序需付出的代价。

更极端的情况,当正在实质性写某一量子文件时,系统出现Power Cycling,还可能存在该量子文件被破坏的情况。但这种情况在常规写中同样存在,且被破坏的还是整个文件。因此新API是Power Cycling对整个数据的损坏度是降低了的。

更重要的是,在系统进入稳定运行后,量子文件的数目瞬间不会有大的变化,甚至完全没有变化(配置文件情形,或日志文件达到应用程序设置的上限),这样新的API对FAT文件系统的FAT表、目录区的负载会降到最低,从而大大避免FAT文件系统的关键区域被Power Cycling破坏的可能性。这是新API规避FAT文件系统缺陷的关键所在。

新API的定义包含在“LogFile.h”头文件中,具体实现代码则在“LogFile.cpp”中,对客户应用程序,只需简单的把LogFile.cpp加入到应用程序中,并在相关的cpp文件中include头文件LogFile.h,就可方便的测试评估该方法了。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 嵌入式系统
    +关注

    关注

    41

    文章

    3587

    浏览量

    129440
收藏 人收藏

    评论

    相关推荐

    ​什么是国产工控主板,国产工控主板的特点有哪些?

    什么是国产工控主板呢?国产工控主板是工业计算机的主板,是一种计算机系统的硬件设备,是专门为工业控
    的头像 发表于 11-07 10:29 177次阅读

    国产工控主板,信产业发展新引擎

    在当今科技飞速发展的时代,信产业正成为国家战略的重要支撑。而我们的国产工控主板,以其卓越的性能和可靠的品质,为信产业的发展注入强大动力。国产工控
    的头像 发表于 11-06 10:29 210次阅读

    中科达荣获2024年软件和信息威廉希尔官方网站 服务优秀企业

    及前百家企业”名单。中科达凭借非凡的威廉希尔官方网站 实力与持续的创新能力,成功入选“2024年度软件和信息威廉希尔官方网站 服务竞争力百强企业”以及“2024年软件和信息威廉希尔官方网站 服务优秀企业”。
    的头像 发表于 10-30 11:44 467次阅读

    工控机重装系统方法介绍

      工控机怎么重装系统工控机重装系统方法介绍攻略   首先看下自己购买的什么
    的头像 发表于 10-23 17:11 293次阅读

    Linux根文件系统的挂载过程

    Linux根文件系统(rootfs)是Linux系统中所有其他文件系统和目录的起点,它是内核启动时挂载的第一个文件系统
    的头像 发表于 10-05 16:50 408次阅读

    国产化背景下的工控主板发展现状

    ,是信息威廉希尔官方网站 应用创新产业的简称,于2016年“信工委会”(信息威廉希尔官方网站 应用创新工作委员会)提出,目的就是要推动我们国内软硬件关键威廉希尔官方网站 的研发
    的头像 发表于 09-21 16:15 385次阅读

    如何修改buildroot和debian文件系统

    本文档主要介绍在没有编译环境的情况下,如何修改buildroot和debian文件系统方法,如在buildroot文件系统中添加文件、修改目
    的头像 发表于 07-22 17:46 458次阅读
    如何修改buildroot和debian<b class='flag-5'>文件系统</b>

    linux--sysfs文件系统

    sysfs文件系统 sysfs,全称为System Filesystem,是一个由Linux内核实现的虚拟文件系统。它扮演着一个桥梁的角色,将内核中的设备和驱动程序信息文件的形式呈现
    的头像 发表于 07-08 11:37 846次阅读
    linux--sysfs<b class='flag-5'>文件系统</b>

    使用wear_level api来安装fat文件系统,如何格式化FAT文件系统

    我使用wear_level api来安装fat文件系统。 在使用过程中发现,在向该地址中写入文件的时候断电,将导致这份文件之后无法操作,还会占用一个
    发表于 06-26 06:51

    工控主板的性能指标有哪些?

    工控主板是工业控制领域中的关键组成部分,它承载着工控系统的核心功能。因此,工控主板的性能指标是评
    的头像 发表于 05-10 16:27 900次阅读
    <b class='flag-5'>工控</b><b class='flag-5'>主板</b>的性能指标有哪些?

    通用FAT文件系统模块

     FatFs 是用于小型嵌入式系统的通用 FAT/exFAT 文件系统模块。FatFs模块按照ANSI C(C89)编写,与磁盘I/O层完全分离。因此它独立于平台。它可以集成到资源有限的小型微控制器中,例如 8051、PIC、A
    发表于 05-03 10:28 209次阅读
    通用<b class='flag-5'>FAT</b><b class='flag-5'>文件系统</b>模块

    工控主板和普通主板的区别有哪些

    工控主板和普通主板是两种在计算机硬件领域中常见的主板类型,它们在设计、功能和用途上有着明显的区别。工控
    的头像 发表于 04-25 16:54 1276次阅读
    <b class='flag-5'>工控</b><b class='flag-5'>主板</b>和普通<b class='flag-5'>主板</b>的区别有哪些

    CubeMx可以生成FAT32的文件系统吗?

    大家好!MCU型号:STM32L476R 我测试发现 CubeMX 生成的文件系统FAT16 的。请教一下,CubeMx 可以生成 FAT32 的文件系统吗?
    发表于 04-19 07:11

    Linux系统如何扩展文件系统

    当数据盘没有创建分区,只在设备上创建了文件系统。或者格式化了硬盘,就直接mount上系统使用。
    的头像 发表于 02-21 09:53 834次阅读

    鸿蒙轻内核源码分析:虚拟文件系统 VFS

    VFS(Virtual File System)是文件系统的虚拟层,它不是一个实际的文件系统,而是一个异构文件系统之上的软件粘合层,为用户提供统一的类 Unix 文件操作接口。由于不同
    的头像 发表于 02-18 14:50 813次阅读