任何一个嵌入式系统级的设计都离不开中断,对于拥有双cotex-A9 的Zynq来说也一样。Zynq 的中断设计由ARM 与GIC pl390 中断控制器组成,用于接收IOP(I/Operipherals)与PL 的信号。如下图所示,CPU 中的中断分为PPIs(private peripheral interrupts),SGIs(software generated interrupts) 与SPIs(shared peripheral interrupts) 其中, 通过写GIC(generic interrupt controller) 的寄存器来产生SGIs。从Xilinx 给出的ug585 手册中可以清晰的看出GIC 与PPIs,SCIs,SPIs的关系。GIC 可以管理从PS与PL 部分产生的中断,并且对其使能, 优先级等作出设置, 与普通ARM 相同,所有的中断都会赋予一个中断ID ,用作CPU 的相应。
对于SPIs 来说,其中断源也可以从任意子系统PS中的IOP 或者PL 部分的信号产生。下图为中断控制器的框图,更能够体现出PPIs,SPIs,SGIs的关系,中断响应后会从与之对应的CPU 接口进行处理。
下面就分别来说说这三种中断,对于SGIs 来说,每一个CPU 核可以通过SGIs 来响应自己的,其他的或者两个CPU 核的中断,通过写ICDSGIR 控制器来控制SGIs,ICDICFR0是控制SGIs 优先级及触发条件的寄存器,这是一个只读寄存器,由此我们可以看出SGIs的触发条件是上升沿,不可以进行更改。
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
全部0条评论
快来发表一下你的评论吧 !