zynq vxworks6.9.4.10 boot引导镜像启动不了

来源:互联网 发布:asp.net js 隐藏控件 编辑:程序博客网 时间:2024/06/18 13:26
硬件平台:zynq 7045
软件平台:workbench 3.3 Vxworks6.9.4.10,Vavido 2017.2
问题描述:将生成的boot.bin文件通过仿真器烧录到SPI flash后,boot可以正常启动,其他网络功能也正常;通过FTP下载VxWorks镜像时,程序会一直停在at 0x00200000阶段,不能显示vxworks启动界面;
所做尝试:
1.直接将fsbl,bit文件和vxworks镜像合起来编译生成boot.bin,然后通过xlinx仿真器烧录到spi flash中,发现镜像可以启动,功能一切正常;(该方法应该只针对zynq板子,其他powerpc应该不适用);
2.切换到vxworks 6.9.4.7发现boot可以引导vxworks镜像启动;但该版本不支持EMMC所以不能使用该版本;
3.切换到vxworks 6.9.4.8发现boot可以引导vxworks镜像启动;该版本也支持EMMC,但EMMC格式化有问题,该版本对EMMC支持做的不太好;
4.最后只能想着在vxworks 6.9.4.10上面解决boot不能引导镜像启动的问题;由于boot可以启动,只是在引导镜像最后一步可能由于什么原因导致系统异常;


解决办法:
1.boot可以正常启动;也可以加载镜像;只是最后一步出问题;这时考虑能否通过点灯的方式来判断vxworks镜像到底在哪里出问题了;
首先在sysAlib.s中添加点灯程序;因为它是镜像起来后最先执行的代码;(要根据硬件原理图来确定是哪个灯对应的MIO是哪一个,然后参照手册来写相应的寄存器)
    LDR   r12, =0xe000a204
    LDR   r11, =0x00000001
    STR   r11, [r12]
    LDR   r12, =0xe000a208
    LDR   r11, =0x00000001
    STR   r11, [r12]
    LDR   r12, =0xe000a040
    LDR   r11, =0x00000000
    STR   r11, [r12]
测试发现这部分没有问题;应该能够跳转到C程序;usrint--->sysHwint----->kernelInit-------->usrRoot------>  sysHwInit2

     *(int *)(0xE000A204)=0x1;
     
     *(int *)(0xE000A208)=0x1;
      

    *(int *)(0xE000A040)=0x0;


最终发现是两个版本的串口驱动不一样导致的,将串口驱动替换后,vxworks镜像能够正常启动。
原创粉丝点击