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

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

3天内不再提示

英创信息技术Windows CE5.0文件系统分析

英创信息技术 来源:英创信息技术 作者:英创信息技术 2020-01-16 09:04 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

由于工控设备渐进变化的基本特征,Windows CE5.0仍然被大量的应用在当前的嵌入式主板中。英创公司的EM9160、EM9360等型号的工控主板也都继续预装CE5.0操作系统。由于CE5.0文件系统是基于微软的Windows95/98内核的FAT文件系统,当基于FAT的CE5.0文件系统应用到NAND Flash器件上时,NandFlash的以扇区为单元的读写方式、以及块为单元的擦除方式,有可能让CE5.0文件系统产生很大的NandFlash存储单元整理工作量。大规模的NandFlash整理将消耗很大一部分CPU时间,如果此时应用程序又有很重的数据存储的任务,在非常极端情况下,有可能导致CE5.0文件系统的FAT表损坏。本文则是针对这种情况,提出两种解决方法。

目前我们通常使用的NandFlash的逻辑结构有两种,一种是扇区(Sector)大小为512字节,一个块(Block)包括32个扇区,被称为小扇区结构;另一种是扇区大小为2048字节(即2KB),一个块包括64个扇区,这种结构的NandFlash通常称为大扇区。可以容易算出,文件系统对NandFlash的整理,大扇区的工作量是小扇区的8倍。因此在同样的运行条件下,大扇区结构的NandFlash对文件系统的负载就高得多。为了确定CE5.0文件系统的这个潜在问题,我们选用了EM9160的精简版,其基本配置为16-bit数据宽度 32MB内存+128MB大扇区NandFlash作为实验平台。采用16-bit数据宽度是让CPU的处理能力至少降低一倍,而128MB大扇区NandFlash为文件系统只提供了768个Block,从而更容易触发文件系统的后台整理进程。

我们的基本测试程序(即应用程序)是以低效率的小文件(一个文件大小不超过512字节,试验文件大小为180字节)为单位,256个小文件存放在一个目录中,总共256个目录循环写。同时在测试程序中启动一个定时线程,定时时间为5s – 100s之间的随机数,定时到时该线程强制重启系统,这样对文件系统施加一个随机重启的冲击。为了观察CPU的基本工作情况,测试程序主线程每2s从调试串口输出CPU负载率等系统信息。基本的试验情况如下:

1、CPU常规负载率在65%水平,当系统进行NandFlash整理时,负载率会上升至95%的水平,且最长时间会持续近10s。

2、经过连续24小时试验,大约有3%的主板的FAT表会损坏,导致系统启动失败。

在测试程序中采用的文件写方式是最直接的流程:

// CreateFile -> WriteFile -> CloseHandle

当所写的文件已经存在于NandFlash时,CE5.0的TFAT文件系统会以某种方式保留原文件,这样若在写文件过程中遇到系统重启,重启后系统还能恢复原来的文件。但这样做的代价是CE5.0文件系统会启动后台线程并行来处理这些老文件。经过大量的试验分析,我们相信正是这种类似的并行操作NandFlash的机制,可能存在某种缺陷,导致在极端情况下FAT的损坏。

根据上面的分析,我们的第一种处理方法,就是在应用程序中增加删除同名文件,再进行常规文件写流程,即:

// 第一种方法:

// DeleteFile -> CreateFile -> WriteFile -> CloseHandle

就可把原来需要后台并行处理的任务变成了应用程序线程顺序执行,从而大幅度减少多个线程并行操作NandFlash的情况。修改后的试验表明,FAT损坏率至少降低一个数量级以上,在目前的试验规模上已完全不能检测到FAT损坏的情况。

第一种方法是通过应用程序调整,来降低NandFlash操作的并行度,从而避免触发CE5.0文件的缺陷显现。但第一种方法还不能完全消除对NandFlash的并行操作,因为后台的整理总是存在的。由此产生第二种方法,就是通过监视CPU负载率,一旦CPU负载超过某个阈值,应用线程就暂停文件写操作,这样就能主动避免应用程序与后台并行操作NandFlash。其基本流程变成:

// 第二种方法:
bRet = g_pNandMonitor->EnterNandAccess(dwTimeout); // 获取NAND访问权
// 若bRet = TRUE,进入正常NAND操作:
// DeleteFile -> CreateFile -> WriteFile -> CloseHandle
g_pNandMonitor->LeaveNandAccess(); // 归还NAND访问权

在上述流程中,使用了我们构造的一个CPU负载率监控类NandFlashMonitor,当CPU负载率超过指定阈值时,应用线程调用EnterNandAccess函数,将导致应用线程阻塞(挂起)直至超时或CPU负载率低于指定阈值。采用CPU负载率监测手段后,可以看到在后台整理时段,CPU负载率从原来的95%的水平下降到85%的水平,说明在这个时段的应用程序的NandFlash确实是停掉了,同时也说明在这个时段分配给应用程序的资源实际是很少的,所以写文件的效率是很低的。采用延时写的方法,是不会对总体性能影响的。需要检测类NandFlashMonitor代码的客户,可邮件向英创技术支持索取。

总之,通过试验表明,CE5.0的TFAT文件系统对NandFlash管理策略上确实存在某种缺陷,在大扇区NandFlash及频繁文件操作的应用中,这种缺陷就可能对设备产生威胁。但我们也可以有充分的手段彻底规避这样的风险,同时又不降低系统的整体性能。

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

    关注

    4

    文章

    3697

    浏览量

    93231
  • 嵌入式主板
    +关注

    关注

    7

    文章

    6107

    浏览量

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

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    明晚8点|睿擎文件系统实战:从开发到发布全流程解析

    文件操作到镜像发布,一次直播掌握完整开发流程!在嵌入式系统开发中,文件系统是数据存储、配置管理和资源访问的核心基础。然而在实际开发中,文件操作效率低下、镜像打包流程复杂、
    的头像 发表于 11-11 11:53 376次阅读
    明晚8点|睿擎<b class='flag-5'>文件系统</b>实战:从开发到发布全流程解析

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

    在嵌入式系统开发中,文件系统扮演着至关重要的角色,它负责数据的持久化存储、配置文件管理和资源访问等核心功能。睿擎平台提供了一套完整的文件系统解决方案,从开发阶段的API调用到调试阶段的
    的头像 发表于 11-05 18:13 7698次阅读
    睿擎派<b class='flag-5'>文件系统</b>指南:从开发到发布全流程实践 | <b class='flag-5'>技术</b>解析

    技术贴|【RK3588】ELF 2开发板如何添加exFAT和NTFS文件系统格式

    如何通过系统配置实现对该两种文件系统的支持,并配置自动挂载功能。Windows系统格式化存储设备在使用TF卡前,需通过Windows自带工具
    的头像 发表于 08-27 17:21 3208次阅读
    <b class='flag-5'>技术</b>贴|【RK3588】ELF 2开发板如何添加exFAT和NTFS<b class='flag-5'>文件系统</b>格式

    Linux三大主流文件系统解析

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

    佛瑞亚如何通过信息技术推动业务增长

    在数字化、信息化的浪潮下,信息技术已经不仅是后台工具,更成为驱动企业发展的关键力量。本期Women Inspiring Mobility,我们采访了佛瑞亚中国区信息技术总监马瑛,了解她和团队如何将
    的头像 发表于 07-29 14:00 729次阅读

    龙TL3562-MiniEVM开发板试用体验】问题3 扩展ubuntu文件系统

    在ubuntu系统下,没放多少自定义的东西,报空间不够,原以为是内存不够,故换一个32G的SD卡作为根文件系统(其实根本原因是rootfs.img镜像大小,默认rootfs.img分区大小为6G,但
    发表于 07-08 22:11

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

    /3/4等,ELF 1开发板使用的是Ext3文件系统,每种文件系统类型都有自己的特性,下面我们逐一介绍一下。一、Ext2/3/4Ext全称Linux extended file system
    发表于 06-19 17:22

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

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

    服务器数据恢复—重装系统导致XFS文件系统分区丢失的数据恢复案例

    服务器数据恢复环境&故障: 一台服务器上通过磁盘柜+RAID卡组建的riad5磁盘阵列,服务器上层安装Linux操作系统,搭建XFS文件系统。服务器上层分配一个LUN,并划分了两个分区
    的头像 发表于 06-12 11:20 620次阅读
    服务器数据恢复—重装<b class='flag-5'>系统</b>导致XFS<b class='flag-5'>文件系统分</b>区丢失的数据恢复案例

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

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

    如何正确选择嵌入式文件系统

    Linux嵌入式系统中,文件系统和缓存机制常导致数据存储稳定性问题。本文通过案例分析原因,对比不同文件系统特性,为开发者提供优化建议,助力提升数据稳定性和
    的头像 发表于 03-17 11:35 863次阅读
    如何正确选择嵌入式<b class='flag-5'>文件系统</b>?

    NFS网络文件系统深度解析

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

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

    OverlayRootfs介绍OverlayRootfs是指利用OverlayFS技术创建的根文件系统(rootfilesystem)。OverlayFS是一种联合文件系统(UnionFS),允许将
    的头像 发表于 01-08 16:33 2456次阅读
    防止根<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处理器上运行FAT16<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处理器上实现FAT32<b class='flag-5'>文件系统</b>