我的eboot没有成功引导系统,卡在Kernelfindmemory()函数里,如何解决
如题,使用PXA270+WCE5.0平台,系统刚进入NK不久就卡住了,停在kernelfindmemory()函数里了,如法继续添加打印语句进行跟踪,如何是好,Private目录可以编译码?有谁知道是怎么回事吗?
既然确定进了NK,那EBOOT的工作就应该完事了!
OEMCacheRangeFlush调用了么? 在里面打些log看看
另外,把出问题先后的log贴出来看看
还是要看看LOG啊,不然还是没有办法做详细的分析啊
private目录可以编译码?不知道怎么连接到loader.c?这个kernelfindmemory就在loader.c里头
除非WINCE自带的代码不满足的要求,否则不要修改微软的代码,
你的这个问题不要怀疑微软的代码,毕竟大家都成功使用的,从自己的代码着手,有什么不符合要求的改BSP。
楼主应该贴出调试信息这样好分析,270的eboot应该没问题已经调试时没发现什么问题?
引用: 引用 5 楼 fjwant168 的回复:
private目录可以编译码?不知道怎么连接到loader.c?这个kernelfindmemory就在loader.c里头
不能编译
老兄编译个debug的内核看看。
对,我也是编译了个Debug版本的,但是那个NK太大了(45M),而release版本的是28M,eboot以前支持的是32M,昨天我改了一下mainstoneII.h等头文件的bootflash的size,将32改成了64M,但还是没成功,从32M以后的都不能正常烧写,郁闷
好了,重新定义个工程,小系统,可以烧debug版本进去了,相关打印信息如下:
..
..(略)
--OEMInit
Error Reporting Memory Reserved.dump size=00020000
booting Windows CE Version 5.00 for(ARM)
&PTOC=80109d7c,ptoc=8065f478,ptoc->ulRAMFree=80b4c000,MemForPT=00000000
Configuring:primary pages:29835,Secondary pages:0,Filesystem pages=14917
就只有这么一点信息了,请问怎么回事了。
引用: 引用楼主 fjwant168 的回复:
? 如题,使用PXA270+WCE5.0平台,系统刚进入NK不久就卡住了,停在kernelfindmemory()函数里了,如法继续添加打印语句进行跟踪,如何是好,Private目录可以编译码?有谁知道是怎么回事吗?
可以编译的,不过,一般是不推荐。。。因为问题一般不会出在那里面。。。
好了,重新定义个工程,小系统,可以烧debug版本进去了,相关打印信息如下:
..
..(略)
--OEMInit
Error Reporting Memory Reserved.dump size=00020000
booting Windows CE Version 5.00 for(ARM)
&PTOC=80109d7c,ptoc=8065f478,ptoc->ulRAMFree=80b4c000,MemForPT=00000000
Configuring:primary pages:29835,Secondary pages:0,Filesystem pages=14917
就只有这么一点信息了,请问怎么回事了。
OEMInit调用KernelFindMemory()函数分割RAM区域
一般是不会出错在这个地方的,肯定是别的地方弄错了,,看看OEMInit
引用: 引用 13 楼 fjwant168 的回复:
好了,重新定义个工程,小系统,可以烧debug版本进去了,相关打印信息如下:
..
..(略)
--OEMInit
Error Reporting Memory Reserved.dump size=00020000
booting Windows CE Version 5.00 for(ARM)
&PTOC=80109d7c,ptoc=8065f478,ptoc->ulRAMFree=80b4c000,MemForPT=00000000
Configuring:primary pages:29835,Secondary pages:0,Filesystem pages=14917
就只有这么一点信息了,请问怎么回事了。
最后的信息就是Configuring:....么?
那你在你的OEMCacheRangeFlush函数里打log看,估计就是停在这里面了。
OEMCacheRangeFlush函数没有打印信息出来,所以我也不知道是否进入到了OEMCacheRangeFlush函数去了
本想在OEMCacheRangeFlush函数前加打印信息,但这都是在private目录的代码,无法添加打印信息,编译不了,所以就。。。。
在private目录,在kernelfindmemory()里添加打印信息
程序卡在Carvmem()函数里了
是什么原因啊
有人知道吗?,还在carvmem()里,没有进入OEMCacheRangeFlush(),怎么回事
引用: 引用 18 楼 fjwant168 的回复:
有人知道吗?,还在carvmem()里,没有进入OEMCacheRangeFlush(),怎么回事
不要轻易去怀疑ms的代码,仔细想一下自己的内存配置还有哪个地方可能有问题