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.

[参考译文] AM6442:PRU/DMA 与 R5F 的通信性能问题

Guru**** 2331930 points
Other Parts Discussed in Thread: AM6442, SYSCONFIG
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1516898/am6442-pru-dma-communication-with-r5f-performances-problems

器件型号:AM6442
主题: SysConfig 中讨论的其他器件

工具/软件:

大家好:

我与您联系是因为我注意到系统中存在性能问题。
我使用 AM6642 EVM 卡来提供一些背景信息、以便与从网络建立 EtherCAT 通信。
 μs 系统的性能非常关键、周期时间大约为100 μ s。  我们必须优化一切、以便一切尽可能快地完成。  

因此、我们的应用使用 DMA 和 PRU 与以太网 PHY 连接、从而发送 EtherCAT 帧。  

我的问题如下:帧到达 AM6442的 PHY 与帧在我们的应用中实际可用之间的时间间隔异常长(800字节帧需要15 μs)。  
我本以为这段时间会短得多、约为2 3 μs。 我们的应用在 R5F-cortex (MAIN_Cortex_R5_0_0)上运行。  

如果我理解正确、该帧到达以太网端口、PRU 会实时处理该帧(因此我们希望所需的时间很短)、然后将该帧提供给 DMA、从而将其置于所需的存储器空间(在 MSRAM 中的应用中)。  

根据我的理解、DMA 得到了很好的使用、我们在 SysConfig 中按如下方式配置 PRU:  






我知道没有提供太多信息、但我不知道该提供什么信息。  

你知道我该如何缩短这段时间吗? 是否可以显著降低? 您是否知道这可能需要多长时间?
如果您需要信息、请随时告诉我。

非常感谢您的帮助。

马克西姆  

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

    您在 R5上运行的是什么 EtherCAT 主站协议栈?

    您如何测量15us? 时间始终为15us 还是会有所不同?

    您在 R5上运行什么软件? SDK 版本?

     Pekka

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

    尊敬的 Pekka:  

    非常感谢您的快速回答。  

    我们使用 SOEM 主站堆栈。  

    我们测量的15 µs 时间始终相同。  
    目前、我们使用的是 SDK "mcu_plus_sdk_am64x_08_01_00_36"。  



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

    您好、Nicaise、  

    我们始终测量15 µs 的时间。  [/报价]

    我可以问、以太网帧到达 AM64x EVM 的 PHY 与帧在您的应用/EtherCAT 主站中可用之间的延迟测量结果有多精确?  

    -道林  

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

    大家好、感谢您的回答。  

    我们进行的方式也许不是非常科学的,而是数量级和相当正确的。 从网络的一侧我们在网络的第一个从设备上检测自己(因此最后一个从设备在通过网络传输帧后将帧返回到主设备)端口0上的信号。 当 EtherCAT 帧的最后一个字节通过此端口时、将触发此信号(请参阅图中的红叉)。

    该锁存时间与整个帧到达 Sitara PHY 之间的时间非常短、因为它只是以太网电缆上的循环时间和主器件 PHY 的解码时间。



    在我们的应用程序端、SOEM 栈中有一个"ecx_receive_processdata_group"函数、它本身包含一个"ecx_waitinframe"函数。 当帧在我们的应用程序中可用时,我们在这个"ecx_waitinframe"函数中设置一个测量点。


    如果您不清楚这一点、请告诉我。

    此致、  
    马克西姆



  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    [引述 userid="655434" url="~/support/processors-group/processors/f/processors-forum/1516898/am6442-pru-dma-communication-with-r5f-performances-problems/5835752 #5835752"]

    我们进行的方式也许不是非常科学的,而是数量级和相当正确的。 从网络的一侧我们在网络的第一个从设备上检测自己(因此最后一个从设备在通过网络传输帧后将帧返回到主设备)端口0上的信号。 当 EtherCAT 帧的最后一个字节通过此端口时、将触发此信号(请参阅图中的红叉)。

    该锁存时间与整个帧到达 Sitara PHY 之间的时间非常短、因为它只是以太网电缆上的循环时间和主器件 PHY 的解码时间。

    [/报价]

    这也假设主器件和第一个子器件之间没有系统时间偏移? 您是否在启用直流的情况下测量该值?

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

    是、启用了直流功能。 但我不理解系统时间偏移的想法。  这对测量的时间有何影响?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    是的、DC 功能已启用。 但我不理解系统时间偏移的想法。  这对测量时间有何影响?

    您正在将 S 设备中捕获的时间与 M 设备中的计时器进行比较?

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

    是的、我们测量了帧的最后一个字节离开网络的第一个从站(因此、这是帧返回时通过的最后一个从站)之间的时间、然后该帧才会在我们的应用中实际可用。  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    目前、我们使用的是 SDK "mcu_plus_sdk_am64x_08_01_00_36"。  [/报价]

    更新为较新的版本。 自2021年以来、在十几个左右的版本中、许多错误都得到了修复和更新、尤其是以太网和 ICSSG。 11.0在一个月左右之前发布。  https://www.ti.com/tool/download/MCU-PLUS-SDK AM64X 。

    SOEM 堆栈中有一个"ecx_receive_processdata_group"函数、它本身包含一个"ecx_waitinframe"函数。 一旦帧在我们的应用程序中可用,我们就会在这个"ecx_waitinframe"函数中设置一个测量点。

    通常我们不支持运行第三方软件(如 SOEM)并调试您需要进行的修改。 我建议    为 EtherCAT 主站/主站运行 www.ibv-augsburg.de/.../或 public.acontis.com/.../emlltieneticssg.html。 他们还将记录可以达到的性能。

    如果你仍然想继续你的端口 soem 我的建议指出,由 Pratheesh ,什么时钟被使用,如何测量15us。 如果比较主器件/主器件和从器件/子器件上的时间、首先使用示波器和每秒脉冲数 设置来测量主器件/主器件和从器件/子器件之间的时钟精度。 需要知道一个器件上的任何时间戳与另一个器件相比的准确性。

     Pekka

    [/quote]