1. 问题背景
在调试 Zynq MPSoC 的视频通路时,遇到一个诡异的现象:无法配置v_frmbuf_wr(Video Frame Buffer Write) IP 核的Width(0x10) 和Height(0x18) 寄存器。
故障表现:
- 软件写入
Width= 800 (0x320)。 - 软件回读
Width,得到的值却是0x00或者与Control寄存器 (0x00) 的值完全一致。 - 诊断结论:出现了典型的AXI Address Aliasing (地址重叠)现象。即对地址
0x10的访问实际上落到了0x00上。
2. 排查过程
阶段一:软件诊断
编写了一段寄存器扫描代码,分别向0x00和0x10写入不同的特征值。
结果证实:改变0x00的值会影响0x10的读回值。这通常意味着 AXI 总线的高位地址被丢弃或解码错误。
阶段二:硬件整改
怀疑是老旧的AXI InterconnectIP 核在 Zynq MPSoC 上的兼容性问题。
- 操作:在 Vivado Block Design 中,将
AXI Interconnect替换为更新的AXI SmartConnect