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:尝试为 SFD 为外部信号设置时间戳

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1353253/am6442-trying-to-timestamp-external-signal-for-sfd

器件型号:AM6442
主题中讨论的其他器件:SK-AM64BSysConfig

您好!

我需要使用用于 PTP 的相同时间戳和外部信号。   我需要比较 SO_TIMEPOTTING 时间戳与用于帧起始检测(SFD)的外部引脚。  我想计算 RGMII 上的时间戳和数据包之间的时间误差、以消除时间戳中的确定性延迟变化。

我使用的是红色 SK-AM64B EVM、

我想使用下面的引脚31、即 PRG0_PRUGPO18。  下面可能的其他候选人(我想我也突出显示了)。  也许我需要使用不同的东西吗?

我认为 PRG0_PRUOGPO18会是好的,因为它的所有理由(上面):-->然而,我认为下面我报告错误的"所需的功能",我打算使用的是,因为我想使用 GEMAC 1。  在下面、您可以看到我的 SysConfig 设置、它在焊球 V1 == PRG0_PRU0_GPO18上对 HWPUSH1使用 GEMAC。

我正在为 Timesync 路由器使用此信息:

这是我使用的 SysConfig 设置。

附件是我的 DTS 文件(/cfs-file/__key/communityserver-discussions-components-files/791/k3_2D00_am642_2D00_sk.dts)、注意:

(我即将尝试 HW2入栈。  没有到这里)。

&main_pmx0{
   mycpsw3g1_pins_default:mycpsw3g1-default-pins{
      PINCCTRL-SINGLE、PINS =<
         AM64X_IOPAD (0x01a8、PIN_INPUT、5)
         //AM64X_IOPAD (0x017c、PIN_INPUT、5)/*(T1) PRG0_PRU0_GPO7.CP_GEMAC_CPTS0_HW2TSPUSH */
      >;
   };


#define TS_OFFSET (PA、val)    (0x4+(PA)* 4)(0x10000 | val)
timesync_router {
  pinctrl-names ="默认";
  pinctrl-0 =<&cpsw_cpts>;

      /* Timesync 路由示例*/
          cpsw_cpts:cpsw-cpts{
                  PINCCTRL-SINGLE、PINS =<
                          /* pps [cpsw CPTS genf0] in21 -> out33 [cpsw CPTS HW4_PUSH]*/
                          // TS_OFFSET (目标、src)
                          TS_OFFSET (33、12)
                          TS_OFFSET (24、12)
                  >;
          };
};

我使用的是8.06.42... 然而,为了达到以上,我是从9.02.01的跟随指令。  似乎它们已更新、应申请8.06.42。  我根据给定的第一个测试将内部 Genf 路由到 HW4_PUSH、使用的 testptp index 3读取时间戳来改进上述配置。

 -->注意,我认为驱动程序中可能有一个错误,在更改内容时没有设置 period = 0。  使用 Genf 时、为了我想要生成的任何频率、我必须在-p xxxxxxxxxx 之前设置-p 0。

-->在上面,我已将演示改为,而不是使用 agenf (1?) 作为源、以使用外部引脚。

https://software-dl.ti.com/processor-sdk-linux-rt/esd/AM64X/08_06_00_42/exports/docs/linux/Foundational_Components linux/kernel/testptp Network/CPSW-PTP.html?highlight=ptp -->章节:使用 Kernel_Drivers 内核中的 testptp 工具进行测试

https://software-dl.ti.com/processor-sdk-linux-rt/esd/AM64X/09_02_01_09/exports/docs/linux/Foundational_Components Kernel_Drivers Network/CPSW-PTP.html?highlight=ptp -->章节:时间标记外部事件

--------

假设基于 VDDSHV1电源网为3.3V、可以使用3.3V 信号进入 AM64。

73、
蒂莫西

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

    Timothy、您好!

    Nick 将此分配给我、但根据 WebEx 聊天、Jason Reeder 可以手动配置 devmem2的 pinmux。 您是否曾尝试将已编译的 dtb 反编译到 DTS 并查看您所做的 pinmux 更改是否得到反映?

    另一个建议是在器件树中将 out33更改为 out30、这似乎是 Jason 用作时间同步 cpsw CPTS 硬件推送事件的方法。

    此外、您曾使用哪些 testptp 选项来发现没有显示时间戳? 如果您使用了"./testptp -e 3 -i 0"、则它将使用对应于 out30的索引0 (硬件推送1)、而不是 out33 (硬件推送4)。 如果您正在使用 out33、则应尝试"./testptp -e 3 -i 3"。

    -道林

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

    尊敬的 Daolin:

    我正在使用-i 0、它似乎在工作... 但我明白您的观点、我使用的是进行设置的手动覆盖。

    所以我试着改变33 -> 30。

    使用 hwpush4是否有任何问题?  它似乎没有将其作为选项列在 SysConfig 中。

    现在、-i 0和-i 3在我的板上工作。  -i 1和-i 2没有。  这似乎在预料之中。

    73、
    蒂莫西

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

    Timothy、您好!

    根据 WebEx 中讨论的信息、我现在按照我描述的更改直接修改了您在本文中添加的 DTS 文件:

    1.删除"mycpsw3g1_pins_default"的 pinmux 节点并将该 pinmux 定义添加到现有 pinmux 节点。 在附加的中、我将其添加到了"main_ecap0_pins_default"节点

    2.删除我之前告诉您要添加的设备树节点定义"&mycpsw3g1"。 这样做实际上总是会导致编译错误、因为 DTS 使用的任何 dtsi 文件中都没有以前存在的节点。

    完成这些更改后、我成功地使用您正在使用的 SDK 08.06的工具链进行了编译。 记住、我保留了与 hwpush4对应的原有 out33、如果您愿意、可以更改为 out30。 请在方便时试一下、并告诉我。

    e2e.ti.com/.../1781.k3_2D00_am642_2D00_sk.dts

    e2e.ti.com/.../1781.k3_2D00_am642_2D00_sk.dtb

    我不知道使用 hwpush4有任何问题。 SysConfig 通常仅用于定义引脚多路复用定义(即 AM64x_IOPAD…… etc)和不是设备树节点、包括定义了 HW4_PUSH 的&timesync_router 节点。

    如果-i 3有效、则 hwpush4有效、因为索引3对应于 hwpush4。 此外、这是 SDK 文档中给出的示例(即-i 3、使用 hwpush4)。 我认为问题主要在于 DTS 的语法。

    -道林