挂死在starting at 0x308000...

来源:互联网 发布:linux 如何查看nat 编辑:程序博客网 时间:2024/05/16 08:00

需要修改config.h文件,将

#define LOCAL_MEM_LOCAL_ADRS (0x00100000) 

修改成:

#define LOCAL_MEM_LOCAL_ADRS (0x00300000) 




以下是引用yzw999在2006-3-25 17:11:00的发言:

需要修改config.h文件,将

#define LOCAL_MEM_LOCAL_ADRS (0x00100000) 

修改成:

#define LOCAL_MEM_LOCAL_ADRS (0x00300000) 

我参照这个方法试了一下,还是一样的失败。

#define INCLUDE_PC_CONSOLE我已经改过了的。

但是网上有人说要在build VxWorks时include PC console项,我试过了,build时有ERROR。

还有人说“已经解决了上面的问题,的确是入口地址的定义出了问题,我默认的入口地址是0x108000,该过来就好了。”我不明白怎么改啊

还有的说“在makefile中把基地址0x100000改成0x300000,也就是说你的程序将要在308000开始执行,而bsp默认的是在108000开始执行,所以程序死了。”但是我不知道Makefile中的基地址是哪一项。

现在发现的问题是:

当死在Starting at 0x308000处时,主机ping不同目标机,但是ftp server上的信息示 get vxWorks image成功。

刚刚发现在启动过程中有这样的提示:0x2dd0d4(tboot) sysNVRamGet:Open failed。是不是这个引起的啊!

我的CPU是AMD的 不是pentium的 但是我用的是Tornado for pentium,会不会是这个原因。

综合以上,求高手分析一下,这个到底是什么原因,改怎么解决,以及还有什么要注意的地方,菜鸟的路上全是坎,就靠各位大哥帮忙了啊! 谢谢!




Buiid VxWorks 选项设置里面可以设置缺省入口地址,pentium目标机一般默认是0x108000,改成AMD默认的就行了



检查endDevTbl[]是否配置正确




1. 在C:\Tornado2.2\target\config\all\bootConfig.c文件中看一下autoboot函数,以及autoboot函数里面的go(entry)函数
2. PHYS_MEM_DESC sysPhysMemDesc [],修改方法:
比如增加两个项了

{
(void *) 0xe1014000,  
(void *)0xe1014000,
0x00010000,
VM_STATE_MASK_FOR_ALL,
VM_STATE_FOR_IO
},

{
(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,
  //这里要删除两个!
 



     我也碰到类似问题。现在解决了。我的问题出在  sysLib.c 文件的存储区描述表上面:
 PHYS_MEM_DESC sysPhysMemDesc []。  这是借用了他人板的BSP,所以里面有一个宏定义与我自己的板子的不一致(我的板子没有那段区域),导致有一块存储区越界。
    程序执行到  0x10000,就无下文了。也没有错误输出信息。采用追踪VXWORKS源代码的方式,追踪到这个问题。




看是不是这种情况:
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

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  
}




 

只要将PC console INCLUDE就ok了




问题在于你的启动盘,和vxworks无关。修改地址: #define RAM_LOW_ADRS  0x00108000 #define RAM_HIGH_ADRS  0x00008000 



我就是用自带的文件做的启动盘,按照你说的这样定义,就显示找不到boot.sys、boot.dat文件 清华bbs有个网友是这样说的 你的vxWork引导没有问题,问题在二次加载的Kernal(用的不是ROM_RESIDENT是吧),那里面的RAM_LOW_ADRS没有指定正确,以至于在初始化RAM时,初始化程序会将系统本身也干掉。 在Makefile 里加 -DRAM_DST_ADRS=0x$(RAM_LOW_ADRS)试试,注意RAM_LOW_ADRS不要和启 动映象中的地址冲突。 但是我不是很明白



什么选项?那是不起作用的。你的bsp肯定被人改过了,否则不会从0x308000启动的。 最简单的做法,重新安装tornado。要不,去拷贝一份原始的bsp。




auto-booting...
boot device elPci
unit number 0
processor number 0
host name: mar
file name: c:/Vxtemp/vxWorks
inet on ethernet (e) 192.168.0.50
host inet (h): 192.168.0.3
user (u) usr
ftp password (pw): usr
flags (f): 0x0
target name (tn) vxtarget

Attached TCP/IP interface to elPci0.
Warning: no netmask specified.
Attaching network interface lo0... done.
Loading... 664896
Starting at 0x308000...
启动到这超级终端没有任何消息

ftp server出现如下消息
[L 0004] 07/01/04 20:12:19 Connection accepted from 192.168.0.50
[C 0004] 07/01/04 20:12:19 Command "USER usr" received
[C 0004] 07/01/04 20:12:19 PASSword accepted
[L 0004] 07/01/04 20:12:19 User usr logged in.
[C 0004] 07/01/04 20:12:19 Command "TYPE I" received
[C 0004] 07/01/04 20:12:19 TYPE set to N
[C 0004] 07/01/04 20:12:19 Command "PASV" received
[C 0004] 07/01/04 20:12:19 Entering Passive Mode (192,168,0,3,4,60)
[C 0004] 07/01/04 20:12:19 Command "RETR c:/Vxtemp/vxWorks" received
[C 0004] 07/01/04 20:12:19 RETRieve started on file c:/Vxtemp/vxWorks
[C 0004] 07/01/04 20:12:20 Transfer finished
[G 0004] 07/01/04 20:12:20 Got file c:\Vxtemp\vxWorks successfully
[C 0004] 07/01/04 20:12:20 Command "QUIT" received
[C 0004] 07/01/04 20:12:20 QUIT or close user usr logged out

进行target server连接时,不成功,出现如下现象
tgtsvr (vxtarget@mhgong): Thu Jul 01 20:00:31 2004
Checking License ...OK
Connecting to target agent... 
Error: rpccore backend client Timed out
failed.
congfig.h 修改如下:
#define DEFAULT_BOOT_LINE \
"elPci(0,0)mar:c:/Vxtemp/vxWorks h=192.168.0.3 e=192.168.0.50 u=usr pw=usr tn=vxtarget" 
#define INCLUDE_END
#define INCLUDE_EL_3C90X_END
#undef WDB_COMM_TYPE
#define WDB_COMM_TYPE WDB_COMM_END




starting at 0x308000"后出现的情况。0x308000为 "VxWorks image entry point" 启动完后就ping 不通了.

有人说:要makefile里的RAM_LOW_ADRS ,RAM_HIGH_ADRS 要和config.h里的这两个设定要一样

去这两个文件检查,发现是一致的。但和Tornado 2.0不一样的地方是:

RAM_LOW_ADRS RAM_HIGH_ADRS

Tornado 2.2: 0x308000 0x108000

Tornado 2.0: 0x108000 0x008000

请问为什么会出现这种情况呢? WDB 中需要的选项我都将起include进去了.




其实不一定是卡死了,有可能只是pcconsole没显示出来而已
你先在主机ping那个网口地址,如果能ping通那证明vxworks已经启动起来了,并不是卡死了。
那你再telnet上去看看。
另外查看一下是不是把console口转到了串口这边。




是不是TLB_END设置问题呢~  经过调试 发些问题出在这
for (count 0, pDevTbl endDevTbl; pDevTbl->endLoadFunc != END_TBL_END; pDevTbl++, count++)
貌似是这个循环没出来 不知道原因是什么 求助下大家




在别的地方找到的。发出来
这个问题我也碰到过,现在已经解决了。
方法如下:
1.在PROJ的MAKEFILE中添加EXTRA----MODULES =rtl81x9.o
2.在sysRtl81x9End.c中添加include "rtl81x9.c"
3.Tony给的config文件缺少X86CPU_DEFAULT
所以在
#define INCLUDE_SYS_HW_INIT_0w
#define SYS_HW_INIT_0()         (sysHwInit0())
后面添加


#define INCLUDE_CPU_PROBE  
#ifndef INCLUDE_CPU_PROBE
  undef  CPU
  define CPU  PENTIUM  
#endif 
#define X86CPU_DEFAULT X86CPU_PENTIUM 
以上是我碰到的一些问题以及解决方法。如有问题,还请多多指正。




只放在目录下,还不行,要做一些配置,确认下config.h、sysNet.c和configNet.h是否正确配置了rtl8139。。


在workspace窗口的VxWorks Configration标签中“hardware>peripherals>serial>PC console”找到了INCLUD_PC_CONSOLE宏,Include并重新编译后终于看到了期待已久的shell。

阅读全文
0 0
原创粉丝点击