zynq中断学习记录

对于软件来说,中断是一种异步事件。

中断(主要是硬件中断)可以进一步被分类为以下几种类型:
• 可屏蔽中断(Maskable Interrupts,IRQ)——可通过在中断屏蔽寄存器中设定位掩码来关闭。触   发可屏蔽中断的事件源不是每次都是重要的。程序设计人员需要决定该事件是否应该导致程序跳到所需处理的地方去。使用可屏蔽中断的设备包括定时器、比较器和 ADC。
• 不可屏蔽中断(Non-Maskable Interrupts,NMI)——无法通过在中断屏蔽寄存器中设定位掩码来关闭。这些是不可忽视的中断。NMI 的事件包括上电、外部重启(用实际的按钮)和严重的设备失效。
• 处理器间中断(Inter-Processor Interrupts,IPI)——在多处理器系统中,一个处理器可能需要中断另一个处理器的操作。在这种情况下,就会产生一个 IPI,以便于处理器间通信或同步。

        Zynq 芯片的 PS 部分是基于使用双核 Cortex-A9 处理器和 GIC pl390 中断控制器的 ARM 架构。中断结构与 CPU 紧密链接,并接受来自 I/O 外设(IOP)和可编程逻辑(PL)的中断。中断控制器架构如下图所示:

从上图可知,zynq主要有三类中断:

1、软中断(software generate interrupt,SGI),共16个。

2、私有中断(private peripheral interrupt ,PPI)(CPU0、CPU1各有5个),包括全局定时器、专用看门狗定时器(AWDT)、专用(私有)定时器和来自 PL 的 FIQ/IRQ。

3、共享中断(shared periphearl interrupt ,SPI),PS端有44个,PL端16个,共60个。

对于软中断来说:所有的 SGI 都是边缘触发的,且其敏感性类型是固定的,不能修改。ICDICFR0寄存器是只读的,因为它指定了所有16个gi的灵敏度类型。

对于私有中断来说:ppi的灵敏度类型是固定的,不能改变;因此,ICDICFR1寄存器是只读的,因为它指定了所有5个ppi的灵敏度类型。

对于共享中断来说:对于电平触发的中断而言,接收中断以后需要清除。

一组大约60个来自不同模块的中断可以路由到其中一个或两个
中断控制器为cpu管理这些中断的优先级和接收。
除了irq# 61到#68和#84到#91之外,所有的中断灵敏度类型都是由请求源固定的,不能更改。必须对GIC进行编程以适应这一点。引导ROM不会对这些寄存器进行编程;因此,SDK设备驱动程序必须对GIC进行编程以适应这些灵敏度类型。

对于上升沿触发的中断,请求源必须提供足够宽的脉冲以供GIC捕获。这通常是至少2个CPU_2x3x周期。此要求适用于任何IRQF2P[n](来自PL)具有上升沿灵敏度类型。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值