当前位置: 代码迷 >> VxWorks >> 高分引导时挂死在starting at 0x308000.
  详细解决方案

高分引导时挂死在starting at 0x308000.

热度:3462   发布时间:2013-02-26 00:00:00.0
高分求助:引导时挂死在starting at 0x308000...
tornado2.2下面 VxWorks5.5 

CPU:Pentium4 chipset:intel 845GV+ICH4

问题:使用Pentium4的包,bootloader正常启动,界面挂死在starting at 0x308000...这个地方OS并未起来。



镜像vxworks已经加载,通过printf确定bootrom的usrroot()最后跳转到0x308000之前都没有问题,但是在usrConfig.c里面添加调试信息都没有输出,不能确定是死在OS里面哪个函数里了。

已经#define INCLUDE_PC_CONSOLE 了,我用的是软盘引导(bootrom、vxworks都放在软盘里),没有用网卡下载。

本站其它网站有类似帖子,我已经都试过,像disable cache、减少其它部件使系统精简都试过还是不行,这个问题还没有一个较好的解决办法。在allan0928发的相同贴中,说是修改PHYS_MEM_DESC sysPhysMemDesc [],已经找到问题,我不知道怎样改我的,我的是直接买好的研华工控机,做好的主板。

有没有人用相同配置硬件做过,BSP支持到ICH3 ICH4应该也没问吧。

请各位大侠给点建议如何解决这个问题! 任何建议我都非常感激! 谢谢各位!

------解决方案--------------------------------------------------------
不清楚楼主的环境,是不是可以按照这个思路理一理:
0x308000是个什么地址?按照楼主描述这应是os解压后的镜像存放地址,在跳os也就是"startng at...."前确认该地址的有效性和内容的正确性。地址有效性可重点检测ddr的mmu属性配置,内容有效性反汇编下编译时的镜像,在bootloader里打印出0x308000地址里的内容,比较下就很清楚了,重点确认解压os后的存储地址。
如果还不行,那可能镜像里的代码那句有问题了,在tty驱动未初始化前还不能打印,可以利用bootloader对uart模块的初始化,直接写uart的fifo实现简单打印,继续定位吧
------解决方案--------------------------------------------------------
会不会是vxworks下载不全,我曾碰到过一次
------解决方案--------------------------------------------------------
1. 在C:\Tornado2.2\target\config\all\bootConfig.c文件中看一下autoboot函数,以及autoboot函数里面的go(entry)函数

2. PHYS_MEM_DESC sysPhysMemDesc [],修改方法:
比如增加两个项了


/* // Add by qcj_21 at [2011-4-7 15:01:54] for LX3073 */
{
(void *) 0xe1014000, 
(void *)0xe1014000,
0x00010000,
VM_STATE_MASK_FOR_ALL,
VM_STATE_FOR_IO
},


/* // Add by qcj_21 at [2011-4-7 15:01:54] for PC */
{
(void *) 0xff8fc000, 
(void *)0xff8fc000,
0x00010000,
VM_STATE_MASK_FOR_ALL,
VM_STATE_FOR_IO
},



DUMMY_MMU_ENTRY,
DUMMY_MMU_ENTRY,
DUMMY_MMU_ENTRY,
DUMMY_MMU_ENTRY,
DUMMY_MMU_ENTRY,
DUMMY_MMU_ENTRY,
 /* DUMMY_MMU_ENTRY,*/ //这里要删除两个!
/* DUMMY_MMU_ENTRY,*/
------解决方案--------------------------------------------------------
另外编译bootrom和vxworks时,先不要包含你自己的板卡信息!只用客户自己提供的BSP!
像这种问题,也可以直接联系研华的技术支持!
  相关解决方案