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.

[参考译文] TMS320C6678:是否测试内核之间的通信时间异常?

Guru**** 2609955 points


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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/580527/tms320c6678-test-for-abnormal-communication-time-between-cores

器件型号:TMS320C6678

大家好。

我对以下方面有疑问:

 我在内核0和内核4之间建立了通知通信连接、 内核 4作为主内核、 向内核0发送消息、

例如:

内核0
//初始化
状态= Notify_registerEventSingle (CORE4、0\
10、(Notify_FnNotifyCbck) cbFxn_core4、NULL);

如果(状态< 0){
system_abort ("Notify_registerEvent Failed\n");

while (1)

timeStart=Timestamp_get32();

Semaphore_pend (SEM_core4、BIOS_wait_forever);//等待 core4处理结果

timeEnd=Timestamp_get32();
timeCost=(timeEnd-timeStart)/1000000;
printf ("BIOS_wait_forever 开销时间为:%d ms\n"、timeCost);





内核4.
//初始化
状态= Notify_registerEventSingle (CORE0、0\
10、(Notify_FnNotifyCbck) cbFxn_core0、NULL);

如果(状态< 0){
system_abort ("Notify_registerEvent Failed\n");

while (1)

timeStart=Timestamp_get32();




while (1)//Notify core0处理

状态= Notify_sendEvent (CORE0、0、10、0、true);
如果(状态< 0){printf ("发送错误\n");继续;}
否则中断;




timeEnd=Timestamp_get32();
timeCost=(timeEnd-timeStart)/1000000;
printf ("BIOS_wait_forever 开销时间为:%d ms\n"、timeCost);


输出如下所示:

内核0:

[C66xx_0] BIOS_wait_forever 时间成本为:169ms

[C66xx_0] BIOS_wait_forever 时间成本为:0ms

[C66xx_0] BIOS_wait_forever 时间成本为:75ms

[C66xx_0] BIOS_wait_forever 时间成本为:0ms

[C66xx_0] BIOS_wait_forever 时间成本为:89ms

[C66xx_0] BIOS_wait_forever 时间成本为:0ms

[C66xx_0] BIOS_wait_forever 时间成本为:74ms

[C66xx_0] BIOS_wait_forever 时间成本为:0ms

[C66xx_0] BIOS_wait_forever 时间成本为:95ms

[C66xx_0] BIOS_wait_forever 时间成本为:0ms

核心4:

[C66xx_4]时间成本为:11ms

[C66xx_4]时间成本为:11ms

[C66xx_4]时间成本为:11ms

[C66xx_4]时间成本为:11ms

[C66xx_4]时间成本为:11ms

[C66xx_4]时间成本为:11ms

[C66xx_4]时间成本为:11ms

[C66xx_4]时间成本为:11ms

[C66xx_4]时间成本为:11ms

我不明白为什么 core4在大约11ms 时保持稳定、但 core0 时间一直不稳定。

请帮帮我。

谢谢。

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

    我已通知设计团队。 他们的反馈将在此处发布。

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

    你(们)好

    在开始处理之前、如何确保两个内核同步、我有点困惑

    您可以(例如)让内核0等待另一个信标、 并延迟内核4以确保内核 0已为该信标做好准备、然后开始实验

    已运行

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

    您好!

    已运行。

    感谢您的回答。

    我通过  IPC_START()、IPC_ATT()连接多核,以同步所有远程处理器

    内核0是另一个信标等待、 红圈如下所示。

    Frank Zach

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

    你(们)好、Frank

    我可以理解为什么内核4非常稳定-其代码不依赖于任何外部播放器、等待内核4的内核0不稳定。

    我不知道内核0接收到消息后处理信号量需要多长时间。  

    我想建议一种替代方法:

    使用 CTTOOLS 库中的交叉触发(AER lib -请参阅 http://processors.wiki.ti.com/index.php/CToolsLib_Article 并搜索交叉触发器。 然后生成从内核4到内核0的触发信号、然后发送消息。  内核0将在 ISR 中记录连接到触发器的时间、并记录接收消息后的时间。

    它会给你感应吗?

    已运行