高分求助,急!CE系统启动问题!

zzz1589 2008-09-01 10:45:39
CE系统经常启动不起来,开始都能启动,断电后再隔上几秒系统就起不来了,原来给别人供过小批量,现在再供就出现这个问题,软件硬件都是原来的,这批板子把RTC晶振,音频模块,USB DEVICE去掉了,出现问题后又加上了,可还是有问题,请各位大哥大姐救命!我用的是s3c2440+WINCE4.2!下面是几次的调试信息,求各位达人帮忙看看问题在哪!
这个是系统起来的正常的调试信息:
Windows CE Firmware Init
INFO: Initializing system interrupts...
INFO: Initializing system clock(s)...
INFO: Initializing driver globals area...
InitSDMMC()
-----triger SD card!-----
OEMInit Done...
Sp=ffffc7cc
OEMSetRealTime: Year: 2006, Month: 1, Day: 1, Hour: 12, Minute: 0, second: 0 rcnr=1h
OEMSetRealTime(register): Year: 6, Month: 1, Day: 1, Hour: 12, Minute: 0, second: 0 rcnr=1h
OEMSetAlarmTime: Year: 2006, Month: 1, Day: 1, Hour: 12, Minute: 0, second: 0 rcnr=0h
r
---------------Enable alarm RTC-----------------
PWR: Process Attach
OEMInterruptEnable()
-----SYSINTR_POWER----OEMInterruptEnable-----
………………………………………………以下省略

这个也是能够起来的调试信息:和上面比较没有显示rtc部分的信息:
Windows CE Firmware Init
INFO: Initializing system interrupts...
INFO: Initializing system clock(s)...
INFO: Initializing driver globals area...
InitSDMMC()
-----triger SD card!-----
OEMInit Done...
Sp=ffffc7cc
PWR: Process Attach
OEMInterruptEnable()
-----SYSINTR_POWER----OEMInterruptEnable-----
……………………………………………………………………以下省略


这个是出现问题的调试信息:停在Sp=ffffc7cc就不往下执行了
Windows CE Firmware Init
INFO: Initializing system interrupts...
INFO: Initializing system clock(s)...
INFO: Initializing driver globals area...
InitSDMMC()
-----triger SD card!-----
OEMInit Done...
Sp=ffffc7cc
...全文
412 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
qclzdh 2010-09-20
  • 打赏
  • 举报
回复
mark
congyue123 2009-08-18
  • 打赏
  • 举报
回复
呵呵,关注,我也碰到了这个问题。
wangxin_801115 2009-03-20
  • 打赏
  • 举报
回复
遇到相同问题
试试!
gooogleman 2009-01-21
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 szy41 的回复:]
LogPtr = (fslog_t *)PAGEALIGN_UP ((pTOC->ulRAMFree+MemForPT)| 0x20000000);

if (fForceCleanBoot || (LogPtr->magic1 != LOG_MAGIC)) {
[/Quote]


..............
[Quote=引用 4 楼 hhyh612 的回复:]
哦这个是因为内存里的数据掉电引起的

WinCe认为Warm Reset内存中的东西不会丢失,所以它在启动时检查一个Signature,如果符合它认为内存中的数据都还在,所以不再初始化
相反就认为是cold Reset,重新初始化内存管理的数据结构

现在的情况是你Cold Reset了,但是内存掉电不完全,导致Signature还在而内存中的其他数据已经被破坏了

解决的方法有两个种
1.断电后多等一会再启动
2.在OEMInit里调用NKForceCleanBoot强制Cold Boot
[/Quote]
真是太牛X了,原来早有人遇到这个问题。嘿嘿......
zzz1589 2008-09-02
  • 打赏
  • 举报
回复
问题解决,感谢各位,结贴!!
fangzheng2008 2008-09-01
  • 打赏
  • 举报
回复
有可能是USB驱动引起的,把USB驱动去掉,试式
billy14 2008-09-01
  • 打赏
  • 举报
回复
你看一下在你的引导代码里有没有清memory的内容,最好清一下,之前我也遇到过这种问题?
zzz1589 2008-09-01
  • 打赏
  • 举报
回复
楼上的能不能说的详细点,我也找到是那的问题,我把if里去掉了,换成了1,问题解决了,可不知道原因!4楼应该正解!!
szy41 2008-09-01
  • 打赏
  • 举报
回复
LogPtr = (fslog_t *)PAGEALIGN_UP ((pTOC->ulRAMFree+MemForPT)| 0x20000000);

if (fForceCleanBoot || (LogPtr->magic1 != LOG_MAGIC)) {
hhyh612 2008-09-01
  • 打赏
  • 举报
回复
哦这个是因为内存里的数据掉电引起的

WinCe认为Warm Reset内存中的东西不会丢失,所以它在启动时检查一个Signature,如果符合它认为内存中的数据都还在,所以不再初始化
相反就认为是cold Reset,重新初始化内存管理的数据结构

现在的情况是你Cold Reset了,但是内存掉电不完全,导致Signature还在而内存中的其他数据已经被破坏了

解决的方法有两个种
1.断电后多等一会再启动
2.在OEMInit里调用NKForceCleanBoot强制Cold Boot
zzz1589 2008-09-01
  • 打赏
  • 举报
回复
我发现在private下的loader.c文件中一个kernelfindmemory函数中在系统起来和起不来时进入了不同的if 和else中,正在努力看代码!!请知道这个函数的各位也指点指点!
  • 打赏
  • 举报
回复
从你的打印信息来看,RTC驱动的打印没出来就死掉了,会不会是你的RTC驱动的问题。你查一下你的OAL部分的代码,看看从OEMInit开始到RTC驱动之间都作了些什么,应改可以找到问题。

19,502

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 嵌入开发(WinCE)
社区管理员
  • 嵌入开发(WinCE)社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧