首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何从Zynq M_AXI_GP0总线访问地址?

如何从Zynq M_AXI_GP0总线访问地址?
EN

Stack Overflow用户
提问于 2019-06-12 04:37:58
回答 2查看 1K关注 1票数 0

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

代码语言:javascript
复制
#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;
}

EN

回答 2

Stack Overflow用户

发布于 2019-06-12 10:13:34

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

代码语言:javascript
复制
u32  Xil_In32  (UINTPTR Addr);
void Xil_Out32 (UINTPTR Addr, u32 Value);

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

代码语言:javascript
复制
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
票数 0
EN

Stack Overflow用户

发布于 2019-06-12 18:46:55

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56551365

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档