欢迎关注VxWorks567
如转发 请标注出处
SMP模式下,任务有Affinity,而ISR呢?系统在初始化外设时,只有CPU0启动了,所以所有的ISR默认都是挂接到CPU0上的。
可以通过vxCpuIndexGet()来确认一下
例如,看看Aux的中断在哪里执行
#include <vxWorks.h>
#include <logLib.h> /* logMsg() */
#include <vxCpuLib.h> /* vxCpuIndexGet() */
#include <vxbTimerLib.h> /* vxbAuxClkXxx() */
LOCAL void auxISR()
{
logMsg("AuxISR on CPU%d\n", vxCpuIndexGet(),0,0,0,0,0);
vxbAuxClkDisable();
}
void testAux(int auxRate)
{
if(auxRate < 10)
{
auxRate = 100;
}
vxbAuxClkConnect((FUNCPTR)auxISR, 0);
vxbAuxClkRateSet(auxRate);
vxbAuxClkEnable();
}
启动这个例子testAux(),Aux打印自己使用的CPU后退出
那能不能把某个设备的中断,路由到其它CPU上?
答案是能,而且只需要一个函数。今天以Vx6.9为例,看看这个中断如何路由