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.

[参考译文] AM6412:GPMC0_FCLK_MUX 自由运行时钟输出未出现在 R17 上 (AM6412)

Guru**** 2964790 points

Other Parts Discussed in Thread: AM6412

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1647926/am6412-gpmc0_fclk_mux-free-running-clock-output-not-appearing-on-r17-am6412

器件型号: AM6412

我正在尝试在 GPMC0_FCLK (R17) 上输出自由运行的 133MHz 时钟、但到目前为止一直没有成功。 在测试过程中、我将时钟分频为 15,748,031Hz、以便于探测。

下面的配置是否有任何不正确的地方? 我们应该检查的任何其他寄存器? 感谢您的帮助!

硬件: TI AM6412 GPMC_FCLK 连接到 FPGA 输入引脚的定制电路板。 使用示波器探测测试点的信号。

TI SDK 版本:10.01.10.04

我的.dts 文件包含 k3-am642.dtsi 以及添加到 gpmc0 中的以下内容:

 /* GPMC enabled so that, power and clock gates are enabled and pin is muxed */
  &gpmc0 {
      status = "okay";
      pinctrl-names = "default";
      pinctrl-0 = <&main_gpmc0_fclk_pins_default>;

      assigned-clocks = <&k3_clks 80 0>;
      assigned-clock-parents = <&k3_clks 80 1>;
      assigned-clock-rates = <133333333>;
  };

  main_gpmc0_fclk_pins_default {
      pinctrl-single,pins = <
          AM64X_IOPAD(0x007c, PIN_OUTPUT, 4)  /* (R17) GPMC0_CLK.GPMC0_FCLK_MUX */
      >;
  };

 

确认 Padconfig 在模式 4 下针对 GPMC0_FCLK_MUX 输出正确、并确认在 GPIO 模式下可能会看到切换、作为完整性检查。

 - 0x000f407c 的 PADCONFIG 读取 0x00010004(模式 4)。
 -同一引脚上的 GPIO 健全性测试(模式 7, GPIO0 线 31 ):干净地通过 gpioset 切换~90mV→~1.75 V ,确认 IO 缓冲器正常工作,FPGA 没有将引脚保持在意外状态。

 -在模式 0 (GPMC0_CLK) 下、引脚被主动驱动至~–34mV(控制器空闲状态,无事务)。
 -在模式 4 (GPMC0_FCLK_MUX) 下、引脚设置为~851mV(≈Vio/2,经典高阻态特征)。

 

Linux 时钟框架显示根据 debugfs 配置:

 -/sys/kernel/debug/clk/clk 80:0:
  - clk_enable_count = 1、clk_prepare_count = 1
  - clk_rate 最初= 13333333333;后来降低并报告为 15748031。 因此、clk_set_rate 通过 TI-SCI 传播到一个实数分频器。
  - clk_parent = clk:80:1
  - clk_scaye_paraments= clk:80:1 clk:80:2.

 

在两个时钟选项之间切换 CTRLMMR_GPMC_CLKSEL (0x43008180):

 -分区锁定寄存器 0x43005008 确认解锁(设置位 1 )。
 -写 0 和 1;读回确认写棒。
 -在 CLK_SEL=0 和 CLK_SEL=1 之间、R17 电压略有漂移但保持直流 — 多路复用器确实会响应,但焊盘上的两个输入都是直流的。

 

MAIN_PLL0_HSDIV_CTRL3 (0x0068008C) 已正确配置并锁定 PLL。

 -读为 0x0000807E:
  - CLKOUT_EN(位 15) = 1
  -复位(位 31) = 0
  - SYNC_DIS(位 8) = 0
  - HSDIV(位 6:0)= 0x7E (126)→OUTPUT = VCO / 127≈15.75MHz(与 debugfs clk_set_rate 之后 linux 的 clk:80:0 速率匹配)。
 - 0x00680024 处的 MAIN_PLL0 PLLCTL.PLLSTAT 读取 0x00000001 - PLL 锁定。

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

    内核启动后是否运行“k3conf“?
    运行“k3conf dump clock 80“可输出什么?
    此致、
    - Hong

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

    Hong Hong:

    感谢您的回复! 输出如下:

    $ k3conf dump clock 80
    |------------------------------------------------------------------------------|
    | VERSION INFO                                                                 |
    |------------------------------------------------------------------------------|
    | K3CONF | (version 0.3-nogit built Thu Jul 25 14:13:02 UTC 2024)              |
    | SoC    | AM64x SR2.0                                                         |
    | SYSFW  | ABI: 4.0 (firmware version 0x000a '10.1.8--v10.01.08 (Fiery Fox))') |
    |------------------------------------------------------------------------------|
    
    |-------------------------------------------------------------------------------------------------------------------------|
    | Device ID | Clock ID | Clock Name                                                   | Status          | Clock Frequency |
    |-------------------------------------------------------------------------------------------------------------------------|
    |    80     |     0    | DEV_GPMC0_FUNC_CLK                                           | CLK_STATE_READY | 133333333       |
    |    80     |     1    | DEV_GPMC0_FUNC_CLK_PARENT_HSDIV4_16FFT_MAIN_0_HSDIVOUT3_CLK  | CLK_STATE_READY | 133333333       |
    |    80     |     2    | DEV_GPMC0_FUNC_CLK_PARENT_POSTDIV4_16FF_MAIN_2_HSDIVOUT7_CLK | CLK_STATE_READY | 100000000       |
    |    80     |     3    | DEV_GPMC0_PI_GPMC_RET_CLK                                    | CLK_STATE_READY | 0               |
    |    80     |     4    | DEV_GPMC0_VBUSM_CLK                                          | CLK_STATE_READY | 250000000       |
    |    80     |     5    | DEV_GPMC0_PO_GPMC_DEV_CLK                                    | CLK_STATE_READY | 0               |
    |-------------------------------------------------------------------------------------------------------------------------|

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

    运行“devmem2 0x3B000000“@内核提示符后、输出是什么?
    此致、
    - Hong

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

    $ devmem 0x3B000000 32
    0x00000060

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

    根据

    AM64x TRM。

    AM64xx SoC “开启“、PLL 开启且生成 GPMC0_FCLK_MUX 后、一旦正确配置 padconfig、就会在 R17 上“预期“GPMC0_FCLK_MUX 输出。

    为了进行测试、我们是否可以通过将 padconfig 重新配置为模式 0 来探测 R17 上的 GPMC0_CLK? 我认为、我们需要通过 GPMC 在一个环路中访问 FPGA、从而获得 GPMC0_CLK。

    此致、
    - Hong