ARM Cortex-A9软件生成的中断只触发一次

问题描述:

我正在使用ARM Cortex-A9在Zynq7020中,并遇到软件生成的中断问题。ARM Cortex-A9软件生成的中断只触发一次

当我生成核心(写ICDSGIR寄存器)一个SGI ARM1它只能触发一次,而不是再次,更多的写入ICDSGIR不会触发中断。

在发送给ARM1的核心ARM0中生成SGI可以正常工作,但ARM1不会生成ARM1。

有没有在ISR需要SGI任何特殊处理?我在配置中错过了什么?

+0

什么操作系统您使用的?什么是中断驱动程序在做什么?这些可以被掩盖。每个GIC都有一些寄存器的私人副本。 –

+2

您是否在中断处理程序的末尾将指示的ID写回GICC_EOIR? – unixsmurf

+0

@ unixsmurf:谢谢!这解决了问题,我没有意识到这是需要的,因为来自ARM0的SGI工作正常。如果可以的话,我会将你的评论标记为答案。 – qnyz

你或许应该通过与目标处理器的ICCEOIR寄存器一起写中断ID标记中断的末尾:

ICCEOIR register http://i60.tinypic.com/2d7iwro.png