zynq7020 vxWorks 移植问题笔记:bootrom启动时间过长

一、现象描述

    将vxWorks6.9移植到zynq7020单板上时,将fsbl.elf启动文件与bootrom.elf文件混和生成BOOT.BIN,在fsbl文件中已将调试打印信息打开,BOOT.BIN 放拷贝到SD中,上电启动fdbl打印过后接近20多秒,bootrom打印才出现。

二、问题追朔

1.可能是romInit.S中指令cache未打开

2.可能是bootInit.c中romStart函数解压缩时间过长

3.可能是bootInit.c中romStart函数解压缩后对内存全部清零操作导致时间过长

4.设备初始化过程中,某个设备初始化失败导致延时等待,启动时间过长

5.MMU初始化过程中,覆盖内存过大,初始化时间过长

三、测试程序设计

1.将核1设计裸核程序定时器,时间精度 1us

2.核0 bootrom 启动过程中通过ocm相应地址置 0x77777777启动核1定时器

3.核0 bootrom 启动过程中通过ocm相应地址置 0x99999999关闭核1定时器

4.核1将代码段执行时间写到OCM相应地址去

5.读取OCM中代码段执行时间

四、问题定位

发现在终端串口初始化过程中,ioctl设置串口波特率115200时,执行时间达到18秒以上

查看vxbZynq7kSio.c中设置波特率函数,由于循环实验波特率寄存器设置值,导致算法时间过长,需要优化波特率设置算法

五、修改

修改vxbZynq7kSio.c,降低算法时间,重新编译bsp和bootrom

重新实验后,zynq启动bootrom从20多秒启动时间缩短至5~7秒左右

 

你可能感兴趣的:(vxWorks,zynq)