6744|11

79

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

如何用vxworks的bootrom启动Linux [复制链接]

开发板为sbc8260,原来跑的是vxworks,现在想跑Linux,由于没有烧写器,所以想用vxworks的引导程序bootrom来引导Linux,而且我相信应该是可以的。
我理解vxworks的bootrom引导过程:bootrom通过tftp将vxworks映像下载到地址0x00010000,然后跳到地址0x00010000开始执行。通过readelf,我发现vxworks映像为elf格式,并且入口点地址为0x0001000.而我编译生成的linux内核映像vmlinux,也是elf格式,但是入口点地址0xc0000000,显然这是不对的。通过试验也证实,可以通过tftp下载vmlinux,但是不能接着执行,具体现象如下:
Attached TCP/IP interface to emac0.
Warning: no netmask specified.
Attaching network interface lo0... done.
Loading... 1561496
machine check
Exception next instruction address: 0x00c0ef8c
Machine Status Register: 0x00029200
Condition Register: 0x20482044
Bus Error Address Register: 0xc00001fc
Bus Error Syndrome Register: 0x08000000
Task: 0xf6e5a0 "tBoot"
                                                   
                       
r0 = 0 sp = f6d980 r2 = 0 r3 = f63df4
r4 = c00001fc r5 = 80 r6 = 0 r7 = 0
r8 = 0 r9 = 0 r10 = 0 r11 = 0
r12 = 0 r13 = 0 r14 = 0 r15 = 1
r16 = 1 r17 = f6da30 r18 = 0 r19 = 15031c
r20 = 0 r21 = c89f7c r22 = 0 r23 = 0
r24 = 0 r25 = 0 r26 = 0 r27 = f63bfc
r28 = 200 r29 = f6da00 r30 = f6da20 r31 = 200
msr = 29200 lr = c515d0 ctr = 7f pc = c0ef8c
cr = 20482044 xer = 0
..
--------------------------------------------
所以我的问题是:
1.你们认为用bootrom引导Linux可以吗?
2.如何更改Linux内核映像的入口点地址为0x00010000

最新回复

可以参考u-boot引导linux的那部分代码的,理论上应该可以引导的(我没弄过)  详情 回复 发表于 2009-8-13 10:12
点赞 关注

回复
举报

65

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
It's easy.
 
 

回复

57

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
1. 可以,
2. 烧写flash的时候指定地址
 
 
 

回复

55

帖子

0

TA的资源

一粒金砂(初级)

4
 
我记得是在你编译bootrom的时候,里面一个地址指定了的,所以最好就是你修改哈,重新生成bootrom然后再试试

我也认为应该可以加载vmlinux
 
 
 

回复

58

帖子

0

TA的资源

一粒金砂(初级)

5
 
好问题,留个记号,期待楼主能解决

BTW: 可以在虚拟机vmware上实验一下x86的系统
 
 
 

回复

80

帖子

0

TA的资源

一粒金砂(初级)

6
 
我还是觉得不可能不修改bootrom就能引导linux
首先,我的bootrom只支持elf格式的文件,别的格式竟然连下载都不允许,直接报错,error=0x0
其次,我做了个实验,因为现在bootrom可以引导vxworks(elf格式,entry address=0x00100000),而bootrom映象本身也是elf格式,且entry address也是 0x00100000,所以我用bootrom直接来引导bootrom本身,结果下进去后,一直停在starting at 0x00100000...
 
 
 

回复

68

帖子

0

TA的资源

一粒金砂(初级)

7
 
另外,操作系统启动前需要有一些启动参数,而bootrom的启动参数是针对vxworks的吧,应该不适合linux的吧??
 
 
 

回复

86

帖子

0

TA的资源

一粒金砂(初级)

8
 
bootrom光把文件下载到内存那肯定是没有问题的,但运行的时候就要考虑linux的情况,要解决两个操作系统对内存映射的不同之处。
也许内存映射解决后可以
 
 
 

回复

74

帖子

0

TA的资源

一粒金砂(初级)

9
 
linux编译生成的vmlinux文件是elf格式的,它的entry point address是0xc0000000,请问这个值怎么改?
 
 
 

回复

66

帖子

0

TA的资源

一粒金砂(初级)

10
 
请个性bootLoad函数,根据linux核心对参数投递的要求,然后直接跳过去执行即可
 
 
 

回复

75

帖子

0

TA的资源

一粒金砂(初级)

11
 
耶,这个怎么没有结论了呢?
 
 
 

回复

68

帖子

0

TA的资源

一粒金砂(初级)

12
 
可以参考u-boot引导linux的那部分代码的,理论上应该可以引导的(我没弄过)
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表