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 子系统的 PTP 和 PPS

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1339040/am6442-ptp-and-pps-via-pru-subsystem

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

尊敬的 TI 团队:

在 AM6442上、我们通过交换以太网连接实现 PTP 同步、其中将运行 HSR 或 PRP、因此 PTP 数据包将传入其中一个 PRU 子系统。 我们希望根据这种同步生成 PPS 信号并将其多路复用到引脚上、我们将从该引脚馈送外部 PLL。

-我可以使用哪个引脚?
-是否是 CPTS 外围设备,由其处理同步和 PPS 生成?
-如何更改设备树文件? 我在 AM625上尝试了类似的东西、附件中的补丁可以工作、但我不明白。 如何在 AM6442上执行类似操作? 请注意、在 AM625上、我们让 PTP 通过"正常"以太网运行、这里我们让它通过 PRU 子系统(可能在 HSR 上)运行。

此致、

利昂

e2e.ti.com/.../device_5F00_tree_5F00_for_5F00_ptp.patch.txt

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

    您好、Leon、

    只是为了说明一点、您使用的是 AM64x EVM 还是定制电路板? 您当前正在使用哪个 Linux SDK 版本?

    我发现 CPTS 上的大多数资源都与基于 CPSW 的 CPTS 相关、包括用于 SK-AM64x 和 AM64x EVM 的 DTS 文件...我需要更多时间来研究如何将 CPTS 集成到 PRU 以太网中。

    同时、以下是一些可从基于 CPSW 的 CPTS 启用 PPS 的资源。

    如果您使用 AM64x EVM、则可以根据 https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1253565/am6442-gpevm-how-to-check-1-pps 选择使用引脚 D18获取 PPS 、其中它连接到 EVM 上的 J12接头。 请注意、默认情况下、D18引脚多路复用为 ECAP0_IN_APWM_OUT、而不是 SYNC0_OUT。

    如果您使用 SK-AM64x、您可能会发现此链接对于将 PPS 连接到物理引脚 https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1300940/am6442-1-pps-from-sk-am64b/4940035?tisearch=e2e-sitesearch&keymatch=%25252525252520user%2525252525253A576780#4940035很有用 。请注意、为了激活 PPS 信号、您需要使用/usr/bin/kselftests 下的 testptp 工具、SDK 9.0或9.1中目前不提供该工具。 SDK 8.6中提供了 testptp 工具。  

    从 Linux 的角度来看、CPTS 模块"为特定的时钟驱动器输出一个内核接口和一个  PTP 时 钟 API 用户空间接口。。。" 根据 https://software-dl.ti.com/processor-sdk-linux-rt/esd/AM64X/latest/exports/docs/linux/Foundational_Components Kernel_Drivers Network/CPSW-PTP.html?highlightptp#setup

    我怀疑 AM625的补丁用于将"out21"路由到 SYNC1_OUT 信号、该信号可能会进行引脚多路复用至某个引脚。 通过这种方式、PPS 信号也可以从 CPTS 时间同步路由器之外路由、而不仅仅是路由回 CPTS 以对 PPS 信号进行时间戳(补丁中的线路16正在执行此操作)。 您可以尝试在 AM625数据表中搜索"SYNC1_OUT"、并查看它进行引脚多路复用的引脚编号。

    -道林

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

    读取 https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1309841/am6442-ptp-slave-on-pru 后、 IEP 似乎是处理 PRU 以太网时间戳采集的模块。

    我没有立即看到任何有关如何通过 IEP 启用时间戳采集的示例(无论是通过现有 SDK 文档还是通过 SK 或 EVM DTS 文件)、我都必须与团队内部讨论、以了解更多详细信息。

    -道林

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

    您好、Leon:

    您可能对以下资源感兴趣、想在 PRU_ICSSG 以太网上启用1 PPS: https://software-dl.ti.com/processor-sdk-linux-rt/esd/AM64X/latest/exports/docs/linux/Foundational_Components PRU/PRU-ICSS/PRU_ICSSG_ETHERNET.html Linux_Drivers?highlight=TSN#pps-pulse-per-second-support

    我要尝试进行探讨的一件事是、"PRG0_IEP0_EDC SYNC_OUT0"信号通过引脚多路复用到 AM64x-EVM 上 HSE 接头上的一个引脚、该引脚不容易使用示波器直接测量、除非您有 HSE 连接器/电缆。 我不确定这是否适合您将 PPS 信号馈送到外部 PLL。  

    如果您认为此内容有帮助、请告诉我...

    -道林

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

    大家好、Daolin:

    我将 AM64x EVM 与最新的 Linux SDK 配合使用。 不过、由于我的问题只是关于 SoC 的硬件、这是否会产生影响?

    感谢您提供有关如何生成 PPS 的文本。 我仍然不知道如何确定我在哪个 SoC 焊球上获得信号。 从第48页的 EVM 数据表中、我可以看到从 SoC 焊球 W1获取 PRG0_IEP0_EDC_SYNC_OUT0、并从焊球 U1获取 PRG0_IEP0_EDC_SYNC_OUT1。 在设计自己的电路板时、是否需要连接这些 SoC 焊球? 我如何知道这两者中的哪一个?

    您写入引脚 D18连接到 PPS。 在手册中、我看到了完全不同的内容(请参阅附件、摘自第50页)。 我们是指相同的东西吗?

    如果您通过 PRU 上的 PTP 了解到时间同步/ PPS 背后的机制(CPTS / IEP)、我会很高兴。

    此致、

    利昂

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

    您好、Leon:

    Linux SDK 的版本与您此处的特定问题没有太大关系;我通常提出这个问题来更好地了解您正在使用的资源(即、您可能正在查看的 Linux SDK 版本对应于哪个 SDK 文档版本)

    -->" 我仍然不知道如何找到在哪个 SoC 球我得到信号。 从第48页的 EVM 数据表中、我可以看到从 SoC 焊球 W1获取 PRG0_IEP0_EDC_SYNC_OUT0、并从焊球 U1获取 PRG0_IEP0_EDC_SYNC_OUT1。 在设计自己的电路板时、是否需要连接这些 SoC 焊球? "我怎么知道?"

    PRG0_IEP0_EDC SYNC_OUT0和 PRG0_IEP0_EDC SYNC_OUT1信号都是由 IEP (工业以太网同步)模块生成的同步信号、可直接映射到输出信号、供外部器件使用。 有关这方面的更多详细信息、请参阅 AM6442 TRM "6.4.13.2.6 PRU_ICSSG IEP Sync0/Sync1模块"。 我相信、在设计自己的电路板时、您应该能够将任一信号映射到您选择的引脚/外部器件。  

    -->"您写的 D18引脚已连接到 PPS。 在手册中、我看到了完全不同的内容(请参阅附件、摘自第50页)。 "那你打算怎么办?"

    我查看的是 AM64x 修订版的数据表、 F、我没有看到焊球编号 D18与您在第50页上指示的信号名称(见下文)连接。 尝试使用 AM6442产品页面中的数据表: https://www.ti.com/product/AM6442 

    -->"我很高兴你发现了在 PRU 上通过 PTP 的时间同步/ PPS 的机制(CPTS / IEP)。"

    你能否详细说明一下机制是什么意思? CPT 是处理 CPSW 以太网时间戳的模块、而 IEP 是处理 PRU_ICSSG 以太网时间戳的模块。 两者都能够通过 PTP 实现1PPS 支持、但前者通过 CPSW 实现、后者通过 PRU 以太网实现。

    -------------------------------------------------------

    经过一些研究、我可以看到、对于 AM64x-EVM、您可以通过两种方法获取由 IEP (PRU 以太网)在引脚上生成的1-PPS 信号  

    1.使用默认的 AM64x-EVM 器件树文件、该文件已经包含 引脚多路复用 W7发送信号 PRG1 _IEP0_EDC_SYNC_OUT0。 请注意、这是一个与不同的信号、   PRG0寄存器 _IEP0_EDC_SYNC_OUT0我之前正在调查。 W7上的这个信号已细分至接头 J18、您可以使用示波器直接测量该信号、以在按照 https://software-dl.ti.com/processor-sdk-linux-rt/esd/AM64X/latest/exports/docs/linux/PPS/PRU-ICSS/PRU_ICSSG_Ethernet.html 中的指令执行 Foundational_Components / Linux_Drivers / PRU_ICSSG_Ethernet.html?highlight =PRU_icssg#pps-pps-pps-per-second 支持中的指令后查看1-PPS 是否显示 

    这里需要注意的一点是、当两个 RGMII 端口都处于运行状态时、该引脚存在已知的信号完整性问题、这可能导致1PPS 信号发生短路。 如果存在此问题、您可以尝试选项2。

    //Pin-mux snippet from AM64x-EVM DTS file
    ....
    	icssg1_iep0_pins_default: icssg1-iep0-pins-default {
    		pinctrl-single,pins = <
    			AM64X_IOPAD(0x0104, PIN_OUTPUT, 2) /* (W7) PRG1_PRU0_GPO19.PRG1_IEP0_EDC_SYNC_OUT0 */
    		>;
    	};
    };

    2.将下列列表中的"pr1_edcX_syncY_OUT"信号之一作为输入路由到时间同步路由器模块,该模块可以路由到"SYNC0_OUT"信号。 SYNC0_OUT 信号可以引脚多路复用至焊球 D18、该焊球 D18通向 J12上的接头。 原理图将显示 J12连接到了错误的"SYNC1_OUT"、其值应为"SYNC0_OUT"。 我提供了一段我认为应该在 AM64x-EVM DTS 文件上修改的内容、以便通过时间同步路由器将信号"pr1_edc0_syncsync0_out"路由到"SYNC0_OUT"引脚。 请注意、我尚未自行尝试、因此如果您遇到问题、请告知我。

    // Change pinmux from 0 to 1 for D18 to enable SYNC0_OUT
    main_ecap0_pins_default: main-ecap0-pins-default {
    		pinctrl-single,pins = <
    			AM64X_IOPAD(0x0270, PIN_INPUT, 1) /* (D18) SYNC0_OUT */
    		>;
    	};
    
    // Change the existing timesync_router sub-node from "cpsw_cpts_pps" to be following
    &timesync_router {
    	status = "okay";
    	pinctrl-names = "default";
    	pinctrl-0 = <&pru_iep_pps>;
    
        pru_iep_pps: pru-iep-pps {
            pinctrl-single,pins = <
            /* pps [pr1_edc0_sync0_out = IEP0 sync event 0] in25 -> out8 [pr1_edc0_latch0_in = Selectable time sync event 8] */
            TS_OFFSET(8, 25)
            /* pps [pr1_edc0_sync0_out = IEP0 sync event 0] in25 -> out24 [SYNC0_OUT pin] */
            TS_OFFSET(24, 25)
            >;
        }
    };

    时间同步路由器可提供更大的灵活性、因为任何 ICSS/IEP 实例和 CPTS 同步信号都可以通过此模块路由。

    -道林

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

    我忘记要提到的一点是、选项1生成的信号将是每毫秒一个脉冲、而不是每秒一个脉冲。 我不确定您的应用是否需要每秒一个脉冲来进行同步?

    这是我发现的另一个线程、其中使用选项1可以观察到每毫秒1个脉冲。  https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1253565/am6442-gpevm-how-to-check-1-pps

    我不知道上面建议的选项2是否会每毫秒产生1个脉冲。

    编辑:由于源信号相同,选项2也将每毫秒产生1个脉冲

    -道林

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

    尊敬的 Daolin:

    感谢您的回答、现在一切都变得更加清晰了。 我可能会坚持使用选项2、因此我可以在必要时更改同步源。

    此致、

    利昂