我读到ARM中生成的软件中断被用作处理器间中断。我也可以看到其中5个中断已经在使用中。我还知道ARM提供了16个软件生成的中断。
在我的应用程序中,我在一个ARM Cortex核心上运行裸机应用程序,在另一个核心上运行Linux。我想要将一些数据从运行裸机应用程序的核心通信到运行Linux的核心。我计划将数据复制到芯片上的内存(共享内存),并触发一个SGI中断(在运行Linux的核心上)来指示有一些可用于处理的数据。现在我能够从运行裸机应用程序的核心生成SGI中断。但是对于在Linux方面处理中断,我不确定哪些SGI IRQ号码是空闲的,也不确定是否可以直接使用IRQ号码(通常SGI为0-15)。有没有人知道如何在Linux中编写SGI处理程序?
编辑:由于 SSCE原因,上述文本进行了重新措辞。Cortex-A CPU用于多CPU系统。ARM 通用中断控制器(GIC)监视所有全局中断并将它们分派到特定的CPU。为了使各个CPU相互信号,从一个核心发送软件生成的中断(SGI)到另一个核心;这使用外围专用中断(PPI)。这个问题是,如何实现一个Linux内核驱动程序,可以作为PPI接收SGI?
pdev
和dev
都被发送到probe()
函数。static int probe(struct platform_device *pdev)...
,static struct platform_driver driver = { .probe = probe };
以及module_platform_driver(driver);
和dev = &pdev->dev
。 - artless noiseICDSGIR
。NSATT
指定了 trustzone 是否安全。您可以选择任何未使用的中断 (0-15)。 - artless noise