技术天地

WinCE6系统CEDB故障分析作者:杨阳    发布时间:2018-1-22 10:20:15    被阅览数:

  在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)“\NandFlash\Documents and Settings\default.vol”文件变大

  请参考文档《CE6.0内置数据库CEDB的异常检测与修复》解决该故障。


  2、在产品发布时请使用release版本程序,不使用debug版本程序。release版本程序不带调试信息,exe大小也会明显小于debug版本程序。


  英创提供测试程序源代码,有需要的客户可以联系英创工程师获得,验证该问题。

Go Top