通过添加AXI_GPIO,直接在AXI接口上了。相关的胶连逻辑自动生成了。具体的AXI 与GPIO之间,怎么通过总线访问,总线又是怎么给各模块映射地址,要看IP模块的手册,和开发流程有关的文档。
通过自动分配地址,以下是寄存器访问内存一种方式
#define GPIO_BASEADDR 0x41200000
#define DATA_OFFSET 0x0 //数据
#define TRI_OFFSET 0x4 //方向
#define LED_DELAY 10000000
int main()
{
volatile int Delay;
/* Set the direction for all signals as outputs */
*(int *)(GPIO_BASEADDR + TRI_OFFSET) = 0x0 ; //方向的设置 这是从基地址开始+偏移地址算的 查看手册这里 设置为输出
while (1) {
/* Set the LED to High */
*(int *)(GPIO_BASEADDR + DATA_OFFSET) = 0xF ;
/* Wait a small amount of time so the LED is visible */
for (Delay = 0; Delay < LED_DELAY; Delay++);
/* Set the LED to Low */
*(int *)(GPIO_BASEADDR + DATA_OFFSET) = 0x0 ;
/* Wait a small amount of time so the LED is visible */
for (Delay = 0; Delay < LED_DELAY; Delay++);
}
return 0;
}
以下参考:
https://blog.csdn.net/xiong_xin/article/details/115025668