一、现象描述
将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秒左右
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)