[VxWorks] 以调试可加载vxWorks的方式调试Boot程序是否可行?

heanjun211   2010-3-23 19:59 楼主
问题描述:
        大家好。我有一块MPC85X的开发板,有现成的Boot程序。但是我觉得不够好,所以希望修改原有的Boot程序源码,重新生成可烧录的Boot。但在最后定型前,要经过多次调试。小弟想采用与调试可加载vxWorks内核映像一样的方式,通过网口将bootrom.bin下载到板子上调试。不知道这样是否可行?如果可行,需要注意些什么东西?编译bootrom.bin的时候是否要重新定位地址?比方说,将bootrom.bin加载到0x10000处执行,是否需要在Tornado的环境里做些更改?
        小弟是新手,请大侠不吝赐教。

回复评论 (11)

帮顶,lz有研究精神
点赞  2010-3-23 20:31
说清楚你现有的boot程序是什么?uboot或vxworks的bootrom 还是什么?要是完全自己编写有点难吧!
点赞  2010-3-23 21:31
帮顶,lz有研究精神
点赞  2010-3-23 21:35
我现在板上的的Boot程序是vxworks的bootrom。正准备给板子移植个u-boot的。
点赞  2010-3-23 23:47
我用u-boot调arm,是通过串口下载后,进行调试的(u-boot本身就支持,at91rm9200串口可引导)
问题是如果你能实现串口下载,并load起来,您的boot程序也就基本差不多。
点赞  2010-3-24 22:26
我没用过ARM的,但在X86架构下用ftp下载是可行的,不过是反复通过网口刷boot
点赞  2010-3-25 20:33
我觉得应该是可以的只要把地址处理好就可行。所以现在正在修改Boot。现在我在调试,碰到了以下的问题:
romstart.s文件的最后几条语句如下:
    。。。。
        sub        r6, r6, r7                        /* routine - entry point */
        add        r6, r6, r8                         /* + ROM base */
        mtlr        r6                                /* move C entry point to LR */
        blr                                        /* jump to the C entry point
通过blr,跳转到:bootinit.c文件中的 romStart(int startType)处执行,就死掉了。执行不下去。通过反汇编的方式查原因:romStart的标号地址是 101b0,而上面的“ blr ”语句的lr(r6)也是 101b0。程序执行结果如下:
。。。。
Attaching network interface lo0... done.
Loading... vxworks.bin
Starting at 0x10000...

就不动了。
请问这大概会是什么原因?
点赞  2010-3-25 21:05
应该可以点灯看看 是否执行到romStart吧
点赞  2010-3-25 22:43
引用: 引用 7 楼 yzpyzp 的回复:
我觉得应该是可以的只要把地址处理好就可行。所以现在正在修改Boot。现在我在调试,碰到了以下的问题:
romstart.s文件的最后几条语句如下:
。。。。
sub r6, r6, r7 /* routine - entry point */
add r6, r6, r8 /* + ROM base */
mtlr r6 /* move C entry point to LR */
b……


看起来Load之后又打算执行一次Romstart.s里的内容
不知道LZ编译出来的bin文件开头的地方放了什么东西?
有很多硬件连接方式下为了让CPU上电得到上电复位字信息,文件开头的地方是放上电复位字的,CPU根据上电复位字再跳转到第一条指令的地址运行,这是一个硬件自动执行的过程。
而LZ这种加载方式显然CPU不会再有这样一个过程了,所以它starting之后跳转到的地址处有可能并不是你想让它执行的指令,而是没有语句意义的上电复位字。

乱分析,LZ参考着看。
点赞  2010-3-27 20:32
没呵呵额额!
点赞  2010-4-3 16:05
   应该可行。目前我的BOOT已经运行起来。贴一点结果:

CPU: Embedded Planet _ - MPC
Version: VxWorks5.5.1
BSP version: 1.2/0
Creation date: May 13 2010, 18:11:10


Press any key to stop auto-boot...
7

[VxWorks Boot]:


  BOOT上调试BOOT有了重大进步。只是我目前还没有调通网络部分,新的BOOT还不能支持网口下载功能。还需要继续努力。
点赞  2010-5-13 18:27
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复