Hi,最近入手飞思卡尔官方的mpc8536-adk开发板一枚,要在上面跑vxworks6.9,这个板子官方提供的都是安卓的资料,本身也是为安卓系统设计的,启动是由MCU配置,固定从SD卡启动,烧写了Uboot。WindRiver workbench3.3下只有mpc8536ds的BSP包,查看mpc8536-adk与mpc8536ds两个板子,区别不大,用uboot引导mpc8536ds的BSP生成的vxwokrs失败,信息如下:
=> tftp vxworks
Speed: 1000, full duplex
Using eTSEC1 device
TFTP from server 192.168.100.11; our IP address is 192.168.100.116
Filename 'vxworks'.
Load address: 0x1000000
Loading: #################################################################
#################
done
Bytes transferred = 1193480 (123608 hex)
=> bootvx
## Ethernet MAC address not copied to NV RAM
Loading .text @ 0x00100000 (867916 bytes)
Loading .wrs_build_vars @ 0x001d3e4c (308 bytes)
Loading .sdata2 @ 0x001d3f80 (528 bytes)
Loading .data @ 0x00200000 (15600 bytes)
Loading .sdata @ 0x00203cf0 (2600 bytes)
Clearing .sbss @ 0x00204718 (1768 bytes)
Clearing .bss @ 0x00204e00 (103128 bytes)
Loading .boot @ 0x000ff800 (1176 bytes)
Loading .reset @ 0x000ffffc (4 bytes)
## Using bootline (@ 0x4200): eth(0,0)srv:uImage e=192.168.100.116 h=192.168.100.11 tn=unknown
## Starting vxWorks at 0x00100100 ...
到最后一步就没有反应了。
在网上搜索uboot引导vxworks相关信息(http://bbs.csdn.net/topics/350181933),将rominit.s文件中的内容拷贝至sysAlib.s后依然无法启动,网上说从sysInit函数开始,点灯测试,看看程序跑到何处了,但是板子上一个user管脚都没有,不知道如何调试,现在一筹莫展,哪位大神能给些思路?谢谢!
------解决方案--------------------
我用的8536是自己开发的硬件,使用的bootrom,烧写在norflash中的;cs0脚连接哪个片子,就重哪里启动,看看硬件资源吧,我用sd卡放映像。
------解决方案--------------------
串口驱动编译进libdrv.a, 更新库用下面命令
cd target/src/hwif/sio
make CPU=PPC32 TOOL=diab rclean
make CPU=PPC32 TOOL=diab
然后工程编译就把串口驱动的修改包括进去了。
------解决方案--------------------
lerd_cs说的对,vxbus初始化串口,会把波特率给改了.我的做法是先保存,vxbus初始化后再恢复:
/* Save divisor of UART 0 */
sysOutByte(0xe0004503, 0x83);
divl = sysInByte(0xe0004500);
divh = sysInByte(0xe0004501);
sysOutByte(0xe0004503, 0x03);
hardWareInterFaceInit();
/* restore divisor of UART 0 */
sysOutByte(0xe0004503, 0x83);
sysOutByte(0xe0004500, divl);
sysOutByte(0xe0004501, divh);
sysOutByte(0xe0004503, 0x03);
------解决方案--------------------
我觉得你的问题很可能是 uBoot的 CCSBAR 和 vxWorks的不一样,所以当操作真正的硬件寄存器时会出错。你最好查一下,如果不一样,一订会挂,vxWorks在 CCSBAR的处理是在romInit.s文件里,vxWorks的image是不link这个文件。另一方面比对一下,soc datasheet看看epic这块寄存器是否一样,如果一样,driver这里出错的可能不大。