tornado2.2下面 VxWorks5.5.1
目标板:Pentium M ICH4
使用Pentium4的包,bootloader正常启动,界面挂死在starting at 0x308000...这个地方,按键键盘灯不能熄灭,OS并未起来。
跟踪调试过sysInit已经进去了,证明的确是挂死在OS里面,但是在usrConfig.c里面添加调试信息都没有输出,不能确定是死在OS里面哪个函数里了。
已经#define INCLUDE_PC_CONSOLE 了
请各位大侠给点建议如何解决这个问题! 任何建议我都非常感激! 谢谢各位!
------解决方案--------------------------------------------------------
你改用Pentium的bsp试试,应该是bsp不支持某些硬件造成的
尽量少加载组件,能启动以后再慢慢添加组件
------解决方案--------------------------------------------------------
看是不是这种情况:
Attached TCP/IP interface to fei0.
Warning: no netmask specified.
Attaching network interface lo0... done.
ready to load the vxworks image
Loading... 9000272
Starting at 0x00038000
vxworks执行到这里就没有下文, 停在这里了, 对于我的平台可能是有些不标准, 是Cache的问题, 我enable cache的时候比较靠前。 如果disable cache后就能成功启动了。
还有一种方法就是把cache enable放到比较usrKernelInit 后面的地方。
usrKernelInit ();
usrCacheEnable ();
修改
config/comps/vxworks/00vxWorks.cdf
/* INITIALIZATION ORDER */
InitGroup usrInit {
PROTOTYPE void usrInit (int startType)
SYNOPSIS pre-kernel initialization
INIT_ORDER INCLUDE_SYS_START \
INCLUDE_CACHE_SUPPORT \
INCLUDE_EXC_HANDLING \
INCLUDE_SYSHW_INIT \
INCLUDE_WINDVIEW_CLASS \
INCLUDE_KERNEL \
INCLUDE_CACHE_ENABLE
}
------解决方案--------------------------------------------------------
我也碰到类似问题。现在解决了。我的问题出在 sysLib.c 文件的存储区描述表上面:
PHYS_MEM_DESC sysPhysMemDesc []。 这是借用了他人板的BSP,所以里面有一个宏定义与我自己的板子的不一致(我的板子没有那段区域),导致有一块存储区越界。
程序执行到 0x10000,就无下文了。也没有错误输出信息。采用追踪VXWORKS源代码的方式,追踪到这个问题。