为什么我无法写入我的 zynq 板的寄存器?

问题描述 投票:0回答:1

我有一个运行 petalinux 的 zynq 板。 .xsa 文件用于使用 AXI DMA 在处理系统 (PS) 和可编程逻辑 (PL) 之间传输数据。我正在 VITIS 中编写一个应用程序来验证。在我的应用程序中,我需要向寄存器写入适当的值,例如 S2MM_DMACR、S2MM_DMASR、S2MM_DA、S2MM_LENGTH 等。我可以写入 S2MM_DMACR,但无法写入 S2MM_DA 或 S2MM_LENGTH。我有设置寄存器值和获取寄存器值的函数。我可以在设置寄存器值后通过打印该值来验证。我可以清楚地看到我可以为 S2MM_DMACR 设置任何值,但不能为 S2MM_DA 和 S2MM_LENGTH 设置任何值。我已使用适当的偏移量来访问寄存器。有什么建议,如何解决吗?

编辑:我正在通过 uio0 中的 mmap 和地址访问寄存器。

我本来希望打印我设置的 S2MM_DA 和 S2MM_LENGTH 的值,但它始终是 0。

FPGA设计可以在链接中找到

https://www.fpgadeveloper.com/2014/08/using-the-axi-dma-in-vivado.html/

embedded embedded-linux zynq
1个回答
0
投票

我决定回答这个问题,因为有一天它可能会帮助其他人。 Vivado 设计中启用了分散/聚集模式。它不应该被启用。启用分散/聚集模式不允许写入这些寄存器。

© www.soinside.com 2019 - 2024. All rights reserved.