完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
CEDB简介 CEDB是一个功能简单的WINCE系统内置数据库,WINCE系统里使用CEDB生成多个数据库来存储一些简单的系统信息。比如回收站信息,还比如“事件-应用”对应表。 “事件-应用”对应表由调用CeRunAppAtEvent函数产生,设置系统收到指定事件event后执行指定的exe进程。比如用Visual Studio调试程序时需要连接USB,USB连接时,会产生NOtiFICATION_EVENT_RS232_DETECTED事件,系统便会启动repllog.exe进行调试方面设置。 系统CEDB数据库异常现象 我们发现系统CEDB数据库中,“事件-应用”对应表在日常调试时,有极小概率出现数据库异常。当该数据库数据异常时: 1、会出现ACTIVESYNC连接故障,我们此前采用格式化nandflash来解决该故障:《WinCE下ActiveSync连接故障分析》。 2、在问题严重时,系统的启动会变得缓慢。 3、进一步,在启动时USBOTG处于连接状态,系统则会不停打印“+OEMSetAlARMTime”信息,且无法正常完成启动,系统重启。 产生原因 1、在调试时,如果USB连接不稳定,时断时连。系统可能错误的向“事件-应用”对应表添加重复的“NOTIFICATION_EVENT_RS232_DETECTED - repllog.exe”记录项。 2、重复的数据库记录项会重复启动repllog.exe进程,导致ACTIVESYNC设置失败。 3、ACTIVESYNC设置失败后,系统又会错误的继续向CEDB中添加重复的“NOTIFICATION_EVENT_RS232_DETECTED - repllog.exe”事件记录项。并且因为系统无法正确清理重复项,导致数据库不断变大。 4、最后该CEDB中存储了上千条重复项,因为系统启动时频繁检索数据库内所有项,过多的重复项导致系统在启动时非常缓慢。 5、系统启动缓慢到一定程序时,连接的USBOTG会导致数据库记录进一步出错。系统重复打印的“+OEMSetAlarmTime”即是CEDB在添加重复项时打印的信息。 解决方案 “事件-应用”对应表默认数据库文件为“NandFlashDocuments and Settingsdefault.vol”,重置该文件即可解决该问题。 格式化nandflash 见《WinCE下ActiveSync连接故障分析》,格式化nandflash后default.vol被重置,问题修复。但是nandflash下文件会被清空,注册表也会被重置。 清除CEDB多余项 调试API函数逐条清空数据项。 HANDLE *hNotifications = NULL; DWORD NumNotifications; DWORD Count; CeGetUserNotificationHandles( hNotifications, 0, &NumNotifications ); hNotifications = (HANDLE *)malloc( NumNotifications * sizeof( HANDLE *)); CeGetUserNotificationHandles( hNotifications, NumNotifications, &NumNotifications ); for( Count = 0; Count < NumNotifications, Count<100; Count++ ) { bRet = CeClearUserNotification(hNotifications[Count]); } free( hNotifications ); 因为CEDB访问速度较慢,清理起来时间很长,所以不建议采用该方法。 通过2次重启,删除default.vol文件 因为default.vol为系统文件,无法直接删除。所以可以通过以下办法单单删除default.vol文件,同时保留数据库文件及nandflash下其它文件。 1、判断CEDB里的数据是否有异常。如果异常,则执行恢复。 2、修改NandFlashDocuments and Settings目录为NandFlashDocuments and Settings0,并重启(重启之前无法对Documents and Settings里的文件进行操作)。 3、重启后,系统判断没有Documents and Settings目录,因此会重置生成一个新的Documents and Settings目录。至此,故障已经修复,但是注册表等其他文件也重置了,还需要以下步骤将Documents and Settings0里的注册表文件恢复回去。 4、删除default.vol文件。 修改新生成的NandFlashDocuments and Settings目录为NandFlashDocuments and Settings1。 修改原来的NandFlashDocuments and Settings0目录为NandFlashDocuments and Settings。 再次重启。 5、重启后,注册表重新恢复,Documents and Settings里其它文件保持原状态,只有default.vol文件进行了重置。 可以删除已经无用的多余的NandFlashDocuments and Settings1目录,腾出磁盘空间。 英创提供了修复程序及源代码,有需要的客户可以联系英创工程师获得。 |
|
相关推荐 |
|
只有小组成员才能发言,加入小组>>
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-23 18:55 , Processed in 0.698795 second(s), Total 43, Slave 32 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号