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 一下就好。