2011-09-28 64 views
0

我们有一个成熟的Wince 6.0 R2定制设备,能够通过WiFi下载文件并将它们存储在NAND闪存FAT文件系统分区中。这已经在全世界超过15000台设备上运行了一年多,但最近在一些用于新软件和操作系统版本的测试系统上,我们已经看到一些文件系统损坏,其中特定目录似乎具有递归链接顶级\ Flash内容。特别是,我们有一个\ Flash \ Manifest目录,其中包含一个名为GCMaps的子目录。通常这包含许多地图图像,但是当发生损坏时,它还包括所有高级别的\ Flash文件和子目录,以明显的递归循环,例如, \ Flash \ Manifest \ GCMaps \ program.exe和\ Flash \ Manifest \ GCMaps \ Manifest \ GCMaps \ Manifest ...Wince 6.0文件系统损坏 - 目录似乎在递归

它始终是相同的目录有问题,它发生在我们的多个设备上测试机架,尽管我们的许多测试设备完全不受影响。我可以通过重新格式化文件系统分区或擦除整个闪存设备,重新分区,重新刷新操作系统以及重新创建文件系统来暂时修复受影响的设备。但受影响的设备在几天内继续发展腐败。

最近的测试显示,在多次更改Manifest文件后,文件系统保持不变,但随后我们在午夜自动重启,启动时,一些受影响的设备出现问题。

奇怪的是,我们最近没有更改任何清单下载或集成逻辑,也没有任何与GCMaps有任何关系。我最近做出的一个主要改变是移除Windows Shell并以“Kiosk Mode”运行我们的设备,我们的应用程序是唯一的UI。

有没有人在CE上遇到这种递归目录损坏,如果是的话,你找到了解决方案吗?是否有任何理由删除壳可能导致这种情况?任何建议或信息将不胜感激!

感谢, 里奇·琼斯

+0

我很怀疑这是冲洗问题,因为我不缺少文件和文件不会自己损坏。相反,我得到一个始终在一个特定子目录下出现的目录结构的循环引用。 FAT在读取过程中可能被损坏吗?这就是我们在损坏发生时用特定目录中的文件所做的所有事情。 – rjones54

+1

如果你想添加一些你的问题,编辑它,而不是发表评论。 –

回答

0

FAT是容易滋生腐败,如果你重新启动之前不刷新文件系统缓存(或者,如果你强行关闭设备)。这适用于使用FAT的PC和其他设备。所以可能是重新启动导致问题。删除shell可能是相关的或不相关的 - shell可能会定期执行一些刷新操作,这可以帮助您避免此问题。

+0

感谢您的输入!我忽略了提到最后一次写入和重新启动之间的时间长达数小时,所以我不认为文件系统缓冲区仍然没有被清除,除非shell像之前指出的那样负责了这一点。我肯定会加入强制刷新,尽管我也看到了在HKEY_LOCAL_MACHINE \ System \ StorageManager \ FATFS中将“EnableCache”设置为“0”的建议,以完全禁止缓存。有谁知道这是一个好主意吗? – rjones54

+0

@ rjones54关于禁用缓存 - 您需要衡量性能,因为答案取决于您的使用场景。 –