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.

[参考译文] AM625:CLKOUT0 的 50MHz 输出

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1622743/am625-50mhz-output-from-clkout0

器件型号: AM625

你好

通过使用 TI AM62x 参考平台和 TI SDK 11.02.08、我一直尝试从 EXT_REFCLK1(引脚 A18)获取 50MHz 时钟。

我正在更新 Linux 器件树以启用 CLKOUT0 功能。

main_pmx0 定义:

        pinctrl_mdio: main-mdio1-default-pins {
                pinctrl-single,pins = <
                        AM62X_IOPAD(0x160, PIN_OUTPUT, 0) /* (AD24) MDIO0_MDC  */ /* ETH_1_MDC,  SODIMM 193 */
                        AM62X_IOPAD(0x15c, PIN_INPUT, 0)  /* (AB22) MDIO0_MDIO */ /* ETH_1_MDIO, SODIMM 191 */
                >;
        };

        /* ETH_50MHz_CLK */
        pinctrl_eth_clock: main-system-clkout0-pins-default {
                pinctrl-single,pins = <
                        AM62X_IOPAD(0x01f0, PIN_OUTPUT_PULLUP, 5) /* (A18) EXT_REFCLK1.CLKOUT0 */
                >;
        };

并已尝试使用 MDIO 树配置时钟速率:

&cpsw3g_mdio {
        assigned-clocks = <&k3_clks 157 20>;
        assigned-clock-parents = <&k3_clks 157 22>;
        assigned-clock-rates = <50000000>;
        pinctrl-names = "default";
        pinctrl-0 = <&pinctrl_eth_clock>, <&pinctrl_mdio>;
        status = "okay";

        cpsw3g_phy0: ethernet-phy@0 {
        .........
        };
};

我唯一能获得的输出是 25MHz、不是 50MHz 定义的。

我看到的一个奇怪的行为是、重新启动系统时、输出会在短时间内恢复为 50MHz、然后再次默认为 25MHz。

如何使用器件树来配置/设置 50MHz 输出?

谢谢
Marc

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

    您好:Marc、

    您能否尝试使用“assigned-clock-parents =<&K3_CLKS 157 21>;“而不是  

    [引述 userid=“641722" url="“ url="~“~/support/processors-group/processors/f/processors-forum/1622743/am625-50mhz-output-from-clkout0         assigned-clock-parents = <&k3_clks 157 22>;
    [/报价]

    21 应为 50MHz 父时钟。

    我在 AM62x EVM 上试用过它、可以让它正常工作。

    我将在下面共享我的 DT 补丁。

    diff --git a/arch/arm64/boot/dts/ti/k3-am625-sk.dts b/arch/arm64/boot/dts/ti/k3-am625-sk.dts
    index 6cd746602920..7697df0333a4 100644
    --- a/arch/arm64/boot/dts/ti/k3-am625-sk.dts
    +++ b/arch/arm64/boot/dts/ti/k3-am625-sk.dts
    @@ -78,6 +78,13 @@ &vdd_mmc1 {
     };
     
     &main_pmx0 {
    +       /* ETH 50MHz Reference Clock output on EXT_REFCLK1 (Pin A18) */
    +       clkout0_pins_default: clkout0-default-pins {
    +               pinctrl-single,pins = <
    +                       AM62X_IOPAD(0x01f0, PIN_OUTPUT_PULLUP, 5) /* (A18) EXT_REFCLK1.CLKOUT0 */
    +               >;
    +       };
    +
            main_mmc0_pins_default: main-mmc0-default-pins {
                    bootph-all;
                    pinctrl-single,pins = <
    @@ -127,6 +134,21 @@ AM62X_IOPAD(0x01d4, PIN_INPUT, 7) /* (B15) UART0_RTSn.GPIO1_23 */
            };
     };
     
    +/ {
    +    /* CLKOUT0: 50MHz reference clock output on EXT_REFCLK1 (A18) */
    +    clkout0_ref: clkout0-ref-clk {
    +        compatible = "fixed-clock";
    +        #clock-cells = <0>;
    +        clock-frequency = <50000000>;
    +
    +        assigned-clocks = <&k3_clks 157 20>;
    +        assigned-clock-parents = <&k3_clks 157 21>;  /* 50MHz parent */
    +
    +        pinctrl-names = "default";
    +        pinctrl-0 = <&clkout0_pins_default>;
    +    };
    +};
    +
     &main_gpio0 {
            bootph-all;
     };

    我的 clk_summary 也会共享。
    e2e.ti.com/.../3021.clk_5F00_summary.txt

    如果您查看 clk:157:20、您可以看到它现在配置为 50MHz。

    我还无法探测引脚。 我可以测试一下后进行确认。

    此致、
    Vinu

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

    您好:Marc、

    我可以看到、您的  clk:157:21 时钟本身处于 50MHz。

    您能分享您的最新 DTS 吗?

    此致、
    Vinu

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

    您好:Marc、

    是否可以尝试从/proc/device-tree 提取正在运行的 DTS 以确保反映更改?


    此致、
    Vinu

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

    你(们)好

    更改如下所示:

    debian@BeagleBone:~$ ls -l /proc/device-tree/
    total 0
    -r--r--r--  1 root root  4 Mar  5 17:01 '#address-cells'
    -r--r--r--  1 root root  4 Mar  5 17:01 '#size-cells'
    drwxr-xr-x  2 root root  0 Mar  5 17:01  __symbols__
    drwxr-xr-x  2 root root  0 Mar  5 17:01  aliases
    drwxr-xr-x 74 root root  0 Mar  5 17:01  bus@f0000
    drwxr-xr-x  2 root root  0 Mar  5 17:01  chosen
    drwxr-xr-x  2 root root  0 Mar  5 17:01  clkout0-ref-clk
    drwxr-xr-x  2 root root  0 Mar  5 17:01  clock-divider-oldi
    -r--r--r--  1 root root 33 Mar  5 17:01  compatible
    drwxr-xr-x  7 root root  0 Mar  5 17:01  cpus
    drwxr-xr-x  4 root root  0 Mar  5 17:01  firmware
    -r--r--r--  1 root root  4 Mar  5 17:01  interrupt-parent
    drwxr-xr-x  2 root root  0 Mar  5 17:01  l2-cache0
    drwxr-xr-x  6 root root  0 Mar  5 17:01  leds
    drwxr-xr-x  2 root root  0 Mar  5 17:01  memory@80000000
    -r--r--r--  1 root root 26 Mar  5 17:01  model
    -r--r--r--  1 root root  1 Mar  5 17:01  name
    drwxr-xr-x  9 root root  0 Mar  5 17:01  opp-table
    drwxr-xr-x  2 root root  0 Mar  5 17:01  pmu
    drwxr-xr-x  2 root root  0 Mar  5 17:01  regulator-1
    drwxr-xr-x  2 root root  0 Mar  5 17:01  regulator-2
    drwxr-xr-x  2 root root  0 Mar  5 17:01  regulator-4
    drwxr-xr-x  2 root root  0 Mar  5 17:01  regulator-5
    drwxr-xr-x 10 root root  0 Mar  5 17:01  reserved-memory
    drwxr-xr-x  6 root root  0 Mar  5 17:01  system-idle-states
    drwxr-xr-x  4 root root  0 Mar  5 17:01  thermal-zones
    drwxr-xr-x  2 root root  0 Mar  5 17:01  timer-cl0-cpu0
    debian@BeagleBone:~$ ls -l /proc/device-tree/clkout0-ref-clk
    total 0
    -r--r--r-- 1 root root  4 Mar  5 17:01 '#clock-cells'
    -r--r--r-- 1 root root 12 Mar  5 17:01  assigned-clock-parents
    -r--r--r-- 1 root root 12 Mar  5 17:01  assigned-clocks
    -r--r--r-- 1 root root  4 Mar  5 17:01  clock-frequency
    -r--r--r-- 1 root root 12 Mar  5 17:01  compatible
    -r--r--r-- 1 root root 16 Mar  5 17:01  name
    -r--r--r-- 1 root root  4 Mar  5 17:01  phandle
    -r--r--r-- 1 root root  4 Mar  5 17:01  pinctrl-0
    -r--r--r-- 1 root root  8 Mar  5 17:01  pinctrl-names
    debian@BeagleBone:~$ cat /proc/device-tree/clkout0-ref-clk/clock-frequency
    ▒▒debian@BeagleBone:~$ cat /proc/device-tree/clkout0-ref-clk/name
    debian@BeagleBone:~$ hexdump /proc/device-tree/clkout0-ref-clk/clock-frequencyclock-frequency
    0000000 fa02 80f0
    0000004
    

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

    我想知道 u-boot 是否会产生影响。

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

    您好:Marc、

    即使之后、clk_summary 仍仅显示 25MHz?

    另外、在您的提示下、我可以看到 debian。 您能否确认 所处的 SDK?

    如果基于 Debian、您能使用最新的 TI SDK 内核吗?

    此致、
    Vinu

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

    你(们)好

    我已经尝试了很多不同的配置、无法从 CLKOUT0 (A18) 引脚上获取 50MHz。

    我可以获得与您相同的配置、即显示配置了 50MHz 的 clk_summary、但未启用该引脚以使信号从外部路由。

    或者、可以从 CLKOUT0 (A18) 引脚获得时钟信号、但频率为 25MHz。

    您能否使用示波器检查您的配置、以查看 J3 EVM 接头上是否有 50MHz 输出?

    谢谢
    Marc

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

    您好:Marc、

    我将再次设置它、并尝试探测引脚。 我下周回来。

    此致、
    Vinu

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

    您好:Marc、

    我可以从 J3 接头上的引脚 A18 获得 50MHz 信号。

    我不得不稍微修改 DT、因为时钟被 Linux 禁用。

    我使用了 simple-pm-bus 而非固定时钟。

    共享下方的信号。

    50MHz

     

    {
    	clkout0_ref: clkout0-ref-clk {
    		compatible = "simple-pm-bus";
    		clocks = <&k3_clks 157 20>;
    		assigned-clocks = <&k3_clks 157 20>;
    		assigned-clock-parents = <&k3_clks 157 21>;
    		assigned-clock-rates = <50000000>;
     
    		pinctrl-names = "default";
    		pinctrl-0 = <&clkout0_pins_default>;
    	};
    };

    25MHz

    / {
    	clkout0_ref: clkout0-ref-clk {
    		compatible = "simple-pm-bus";
    		
    		clocks = <&k3_clks 157 20>;
    		assigned-clocks = <&k3_clks 157 20>;
    		assigned-clock-parents = <&k3_clks 157 22>;
    		assigned-clock-rates = <25000000>;
    
    		pinctrl-names = "default";
    		pinctrl-0 = <&clkout0_pins_default>;
    	};
    };

    此致、
    Vinu