部件号: AM3358
您好、
我正在开发一款合并单元、希望通过 PTP 实现时间同步。 FPGA 本身没有硬件时间戳支持。
我正在查看 BeagleBone Black、该器件使用 AM335x ARM 和 2 个 PRU。 我想知道我是否可以在运行 ptp4l 和 ph2c 来同步时钟后生成 PPS 输出 ???
是否有您支持的直接硬件 pps 输出?
你能建议一些材料来指出我的正确方向,以实现这个目的吗???
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.
部件号: AM3358
您好、
我正在开发一款合并单元、希望通过 PTP 实现时间同步。 FPGA 本身没有硬件时间戳支持。
我正在查看 BeagleBone Black、该器件使用 AM335x ARM 和 2 个 PRU。 我想知道我是否可以在运行 ptp4l 和 ph2c 来同步时钟后生成 PPS 输出 ???
是否有您支持的直接硬件 pps 输出?
你能建议一些材料来指出我的正确方向,以实现这个目的吗???
您好 Haseeb、
以下答案是否有助于解决有关获取 PPS 信号的问题?
关于:AM3359:AM335x 器件上 PPS 信号的可用性
此外、您能详细介绍一下 PPS 在您的用例中的用途吗? 如果只是为了在已通过以太网连接的器件之间实现 PTP 时间同步、则可能不需要 PPS。 但是、您的系统中可能有一些特殊用途的 PPS。
-道林
尊敬的 Daolin Qiu:
我正在使用一个 FPGA 系统,其中在硬件结构上,我有这个系统(基本上是一个数据采集) ,这需要时间同步。 现在作为其硬件,它只会理解时钟。 所以协议规定 4000 个样本/秒(我知道的非常少)。
现在为了让我有这个协议,我发现最简单的一个是从 GPS 获取 PPS 并直接将它馈送到硬件,因此我写代码的基础上,以满足协议的标准。
现在他们想要使用 PTP 而不是 GPS(即使我知道 PTP 也会有 GPS 主时钟). 因此、我使用的是一个 BBB 板、它在它上运行了 TI 修补的内核、我能够将 BBB 的时钟与 PTP 同步、然后使用 GPIO 引脚输出 pps 脉冲、该脉冲随后会进入此 FPGA 硬件。
我遇到的问题是、我正在调整 python 脚本 电流以在 GPIO 同步并运行 phc2sys 后切换 GPIO。 它本身是对齐的,但有一个管道延迟和 GPS 派生 PPS 和我自己的 PTP 派生 PPS 总是在一个恒定的延迟约半秒.
现在、我正在尝试使用 RT_PREEME 更改优先级。 但我在 AMC33x 中看到了这个功能、我们可以有一个硬件级联 PRU 时钟、该时钟将根据操作系统流水线滞后运行。
我想知道更多关于它.
谢谢
嗨、Haseeb、
对延迟响应表示歉意
我遇到的问题是 、我正在调整一个 python 脚本电流以在 GPIO 同步后切换 GPIO、然后运行 phc2sys。 它本身是对齐的,但有一个管道延迟和 GPS 派生 PPS 和我自己的 PTP 派生 PPS 总是在持续的延迟约半秒
GPS 派生 PPS 来自哪个设备? 您的目标是将 GPS 衍生 PPS 替换为 PTP 衍生 PPS、还是将 GPS 衍生 PPS 与 PTP 衍生 PPS 同步? 什么器件是 PTP 主时钟?
现在我正在尝试使用 RT_PREEME 更改优先级。 但我在 AMC33x 中看到了这个功能、我们可以有一个硬件级联 PRU 时钟、该时钟将根据操作系统流水线滞后运行。 [/报价]PRU 使用称为 IEP 的模块、从中生成来自 PTP 的 PPS 等同步信号。 这是硬件生成的 PRU 时钟吗? https://software-dl.ti.com/processor-sdk-linux/esd/docs/06_03_00_106/AM335X/linux/Industrial_Protocols_ ptpto.html#PRU-ICSS-IEP
-道林
GPS 派生 PPS 来自哪个设备? 您的目标是将 GPS 衍生 PPS 替换为 PTP 衍生 PPS、还是将 GPS 衍生 PPS 与 PTP 衍生 PPS 同步? 什么器件是 PTP 主时钟? [/报价]目标是将 GPS 衍生 PPS 替换为 PTP 衍生 PPS。 但为了验证我的同步实际工作. 我需要我的 PTP 衍生 PPS 和 GPS 衍生 PPS 在第二个边界对齐。
GPS 派生 PPS ,我正在使用 Garmin 18x LVC 它提供了 PPS 引脚直接输出.. 对于 PTP 服务器、我们的实验室 SyncServer S600 Enterprise NTP/PTP 时间服务器中有一个(它本质上也在内部使用 GPS 源)。PRU 使用一个称为 IEP 的模块、从中生成来自 PTP 的 PPS 等同步信号。 这是硬件生成的 PRU 时钟吗? https://software-dl.ti.com/processor-sdk-linux/esd/docs/06_03_00_106/AM335X/linux/Industrial_Protocols_ ptpto.html#PRU-ICSS-IEP是的,这是我正在寻找的东西. 因此我们运行 ptp4l 同步并执行 phy2sys。 之后回波 1 > enable_pps 将是一个与 GPS PPS 右同步的脉冲?
[/quote]
您提到的设备树适用于 ICE 板。 我正在使用 BBB。 使用同一 TI 芯片。 我们可以使用我自己所需的权限更改上述设备树文件?
直到 BBB 提供了一个功能.
目前我使用的是 5.10.168-ti-R83 内核。 这个似乎没有 ps_enable 驱动程序。
嗨、Haseeb、
目标是将 GPS 衍生 PPS 替换为 PTP 衍生 PPS。 但为了验证我的同步实际工作. 我需要我的 PTP 衍生 PPS 和 GPS 衍生 PPS 在第二个边界对齐。 [/报价]因此、为了进行验证、您需要将 GPS 衍生 PPS 与 PTP 衍生 PPS 同步、但最终目标是替换 GPS 衍生 PPS? 如果是、那么您如何将 Garmin 18x LVC 与您拥有的 PTP 服务器同步/连接? 我的理解是、为了实现时间同步、必须有一些协议正在运行(例如,所有 PTP 器件都使用 PTP 进行同步、从而确保所有 PPS 信号都已同步)。
您提到的设备树适用于 ICE 电路板。 我正在使用 BBB。 使用同一 TI 芯片。 我们可以使用我自己所需的权限更改上述设备树文件?目前我使用的 是 5.10.168-ti-R83 内核。 这个似乎没有 ps_enable 驱动程序。听起来主要的问题似乎是您目前无法在 BBB 上从 PTP 生成 PPS 信号。 首先、您需要检查 BBB 是否有可将 PPS 信号路由到的物理接头/引脚。 其次、看起来就像我在 IEP 分享的 SDK 文档中一样、 使用了使用内核版本的 SDK 06_03_00_106 4.19.94.不过我看到另一个 Industrial_Protocols_版本 https://software-dl.ti.com/processor-sdk-linux-rt/esd/AM335X/08_02_00_24/exports/docs/linux/sdk.ppt.html?highlight=ps_enable 使用内核 5.10、这可能适用于您的情况。 我的想法是也许你可以下载和安装的 WIC 映像的冰板,然后提取 /sys/class/ptp/ptp1/pps_enable 二进制文件到你的 BBB 并尝试运行.
[/quote]您提到的设备树适用于 ICE 电路板。 我正在使用 BBB。 使用同一 TI 芯片。 我们可以使用我自己所需的权限更改上述设备树文件? [/报价]只要仅针对 pinmux 和 IEP 设置进行更改、我认为可以以相同的方式更改 DTS(因为采用相同的 TI SoC)。
-道林
那么您如何将 Garmin 18x LVC 与您拥有的 PTP 服务器进行同步/连接? 我的理解是、为了实现时间同步、必须运行一些协议(例如,所有 PTP 器件都使用 PTP 进行同步、从而确保所有 PPS 信号均已同步)。
问得好。 我也问了同样的问题。 从我的理解 PTP 服务器也定位它的第二边界从 GPS 仅. 另一个消息来源是 Garmin 18x LVC、它直接为我们提供 PPS。 所以我假设所有的 GPS 都是同步的吗? Garmin 18x 将 PPS 输出与第二个边界同步。 因此我们派生的 PTP 服务器也应该如此。 这就是概念。
安装 ICE 电路板的 WIC 映像、然后 将/sys/class/ptp/ptp1/pps_enable 二进制文件解压到 BBB 中、然后尝试运行该映像。
我会尝试这样做,但似乎更像一个黑客. 官方的 ti-patched 内核不支持 ps_enable ? 还是在 ICE 的板级添加?
编辑 1 : 我尝试在这里看到 dtsi 文件. “am33xx.dtsi“这是顶层节点根本没有“pruss“节点。
那么 am335x-bone-common.dtsi 也不会。 am335x-bone-black.dtsi“也有任何节点或者“pruss“或“IEP“
Wix 图像复制较长。 我使用 pruss 驱动程序重建配置、但树节点不可用。 你能告诉我,如果你必须自己写这种内核版本不受支持吗?
嗨、Haseeb、
PTP 服务器也在定位其仅从 GPS 的第二个边界
即使 PTP 服务器和 GPS 定位在相同的第二边界(假设采用相同的 UTC 秒)、我的理解是、这不会考虑由于 GPS 设备和 PTP 设备之间的任何软件抖动或中断延迟差异而导致的任何漂移。 PPS 信号也只会告诉您第二次开始的时间、但不会告诉您第二次开始的时间、因此我认为需要另一种机制来实现 GPS PPS 和 PTP PPS 之间的同步。
经过一些研究,我找到了这个 ts2phc Linux 实用工具,这可能是你的这个用例感兴趣的,也许你可以尝试一下吗? https://linuxptp.nwtime.org/documentation/ts2phc/
[引用 userid=“631258“ url=“~/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1639302/am3358-ptp-time-synchronization-and-getting-a-pps-on-the-output/6331281 ]我会尝试这样做,但似乎更像一个黑客. 官方的 ti-patched 内核不支持 ps_enable ? 或者它被添加到板级在 ICE ?是的,我同意这是更多的黑客,我知道 WIC 图像闪存需要一些时间(不应该超过 15 分钟),但我认为这是获取二进制文件的最快方法,而不必做很多逆向工程,以找出如何获得/建立它的 BBB 在您的系统。
我还认为 ps_enable 更多地是一个用户空间应用程序、而不是内核空间的一部分、因此这涉及文件系统、而不是内核必须包含二进制文件。 因此、我认为您没有看到 BBB 图像中包含 ps_enable 这一事实可能意味着您的 BBB 文件系统不包含 ps_enable。 为了证明这一点、您甚至可以将 TI SDK wic 映像用于 ICE 并使用 BBB 内核替换内核+用 BBB DTB 替换 DTB、并检查 ps_enable 是否可用。 您从哪里获取 BBB 文件系统?
-道林
从我的快速阅读通过互联网. CPSW 没有从本质上可以提供 Pps 的驱动程序?
运行我的 phy2sys 之后。 我是否可以切换 GPIO 并且它需要在没有操作系统延迟的情况下在系统时钟边界同步? 我尝试了 RT_preempt 减少延迟,但不多. 我需要 sub ns pps 延迟。 它给出毫秒。
Daolin Qiu
我还认为 ps_enable 更像是一个用户空间应用程序、而不是内核空间的一部分、因此这涉及到文件系统、而不是内核必须包含二进制文件。 [/报价]我一直很难找到.wic 图像. 我认为它是支持旧的内核和新的内核没有它. 他们也从较新的文件系统中删除了它。
天哪! 。
有什么好的建议?
您好 Haseeb、
那么 am335x-bone-common.dtsi 也不会。 am335x-bone-black.dtsi“也有任何节点或者“pruss“或“IEP“……
抱歉、我之前没有提及这一点、我在内部与 AM335x PTP 使用方面的专家进行了核实、并获悉 BBB 实际上并不会引出 PRU-ICSS 引脚、而仅支持 CPSW 引脚排列。 因此、您不能简单地使用相同的 ICE 电路板设备树来代替 BBB 设备树、必须确保移除桁架和 IEP 节点、而对于 BBB、只能将 CPSW CPTS 用于 PPS。
将使用相同的 ps_enable、但我认为您需要使用/sys/class/pps/pps0(与 CPSW CPTS 计时器 ptp0 相关联):
PTP 时钟名称: /sys/class/ptp/ptp0 :CTP 计时器 /sys/class/ptp/ptp1 :PRUSS2 计时器 pps 的 PTP 设备: /sys/class/pps/pps0 :ptp0 /sys/class/pps/pps1:ptp1.
-道林
将使用相同的 ps_enable、但我认为您需要使用/sys/class/pps/pps0(与 ptp0(这是 CPSW CPTS 计时器)关联):
我是否需要为其使用特定的文件系统??? 除了 CTP 计时器,我看不到 pps0 或 ptp1。 连接下面的图像。


我正在使用 TI 的补丁内核: 5.10.168-ti-R83。
他们是否放弃了驱动程序、或者我必须在启用了这些驱动程序的情况下重新编译内核?
您好:
请参阅 Linux CPSW 驱动程序页面、搜索 PTP。 特别是、“生成与 CPTS PTP 时钟同步的每秒脉冲 (PPS) 信号“一节提供了有关从 CPSW 外设内的 CPTS 计数器生成 PPS 信号的重要信息。
我将链接到 Linux 内核 5.10 版本的文档、因为您当前使用的是这个较旧的 SDK:
请注意、SDK 8.2 和 SDK 9.1 版本太旧、我们无法在论坛上提供全面支持。 SDK 11.2/kernel 6.12 是 TI 针对 AM335x 发布的最新软件版本。
此致、
Nick
没问题、如果您需要其他指导、请告知我们! 感谢您的耐心等待我们与您完成此过程、我知道使用单独的计时器从 CPSW 生成输出时钟并不是 显而易见的解决方案。
未来的读者、如果您使用的是 AM64x 和 AM62x 等较新的处理器、还可以从 CPSW 外设内的 CPTS 计数器生成 PPS 输出。 在这些后续的器件上、我们直接从 CPTS 模块输出 PPS 信号、因此您无需使用单独的计时器模块作为中间器件。 更多信息、请参阅这些器件的 SDK 文档。
此致、
Nick