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.

[参考译文] TMDS64EVM:重新启用后 PPS 变化频率

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1367347/tmds64evm-pps-change-frequency-after-re-enabling

器件型号:TMDS64EVM
主题中讨论的其他器件: SK-AM64BAM6442

工具与软件:

你(们)好  

我们在重新启用后观察 PPS 的一些奇怪频率( 回波1 >/sys/class/ptp/ptp0/pps_enable;回  波0 >/sys/class/ptp/ptp0/pps_enable;回波  1 >/sys/class/ptp/ptp0/pps_enable )。 该信号在 GPIO1_37 (V5)输出上测量。

为什么会这样?

您可能会看到、在重新启用 PPS 信号后、信号周期约为100ms.s

在设备树中有这样的配置:

&cpsw3g {

	pinctrl-names = "default";

	pinctrl-0 = <&cpsw_mdio0_pins_default

		     &rgmii1_io_bus_pins_default

		     &rgmii2_service_pins_default

	>;



	cpts@3d000 {

		ti,pps = <7 1>;

	};

};






#define TS_OFFSET(pa, val)     (0x4+(pa)*4) (0x10000 | val)


&timesync_router {

	pinctrl-names = "default";

	pinctrl-0 = <&mcu_cpts_pps>;



	/* Example of the timesync routing */

	mcu_cpts_pps: mcu-cpts-pps {

		pinctrl-single,pins = <

				/* pps [cpts genf1] in22 -> out37 [cpts hw8_push] */

				TS_OFFSET(37, 22)

				/* pps [cpts genf1] in22 -> out25 [SYNC1_OUT pin] */

				TS_OFFSET(25, 22)

				>;

	};

};

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

    你好、Jakub、

    [报价用户 id="530134" url="~/support/processors-group/processors/f/processors-forum/1367347/tmds64evm-pps-change-frequency-after-re-enabling "]单个值是在 GPIO1_37 (V5)输出上测得[/报价]

    这个 V5输出是否路由至 TMDS64EVM 上的可测量跳线引脚? 根据 k3-am642-evm.dts、V5是引脚多路复用为 CPSW RGMII 的信号、因此我想知道是否要更改 DTS 中 CPSW RGMII 引脚的引脚多路复用以便使用此 V5引脚?

    我建议将 PPS 信号连接到 TMDS64EVM 上的跳线引脚(例如 D18)、而不是 V5。 您可以使用以下主题中的说明作为指南(请注意、它引用了 SK-AM64B、但步骤应该类似)。  https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1300940/am6442-1-pps-from-sk-am64b/

    还有几个问题需要解答:

    1.您使用的 Linux SDK 版本是什么?

    2.您添加了 TMDS64EVM 作为器件型号、但我想仔细检查:您使用的是 TMDS64EVM 还是带有 AM64x 的定制电路板?

    -道林

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

    您好、 Daolin

    我错了描述这个问题的地方:我们测量了来自引脚 W1的 PPS 信号(PRG0_PRU0_GPO19)、并在 DT 中进行了 如下配置:

     

    icssg0_iep0_pins_default: icssg0-iep0-pins-default {
    
        pinctrl-single,pins = <
    
    		AM64X_IOPAD(0x01AC, PIN_OUTPUT, 2) /* (W1) PRG0_PRU0_GPO19.PRG0_IEP0_EDC_SYNC_OUT0 */
    	>;
    
    };
            
    &icssg0_iep0 {
    
    	pinctrl-names = "default";
    
    	pinctrl-0 = <&icssg0_iep0_pins_default>;
    
    	status = "okay";
    
    };
    
    

    回答您的问题:

    1.我们使用 SDK 8 (meta-ti Yocto 层)

    2.是的。 我们正在使用基于 AM6442的定制硬件、抱歉我一开始没有提到这一点。

    我想说明的是、我们具有 W1引脚的 PPS 信号、因此我想硬件至少在某些部分已正确配置。 我们的问题是、通过内核 sysfs 属性(echo 0 >/sys/class/ptp/ptp0/pps_enable)禁用 pps 信号并再次启用它后、W1输出信号具有错误的频率(约为10Hz、而不是1Hz)。 我 目前桌面上没有 TMDS64EVM 板。 您是否能够在评估板上重现此问题?

    BR

    雅库布

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

    尊敬的 Jakub:

    感谢您澄清细节

    请允许我花一点时间看看我是否在 TMD64EVM 板上发现了相同的问题。 我可能会对引脚 D18进行测试、因为它引出了一根跳线、我可以使用示波器轻松测量该跳线。  

    我希望明天或星期五能为您提供最新消息。

    -道林

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

    最新动态:

    因此、当我将1PPS 信号路由到 D18 (SYNC0_OUT)时、从1PPS 首次开始以及禁用1PPS 并再次重新启动后均看到1Hz 的速率、请参阅下面以了解确切的序列。  

    1.更改 k3-am642-evm.dts、以启用 D18和 SYNC0_OUT、然后构建 dtb 并将它复制到 SD 卡中。  e2e.ti.com/.../0876.k3_2D00_am642_2D00_evm.dts

    main_ecap0_pins_default: main-ecap0-pins-default {
    	pinctrl-single,pins = <
    		AM64X_IOPAD(0x0270, PIN_INPUT, 1) /* (D18) ECAP0_IN_APWM_OUT ---> SYNC0_OUT*/
    		AM64X_IOPAD(0x0274, PIN_INPUT, 0) /* (A19) EXT_REFCLK1 */
    	>;
    };
    
    cpsw_cpts_pps: cpsw-cpts-pps {
    	pinctrl-single,pins = <
    		/* pps [cpts genf1] in22 -> out37 [cpts hw8_push] */
    		TS_OFFSET(37, 22)
    		/* pps [cpts genf1] in22 -> out24 [SYNC0_OUT pin], out26 [SYNC1_OUT pin] */
    		TS_OFFSET(24, 22)
    		>;
    };
    

    2.运行"echo 1 >/sys/class/ptp/ptp0/pps_enable 并在 D18 (EVM 上的 J12)的示波器上看到1Hz 的信号

    3.运行"echo 0 >/sys/class/ptp/ptp0/pps_enable 并在示波器上检查无信号

    4.运行"echo 1 >/sys/class/ptp/ptp0/pps_enable "并在示波器上看到1Hz 的信号  

    我注意到、在 MCU_CPTs_pps 的原始 dts 代码段中、您使用的是 out25、但对应于"SYNC1_OUT"、而不是尝试为引脚 W1启用的"PRG0_IEP0_EDC_SYNC_OUT0"。

    请参阅来自 10.3.2.2.1 TIMESYNC_INTRTR0集成的以下 TRM 片段。

    我想您可能会将 out25与输入列表相混淆。 如果是这种情况、我想您可能已根据时间同步路由器列表配置了 out25 输入 . 您实际上需要查看的是时间同步路由器列表 输出的和 .

    因此、我建议使用 D18或其他可引脚多路复用为时间同步输出信号之一的引脚之一。 您是否可以更改为其他引脚? 您使用 W1的原因是否特殊?

    -道林

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

    大家好、Daoilin

    非常感谢您选中此复选框。  我描述的是我的团队伙伴发现的问题、看起来我一开始就误解了他。 我在我的定制硬件上重复出现了问题。 如果我禁用和重新启用两个 PRU 以太网接口(而不是 pps_enable sysfs 属性 本身)、PPS 信号频率会发生变化。

    1. 检查哪个以太网接口是 PRU

    # ethtool - i eth2.
    驱动程序:icssg-prueth
    版本:6.1.69-rt21
    固件版本:
    EXPANSION-ROM-VERSION:
    bus-info: icssg0-eth
    支持统计:是
    支持测试:不支持
    支持 EEPROM 访问:否
    支持 register-dump:否
    supports-priv-FLAGS:可以
    #
    # ethtool - i eth3.
    驱动程序:icssg-prueth
    版本:6.1.69-rt21
    固件版本:
    EXPANSION-ROM-VERSION:
    bus-info: icssg0-eth
    支持统计:是
    支持测试:不支持
    支持 EEPROM 访问:否
    支持 register-dump:否
    supports-priv-FLAGS:可以

    2. ifconfig eth2 up / ifconfig eth3 up

    3. PPS 信号正确

    4.禁用 PRU 接口:ifconifg eth2 down / ifconfig eth3 down

    未生成 PPS 信号

    5.启用 Re 的 PRU 接口:PPS 信号不正确:

    您能检查一下这个场景吗?

    关于您说的话:

    1.什么是角色  TIMESYNC_ROUTER  DT 节点(我刚刚从 EVM 器件树中复制了它)。 我做了一些测试:注释掉了整个时间同步路由器节点,我仍然有可用的 PPS 信号。 在内核源中、我看到负责 PPS 信号(am65-CPT、c)的驱动程序由 CONFIG_TI_K3_AM65_CPTS 启用。 这是否意味着 PPS 可以通过多种方式交付:PRU ICSSG 固件或 Linux 内核驱动程序?

    2.是的、我们需要使用 W1引脚、因为我将 D18用于其他目的。 可以使用 timesync 路由器在 W1引脚上实现您所描述的内容?

    此致
    雅库布

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

    尊敬的 Jakub:

    感谢您澄清此问题! 我意识到、我应该首先问您是否从 PRU ICSSG 以太网和 CPSW 以太网获取1PPS。

    请注意、CPTS (通用平台时间同步) 模块是为 CPSW 以太网处理时间戳的模块、而 IEP (工业以太网外设)模块是为 PRU_ICSSG 以太网处理时间戳的模块。 两者都能够通过 PTP 实现1PPS 支持、但前者通过 CPSW 实现、而后者通过 PRU 以太网实现。

    (1) 根据我的理解、时间同步路由器(TSR)只是一个旨在将输入中断路由到多个输出中断的模块。 有关更多信息、请参阅该链接 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。

    我之前测试1PPS 的方法是使用 TSR 将来自 CPTS genF1模块的1PPS 信号路由到可测量跳线、该跳线恰好连接到 TSR 输出之一(D18)。 此外、该 CPTS genF1是 CPSW 以太网的子系统、因此我之前引用的方法专门用于 CPSW、而不是 PRU ICSSG 以太网。

    我认为、时间同步路由器实际上不需要将1PPS 信号路由到 https://software-dl.ti.com/processor-sdk-linux-rt/esd/AM64X/latest/exports/docs/linux/PRU/PRU-ICSS/PRU_ICSSG/PRU_ICSSG_ETHERNET.html?highlight = PRU_ICSSg#pps-pulse-per-second-support for Foundational_Components Linux_Drivers 以太网指示的可测量引脚。 根据这些资源、我相信1PPS 是由 Linux 内核驱动程序提供的、但我会与我们的软件开发人员进行确认。

    (2) 应可以将从 W1 (PRG0_IEP0_EDC_SYNC_OUT0)生成的信号作为输入路由到 TSR、并输出到连接到另一个引脚的另一个 TSR 输出。 但是、如(1)中所述、此操作仅在以下情况下有用:您需要将信号从 W1路由到另一个 SoC 引脚(如 D18)、以防连接的物理引脚 W1存在任何信号完整性问题。 我对该主题的回答提供了一些详细信息: https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1339040/am6442-ptp-and-pps-via-pru-subsystem/5105883#5105883 

    抱歉的漫长的反应,让我一些时间来尝试和复制你的结果。 我需要切换到 IEP 生成的1PPS (PRU 以太网)。 我希望下周一或星期二有更新。  

    向您提问:

    1.如果您在关闭 PRU 接口之前禁用 pps_enable、问题是否仍然存在?

    2.如果在恢复 PRU 接口后重新启用 pps_enable、问题是否仍然存在?

    2.为什么在 PRU 接口断开之前以及之后、示波器上测量的信号都显示为15Hz?

    3.如果我正确地理解了波形,那么在 PRU 接口下降之前和之后1PPS 的频率看起来是相同的,但信号在大部分时间从低电平(脉冲高达高电平-你所期望的)变为高电平(脉冲降至低电平)?

    -道林

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

    最新动态:

    我已经在 SDK 09.02.01.09上测试了这个、并且可以重现与您似乎相同的波形(~100ms 周期)。  我创建了一个错误报告以引起我们的开发人员的注意、并将就此与他们进行沟通。  

    在我的设置中、我在不使用时间同步路由器的情况下使用了 W7 (输出到 EVM 上的 J18)。 此外、我使用了  /usr/kernel-selftest/ptp/testptp -d /dev/ptp2 -P 1.  启用1PPS、而不是至  echo 1 >/sys/class/ptp/ptp2/pps_enable 由于此命令不适用于 ptp2 (即与 PRU 以太网接口关联的 PTP 器件)(我认为这是由于我使用的 SDK 8 (5.10)内核与我使用的 SDK 09.02.01.09 (6.1)内核不同)。 您之所以坚持使用 SDK 8而不使用最新的 SDK、是否有原因? 只是为了澄清一下、您当前是否在使用 SDK 08.00.00.21?

    root@am64xx-evm:/usr/kernel-selftest/ptp# ls -lt /sys/class/ptp 
    total 0
    lrwxrwxrwx 1 root root 0 May 29 08:50 ptp2 -> ../../devices/platform/bus@f4000/30080000.icssg/300ae000.iep/ptp/ptp2
    lrwxrwxrwx 1 root root 0 Apr 28 17:42 ptp1 -> ../../devices/platform/bus@f4000/39000000.cpts/ptp/ptp1
    lrwxrwxrwx 1 root root 0 Apr 28 17:42 ptp0 -> ../../devices/platform/bus@f4000/8000000.ethernet/ptp/ptp0 

    我注意到、如果在 PRU 接口重新启动后重新启动1PPS 信号( 再次运行/usr/kernel-selftest/ptp/testptp -d /dev/ptp2 -P 1)、1PPS 会恢复为1Hz。 您能检查一下吗?

    -道林

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

    你好、Daolin

    感谢您提供全面的答案! 我在很多方面都了解了它的内部工作原理。
    回答您的问题:

    如果您在关闭 PRU 接口前禁用 pps_enable、是否仍存在问题?

    否、信号正确。

    如果在重新启动 PRU 接口后重新启用 pps_enable、问题是否仍然存在?

    否、信号正确。 我看起来像是在写入"pps_enable" sysfs 属性后禁用 PRU 接口、这会导致问题发生1。 但这个问题引导我找到了权变措施:可能在关闭 PRU 接口之前、我们可以先禁用 PPS 信号。 我必须与我们的其他定制板检查这一点。


    为什么示波器显示 PRU 接口关闭前和连接后测量的信号为15Hz?

    这只是启用了一些转储设置、很抱歉有误导性。  

    [报价 userid="576780" url="~/support/processors-group/processors/f/processors-forum/1367347/tmds64evm-pps-change-frequency-after-re-enabling/5227540 #5227540"]如果我正确理解了波形、看起来1PPS 的频率在 PRU 接口关闭之前和之后是相同的、但信号在大多数时间从低电平(脉冲高达高电平-您所期望的)变成高电平(脉冲低电平)?

    我不同意这种说法。 请查看时基。 它为200ms、与上图相同、但波形更"密集"。 另外、示波器测量大约10Hz 的信号。  

    您之所以坚持使用 SDK 8而不是使用最新的 SDK 是什么原因? 只是为了澄清一下、您当前使用的是 SDK 08.00.00.21吗?

    我们正在测试最新的 SDK,特别是内核的性能,但它看起来和内核5.10没有区别。 我们计划稍后切换最新的 SDK。
    我不知道我们具体使用的是哪个版本的 SDK (如何检查?) 但事实是这样的 meta-ti kirkstone 转移、提交: 8ad82f5e69c3ed739bbdd5d1a0afd75ab7608ec8
    中的定义

    [报价 userid="576780" url="~/support/processors-group/processors/f/processors-forum/1367347/tmds64evm-pps-change-frequency-after-re-enabling/5228073 #5228073"]我注意到、如果您在 PRU 接口恢复后重新启动1PPS 信号( 再次运行/usr/kernel-selftest/ptp/testptp -d /dev/ptp2 -P 1)、1PPS 恢复为1Hz。 您能检查一下吗?

    是的、是这样。
    I 已启用 PPS (1Hz 信号)
    2.已终止两个 PRU 接口
    3.恢复 PRU 接口(PPS 约10Hz)
    4.已通过 sysfs 属性禁用 PPS 信号
    5.已启用 PPS 信号(现在是正确的1Hz)

    好的、感谢您将此报告为错误。 我将等待您的更新。
    BR
    雅库布

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

    尊敬的 Jakub:

    [报价 userid="530134" url="~/support/processors-group/processors/f/processors-forum/1367347/tmds64evm-pps-change-frequency-after-re-enabling/5229588 #5229588"]但此问题按照解决方法跟踪了我:或许在关闭 PRU 接口之前、我们可以先禁用 PPS 信号。 我必须与我们的其他定制板核实这一点。

    与团队成员讨论后、可能会出现以下情况:默认情况下、IEP 计数器在启用1PPS 之前配置为~100ms 的周期、并且仅在启用1PPS 且测量1PPS 的引脚多路复用器被"激活"后配置为1s。 因此、当 PRU ICSSG 接口在禁用1PPS 之前断电和恢复时、测量1PPS 的引脚可能会由于 IEP 计数器未正确重新配置而看到~100ms。

    所有这些听起来有点抽象、因此更具体的检查方法是在以下情况下检查 PRU IEP 比较寄存器(TRM 6.4.14.9 PRU_IEP_IEP 寄存器):

    1.在1PPS 启用之前和 PRU ICSSG 接口上电之后

    2.启用1PPS 后和 PRU ICSSG 接口断电之前(预期为1Hz 1PPS)

    3. PRU ICSSG 接口关闭后(在接口关闭之前未禁用1PPS)-在~10Hz 1PPS 期间

    4.重新启用1PPS 信号后。 (再次参阅预期的1Hz 1PPS)

    我们想看看情况1和3之间的 IEP 比较寄存器是否相似/相同。 以及如果寄存器内容在情况2和4之间是类似的。

    其他问题:

    1.在接口关闭和备份后重新启用 PPS 信号是否可以作为阻止开发的临时权变措施? 我之所以提出这个问题、是因为我们的开发人员可能需要一些时间来深入研究这个特定问题。

    2.您是否使用最新的 prueth (PRU ICSSG Ethernet)固件? 在  SDK 8和当前 SDK 9.02.01之间的固件发生了显著变化。 虽然更改为最新的固件可能不能解决这个问题,因为我使用的是最新的固件,我也看到同样的问题,我认为在一般情况下,最好是使用最新的,以减少其他问题的机会,可能已经修复了最新的固件。

    >>我不知道我们具体使用哪个版本的 SDK (如何检查?) 但事实是这样的  meta-ti kirkstone  转移、提交:  8ad82f5e69c3ed739bbdd5d1a0afd75ab7608ec8
    中的定义

    问得好、我目前也不知道、但我会检查并在这方面回复您。

    -道林

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

    >>我不知道我们具体使用哪个版本的 SDK (如何检查?) 但事实是这样的  meta-ti kirkstone  分支指令

    我目前没有克隆此分支,但它似乎是检查标签的方式是"git tag --包含 "

    -道林

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

    尊敬的 Daolin:

    很抱歉、我现在遇到了硬件的其他问题(与 pps 无关)、无法测试解决方法。 我会在处理这些问题时尽快作出回应。

    我目前没有克隆此分支、但它似乎是检查标记的方式是"git tag -- contribe" "[/报价]

    看起来团队中的一些同事已经更新了 SDK 版本、因为我最后检查了该版本。 现在、我们使用的是 SDK 9.0。

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

    尊敬的 Daolin:

    我选择了权变措施、看起来像是解决 PPS 频率不正确的问题、因此总而言之:

    每次在禁用 PRU 以太网接口之前、PPS 信号都会通过 echo 0 > /sys/class/ptp/ptp0/pps_enable 关闭

    希望 SDK 能解决这个问题。

    感谢您的帮助

    BR

    雅库布

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

    尊敬的 Jakub:

    感谢您分享您的调查结果。 是的、内部团队已经知道该问题、但我没有确切的修复日期/修复将在哪个 SDK 上执行。  

    现在、我假设根据您的回答、使用您所描述的顺序可以作为权变措施。

    -道林