原文地址:http://blog.csdn.net/pengwangguo/article/details/54963702
哪个 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 AP SoC 的所有问题,敬请访问 Zynq-7000 AP 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。
![](https://i-blog.csdnimg.cn/blog_migrate/361d58689825e443e5edab723e42813f.png)
注意:在图中,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 AP SoC 技术参考手册的第 26 章“复位系统”中提供。
还可查看(Xilinx 答复 52847),了解 SRST 和 POR 信号的排序。
2) 从大于 16MB 的 QSPI 启动时的其它注意事项可在 Zynq-7000 AP SoC 软件开发指南中找到。