This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] TCI6636K2H:DSP 内核4、5、6、7无法直接与 ARM 通信。

Guru**** 2589265 points


请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/637263/tci6636k2h-dsp-core-4-5-6-7-cannot-communicate-with-arm-directly

器件型号:TCI6636K2H

您好!

我们正在尝试在 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则不成功。

有人会解释这种行为的原因吗?


此致
董君利

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好!

    我已通知软件团队。 他们的反馈将直接发布在此处。

    此致、
    Yordan
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    MsgCom 不能在任何内核上运行是没有理由的。 它使用 QMSS (导航器)硬件队列、这些硬件队列是器件的全局资源-这意味着所有内核都可以推送和弹出到这些队列。 可能 MsgCom 在内核3-7上未正确运行或配置。 对于测试、您可以将 msgs 从 ARM 发送到 DSP3。 一旦您发现 ARM 进程被推到了什么队列、您应该能够从 DSP3检查这些队列。 执行此操作将需要检查相关队列的"队列透视"区域(有关区域和寄存器内存偏移、请参阅导航器用户指南)。 如果队列包含描述符、则需要确定队列中的进程为何看不到它们。