TI中文支持网
TI专业的中文技术问题搜集分享网站

AM2634-Q1: IPC 多核间通信,不能触发中断,需要协助分析一下。

Part Number:AM2634-Q1

你好:
        我们这边在调试 am263x ipc_notify功能时候出现以下问题,想请教一下怎么去解决:
问题描述:
1、在操作到第二步时候,看到核0的IPC寄存器READ_REQ对应的位被置1,但核0并没有进入中断;(补充:使用函数    vimTriggerSoftInt    测试过中断配置,可以触发进入,即中断配置是对的)
 
2、在进入中断后,需要清理中断标志位,具体是清哪一个寄存器?
参考SDK的例程,清标志位是清    write done
但实际上,被置位的是    read req   ?
具体代码:
中断配置:
Vim_IntCfg intCfg;
intCfg.map = VIM_INTTYPE_IRQ;
intCfg.type = VIM_INTTRIGTYPE_LEVEL;
intCfg.intNum = MSS_CR5A_MBOX_RD_REQ;
intCfg.handler = IPC_CoreReqHandle;
intCfg.priority = VIM_PRIORITY_3;
vimRegisterInterrupt(&intCfg);
vimEnableInterrupt(MSS_CR5A_MBOX_RD_REQ);

intCfg.map = VIM_INTTYPE_IRQ;
intCfg.type = VIM_INTTRIGTYPE_PULSE;
intCfg.intNum = MSS_CR5A_MBOX_RD_ACK;
intCfg.handler = IPC_CoreReqHandle;
intCfg.priority = VIM_PRIORITY_3;
vimRegisterInterrupt(&intCfg);
vimEnableInterrupt(MSS_CR5A_MBOX_RD_ACK);

触发代码:(省略了写共享内存部分,本函数是写完共享内存后通知目标核读取数据)
void IPC_NotifyCoreWriteDown( uint32_t TarCore)
{
uint32_t mailboxBaseAddr, intrBitPos;
IpcNotify_SwQueue *swQ;
IPC_GetNotifyMailboxAddr(&TarCore, &mailboxBaseAddr, &intrBitPos, &swQ);

volatile uint32_t *addr = (uint32_t *)mailboxBaseAddr;
*addr = (1<<intrBitPos);
}

Cherry Zhou:

您好,我们已收到您的问题并升级到英文论坛寻求帮助,如有答复将尽快回复您。谢谢!

,

Cherry Zhou:

您好,

?? ? 说:1、在操作到第二步时候,看到核0的IPC寄存器READ_REQ对应的位被置1,但核0并没有进入中断;(补充:使用函数    vimTriggerSoftInt    测试过中断配置,可以触发进入,即中断配置是对的)

-请问是哪个内核正在写入write down寄存器? 请确保发送方内核正在写入内核专用的write down寄存器。 然后,接收器内核可以读取 REQ 寄存器,来了解是哪个内核触发了中断。

?? ? 说:2、在进入中断后,需要清理中断标志位,具体是清哪一个寄存器?
参考SDK的例程,清标志位是清    write done
但实际上,被置位的是    read req   ?

-中断标志位可通过写 REQ 寄存器来清零。 SDK 还会写入读取 REQ 寄存器以清除中断。

赞(0)
未经允许不得转载:TI中文支持网 » AM2634-Q1: IPC 多核间通信,不能触发中断,需要协助分析一下。
分享到: 更多 (0)