Xilinx Zynq芯片使用Vivado工具SDK烧写程序警告“当前模式为QSPI,应当设置为JTAG模式”

1、问题发现

身边的朋友使用的Zynq开发板,出现了以下两种情况:

  1. 使用SDK2017.2进行Programe Flash,使用JTAG接口,可以直接进行下载,并进行调试。
  2. 使用SDK2018.2第一次进行Progarame Flash,使用JTAG接口,会报错,只有当把BOOT MODE 5拉低后,才可以进行烧录,后续的再次烧录不会出现类似问题。但是调试的时候必须将BOOT MODE 5拉低才可以调试。

2、相关知识点

下图为Zynq BOOT MODE配置,MIO[5:3]为Boot Devices设置为100,可以看出MIO[5]引脚为高时为QSPI模式,MIO[5]引脚为低时为JTAG Boot Mode模式。在硬件设计上面是将MIO上拉20K电阻,预留了下拉20K电阻。
Xilinx Zynq芯片使用Vivado工具SDK烧写程序警告“当前模式为QSPI,应当设置为JTAG模式”
报错信息如下:
Xilinx Zynq芯片使用Vivado工具SDK烧写程序警告“当前模式为QSPI,应当设置为JTAG模式”

3、问题分析

根据文档说明,从VIVADO 2017.3版本开始,Xilinx官方为了使Zynq-7000和Zynq UltraScale +实现流程相同,在QSPI FLASH使用上做了变化,即Zynq-7000编程flash需要“指定的fsbl”。这个fsbl用于初始化系统(主要是运行ps7_init()函数)。
通过分析可知下载QSPI FLASH 的“指定的fsbl”文件与生成boot.bin文件的fsbl文件不同,这里不能混淆。

4、问题解决

第一种解决方案:将自己软件变为2017.2版本
第二种解决方案:使用固定的FSBL文件

5、参考资料

VIVADO2017.4无法下载QSPI解决方案
Zynq-7000-QSPI引导模式下的QSPI编程
Zynq-7000 SoC: QSPI flash programming now requires that you specify an FSBL