【问题标题】:Vivado/XSDK: How to access address from Zynq M_AXI_GP0 Bus?Vivado/XSDK:如何从 Zynq M_AXI_GP0 总线访问地址?
【发布时间】:2019-06-11 20:37:57
【问题描述】:

假设我构建了一个 vivado Zynq FPGA 项目,我想从运行在 zynq 上的 c 程序写入和读取 Zynq 的“M_AXI_GP0”端口,如下所示。此外,假设我要在 Zynq 的“M_AXI_GP0”端口上读写的地址是地址“0x000A1000”。我将如何在下面的代码中做到这一点?我需要担心 ARM 中的虚拟地址到物理地址的转换吗?有XIL api吗?等等...见代码示例:

#include <stdio.h>
#include "platform.h"


#include "xil_printf.h"

void write(uint32_t addr, uint32_t wdata) {
   //????? how to implement
}

uint32_t read(uint32_t addr) {
    return 0;
}

int main()
{
    init_platform();

    print("Hello World\n\r");

    uint32_t beef;
    write(0x000A1000, 0xDEADBEEF);
    write(0x000A1004, 0x12345678);
    beef = read(0x000A1000);

    cleanup_platform();
    return 0;
}


【问题讨论】:

    标签: c fpga xilinx vivado bare-metal


    【解决方案1】:

    “xil_io.h”文件包含通用 IO 组件的接口,它封装了不需要任何特殊 I/O 处理的处理器的输入/输出功能:

    u32  Xil_In32  (UINTPTR Addr);
    void Xil_Out32 (UINTPTR Addr, u32 Value);
    

    “M_AXI_GP0”总线映射到 Zynq 地址映射中的 PL 或“可编程逻辑”地址区域:

    Xilinx Zynq: ARM Cortex A9 Memory Map
    
    DDR                    0x00000000 - 0x3FFFFFFF
    PL                     0x40000000 - 0xBFFFFFFF
    Reserved               0xC0000000 - 0xDFFFFFFF
    Memory mapped devices  0xE0000000 - 0xE02FFFFF
    Reserved               0xE0300000 - 0xE0FFFFFF
    NAND, NOR              0xE1000000 - 0xE3FFFFFF
    SRAM                   0xE4000000 - 0xE5FFFFFF
    Reserved               0xE6000000 - 0xF7FFFFFF
    AMBA APB Peripherals   0xF8000000 - 0xF8FFFFFF
    Reserved               0xF9000000 - 0xFBFFFFFF
    Linear QSPI - XIP      0xFC000000 - 0xFDFFFFFF
    Reserved               0xFE000000 - 0xFFEFFFFF
    OCM                    0xFFF00000 - 0xFFFFFFFF
    

    【讨论】:

      【解决方案2】:

      您是否在here 中看到了 AXI GPIO 驱动程序和示例?您是否需要担心虚拟地址到物理地址的转换取决于您到底在运行什么?您有裸机/RTOS 设置吗?

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-10-16
        • 2012-02-12
        • 1970-01-01
        • 2012-04-25
        • 1970-01-01
        相关资源
        最近更新 更多