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.

[参考译文] AM62A7-Q1:如何将 DDRSS0 频率修改为 1525MHz

Guru**** 2905440 points

Other Parts Discussed in Thread: AM62A7-Q1, SYSCONFIG

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1646221/am62a7-q1-how-to-modify-the-ddrss0-freq-to-1525mhz

器件型号: AM62A7-Q1
主题: SysConfig 中讨论的其他器件

尊敬的 TI 专家:

我们正在尝试在 AM62A7-Q1 平台上将 DDRSS0 频率从 1600MHz 更改为 1525MHz。  
:LPDDR4 内存是 NT6AN256T32AC-J1H。  
:SDK 版本 11.01

我们已经尝试了以下步骤:

1) 我们使用 TI SysConfig 工具将 FSP2 频率从 1600 更改为 1525。

SysConf-1525.png

然后、我们将 生成的 board_ddrReginit.h 文件放入 mcu_plus_sdk/source/drivers/ddr/v1/sdk/am62ax/ soc 目录、重新编译软件、然后将其刷写到电路板上。  
当我们使用 k3conf 转储时钟来检查 DDR 时钟时、显示了:  
DEV_DDR32SS0_DDRSS_DDR_PLL_CLK | CLK_STATE_READY | 762500000
但是、当我们使用带有差分探头的示波器测量 DDR0_CK0/DDR0_CK0_N 引脚的波形时、我们会发现实际物理时钟仍处于 1600MHz。

 

DDR_TestPins.png

DDR-CK-Waveform.jpg

 

2) 根据上述步骤、我们对以下代码进行了额外修改:
在 MCU_PLUS_SDK/source/drivers/DDR/v1/DDR/am62ax/DDR_soc.h 中 soc:将#define DDR_MHz (1600U) 更改为 (1525U)
在 mcu_plus_sdk/source/drivers/ddr/v1/am62ax/ddr_soc.c 中 soc:将#define MAIN_PLL12_OFC1_FBDIV 64 更改为 61

我们重新编译了软件、然后再次将其刷写到电路板中。 但是、使用示波器差分探头测量 DDR0_CK0/DDR0_CK0_N 引脚时、仍会显示 1600MHz 处的时钟。

 

您能否帮助检查软件中是否有其他地方需要修改才能使其生效?  

提前感谢!

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

    看起来您正在进行正确的更改。  在内核中使用 k3conf 检查的时间点是什么?  您能否提供完整的日志?  是否使用 SBL 然后引导至 Linux?

    此致、

    James

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

    看起来 PLL 没有正确编程。  我联系 SW 团队时、您可以尝试 2 件事吗

    1.对于 1525MHz 情况、转储以下地址:0x0068C020-0x0068C040和 0x0068C080

    2.选择不同的偶数频率,如 1400MHz。  这可能是设备管理器选择需要分数分频器的频率时的一个问题。

    此致、

    James

      

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    1. 对于 1525MHz 情况、转储以下地址:0x0068C020-0x0068C040和 0x0068C080

    root@cadms:~#/data/k3conf dump clock | grep DDR
    | F/w 功能| 0x1f7:Gen DEEP_SLP MCU_ONLY PART_IO DM_MGD_LPM IO+DDR_RET IO_ISO DM-SPLT |
    | 157 | 24 | DEV_BOARD0_DDR0_CK0_IN | CLK_STATE_READY | 250000000 |
    | 157 | 25 | DEV_BOARD0_DDR0_CK0_N_IN | CLK_STATE_READY | 0 |
    | 157 | 27 | DEV_BOARD0_DDR0_CK0_OUT | CLK_STATE_READY | 0 |
    | 170 | 0 | DEV_DDR32SS0_DDR_PLL_DIVH_CLK4_OBSCLK_OUT_CLK | CLK_STATE_READY | 0 |
    | 170 | 1 | DEV_DDR32SS0_DDRSS_DDR_PLL_CLK | CLK_STATE_READY | 762500000 |
    | 170 | 2 | DEV_DDR32SS0_DDRSS_TCK | CLK_STATE_READY | 0 |
    | 170 | 3 | DEV_DDR32SS0_PLL_CTRL_CLK | CLK_STATE_READY | 500000000 |
    | 228 | 14 | DEV_OBSCLK0_MUX_SEL_DEV_VD_CLK_PARALT_SAM62A_DDR_WRAP_MAIN_0_DDR_DIVH_CLK4_OBSCLK_OUT_CLK | CLK_STATE_READY | 0 |
    root@cadms:~#
    root@cadms:~#
    root@cadms:~# devmem 0x0068C020
    0x00018010
    root@cadms:~# devmem 0x0068C024
    0x00000001
    root@cadms:~# devmem 0x0068C028
    总线错误(核心转储)
    root@cadms:~# devmem 0x0068C02C
    总线错误(核心转储)
    root@cadms:~# devmem 0x0068C030
    0x0000007A
    root@cadms:~# devmem 0x0068C034
    0x00000000
    root@cadms:~# devmem 0x0068C038
    0x01010001
    root@cadms:~# devmem 0x0068C03C
    总线错误(核心转储)
    root@cadms:~# devmem 0x0068C040
    0x80000000
    root@cadms:~# devmem 0x0068C080
    0x00008003.
    root@cadms:~#

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

    我们还尝试将 DDR 频率配置为 1333MHz、涉及与上述 1525MHz 情况完全相同的文件修改。  不过、 示波器测量的实际结果仍处于 1600MHz。

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

    好的、这很奇怪。  我认为 PLL 设置正确:

    25MHz 系统时钟

    0x68C030 是乘法器:0x7A

    0x68C080 是分压器:3+1 = 4

    因此、PLL 设置为 (25*122)/4 = 762.5MHz = PLL 频率。

    存储器时钟频率始终为 2 倍 PLL 频率、762.5*2 = 1525MHz

    k3conf 也会确认此配置。

    我不知道你为什么还在阅读 1600MHz!  

    作为一个测试,你应该能够写入 0x68C080 与 devmem 更改分频器的动态。  您可以尝试将其更改为 0x8004(即 4+1=5 分频)、看看时钟频率是否发生了变化。   

    -什么是 0x68C030 和 0x68C080 在 1333MHz 案例?

    -您可以确认您的输入时钟是 25MHz 吗?

    此致、

    James