ZYNQ7020FLASH烧录和QSPI启动问题分析记录

问题描述

在使用ZYNQ进行flash程序烧录并从QSPI的模式启动时,遇到无法烧录,烧录后无法启动的问题,中间对vivado和SDK的使用有了一定了解,对flash的操作也有了一些认知,在这里做一些记录。

flash烧录问题

我使用的vivado软件是2019.1版本;

当使用SDK做好boot.bin文件和FSBL文件后,按照正常流程操作进行flash烧录,发现无法烧录,此时我的板子是QSPI的模式,报错大概意思是并非JTAG模式,如果失败建议尝试JTAG模式烧录,由于我的板子没有预计切换JTAG的模式因此采用飞线的方式切到JTAG模式;
JTAG模式下烧录依旧报错,报错信息如下,原因是读不到flash的ID:
[Xicom 50-186] Error while detecting SPI flash device - unrecognized JEDEC id bytes: 00, 00, 00
Problem in running uboot
Flash programming initialization failed.

ERROR: Flash Operation Failed
示波器抓信号定位;
在这里插入图片描述
ZYNQ发送9F读取flash状态寄存器
在这里插入图片描述

ZYNQ发送9F读取flash状态寄存器,然后CLK信号停止5-6us后又继续,怀疑是不是clk没有了导致flash不响应,咨询赛灵思技术支持认为和这个没关系。
后来在看flash规格书时忽然想到JTAG模式的MIO5和FLASH的RESET引脚是复用的,如果强制改成拉低就把flash复位了,而因为我是飞线的,没有下拉电阻,这时flash一直处于复位状态,是不能正常响应的,因此没有应答ID,然后为了验证猜想在JTAG模式下把板子上电后再恢复到QSPI的状态,也就是把MIO5拉高。这时烧录发现烧录进去了,烧录的log也提示识别到了flash的型号,我用的就是IS25LP128F
收在这里插入图片描述
我用示波器看烧录时也确实有数据在传输,解析协议发现flash回复的是9D 60 18;最终提示flash烧录成功;
在这里插入图片描述

QSPI启动问题

flash烧录进去后发现板子从QSPI启动时依旧不能启动,然后在fsbl里添加打印信息在这里插入图片描述
重新烧录后打印如下:
Xilinx First Stage Boot Loader
Release 2019.1 Jul 9 2024-19:12:17
Devcfg driver initialized
Silicon Version 3.1
Boot mode is JTAG

Xilinx First Stage Boot Loader
Release 2019.1 Jul 9 2024-19:12:17
Devcfg driver initialized
Silicon Version 3.1
Boot mode is QSPI
Single Flash Information
FlashID=0x9D 0x60 0x18
128M Bits
QSPI is in single flash connection
QSPI is in 4-bit mode
QSPI Init Done
Flash Base Address: 0xFC000000
Reboot status register: 0x60500000
Multiboot Register: 0x0000C000
Image Start Address: 0x00000000
Partition Header Offset:0x88888888
应该是QSPI模式启动异常,在拉软件一通分析后决定尝试SPI模式试试,修改如下:在这里插入图片描述
修改后再次烧录启动正常,并且尝试改为dual SPI的模式后验证也可以启动;并且在启动时抓SPI波形发现flash应该是没有响应QSPI的读指令(这一点不确定,没有验证)()
也发现读flash的状态寄存器时回复的值是SPI模式,不是QSPI模式, 不确定flash是不是要配成QSPI的模式才能响应。
在这里插入图片描述

总结

通过验证,排除了器件焊接问题和器件质量问题,怀疑是器件兼容性问题,后来厂家也发来信息说是应该是不支持这个片子的flash进行QSPI的模式。这个问题先告一段落。

在这里插入图片描述
PS:
flash操作的几个常用命令的含义:
在这里插入图片描述

  • 24
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Zynq QSPI Flash启动是指使用Zynq芯片的QSPI闪存作为启动设备来启动系统。在这种启动方式下,Zynq芯片会从QSPI闪存中读取启动程序,然后执行该程序来启动系统。这种启动方式具有启动速度快、可靠性高等优点,因此在一些应用场合下被广泛采用。 ### 回答2: Zynq是赛灵思(Xilinx)公司推出的一种FPGA和ARM Cortex-A9双核处理器内核组成的SoC。QSPI(Quad SPI)是四线SPI模式的一种扩展,它使用四根数据线,能够提供更高的数据传输速率。QSPI Flash是一种存储器芯片,通常由Spansion、Micron、Winbond等厂商生产,它能够在低功耗的情况下提供高速度的数据存取。 在Zynq中,系统启动时会从QSPI Flash中读取启动代码,然后将代码加载到内存中执行。因此,QSPI Flash启动Zynq启动的基础。以下是关于Zynq QSPI Flash启动的步骤: 1.配置QSPI Flash:需要通过手动设置或使用软件自动化配置工具来设置QSPI Flash的模式、时序和其他参数。这些参数需要与Zynq芯片的规格书配合设置,确保QSPI Flash与芯片能够正常通信。 2.在Vivado里进行设计: 需要在Vivado中设计一个Zynq系统,包括Zynq处理器IP核和QSPI Flash IP核,并将两个IP核链接在一起,以实现启动时芯片从QSPI Flash中读取代码。 3.生成bitstream: 在完成设计后,需要使用Vivado生成Zynq系统的bitstream。bitstream是一个二进制文件,包含了Zynq芯片的配置信息,可以在生产过程中烧录到芯片上。bitstream中的配置信息包括了QSPI Flash的配置参数、启动代码的地址位置和大小等。 4.编写启动代码:需要编写适合于Zynq启动代码,该代码需要放置在QSPI Flash的制定地址位置以供Zynq进行启动启动代码可以是裸机代码或操作系统(如Linux)。 5.测试系统:当设计和开发工作完成后,需要进行系统测试。通过对系统的测试,可以确保QSPI Flash启动的正确性。 在进行Zynq QSPI Flash启动设计时,需要考虑芯片与QSPI Flash之间的通信和数据传输,注重细节,确保系统的稳定性和可靠性。 ### 回答3: Zynq QSPI flash启动是指FPGA芯片通过QSPI接口连接外部闪存启动。这种启动方式具有启动速度快、布线短等优点,非常适合使用在资源受限的嵌入式系统中。 下面简要介绍Zynq QSPI flash启动的基本流程和注意事项。 1. 确定启动模式:Zynq支持两种启动模式,分别是JTAG启动和QSPI启动。在实际应用中,一般使用QSPI启动。 2. 配置引脚:根据所使用的芯片和开发板,需要确认相关的引脚连接配置。例如,需要确认QSPI数据线、时钟线、CS线等连接方式。 3. 配置闪存:在设计和布局PCB时,需要确认闪存的操作模式、地址空间、芯片选择等参数。在实际操作中,需要编写相应的启动代码和修改Vivado中的设计约束文件。 4. 切换MIO模式:为了让QSPI启动,需要切换相应引脚的MIO模式。例如,需要将SD0引脚切换为QSPI MIO模式。 5. 烧录启动镜像:制作好启动镜像后,需要使用编程器将镜像烧录到闪存中。常见的启动镜像格式包括BIF、SD等。 注意事项: 1. 保证闪存中有启动镜像。 2. 确认各个引脚的连接方式和信号电平,防止可能存在的焊接错误或短路现象。 3. 在编写启动代码和设计约束文件时,需要熟悉Zynq启动流程和寄存器配置信息,避免出现错误。 4. 选择合适的闪存芯片和布局方式,以保证启动速度和布线长度的平衡。 总之,Zynq QSPI flash启动是一种高效、便捷的启动方式,可以大大降低嵌入式系统的启动时间,提高系统性能。但操作时需要注意各种细节,小心谨慎,以保证操作的正确性和稳定性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值