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.

[参考译文] PROCESSOR-SDK-AM437X:EtherCAT PRU MMU 配置

Guru**** 2603695 points
Other Parts Discussed in Thread: PRU-ICSS-INDUSTRIAL-SW

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/600857/processor-sdk-am437x-ethercat-pru-mmu-configuration

主题中讨论的其他器件:PRU-ICSS-INDUSTRIAL-SWSYSBIOSSDK-IND-Sitara

您好!

使用 AM437x IDK 板和 PRU-ICSS-EtherCAT_Slave_01.00.02.01固件

修改了 EtherCAT_SLAVE_FULL_AM437x_ARM 示例、并定义了大小为1KB 的 TxPdo 以评估 AM437x EtherCAT 性能。 在 PDI_ISR()中将1k 数据复制到 PRU 大约需要50us。 当 TxPdo 对象大小设置为6KB 时、时间增加到300us。 这在运行1ms EtherCAT 周期时间时是不可接受的。

跟踪代码、时间主要来自函数(来自 tisebsp.c)

void bsp_write (PRUICSS_handle pruIcssHandle、uint8 *数据、uint16地址、 uint16 len)

uint8_t *PESC =(uint8_t *)((((PRUICSS_HwAttrs *)(pruIcssHandle->hwAttrs))->baseAddr + PRU_ICSS_SHARTE_RAM);
memcpy (&PESC[address]、pdata、len);

经进一步调查、我发现 PRU-ICSS0/1的 MMU 配置在 AM437X_app.cfg 中设置为可缓冲。 如果将其更改为 不可缓冲、则 只需7us 即可将1k 数据复制到 PRU。 当 TxPdo 对象大小为6KB 时、时间大约为50us。  

问题:

为什么 PRU 共享存储器设置为"可缓冲"? 这会导致一个很大的性能问题

2.如果将 MMU 设置为" 不可缓冲"、是否存在问题?

谢谢你。

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

    您是否在论坛的顶部阅读过此声明: e2e.ti.com/.../580869

    TI 正在将对 AM335x 和 AM437x 的所有协议的支持转移到 PRU-ICSS-INDUSTRIAL-SW、以便为当前和未来器件上的工业软件交付提供单一模型。 PRU-ICSS-INDUSTRIAL-SW 已用于 AM57x 器件。

    AM335x 和 AM437x 工业协议支持已开始从 SYSBIOSSDK-IND-Sitara (IND SDK 2.x)迁移到 PRU-ICSS-INDUSTRIAL-SW。
    到2017年6月底、PRU-ICSS-INDUSTRIAL-SW 将支持 AM335x 和 AM437x 的所有当前协议。

    TI 于2017年3月31日停止提供和支持 SYSBIOSSDK-IND-AM335x、2017年6月30日之后不再提供或支持 SYSBIOSSDK-IND-Sitara。

    如果您有兴趣在这些日期之后接收这些 SDK 的维护版本和技术支持、请联系 IndSDKSupport@list.ti.com 或您的 TI 代表。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我已经使用最新/最优秀的 PRU-ICSS-EtherCAT_Slave_01.00.02.01、并得到了您提到的注意事项。

    请将我的问题传递给 EtherCAT 固件工程师。

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

    大家好、Karl、在过去的一些测试中 、我使用了 MMU"可缓冲"来提高性能。 在这里看到的情况并不有趣。 我会将这些信息传递给开发人员、感谢您的讲解。 另一方面、使用"不可缓冲"不应是任何问题

    谢谢、

    Paula

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

    大家好、Karl、我们的开发人员对来自 ICSS 共享存储器的100个字节的写入和读取进行了50次测试。 针对可缓冲和 tex 设置的所有可能组合所花费的最小和最大时间(以 CPU 周期为单位)如下:

    共享内存   最大 最小
    写入 buf:false,tex:1. 385. 78
      buf:true,tex:1. 3075 2830.
      buf:false,tex:0 3084 2832.
      buf:true,tex:0 367. 123.
           
    主机 IRQ buf:false,tex:1. 2809. 2455
      buf:true,tex:1. 2780 2617.
      buf:false,tex:0 2802. 2617.
      buf:true,tex:0 1443. 1313.

    从上面的结果可以看出、最理想的组合是 buf:true 和 tex:0 (这是我们 针对 ICSS 区域的当前 MMU 设置)。 但是、对于只写入、我们看到 buf:false、tex:1会得到很好的结果。

    我们希望与您分享此测试结果、供您参考。

    谢谢、

    Paula

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

    MMU 设置为 buf:true、tex:1. 我所做的是将 buf 更改为 False、并且性能显著提高。 感谢您分享测试结果。

    Karl