在2017年4月份,英创公司发现了CEDB的故障,并发布了文章介绍如何解决该问题:《CE6.0内置数据库CEDB的异常检测与修复》。由于该故障较罕见,一直以来我们怀疑是由于调试程序时USB连接不稳定导致的。直到近期,英创公司通过大量实验,找到了触发CEDB故障的原因。本文将介绍我们的实验结果,为防止CEDB故障,希望客户注意:
使用WINCE6平台的客户,在产品发布时请使用release版本程序,不要使用debug版本程序。
实验情况
实验设备
实验使用英创各不同嵌入式主板,分两组,一组为WINCE6工控主板,ESM928x及EM9280。另一组为WEC7工控主板ESM335x。
实验程序
实验使用两组代码,一组代码使用MFC,带窗口界面。一组代码使用命令行工程,不带界面。两组代码分别用release模式和debug模式编译,共生产4个不同的应用程序。
两组代码均采用多线程对多个文件同时进行大量文件操作(每秒300次以上文件开关及读写操作)。保证CPU占用100%在满负荷工作。两组代码对文件操作量大致相同。
实验过程
让工控主板上电后自动执行实验程序。
在程序运行一定时间后对工控主板进行断电处理。
不断重复以上过程,并监测工控主板系统启动时内置CEDB是否出现错误数据,并记录错误数据条数。
测试时间为一天。
实验结果如下:
板卡 | 测试程序 | 测试结果 |
WinCE6主板 | MFC测试程序 Debug版 | 实验几分钟后CEDB即开始出现错误数据。 一日后,所有板卡均出现CEDB故障,启动速度明显变慢,CEDB无用数据均有几百条 |
WinCE6主板 | MFC测试程序 Release版 | 正常 |
WinCE6主板 | 命令行测试程序 Debug版 | 一日后,CEDB有出现几条错误数据。启动速度变化不明显 |
WinCE6主板 | 命令行测试程序 Release版 | 正常 |
WEC7主板 | MFC测试程序 Debug版 | 正常 |
WEC7主板 | MFC测试程序 Release版 | 正常 |
WEC7主板 | 命令行测试程序 Debug版 | 正常 |
WEC7主板 | 命令行测试程序 Release版 | 正常 |
实验表明:
CEDB故障均出现在WINCE6平台的工控主板上,这也和英创公司主板维修记录里的信息一致。
WINCE6工控主板运行Release版本的测试程序均没有出现CEDB故障,而运行DEBUG版测试程序后均出现CEDB故障。
MFC下DEBUG版测试程序更容易导致CEDB故障,可能是因为带界面程序CPU消耗相对更大。
测试发现当CPU处于满负荷状态下断电,才有一定几率导致CEDB内错误数据增加。而少量的CEDB错误数据对系统启动速度影响很小,所以CEDB故障不容易被发现。
解决办法
1、当出现CEDB故障时:
1)启动变慢
2)activesync连接故障
3)“NandFlashDocuments and Settingsdefault.vol”文件变大
请参考文档《CE6.0内置数据库CEDB的异常检测与修复》解决该故障。
2、在产品发布时请使用release版本程序,不使用debug版本程序。release版本程序不带调试信息,exe大小也会明显小于debug版本程序。
英创提供测试程序源代码,有需要的客户可以联系英创工程师获得,验证该问题。
更多回帖