xzy610030

一起探讨,一起进步,一起分享!

zynq中断学习

0
阅读(3905)

ZynqPS是基于ARM架构,使用两个ARM Cortex A9处理器和GIC pl390中断控制器。

系统中断框图如下:

Interrupt Controller(中断控制器)框图如下:

中断详细分为SGISoftware Generated Interrupts)软件中断,PPIPrivate Peripheral Interrupts)私有外设中断,SPIShared Peripheral Interrupts)共享外设中断。

1.SGI软件中断

存在16个软件产生的中断,通过向ICDSGIR寄存器写入SGI中断号,以及指定目标CPU,来产生一个软件中断,通过读ICCIAR寄存器或者向ICDICPR寄存器相应的比特位写1,可以清楚中断。所有的SGI为边沿触发。

2.PPI私有外设中断

每个CPU连接一个私有的共享5个外设中断,素有中断的敏感类型是固定的,不能改变,UPI全局定时器,nFIQ,CPU私有定时器,AWDTnIRQ

3.SPI共享外设中断。

PSPL上的各种I/O控制器和存储器控制器产生,这些中断信号会被路由到CPUPS的外设产生的SPI中断也会路由到PL上。默认地,所有共享外设中断类型在复位时是高电平,然后软件使用的ICDICFR2ICDICFR5寄存器编程中断323392为上升沿敏感。


寄存器表


主要用到的中断函数有:

XScuGic_LookupConfig 中断设置查找

XScuGic_CfgInitialize GIC初始化

XScuGic_SetPriorityTriggerType 设置中断优先级及中断触发方式

XScuGic_Connect 设置中断服务程序入口地址

XScuGic_Enable GIC允许

XGpio_InterruptGlobalEnable GPIO全局中断允许

XGpio_InterruptEnable 相应GPIO中断允许

Xil_ExceptionInit 异常处理函数

Xil_ExceptionRegisterHandler

Xil_ExceptionEnable

实验部分在下一篇博客中叙述。

Baidu
map