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

    文章

    3717

    浏览量

    133156
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    3A6000四核龙芯工控主板,推动信工控深度融合

    当今信科技快速发展,技术的不断演进和市场需求的变化,在工控领域也在进行源源不断地创新,其中最引人注目的是国产龙芯主板在其中的发展应用。
    的头像 发表于 11-14 09:10 224次阅读

    睿擎派文件系统指南:从开发到发布全流程实践 | 技术解析

    发布阶段的镜像打包,为开发者提供了全面的支持。本文将详细介绍睿擎平台文件系统的综合使用方法。一、睿擎平台文件系统设计1.1睿擎平台存储布局概览睿擎平台采用了清晰的
    的头像 发表于 11-05 18:13 7741次阅读
    睿擎派<b class='flag-5'>文件系统</b>指南:从开发到发布全流程实践 | <b class='flag-5'>技术</b>解析

    新时代的硬核基石:龙芯工控主板助力信产业新基建

    在数字技术重塑产业格局的今天,信产业已成为保障国家信息技术安全的核心战略。作为工业自动化系统的大脑,工控
    的头像 发表于 11-05 13:54 146次阅读

    智慧新核心,龙芯主板助力信体系再升级

    信息技术飞速发展的当下,信体系的自主可控与创新升级已成为国家战略层面的关键任务。作为信产业发展的重要基础硬件支撑,国产工控主板正发挥着
    的头像 发表于 08-11 09:14 578次阅读

    Linux三大主流文件系统解析

    还在为选择哪个文件系统而纠结?作为一名摸爬滚打多年的运维老鸟,我将用最接地气的方式,带你彻底搞懂 Linux 三大主流文件系统的奥秘。
    的头像 发表于 08-05 17:37 1102次阅读

    飞凌嵌入式ElfBoard ELF 1板卡-文件系统简介

    文件系统进行裁剪或者定制,也可以从头开始构建。9.2 文件系统类型简单介绍一些常用的几种linux系统类型:ramdisk、cramfs、jffs2、yaffs/yaffs2、ubif
    发表于 06-19 17:22

    科普|信是什么?一文读懂“信息技术应用创新”战略

    什么是信?信,即“信息技术应用创新”,是国家推动IT系统自主可控、安全可控的重要战略工程。它不仅是技术层面的创新,更承载着保障国家网络安
    的头像 发表于 06-13 10:06 6551次阅读
    科普|信<b class='flag-5'>创</b>是什么?一文读懂“<b class='flag-5'>信息技术</b>应用创新”战略

    服务器数据恢复—ocfs2文件系统被格式化为Ext4文件系统的数据恢复案例

    服务器存储数据恢复环境&故障: 人为误操作将Ext4文件系统误装入一台服务器存储上的Ocfs2文件系统数据卷上,导致原Ocfs2文件系统被格式化为Ext4文件系统
    的头像 发表于 06-10 12:03 573次阅读
    服务器数据恢复—ocfs2<b class='flag-5'>文件系统</b>被格式化为Ext4<b class='flag-5'>文件系统</b>的数据恢复案例

    飞凌嵌入式ElfBoard ELF 1板卡-uboot常用命令之文件系统命令

    uboot支持fat格式、ext格式的文件系统。我们主要讲解fat格式文件系统常用命令使用。 一、fatinfo fatinfo显示选中的mmc设备指定分区的
    发表于 05-26 17:32

    浪潮下,国产主板有什么新的发展机遇?

    信息技术应用创新浪潮的推动下,国产主板迎来了诸多新的发展机遇。信产业旨在实现信息技术领域的自主可控,这一战略目标为国产主板的发展提供了广
    的头像 发表于 05-09 09:24 585次阅读
    信<b class='flag-5'>创</b>浪潮下,国产<b class='flag-5'>主板</b>有什么新的发展机遇?

    NFS网络文件系统深度解析

    NFS:Network File System 网络文件系统,基于内核的文件系统。Sun 公司开发,通过使用 NFS,用户和程序可以像访问本地文件一样访问远端系统上的
    的头像 发表于 03-01 14:15 1195次阅读

    防止根文件系统破坏,OverlayRootfs 让你的设备更安全

    OverlayRootfs介绍OverlayRootfs是指利用OverlayFS技术创建的根文件系统(rootfilesystem)。OverlayFS是一种联合文件系统(Union
    的头像 发表于 01-08 16:33 2488次阅读
    防止根<b class='flag-5'>文件系统</b>破坏,OverlayRootfs 让你的设备更安全

    EE-329:在SHARC处理器上运行FAT16文件系统和DOS命令

    电子发烧友网站提供《EE-329:在SHARC处理器上运行FAT16文件系统和DOS命令.pdf》资料免费下载
    发表于 01-06 14:22 0次下载
    EE-329:在SHARC处理器上运行<b class='flag-5'>FAT</b>16<b class='flag-5'>文件系统</b>和DOS命令

    EE-289:在ADSP-BF533 Blackfin处理器上实现FAT32文件系统

    电子发烧友网站提供《EE-289:在ADSP-BF533 Blackfin处理器上实现FAT32文件系统.pdf》资料免费下载
    发表于 01-05 09:13 0次下载
    EE-289:在ADSP-BF533 Blackfin处理器上实现<b class='flag-5'>FAT</b>32<b class='flag-5'>文件系统</b>

    瑞芯微开发板/主板Android系统APK签名文件使用方法,实用干货

    瑞芯微主板/开发板Android系统,APK系统签名文件使用方法
    的头像 发表于 12-26 09:43 1515次阅读
    瑞芯微开发板/<b class='flag-5'>主板</b>Android<b class='flag-5'>系统</b>APK签名<b class='flag-5'>文件</b>使用<b class='flag-5'>方法</b>,实用干货