AR# 57744

Zynq-7000 SoC 的设计咨询 — 使用大于 16MB 的闪存时 Zynq 和 QSPI 的复位要求

描述

哪个 Zynq-7000 平台会受影响?

在以下任何配置中使用大于 16MB QSPI 闪存进行启动的任何 Zynq-7000 平台:单路、双堆叠、双路并行。

注意:具有两个 16MB QSPI 闪存(双堆叠或双并行配置,总共 32MB)的系统不受该要求影响。

如欲了解 Zynq-7000 支持的 QSPI 器件,敬请查看(Xilinx 答复 50991)

背景介绍

Zynq QSPI 控制器可限制为 3 字节寻址,因此只有当启动映像位于第一个 16MB 的闪存中时,BootROM 才能提取它(16MB 是单个 QSPI 芯片支持的最大寻址能力)。

如果使用大于 16MB 的 QSPI 闪存,然后要访问超过 16MB 闪存部分的数据,软件驱动程序(独立、u-boot、Linux)就需要扩展 3 字节地址,以将第 4 个字节存储到名为“扩展地址寄存器”的厂商特定 QSPI 寄存器中。 

2013.3/14.7 软件驱动程序和 Xilinx 工具将支持这种情况。

扩展地址寄存器非常棘手,这就意味着只有外部复位事件(比如闪存重启或闪存的外部复位)可将其清除。

在 QSPI 闪存重启或外部复位后,只有在恢复时间过期之后才能访问该器件(查看 QSPI 闪存数据手册,了解更多详情)。

复位注意事项

在所有系统复位时均可调用 BootROM。

  • POR(外部管脚)
  • SRST(外部管脚)
  • 系统软件复位(由软件设置的 SLCR 位)
  • SWDT、AWDTx(看门狗定时器)
  • 安全锁闭(从 BootROM)
  • 系统调试复位 (JTAG)

在系统复位时,扩展地址寄存器可能不为零(被针对闪存超过 16MB 部分的读/写工作修改)。

BootROM 不能识别 QSPI 扩展地址寄存器,因此它无法将其清除,这可导致加载启动映像失败。

注:有关 Zynq-7000 SoC 的所有问题,请参阅 Zynq-7000 SoC 解决方案中心(Xilinx答复52512)

解决方案

要应对这一情况,需要同时管理 Zynq 和 QSPI 闪存复位。 

在任何复位(PQR 或热复位)情况下,都必须为 Zynq 应用一个外部 SRST,并且在去断言 SRST 之前必须让 QSPI 恢复。

CPLD 等外部实体可用于执行管理:

检测所有 Zynq 平台复位

这需要使用专用 PS MIO (USER_IO),因为 Zynq 上没有输出管脚来指示所有热复位事件。

电路板必须经过设计,使用弱上拉或弱下拉将它 固定为高或低。

 FSBL 可将其向另一个方向拉动。这可确保将在任何后续热复位之前低驱动该信号。

CPLD 可监控 POR_IN、SRST_IN 和 USER_IO,并可驱动 POR_ZYNQ、SRST_ZYNQ 和 QSPI_RESET/QSPI_POWER_EN。

有关流程的示例,请参阅(Xilinx 答复 64011)使用超过16MB闪存时的 QSPI 重置示例 。


 

注意:在图中,SRST_IN 是电路板上所有 SRST 的 OR,包括 JTAG SRST 线路(例如,其可通过调试器断言)

使用 SRST_ZYNQ 或 POR_ZYNQ 保持 Zynq 处于复位状态

使用 SRST_ZYNQ 的优势是,热复位可转换为另一个热复位;因此可调试寄存器,并保持完好无损。

应用需求可能会要求使用 POR_ZYNQ 代替。

复位 QSPI 闪存

如果 QSPI 闪存有复位管脚,CPLD 则可驱动它 (QSPI_RESET)。

如果没有,CPLD 可控制 QSPI 闪存电源轨(例如通过电路板上的 FET)(QSPI_POWER_EN)。

根据电源轨与 RESET 的恢复时间来看,使用电源轨可能会有优势,尽管提供有复位管脚。

任何正在进行的写入或擦除都可能导致闪存损坏。

较高级的软件/文件系统需要考虑这种可能性。

使用 SRST_ZYNQ 正确处理 POR_IN 和 SRST_IN 重叠

如果在本逻辑已断言 SRST_ZYNQ 时发生了 POR_IN 和/或 SRST_IN,则必须遵循 TRM 指南,按照正确顺序断言和去断言 SRST_ZYNQ/POR_ZYNQ。 

请参阅 Zynq TRM 的第 6.2.4 节“复位要求”以及(Xilinx 答复 52847)

释放 Zynq 复位

CPLD 逻辑可保持 Zynq 处于复位状态,直至 QSPI 闪存可用(恢复时间已过期,请参阅 QSPI 闪存数据手册了解更多详情)。

注意:在释放 POR_ZYNQ 之后的 3.2 ms(上升沿),BootROM 将访问 QSPI(驱动器 CS 有效)。

BootROM 启动映像搜索

这时,BootROM 开始在第一个 16MB 的 QSPI 闪存(扩展地址寄存器为零)中搜索启动映像。

注:

1) 某些对 CPLD 逻辑设计有帮助的其它注意事项在 Zynq-7000 SoC 技术参考手册的第 26 章“复位系统”中提供。 

还可查看(Xilinx 答复 52847),了解 SRST 和 POR 信号的排序。

2) 从大于 16MB 的 QSPI 启动时的其它注意事项可在 Zynq-7000 SoC 软件开发指南中找到。

AR# 57744
日期 06/13/2018
状态 Active
Type 设计咨询
器件