本文通过定时器中断实验,介绍zynq 的中断和定时器的基本使用方法。
本文是在helloworld 实验的基础上完成的,所以必须先完成了helloworld 的实验。这个可以学习本博客的helloworld 实验,或者开发板提供的helloworld 实验。
1:中断和定时器介绍:
中断对于保证任务的实时性非常必要, 在 ZYNQ 里集成了中断控制器 GIC(Generic Interrupt Controller)。GIC 可以接受 I/O 外设中断 IOP 和 PL 中断, 将这些中断发给CPU。
中断体系结构框图图下(ug585 page221) :
中断可以分为三类:
软件中断:SGI (Software Generated Interrupts )通过写 ICDSGIR 寄存器产生 SGI.
共享中断:SPI (Shared Peripheral Interrupts )通过 PS 和 PL 内各种 I/O 和存储器控制器产生。
私有中断:PPI (Private Peripheral Interrupts )包含: 全局定时器, 私有看门狗定时器, 私有定时器以及来自 PL 的 FIQ/IRQ。
本文主要介绍 私有中断PPI, 其它的请参考官方手册 ug585_Zynq_7000_TRM.pdf。
ZYNQ 每个 CPU 链接 5 个私有外设中断, 所有中断的触发类型都是固定不变的。 并且来自 PL 的快速中断信号 FIQ 和中断信号 IRQ 反向, 然后送到中断控制器因此尽管在ICDICFR1 寄存器内反应的他们是低电平触发, 但是 PS-PL 接口中为高电平触发。 如图所示(ug585 page 222: