这个问题已经回答了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
答案 0 :(得分:9)
简短且实用的目的正确答案是,如果没有在辅助核心上执行某些配置,您所要求的是不可能的......
在http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.ihi0048b/index.html
中(非常详细地)描述了中断控制器架构要准备辅助核心以接收IPI,您需要:
如果您不打算实现中断处理程序,请跳过清除I位。核心将来自WFI并继续执行。这通常是您想要的系统启动操作。