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.

[参考译文] RTOS/EVMK2H:ARM_Linux 和 DSP_BIOS 之间的 IPC.MessageQ

Guru**** 2607125 points


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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/640643/rtos-evmk2h-ipc-messageq-between-arm_linux-and-dsp_bios

器件型号:EVMK2H

工具/软件:TI-RTOS

 您好!

我们在 EVMK2H 模块上测试 ARM_Linux 和 DSP_BIOS 之间的 IPC.MessageQ。测试环境和测试代码(根据 TI 提供的 IMAGE_PROCESING 演示进行修改)部分显示如下。 这是一个简单的测试:Dsp0重复发送消息、每个消息具有400字节的相同值有效载荷、而 ARM 重复接收这些消息。

测试环境:
()目标:EVMK2H Rev40
            ARM:Linux+IPC.MessageQ
            DSP:BIOS+IPC.MessageQ
()仿真器:板载仿真器 XDS2xx
()主机:Windows XP SP3
          CCS5.5
          mcsdk_3_00_03_15
          IPC_3_00_04_29

DSP 代码集
------------------
#define DATA_LEN 400
typedef 结构

   MessageQ_MsgHeader 报头;
   int                core_id;
   特性               DATA[DATA_LEN];
} SMsgTest;
smsgTest* pMsgTest;
   for (j=0;;j++)
   {
      pMsgTest = (SMsgTest*) MessageQ_alloc (0、sizeof (SMsgTest));//HeapId 在 cfg 文件中配置。
      如果(!pMsgTest)
         返回;
      X++;
      for (i=0;<DATA_LEN;i++))
         pMsgTest->data[i]=x;
      if (MessageQ_Put (vQueueId、(MessageQ_Msg) pMsgTest)< 0)
         printf ("MessageQ_Put 出现故障错误\n");
      Task_sleep (1);//Task_sleep (1):大约1毫秒。
   }
   
ARM 代码片段
------------------
   for (j=0;;j++)
   {
      if (MessageQ_get (vMsgQHandle、(MessageQ_Msg *)&pMsgTest、MessageQ_Forever)< 0)
            返回0;
      for (i=1 <DATA_LEN;i++)
         if (pMsgTest->data[0]!=pMsgTest->data[i])
         {
            printf ("%d:data[%d]=%x\n"、j、i、pMsgTest->data[i]);
            中断;
         }
      MessageQ_free ((MessageQ_Msg) pMsgTest);    
  }

  
问题:
除了 ARM 接收到的前几百条消息中的一些不正确之外、一切都运行良好、也就是说、这与 DSP 发送的值不同。 一条错误消息、其中每个值应为20、而不是包含一些0、显示如下:
20、20、20、20、20、20、20、20、20、0、0、0、0、0、0、0、0、0、0、0、0、0、0、0、0、0、0、0、0、0、0、0、0、0、0、0、0、0、0、0、0、0、0、0、0、0、0、0、0、0
0、0、0、0、0、0、0、0、0、0、0、0、0、0、0、0、0、0、0、0、0、0、0、0、0、0、0、0、0、0、0、0、0、0、0、0、0、0、0、0、0、0、0、0、0、20、20、0、20、20、0、20、0、0、0、0、0、0、0、0、0、0、0、0、0、0、0、0、0、0
20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
20、20、20、20、20、20、20、20、20、20、20、20

这是一个奇怪的问题,它已经吃了很多时间。 请帮我找出测试中的问题吗?
非常感谢您的参与。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我已将您的疑问转发给 TI-RTOS 软件专家。 他们的反馈应发布在此处。

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

    我们已迁移到处理器 SDK、最新的 IPC 版本为3.46.2.4。 您可能会尝试查看问题是否仍然存在。

    www.ti.com/.../PROCESSOR-SDK-K2H

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

    您好、Garrett、

    感谢您的快速回放和建议。 抱歉,我无法尝试最新的 IPC 版本,因为它取决于 BIOS、XDC、甚至 CCS 和主机操作系统的最新版本。 我已经检查了处理器 SDK RTOS 的早期版本、从2.0.0到4.1.0、它们几乎不支持我的环境(CCS5.5、Windows XP)。  那么、您能帮我在类似的环境中测试我的应用、并帮我解决吗?

    此致、

    XIN

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

    您正在使用哪种 IPC 传输? 您能否发布 IPC cfg 文件?

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

    您好、Sahin、

    感谢您的回答。

    我们尚未更改任何 IPC 传输配置。 因此、我们使用的 IPC 传输应该是共享内存。

    分别针对 ARM_Linux 和 DSP_BIOS 发布的两个测试项目为以下压缩文件。 您可以在 DSP_BIOS 应用项目中找到 IPC cfg 文件。

    e2e.ti.com/.../msgQ_5F00_writer_5F00_dsp.rar

    e2e.ti.com/.../msgQ_5F00_reader_5F00_arm.rar

    最棒的

    Lixin

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

    我的第一个想法是、这可能是一个高速缓存一致性问题。 请查看以下讨论此问题的主题。

    e2e.ti.com/.../457705

    e2e.ti.com/.../297356

    e2e.ti.com/.../141701

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

    您好、Sahin、

    感谢您的快速回复。 很抱歉我迟到了。

    我已经了解了您在上面提到的帖子。 总而言之、这 可能是由于我的读取器端的高速缓存一致性问题造成的。 但是、我的读取器端是 ARM_Linux、其中与高速缓存相关的操作应该在我不熟悉的 Virtio 传输驱动程序或其他相关驱动程序中进行。 您能否帮助我指出在 ARM_Linux 下修补此错误的方式或位置?

    最棒的

    XIN

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

    我很抱歉,我的回答这么晚了,这条线在某种程度上滑过了裂缝。 您是否能够解决您的问题?

    此致、
    Sahin