Vivado / XSDK: Как получить доступ к адресу из шины Zynq M_AXI_GP0? - PullRequest
0 голосов
/ 11 июня 2019

Допустим, я построил проект FPGA vivado Zynq, и я хочу написать и прочитать порт Zynq «M_AXI_GP0» из c-программы, работающей на zynq, следующим образом. Далее, давайте предположим, что адрес, который я хочу прочитать и записать в порт «M_AXI_GP0» Zynq, - это адрес «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;
}


Xilinx ZYNQ - ARM CORTEX A9 -Xilinx SDK

Ответы [ 2 ]

0 голосов
/ 12 июня 2019

Вы видели драйвер и пример AXI GPIO в здесь ? Нужно ли беспокоиться о преобразовании виртуальных адресов в физические, зависит от того, что именно вы используете? У вас есть железо / RTOS?

0 голосов
/ 12 июня 2019

Файл "xil_ io.h" содержит интерфейс для общего компонента ввода-вывода, который инкапсулирует функции ввода / вывода для процессоров, которые не требуют специальной обработки ввода / вывода:

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

Шина "M_AXI_GP0" сопоставлена ​​с областью адресов PL или "Programmable Logic" в карте адресов Zynq:

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
...