ZYQN(三):PS的中断说明

说明:
开发软件: vivado 和 sdk
开发平台:黑金ZYNQ的7010

翻开 UG585 中断部分,Zynq 中断大致可分为三个部分,
中断详细分为
SGI(Software Generated Interrupts)软件中断,
PPI(Private Peripheral Interrupts)私有外设中断,
SPI(Shared Peripheral Interrupts)共享外设中断。
1 为 SGI,软件生成的中断,共 16个端口;
2 为 PPI,CPU 私有外设中断,有 5 个;
3 为 SPI,共享外设中断,来自于 44 个 PS 端的IO 外设以及 16 个 PL 端的中断。
中间部分为 GIC,也即中断控制器,用于对中断进行使能、关闭、掩码、设置优先等

ZYQN(三):PS的中断说明_第1张图片

下面为中断控制器框图,主要的控制器部分为ICC和ICD,其中ICC连接的SGI和PPI,ICD连接SPI

ZYQN(三):PS的中断说明_第2张图片
下面是中断各项分布:

  1.  SGI软件中断(16个)
    

存在16个软件产生的中断,通过向ICDSGIR寄存器写入SGI中断号,以及指定目标CPU,来
产生一个软件中断,通过读ICCIAR寄存器或者向ICDICPR寄存器相应的比特位写1,可以清
楚中断。所有的SGI为边沿触发。
ZYQN(三):PS的中断说明_第3张图片
2、CPU内部的私有中断-(在单CPU角度看具有5中断)
每个CPU连接一个私有的共享5个外设中断,素有中断的敏感类型是固定的,不能改变,UPI全
局定时器,nFIQ,CPU私有定时器,AWDT,nIRQ
ZYQN(三):PS的中断说明_第4张图片
3、SPI里面设计的中断(60个)
由PS和PL上的各种I/O控制器和存储器控制器产生,这些中断信号会被路由到CPU。PS的外
设产生的SPI中断也会路由到PL上。默认地,所有共享外设中断类型在复位时是高电平,然
后软件使用的ICDICFR2和ICDICFR5寄存器编程中断32,33和92为上升沿敏感。
ZYQN(三):PS的中断说明_第5张图片

下面是中断寄存器的介绍:详细介绍的是SPI的寄存器
ZYQN(三):PS的中断说明_第6张图片

1、ICDISER: 中断使能寄存器,3 个寄存器,每 1 位代表一个中断号,共 96 个(每个寄存器32位)

2、ICDICER: 中断关闭寄存器,3 个寄存器,每 1 位代表一个中断号,共 96 个(每个寄存器32位)

3、ICDIPR: 中断优先级寄存器,设置优先级,共 24 个寄存器,每 8 位代表一个中断号,共 96 个
     中断号
4、ICDIRTR: CPU 选择寄存器,24 个寄存器,每 8 位代表一个中断号,共 960bxxxxxxx1: CPU interface 0
    0bxxxxxx1x: CPU interface 1
5、ICDICFR: 配置寄存器,用于配置触发方式,电平触发或边沿触发,共有 6 个,每个寄存器 32 位,
   每两位表示一个中断,32*6/2=96 个中断号,能覆盖所有中断。
  

(参数具体来源网络--仅作为笔记参考作用)

配置中断主要用到的函数:
(不包含其中一些经过拓展或者整合的配置函数)

XScuGic_LookupConfig             中断设置查找
XScuGic_CfgInitialize            GIC初始化
XScuGic_SetPriorityTriggerType   设置中断优先级及中断触发方式
XScuGic_Connect                  设置中断服务程序入口地址
XScuGic_Enable                   GIC允许
XGpio_InterruptGlobalEnable      GPIO全局中断允许
XGpio_InterruptEnable            相应GPIO中断允许
Xil_ExceptionInit                异常处理函数
Xil_ExceptionRegisterHandler     当处理器遇到指定的异常时,将调用此处理程序  
Xil_ExceptionEnable              异常使能

为特定的异常注册一个处理程序。当处理器遇到指定的异常时,将调用此处理程序。异常id包含异常源的id,应该在到XIL异常id的范围内。进一步信息参见xil exception.h。处理程序到该异常的处理程序。数据是对数据的引用,在调用处理程序时将传递给处理程序。

你可能感兴趣的:(ZYNQ,笔记)