Допустим, я построил проект 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](https://i.stack.imgur.com/aKZWL.png)