sgu*_*pta 5 arm multicore interrupt
这个问题已经回答了x86然而,我找不到很多关于ARM MP cpus如Cortex-A9,Cortex-A15等...
更重要的是,我想知道是否可以在非主cpu上引发中断而无需任何配置等.
我正在研究一个只处理主CPU的软件,因此我将其余部分置于WFI状态,但是我不知道MP arm cpus上的中断是如何工作的,主cpu是否可能继续执行代码和其中一个cpu选择它并跳转到向量表中的指令并执行该代码?
顺便说一下这是我用来将它们置于低功耗模式的代码
uint32_t reg;
__asm__ volatile("mrc p15, 0, %0, c0, c0, 5" : "=r" (reg));
reg &= 0xF;
if(reg > 0)
goto spin;
<code snipped>
spin:
for(;;)
cpu_idle(); // cpu_idle -> wfi
Run Code Online (Sandbox Code Playgroud)
uni*_*urf 10
简短且实用的正确答案是,如果没有在辅助核心上执行某些配置,您所要求的是不可能的......
在http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.ihi0048b/index.html中详细描述了中断控制器架构(非常详细).
要准备辅助核心以接收IPI,您需要:
如果您不打算实现中断处理程序,请跳过清除I位.核心将来自WFI并继续执行.这通常是您想要的系统启动操作.