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.

[参考译文] AM6421:A53 (Linux)和 R5 (FreeRTOS)之间的公共时间戳

Guru**** 2463330 points
Other Parts Discussed in Thread: TMDS64EVM

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1462409/am6421-common-timestamp-between-a53-linux-and-r5-freertos

器件型号:AM6421
主题中讨论的其他器件:TMDS64EVM

工具与软件:

尊敬的 TI 专家:

我们具有以下设置:

0)  TMDS64EVM 作为硬件

1) Processor SDK 10.00.07.04 + 相应的 Yocto for Linux 内核版本6.6.32-ti-01287

2) R5-0-0和 R5-0-1在拆分模式下运行

3)自定义固件,从 SRAM+TMC 在 R5-0-0上运行,带有 FreeRTOS

4)实现 RPMSG、分别在 Linux 和 R5之间实现 IPC

我们的应用:

  • 我们使用 R5读取8通道24位 ADC 数据@ 128ksps 专业通道、并通过共享存储器将数据传输到 Linux。 这种数据称为 Raw Data
  • 我们使用 R5来控制连接到多个接口的不同硬件
  • 我们使用 A 内核上的 Linux 来处理原始数据、配置 R5应用程序并提供与外界的一般连接

我们希望实现的目标:

  • 基本上、我们希望在 Linux 和 R5/FreeRTOS 之间使用公共时间戳/时基
    • 我们希望能够对在 R5上创建的使用时间戳的原始数据包进行标记
    • 对于 R5端的错误处理和事件生成、我们希望能够对这些事件和错误设置时间戳
    • 我们需要能够根据此时间戳订购 Linux 事件并将其与 R5事件相关联。  
  • 时间粒度可以在10us 和100us 之间
  •  Linux/R5之间的时间戳可以有一定的偏移(可能有抖动)、x00ns 非常合理

问题:

  • 实现这一目标的最佳方法是什么? 我们已经做了一些研究、似乎可以选择时间同步路由器+ GTC (https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1061474/faq-am64x-what-is-the-time-sync-router-for-how-do-i-use-it)
  • 在上述情况下、最好的情况是目标内核(R5)不会被 GTC TSR/TSR 中断中断中断中断中断破坏、但是该信号用于使计时器/计数器递增、然后由 R5应用程序根据需要读取其值。 这是否一个合理的解决方案?实现这一目标的主要步骤是什么?
  • 在解决方案过于复杂的情况下、R5读取一个存储当前公共时间的寄存器是很好的选择。 遗憾的是、MCU+ SDK 10.01中只有简要的 GTC API 说明。  
  • 在 Linux 端读取此时间戳(大概是从 GTC 读取)的方法是什么?
  • 在所有情况下、我想 GTC 都必须从 Linux 端进行配置。 同样、该信息几乎缺失、但 TRM 中有几个页面除外、但我们无法找到该节点的 DT 条目描述。 请提供建议!

谢谢。此致、

天使

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

    尊敬的专家:

    有什么建议吗? 谢谢!

    天使

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

    您好、Angel、

    对于此处的延迟、我们深表歉意。 您是否从外部来源获得系统时间? (例如、Linux 上的以太网 PTP?) 或者您只是希望在 Linux 和远程内核之间共享大致相同的时间吗?

    如果可能有数百纳秒的漂移/抖动、您可能不需要特别的设置。 GTC 基本上是 A53内核的计数器、因此其递增速率应与 Linux 系统时间相同。

    当我们针对 AM64x 进行一些基准测试时、访问处理器外部的存储器需要几百纳秒。 处理器内的读取速度应该更快。 我不记得这些是平均值、最坏情况还是最佳情况值、我可以检查是否需要: https://www.ti.com/lit/spracv1

    因此、您甚至可能不需要使用时间同步路由器基础设施(即、无路由器配置、定期脉冲设置等)。 由于您可以处理数百 ns 的偏移/抖动、因此如果 R5F 内核只是定期读取 GTC 值、与它们的本地计数器值进行比较并根据需要调整本地计数器、那么它可能对于您的应用来说就足够了。

    此致、

    Nick