Chinaunix首页 | 论坛 | 博客
  • 博客访问: 345850
  • 博文数量: 97
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 636
  • 用 户 组: 普通用户
  • 注册时间: 2014-10-12 22:41
文章分类

全部博文(97)

文章存档

2017年(8)

2015年(87)

2014年(2)

我的朋友

分类: 嵌入式

2015-06-13 11:40:19

    wince系统在不掉电重启时,由于DDR下电不完全导致DDR中含有上次运行时残存的数据,在系统加载时,可能会导致驱动跑飞,访问存储越界等情况,系统无法正常启动。

具体表现为: 系统加载驱动时加载一半就停止,反复重启每次加载时死掉的位置都不同,可能有几次能进系统。
  
解决方案为: 在Eboot伊始对DDR进行清零操作,对DDR中除EBOOT存储区域外的地方进行清零。
具体操作为:在进入OEMPlatformInit函数后,对ddr中非eboot区域写入0,示例代码如下:
  

点击(此处)折叠或打开

  1. BOOL OEMPlatformInit(void)
  2. {
  3.     DM365_PLLC_REGS * pPll1Regs = (DM365_PLLC_REGS*)OALPAtoUA(DM365_PLLC1_REGS_PA);
  4.     DM365_PLLC_REGS * pPll2Regs = (DM365_PLLC_REGS*)OALPAtoUA(DM365_PLLC2_REGS_PA);
  5.      PUINT8 pVerifyChar = NULL;
  6.   
  7.        /*
  8.   * clean binfs
  9.   */
  10.  memset((char*)IMAGE_WINCE_CODE_PA,0,IMAGE_EBOOT_CODE_CA-1);
  11. .......


阅读(1053) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~