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

    文章

    3584

    浏览量

    89481
  • 嵌入式主板
    +关注

    关注

    7

    文章

    6087

    浏览量

    35672
收藏 人收藏

    评论

    相关推荐

    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>

    服务器数据恢复——Ext4文件系统umount失败的数据恢复案例

    为32字节,主要描述块位图、i-节点位图及i-节点表的地址等信息。 超级块(Superblock):用于存储文件系统的配置参数(块大小、总块数、i-节点数等)和动态信息(当前空闲块数和i-节点数)。Ext4
    的头像 发表于 11-13 13:25 459次阅读
    服务器数据恢复——Ext4<b class='flag-5'>文件系统</b>umount失败的数据恢复案例

    虚拟化数据恢复—UFS2文件系统数据恢复案例

    虚拟化数据恢复环境: SAN环境下通过iSCSI实现FreeNAS,FreeNAS采用的UFS2文件系统。物理存储架构在一台服务器上,另外两台服务器上安装ESXi虚拟化系统。整个存储建立一个稀疏
    的头像 发表于 11-11 11:02 238次阅读

    读懂MSA(测量系统分析)

    读懂MSA(测量系统分析)
    的头像 发表于 11-01 11:08 1127次阅读
    一<b class='flag-5'>文</b>读懂MSA(测量<b class='flag-5'>系统分析</b>)

    服务器数据恢复—EXT3文件系统下误删除数据的恢复案例

    服务器数据恢复环境: 邮件服务器中有一组由8块盘组成的RAID5阵列, 上层是Linux操作系统+EXT3文件系统。 服务器故障: 由于误删除导致文件系统中的邮件数据丢失。
    的头像 发表于 10-23 15:11 226次阅读
    服务器数据恢复—EXT3<b class='flag-5'>文件系统</b>下误删除数据的恢复案例

    测量系统分析

    电子发烧友网站提供《测量系统分析.doc》资料免费下载
    发表于 10-10 11:46 0次下载

    电路原理 电力系统分析电力电子电磁学

    电路原理 模电数电电力电子电磁学 PLC电力系统 电力系统分析
    发表于 10-07 16:21

    Linux根文件系统的挂载过程

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

    时钟噪声对DAC性能影响系统分析

    电子发烧友网站提供《时钟噪声对DAC性能影响系统分析.pdf》资料免费下载
    发表于 09-26 09:14 0次下载
    时钟噪声对DAC性能影响<b class='flag-5'>系统分析</b>

    ubuntu删除的文件怎么恢复

    : Ubuntu文件系统概述 Ubuntu是一个基于Linux的操作系统,其文件系统Windows系统有所不同。在Ubuntu中,
    的头像 发表于 08-30 15:10 1885次阅读

    如何修改buildroot和debian文件系统

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

    linux--sysfs文件系统

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

    浅谈现场总线的智能照明系统分析与应用研究

    浅谈现场总线的智能照明系统分析与应用研究 张颖姣 安科瑞电气股份有限公司 上海嘉定 201801 【摘要】:科学技术的发展使得照明控制的方法不断发生改变,近年来照明控制系统大多在现场总线的基础上实现
    的头像 发表于 02-26 09:29 609次阅读
    浅谈现场总线的智能照明<b class='flag-5'>系统分析</b>与应用研究

    【服务器数据恢复】异常断电导致UFS2文件系统故障的数据恢复案例

    一台服务器通过FreeNAS(本案例使用的是UFS2文件系统)实现iSCSI存储,整个UFS2文件系统作为一个文件挂载到ESXi虚拟化系统(安装在另外2台服务器上)上。该虚拟化
    的头像 发表于 02-22 14:48 659次阅读
    【服务器数据恢复】异常断电导致UFS2<b class='flag-5'>文件系统</b>故障的数据恢复案例