zynq中断入门

来源:互联网 发布:质量控制系统 php 编辑:程序博客网 时间:2024/04/29 12:33

URL: http://blog.csdn.net/xzyiverson/article/details/20360161

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

系统中断框图如下:

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

中断详细分为SGI(Software Generated Interrupts)软件中断,PPI(Private Peripheral Interrupts)私有外设中断,SPI(Shared Peripheral Interrupts)共享外设中断。

1.      SGI软件中断

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

2.      PPI私有外设中断

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

3.      SPI共享外设中断。

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


寄存器表


主要用到的中断函数有:

XScuGic_LookupConfig               中断设置查找

XScuGic_CfgInitialize                GIC初始化

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

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

XScuGic_Enable                   GIC允许

XGpio_InterruptGlobalEnable             GPIO全局中断允许

XGpio_InterruptEnable                相应GPIO中断允许

Xil_ExceptionInit                    异常处理函数

Xil_ExceptionRegisterHandler

Xil_ExceptionEnable


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

0 0