万变不离其宗之ZYNQ中断介绍

          看了几天的ZYNQ,针对中断小生分享一些自己的理解

          Zynq的PS是基于ARM架构,使用了两个Cortex-A9处理器(CPU)以及GIC pl390中断控制器(单核Zynq则只有一个GIC)。

1.系统框架

GIC是通用中断控制器(Generic Interrupt Controller)的简称。双核的中断系统框图如下:

Zynq的中断结构与CPU密切相关,可以接受来自I/O外设和PL部分的中断。从上图我们可以看到中断主要分为私有外设中断PPI、软件生成中断SGI和共享外设中断SPI。

所有中断请求(PPI、SGI、SPI)都分配了唯一的ID号。控制器使用ID号执行仲裁,中断分发器有每个CPU中挂起的中断列表,它会选择中断优先级最高的中断,将其发送给CPU接口。中断优先级相同时先选择ID号小的中断。中断分发器会接收中断已被应答的信息,更改相应的中断状态。

如果中断和多个CPU有关,SGI和PPI分发器的寄存器会为每个CPU提供独立的副本,硬件上确保中断一次只能由一个CPU执行。只有应答了中断的CPU才能中止那个中断。

2.通用中断控制器

         GIC用于管理从PS和PL发送到CPU的中断(见上图)。当CPU接口接受一个中断时,GIC对中断源做启用、禁用、屏蔽、设置优先级处理,并以可编程的方式将它们发送到选定的CPU。此外GIC还支持安全扩展,以实现安全感知(security-aware)系统。Zynq中的中断控制器基于ARM GIC v1.0版本。

GIC通过CPU专用总线来访问寄存器,实现快速读写响应,以避免临时阻塞等其它互联中的瓶颈。在将具有最高优先级的中断源分配给各CPU前,中断分发器先集中所有中断源。GIC确保针对多个CPU的中断一次只能由一个CPU执行。所有中断源都由唯一的中断ID号标识。每个中断源都有自己可配置的优先级和目标CPU列表。三种中断的中断源如下图:

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

3.      SGI软件中断

    软件生成中断简称SGI,可以路由到一个或两个CPU。通过写入GIC中的寄存器来产生软件中断。每个CPU都可以产生16个软件中断,中断号为0-15。向ICDSGIR寄存器写入SGI中断号,并设置目标CPU,便可生成SGI中断。每个CPU都有自己的一组SGI寄存器,所有的SGI为边沿触发。

4.      PPI私有外设中断

       每个CPU都有一组私有外设中断,简称PPI,这些中断使用存储寄存器进行私有访问。PPI包括全局定时器、私有看门狗定时器、私有定时器和来自PL的FIQ/IRQ共五种外设,中断号为27-31,其中断敏感类型(Type)固定不可改变。

5.      SPI共享外设中断。

     共享外设中断简称SPI,由PS和PL中的各种I/O和内存控制器产生,共有60个左右。SPI可以被路由到一个或两个CPU。来自PS外设的SPI中断也可以路由到PL。中断控制器会管理这些中断的优先级和接收。中断号61-68和84-91的中断敏感类型可以改变,其余皆固定不变,见下表。
对于电平敏感类型的中断,中断请求源必须提供在中断被确认后将其清除掉的机制。对于上升沿敏感类型的中断,请求源必须提供足够宽的脉冲,让GIC能够捕获。比如来自PL的中断IRQF2P[n]中断便可配置为高电平敏感或上升沿敏感,使用时要注意。

 
6. 寄存器表

如需观看笔记,请移步到笔记专栏

  • 2
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Zynq中,中断是一种处理器暂停正在执行的当前任务,转而执行与中断相关的任务的机制。Zynq中断具有优先级的概念,优先级决定了中断被响应的顺序。 每个中断都有一个特定的优先级,优先级数值越小表示优先级越高。当多个中断同时发生时,Zynq会根据中断的优先级来决定哪个中断优先被处理。 Zynq中,有两种类型的中断优先级:硬件优先级和软件优先级。硬件优先级由Zynq硬件定义,软件优先级由软件编写者进行定义。 硬件优先级在中断控制器内部实现,是通过对中断请求信号进行优先级编码来实现的。每个中断请求都有一个对应的优先级。当多个中断请求同时到达中断控制器时,硬件会根据这些优先级进行比较,并选择优先级最高的中断请求来处理。硬件优先级在编程过程中无法修改,由硬件设计决定。 软件优先级由编程者在中断处理程序中定义。在Zynq中,可以通过配置寄存器来设置每个中断的软件优先级。软件优先级与硬件优先级相互独立,但软件优先级必须小于硬件优先级。软件优先级的设置允许开发者自定义中断的响应顺序,以满足特定需求。 总的来说,Zynq中断的优先级是通过硬件优先级和软件优先级来确定的。硬件优先级由硬件设计决定,而软件优先级由编程者在中断处理程序中进行设置。根据这些优先级,Zynq选择性地处理中断请求,以确保高优先级的中断可以及时响应和处理。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值