首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 嵌入开发 > VxWorks >

BSP函数注销不了。该怎么解决

2012-02-29 
BSP函数注销不了。最近在条MPC860系列的CPU的BSP文件,生成vxworks,下载到板上,总是死掉了。发现死在usrInit(

BSP函数注销不了。
最近在条MPC860系列的CPU的BSP文件,生成vxworks,下载到板上,总是死掉了。发现死在usrInit()里了,usrInit()里又有不少子函数,不知道死在哪个子函数里了。于是采用排查方式。但是一开始就有问题了。如下:
void usrInit (int startType) /* 先注销函数内所有子函数作为排查第一步骤*/
  {
 // sysStart (startType); /* clear BSS and set up the vector table base address. */
 // cacheLibInit (USER_I_CACHE_MODE, USER_D_CACHE_MODE); /* include cache support */
 // excVecInit (); /* exception handling */
// sysHwInit (); /* call the BSPs sysHwInit routine during system startup */
// usrCacheEnable (); /* optionally enable caches */
// usrKernelInit (); /* context switch and interrupt handling. DO NOT REMOVE. */
  }

经过Tornado2.2编译得到vxWorks文件后,我 objdumpppc -d vxworks >boot.s。 查看boot.s文件,关于usrInit有如下的结果:
00016730 <usrInit>:
  16730:94 21 ff e0 stwur1,-32(r1)
  16734:7c 08 02 a6 mflrr0
  16738:93 e1 00 1c stwr31,28(r1)
  1673c:90 01 00 24 stwr0,36(r1)
  16740:90 61 00 08 stwr3,8(r1)
  16744:80 61 00 08 lwzr3,8(r1)
  16748:4b ff e2 ed bl14a34 <sysStart> /????
  1674c:38 60 00 01 lir3,1
  16750:38 80 00 01 lir4,1
  16754:48 05 01 9d bl668f0 <cacheLibInit> /????
  16758:48 00 07 e1 bl16f38 <excVecInit> /????
  1675c:4b ff ae d9 bl11634 <sysHwInit> /????
  16760:4b ff de a1 bl14600 <usrCacheEnable> /????
  16764:4b ff de d1 bl14634 <usrKernelInit> /????
  16768:80 01 00 24 lwzr0,36(r1)
  1676c:7c 08 03 a6 mtlrr0
  16770:83 e1 00 1c lwzr31,28(r1)
  16774:38 21 00 20 addir1,r1,32
  16778:4e 80 00 20 blr

  我对C语言子程序函数内部语句的“//”注销,好象没有起作用。试过多次,都是如此。
 “objdumpppc -d vxworks >boot.s”命令所用的vxworks也是每次新编译出来的。

请大侠指点。

[解决办法]
usrInit函数由tornado自动生成(在你rebuild时),如果你真要想用这种办法就不要rebuild了,build一下就可以了
[解决办法]
如上面的高手所说的,usrInit里面的函数是建工程时自动生成的,你在tornado下注释它,再编译是没有用的。你可以用trace32调试一下啊。看看是哪步飞了!
[解决办法]
到你的BSP目录,修改下makefile ,和环境变量(将编译器指到你tornado下的bin目录)再在你的
bsp目录下make vxWorks 一下就好。

热点排行