ZYNQ从放弃到入门(三)- 中断(一)
时间:2023-04-17 14:37:00

在检查PS端IO在口腔状态下,常用的是轮询,但在实际工程中很少使用,主要是在操作复杂逻辑时,轮询效率过低,CPU需要等待IO口状态变化肯定不符合大多数应用,所以在大多数情况下,它是由中断驱动的。
键盘、鼠标、按钮、传感器等。在许多输入系统中。这些设备的输入通常与当前执行的过程或任务异步,并进行轮询 I/O 对于输入多的系统多的系统效率过低。因为不能总是预测事件何时发生,所以必须经常使用轮询 I/O 方法检查 I/O 状态。轮询例程通常会得到空结果,效率低下。使用中断可以使处理器继续进行其他处理,直到事件发生,从而大大提高了执行效率。当发生 I/O 当事件发生时,中断会导致处理器分支和地址搜索 I/O 事件。
在最高水平上,中断可以分为两种类型:可屏蔽和不可屏蔽。但事情并不那么简单。随着处理器越来越先进,中断源的数量呈爆炸性增长。因此,双核 Xilinx Zynq All Programmable SoC 使用 ARM 通用中断控制器 (GIC) 来处理中断,中断可能来自:
中断软件生成 – 每个处理器 16 一个。软件产生的中断可以中断自己和一个或两个处理器。
共享外设中断 – 总共 60 个。这些中断可能来自 Zynq SoC 处理器系统 (PS) 中的 I/O 外设也可能来自设备的可编程逻辑 (PL) 端。两个 ARM Cortex-A9 MPCore CPU 分享这些中断。
Private Peripheral Interrupts – 5 中断,每一个 CPU 都是私有的(比如 CPU 定时器、CPU 看门狗定时器和专用定时器 PL 到 CPU 中断)。
下面是 Zynq SoC 框图,其中 GIC 红圈出来。请注意 GIC 两个怎么靠近? ARM Cortex-A9 MPCore 处理器:红色圈出 Zynq SoC 通用中断控制器 (GIC)由于它们非常灵活,共享外设中断非常有趣。可以把它们从 I/O 外设(总共 44 中断)或从 FPGA 逻辑(总共 16 路由到中断) ARM Cortex-A9 MPCore CPU。也可以从中断 I/O 路由到设备的外设 PL 允许部分 Zynq SoC 当应用程序需要时,可编程逻辑卸载处理器。从 PS IOP 到 PL 的中断
如何解释? Zynq 在上设置中断之前,我想回顾一下 ARM Cortex-A9 MPCore 处理器如何处理中断是个好主意。当中断发生时,将发生以下事件:
中断显示为待处理。
处理器停止执行当前线程。
处理器将当前线程的状态保存在堆栈上,以便在处理中断后允许中断前继续处理。
处理器执行中断服务程序 (ISR),它定义了如何处理中断。
在从堆栈中恢复中断线程后,处理器恢复其操作。
由于中断是一个异步事件,多个中断可能同时发生。因此,优先考虑中断,以便处理器首先处理最高优先级的中断。下一个博客将介绍如何初始化和使用它 Zynq SoC 的 GIC。
ZYNQ从放弃到入门(1)MIO
ZYNQ从放弃到入门(2)-PS端 GPIO