44b0+u-boot+vxworks 牛人指点下贝
板子原来是跑uclinux的,u-boot负责加载uclinux到0x0c008000,现在希望跑vxworks,u-boot应该还能用吧(还是有点疑惑)?
我下载了个44b0的bsp,改了一下基本的配置(内存大小什么的),放到ram里,跑不了(管脚设置了指示灯,没有亮);
感觉就是哪里不对,还不知道哪没改,按道理来说,在ram里跑应该不用配置网络、串口、flash啥的吧??
我就是想让vxworks跑起来,顺便把指示灯点亮就行,可现在就是不行,看看哪位高人能能指点一下,多谢多谢,哥们都困扰好几天了。。。。
[解决办法]
Vxworks的系统镜像有压缩和非压缩之分,一般都是压缩的。
uboot只是简单的复制,没有对其解压的操作。
还是直接用vxworks本身。
[解决办法]
objcopy?这个只是拷贝。你拷贝的源是哪里?源镜像是压缩的?还是非压缩的?
还有下载后,u-boot的跳转能实现吗?最好在汇编部分跟一下。
[解决办法]
我刚好做过你说的事情。
我的系统是PPC7447A,因为需要兼容linux和vxWorks,所以选择用uboot引导。
---------------------------
用uboot引导vxWorks有两种方式:
一是传统方式:先引导bootrom,再由bootrom引导vxWorks;
二是:直接用uboot引导vxWorks。
两种方式类似,需要注意的是
1, 编译生成的bootrom和vxWorks都是elf格式的,不能直接下载运行
需要转成二进制或十六进制文件,就是你说的objcopy实现。
2, 链接地址需要改动,通常BSP将bootrom等的链接地址设成flash地址,
如果想下载到ram中运行,必须将链接地址改成ram地址,并且tftp命令下载时的地址要和它一致。
3,因为默认bootrom或vxWorks_rom在启动时运行在flash等中,会对ram进行初始化配置,
而现在bootrom是直接下载到ram中运行,就不能再初始化ram了,否则会因为找不到ram中的代码而出错。
----------------------------------------
如:在config.h和makefile文件中将
ROM_BASE_ADRS改为0x00100000
ROM_TEXT_ADRS改为0x00100100
编译生成bootrom.bin后
->tftp 0x00100000 bootrom.bin
->go 0x00100100
就可以启动bootrom了,由bootrom去引导vxWorks我想你肯定熟悉。
直接启动vxWorks的情况和上述类似。
祝成功!