uboot引导VxWorks问题!希望各路大师指点!

ljwjldx 2010-11-23 11:53:56
用uboot(1.3.4)引导vxworks(6.6)(elf格式)

1.tftp 0x500000
2 bootvx 0x500000

下载到内存后,然后bootvx 后,就出现:
starting application at 0xa00100000,然后就死掉了。
说明:我用bootrom引导VxWorks是没有问题的。

在网上查到以下解决办法:

1、编译一个u-boot,网络和flash及串口驱动正确的
2、编译vxworks内核,注意u-boot引导vxworks内核时,入口函数是sysAlib.s,所以在系统进入调用usrInit()之前应该初始化好MMU及Cach,可以将rominit.s文件中的内容拷贝至sysAlib.s,具体位置一定要放在调用usrInit()函数之前
3、将vxworks内核转化成vxworks.bin,(也可以不转化,但是不能直接down到内存的RAM_LOW_ADDRS)
4、启动U-BOOT,运行tftp RAM_LOW_ADDRS vxworks.bin
go RAM_LOW_ADDRS2

我把rominit.S中的mmu初始化拷进sysAlib.s也不行,也许拷的内容不全,还有就是uboot需要根据bootrom改动很大吗?
希望高手指点具体怎么操作? 小弟感激不尽!!!
...全文
1119 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
ljwjldx 2010-12-06
  • 打赏
  • 举报
回复
终于查出原因了,程序死在加载epic的地方,原来是msr寄存器配置有点问题,msr的“EE"位要配置为0,TLB的配置是没问题的。
小小豆芽 2010-11-28
  • 打赏
  • 举报
回复
从sysInit函数开始,点灯测试,看看程序跑到何处了。重点检查一下TLB0和TLB1的配置吧。
ljwjldx 2010-11-25
  • 打赏
  • 举报
回复
不好意思纠正一下:

“starting application at 0xa00100000,然后就死掉了。”

应该为:starting application at 0x000100000

谢谢二楼的回复,应该不是地址的问题,因为VxWorks是“elf”格式的 ,所以bootvx命令会把代码段和数据段分别放到各自的定义的位置,其中代码段定义位置是0x100000,即ram_low_addr ,而且查看0x100000地址的内容确实是VxWorks的代码段。是不是uboot有些配置不对,导致与VxWorks冲突,困惑中……
小小豆芽 2010-11-24
  • 打赏
  • 举报
回复
我觉得是你down VxWorks映像的地址不正确吧。
你把内核下载到0x500000地址处,但是却从0xa00100000开始执行,CPU肯定会死掉啦。

你要保证所存放VxWorks ELF映像的地址是你的VxWorks的Text段起始地址(即ELF头的ENTRY字段)- ELF头部长度。

没这么弄过,仅是个人的一些猜想。

2,180

社区成员

发帖
与我相关
我的任务
社区描述
xworks是美国 Wind River System 公司( 以下简称风河公司 ,即 WRS 公司)推出的一个实时操作系统。
社区管理员
  • VxWorks开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧