zynq7020 nand
0赞Xilinx NAND BOOT时序
由于项目要求,Xilinx的ZYNQ需要从NAND flash启动。硬件导出SDK后,软件一切准备就绪,但是NAND flash就是起不来。但该板能够通过裸核的NAND flash 测试,因此可以确认NAND flash选型与硬件是没有问题的。
经过多番尝试,奇妙的事情发生了:当使用Xilinx最新的开发环境 Vivado(2014.2)导出硬件时,能够BOOT起来,但是若使用ISE(2013)时,却仍是不能正常启动。为了对比区别,将不同开发环境导出的寄存器初始化文件ps7_init.tcl文件进行对比,并参考UG585附录处的寄存器说明表,发现二者在NAND的timing相关的寄存器存在差异。循迹而去,找到了差异所在。
具体的差异如图1.1、图1.2所示。
图1.1 ISE中XPS的NAND flash默认SMC timing calculation设置
图1.2 Vivado中NAND flash默认SMC timing calculation设置
看到区别之后,突然记起安富利的一个FAE曾对我说过:“目前Xilinx已经不再对ISE进行更新了,而是主推Vivado,因此在ISE的一些bug,也不会再修补。”
但鉴于目前的工程基本都是在ISE上完成的,一时难以移植,因此将ISE中的SMC timing calculation设置改成与Vivado一样。
后再试验,一次通过!!非常开心。
有了此次的教训,明白了开发工具的重要性。虽然之前一直使用altera的器件,所以对quartus比较熟悉。后来有不得已转移到Xilinx的器件上,又重新学习了ISE、planahead等,看来现在由不得不学习Vivado。不过,进了这行,就必须保持一颗自觉学习新知识的心。其实原理都是一样的,只是工具不同而已,所谓“融会贯通”也就是如此。
