作者:付汉杰,文章转载自:博客园
客户收到新买的ZCU106,运行Xilinx的linux正常。使用的Xilinx SDK 2018.3调试自己创建的helloworld时却出现异常,程序跑飞。
在Vitis 2020.1下创建的helloworld后,使用psu_init初始化,也出现程序跑飞的情况。
在2020.1命令行下,使用psu_init初始化芯片,对DDR进行先写后读操作,数据正确。
在Vitis 2020.1下创建DRAM Test工程,使用psu_init初始化,运行程序正常,执行DDR测试挂死。
搜索到Xilinx的AR72210(https://www.xilinx.com/support/answers/72210.html),要求使用FSBL初始化。因此改用FSBL初始化,不用psu_init初始化芯片,运行DRAM Test工程,执行DDR测试,运行正常。
再在Vitis 2020.1下创建的helloworld后,使用FSBL初始化,也运行正常。
总结: 新的ZCU106,需要使用新版本工具开发,使用FSBL初始化,才能正确初始化DDR,才能在DDR上运行程序。
根本原因:
1: 标签是0432032-02或者更大数字的ZCU106,使用了新的DDR DIMM,需要使用新参数配置,具体请参考(https://www.xilinx.com/support/answers/71961.html)。
2: 新版本里,psu_init和DDR SPD代码都初始化了DDR-PHY,两次初始化可能导致问题,具体请参考(https://www.xilinx.com/support/answers/72113.html)。
参考文章
https://www.xilinx.com/support/answers/71961.html
https://www.xilinx.com/support/answers/72113.html
https://www.xilinx.com/support/answers/72210.html