在一个 AXI_HP 源和另一个源(如 DMAC)采用相互依赖的方式生成对 OCM 和 DDR 的访问时,就有可能出现 PS AXI 互连锁死状况。
让一个源只向一个目的地(OCM 或 DDR)发出请求或将一个 AXI_HP 接口的出色编写次数限制在一次写入的情况下,可避免锁死。
有问题的源包括 AXI_HP 接口对和中心互连(DMAC 和 IOP 主控器等)等。APU 内存请求(CPU 和 ACP)不存在问题。
影响: | 主要影响。系统可能会挂起。 |
规避措施: | 请参阅“文章详情”部分。 |
受影响的配置: | 使用 AXI_HP 接口的设计 |
受影响的器件修订版本: | 请参考(Xilinx 答复 47916) - Zynq-7000 设计咨询主答复记录 |
当两个源以特定的顺序访问 OCM 和 DDR 时,就会出现锁死状态。可影响锁死状态的源有三种。这些源不包括 APU(CPU 和 ACP 接口)的内存请求。
这两种源的任何组合都可以访问 OCM 和 DDR,这可能会导致锁死状况:
中心互联(包括 DMAC 和 IOP 主控器等)
AXI_HP{1:0} 包括(例如)访问 OCM 的 AXI_HP0 以及访问 DDR 的 AXI_HP1(两个主控器都在相同的 HP 对中)。
不会出现锁死状况的实例:因此,对于会发生的锁死情况,两个源必须同时访问 OCM 和 DDR。
其中的一个源必须是 AXI_HP 的一个对。其它源可以是其它的 AXI_HP 对,也可以是与中央互连相连接的主控器。
除了访问 OCM 和 DDR 的两个数据源之外,它们还需要采用一个特定的序列顺序来执行访问。
下面是显示该序列的具体实例:
AXI_HP 主控器 | DMA 控制器主控器 |
AXI_HP_DDR1_1(至 DDR 端口 1) | DMA_OCM(至 OCM) |
AXI_HP_DDR1_2(至 DDR 端口 1) | DMA_ DDR2(至 DDR 端口 2) |
AXI_HP_OCM(至 OCM) |
在单独的通道上独立执行地址写入和数据写入;但在从设备中,写入数据的顺序必须遵循从设备接受的写入地址序列,也就是说不允许重新排序。
以下是 DDR 上可能出现的一种事务处理排序:
从上面可以看出,出现了锁死情况。
解决方法信息:有几个解决该问题的方法:
Answer Number | 问答标题 | 问题版本 | 已解决问题的版本 |
---|---|---|---|
53051 | Zynq-7000 SoC - PS DDR Controller | N/A | N/A |
AR# 47484 | |
---|---|
日期 | 06/13/2018 |
状态 | Active |
Type | 设计咨询 |
器件 |