您好!
我们正在尝试在 ARM 和每个 DSP 内核之间建立 Msgcom 通道。
为此、我们遵循 了 processors.wiki.ti.com/.../Msgcom 中的指南。
我们的开发环境如下。
- MCSDK 3.1.4.7
-SYSLIB 3.0.9.0
-CGT 7.4.8
目前、我们一直处于 Agent_isControlChannleUp (DNUM)状态。
对于内核0、1、2、3、该函数返回时没有错误。 但是、对于内核4、5、6和7、它不能正确返回。 下面是我们在 ARM 和 DSP 端的代码。
< ARM >
memset ((void *)&agentCfg、0、sizeof (Agent_Cfg));
agentCfg.LocalID = getpid();
agentCfg.isDefaultProcess = 1;
agentCfg.remoteId = 0;
G_AgentHnd = Agent_init (&agentCfg);
如果(g_AgentHnd =NULL)...
< DSP >
如果(Agent_init ((void *) 0xA0000000)<0)...
memset ((void *)&agentChannelCfg、0、sizeof (Msgcom_ControlCfg));
agentChannelCfg.rpcId = DNUM;
agentChannelCfg.chConfig.mode = Msgcom_ChannelMode_NON_BLOCKING;
agentChannelCfg.chConfig.appCallBack =空;
agentChannelCfg.chConfig.u.queueDMACfg.interruptMode = Msgcom_QueueInterruptMode_NO_INTERRUPT;
agentChannelCfg.chConfig.u.queueDMACfg.rxFreeQueueNum = Pktlib_getInternalHeapQueue (g_ArmDspHeapHnd);
G_ArmDspAgentHandle = Agent_create (&agentChannelCfg、&errCode);
while (1)
{
if (Agent_isControlChannelUp (CORE)< 0)
{
Task_sleep (1);
继续;
}
其他
{
中断;
}
}
在我们的程序中、内核3创建了 g_ArmDspHeapHnd、所有其他内核都没有问题地找到了堆。
奇怪的是、无论 ARM 端的 agentCfg 参数如何变化、结果都是相同的。
例如、虽然我们将 agentCfg.remoteId 从0更改为7、但内核0 ~ 3始终成功返回、而内核4 ~ 7则不成功。
有人会解释这种行为的原因吗?
此致
董君利