abigyjj

zynq7020 nand

0
阅读(4125)

Xilinx NAND BOOT时序

由于项目要求,XilinxZYNQ需要从NAND flash启动。硬件导出SDK后,软件一切准备就绪,但是NAND  flash就是起不来。但该板能够通过裸核的NAND flash 测试,因此可以确认NAND flash选型与硬件是没有问题的。

经过多番尝试,奇妙的事情发生了:当使用Xilinx最新的开发环境 Vivado2014.2)导出硬件时,能够BOOT起来,但是若使用ISE2013)时,却仍是不能正常启动。为了对比区别,将不同开发环境导出的寄存器初始化文件ps7_init.tcl文件进行对比,并参考UG585附录处的寄存器说明表,发现二者在NANDtiming相关的寄存器存在差异。循迹而去,找到了差异所在。

具体的差异如图1.1、图1.2所示。

1.1 ISEXPSNAND flash默认SMC timing calculation设置

1.2 VivadoNAND flash默认SMC timing calculation设置

 

看到区别之后,突然记起安富利的一个FAE曾对我说过:“目前Xilinx已经不再对ISE进行更新了,而是主推Vivado,因此在ISE的一些bug,也不会再修补。”

但鉴于目前的工程基本都是在ISE上完成的,一时难以移植,因此将ISE中的SMC timing calculation设置改成与Vivado一样。

后再试验,一次通过!!非常开心。

有了此次的教训,明白了开发工具的重要性。虽然之前一直使用altera的器件,所以对quartus比较熟悉。后来有不得已转移到Xilinx的器件上,又重新学习了ISEplanahead等,看来现在由不得不学习Vivado。不过,进了这行,就必须保持一颗自觉学习新知识的心。其实原理都是一样的,只是工具不同而已,所谓“融会贯通”也就是如此。