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:AM6442 PRU 以太网 1588 时间戳性能问题

Guru**** 2550410 points


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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1568256/am6442-am6442-pru-ethernet-1588-timestamp-performance-issue

器件型号:AM6442


工具/软件:

有关 cssg_cureth 的更多信息。 C 和 CSS_IEP。 c 在 Linux SDK 10.00 中、我目前有以下问题:
1.该接口通过在我们的应用程序中多次调用 ICSS_IEP_gettimeex 来支持获取时间戳的最小调用间隔是多少? 我们当前的应用可能会以 1us 甚至更小的间隔持续调用此接口。 这是正确的吗?
2. ICSS_IEP_gettimeex 中的 mutex_lock 能否从代码中删除?移除后会产生什么影响?


3.在代码中发现 ICSS_IEP_gettime 和 ICSS_IEP_settime 将在 ICSS_IEP_PTP_adjtime 中调用。 我们是否需要将 ICSS_IEP_PTP_adjtime 的线程优先级高于其他实时线程? 否则、在获取 gettime 后、线程将切换到另一个高优先级线程、导致时间在设置时间时已经过去、这将影响 PTP 的同步精度?


4.您能否提供相关的技术信息以帮助了解代码中 ICSS_IEP_gettimeex 在 prueth_IEP_gettime 中的代码实际执行情况。

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

    您好、Yuchuan、  

    当这些问题深入探讨 PRU-ICSSG 以太网和 IEP 驱动程序时、我可能需要时间咨询软件开发团队。  

    您似乎在尝试修改或编写自己版本的 PTP 时间戳功能。 我可以在这里问您的预期终端应用/目标是什么?

    -道林

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

    尊敬的 Daolin:

    是的、我们基于 PTP 原理简化了协议栈、并将其应用到了我们自己的实时系统中。 应用程序用户希望在线程间业务中使用 gettime 接口进行时间同步方案。

    谢谢!

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

    您好、

    PFB。

    是否可以从代码中删除 ICSS_IEP_gettimeex 中的 mutex_lock?删除后会产生什么影响?

    这是必需的。 这可确保在硬件总线拆分为 2 x 32 位读取时、从 ARM 内核进行的 64 位突发读取具有原子性。 我记得我们甚至在最新的 Linux 基准中禁用了硬件 IRQ。

    在代码中、发现 ICSS_IEP_gettime 和 ICSS_IEP_settime 将在 ICSS_IEP_PTP_adjtime 中调用。 我们是否需要将 ICSS_IEP_PTP_adjtime 的线程优先级高于其他实时线程? 否则、在获取 gettime 后、线程将切换到另一个高优先级线程、导致设置时间时时间已经过去、这将影响 PTP 的同步精度?

    Timesync 任务始终优先于更高的优先级。 实际要求取决于系统的时序限制。 如果系统中还有其他高优先级任务、只要任务切换和执行延迟已知并有限制、这是可以接受的、我认为这是可以接受的。 settime 操作不会频繁发生 — 仅在初始同步期间或主时钟出现显著漂移时。

    您能否提供相关技术信息来帮助了解代码中 ICSS_IEP_gettimeex 在 prueth_IEP_gettime 中的代码实际执行情况。

    IEP 计时器利用 IEP 的低 32 位计数器来实现 IEEE 802.1 QBv 周期时序、同时使用相同的计数器来保持与 PTP 对齐的 64 位本地时钟。 高位(结合 23 位 iepCntHi 与 roloverCntHi 向左移动 23 个位置)跟踪 PTP 秒、当乘以 1,000,000 并与低 32 位 (iepCntLo) 相结合时、它会创建一个完整的纳秒级精度时间戳。 这种共享计数器方法可确保 QBv 周期时序和 PTP 对齐的本地时钟保持固有同步。

    是的、我们基于 PTP 原理简化了协议栈、并将其应用到我们自己的实时系统中。 [/报价]

      这是哪种 RTOS 和 PTP 协议栈?

    BR、
    Jc.

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

    您好、

    感谢您的回复!

    操作系统是由我们自行开发的,类似于 VxWorks。  PTP 协议栈是一个极简的协议栈、几乎只计算 T1-T4 同步算法。 我们的应用旨在使用 IEP 的内部计时器作为系统的时基、来实现特定的时间相关同步功能。

    我不知道此应用解决方案的设计是否有任何问题。

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

    尊敬的 Yuchuan:

    感谢您提供有关您的用例的其他信息。 JC 的回答是否有助于解决您的问题? 您还想回答其他问题吗?

    -道林