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:如何在 Uboot 中更改 LPDDR4 时钟、以实现更快的 ECC 初始化

Guru**** 2905440 points

Other Parts Discussed in Thread: TMDS64EVM

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1622741/am6442-how-to-change-the-lpddr4-clock-in-uboot-for-faster-ecc-initialization

器件型号: AM6442
Thread 中讨论的其他器件: TMDS64EVM

尊敬的 Champs:

我的客户希望将 LPDDR4 时钟从默认值 (50MHz) 更改为更高的值、从而在 Uboot 中更快地完成 ECC 初始化。 请告知这是否是正确的方法以及如何执行该操作/在何处更改 Uboot 中的代码。

 

此致、

Kien

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

    HI、uboot 应已经在 800MHz 的最大 DDR 频率下运行。  阶段 1 SPL 将初始化 DDR、并且 ECC 启动应以最大频率进行。  他们如何观察 50MHz 操作?

    此致、

    James

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

    您好、James:

    我是 Kien 提到的客户。

    我的意见:
    -在 TMDS64EVM 的 2GB DDR4 内存上启用 ECC 只需要 1 秒的时间进行 ECC 初始化
    - 在 AM64SKEVM 和我们的定制电路板上使用 MT53E1G16D1 LPDDR4 的 2GB LPDDR4 存储器上启用 ECC 大约需要 3.2 秒进行 ECC 初始化

    主要问题是 ECC 初始化所花费的时间要长得多、我最初猜测是 LPDDR4 在 50MHz 进行初始化。
    如果这种猜测是错误的,这种时间差的其他潜在原因是什么,如何减少它?

    此致、

    余姚市

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

    您好、余姚、谢谢您的介绍。  我同意,这似乎很奇怪。  启用 ECC 并执行启动时、*应该*都在 800MHz 下运行。  是否对这两个器件使用相同的 SDK?  您如何衡量结果?  如果你能提供一些细节来重现,我应该能够在这里查看并给出解释。

    此致、

    James

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

    您好、James:

    刚刚使用 ti-processor-sdk-linux-am64xx-evm-11.02.08.02-Linux-x86-Install.bin 的全新安装进行了测试

    以下是操作步骤:

    1.使用 SDK 安装中包含的默认映像创建 SD 卡

    2.按照 本指南修改 uboot 文件 以启用 ECC、更改了文件:k3-am64-ddr.dtsi、am64x_evm_r5_defconfig

    3.将 SD 卡中的 uboot 二进制文件替换为新编译的二进制文件

    4.使用同一 SD 卡在两个 EVM 板上进行测试

    结果直接取自引导过程中的 UART 日志输出:

    TMDS64EVM:

    U-Boot SPL 2025.01-g7493977a537f-dirty (Mar 24 2026 - 06:39:14 +0000)
    Resetting on cold boot to workaround ErrataID:i2331
    Please resend tiboot3.bin in case of UART/DFU boot
    resetting ...
    
    U-Boot SPL 2025.01-g7493977a537f-dirty (Mar 24 2026 - 06:39:14 +0000)
    SYSFW ABI: 4.0 (firmware rev 0x000b '11.2.5--v11.02.05 (Fancy Rat)')
    ECC is enabled, priming DDR which will take several seconds.
    ECC: priming DDR completed in 1085 msec
    Set clock rates for '/a53@0', CPU: 1000MHz at Speed Grade 'S'
    SPL initial stack usage: 13584 bytes
    Trying to boot from MMC2
    Authentication passed
    Authentication passed
    Loading Environment from nowhere... OK
    Authentication passed
    Authentication passed
    Starting ATF on ARM64 core...
    
    NOTICE:  BL31: v2.13.0(release):v2.13.0-259-ge0c4d3903b-dirty
    NOTICE:  BL31: Built : 07:01:36, Jul  1 2025
    I/TC:
    I/TC: OP-TEE version: 4.7.0-47-ga9690ae39 (gcc version 13.4.0 (GCC)) #1 Thu Aug  7 15:25:10 UTC 2025 aarch64
    I/TC: WARNING: This OP-TEE configuration might be insecure!
    I/TC: WARNING: Please check optee.readthedocs.io/.../porting_guidelines.html
    I/TC: Primary CPU initializing
    I/TC: GIC redistributor base address not provided
    I/TC: Assuming default GIC group status and modifier
    I/TC: SYSFW ABI: 4.0 (firmware rev 0x000b '11.2.5--v11.02.05 (Fancy Rat)')
    I/TC: Activated SA2UL device
    I/TC: Enabled firewalls for SA2UL TRNG device
    I/TC: EIP76D TRNG initialized
    I/TC: SA2UL Drivers initialized
    I/TC: HUK Initialized
    I/TC: Primary CPU switching to normal world boot
    
    U-Boot SPL 2025.01-g7493977a537f-dirty (Mar 24 2026 - 06:39:35 +0000)
    SYSFW ABI: 4.0 (firmware rev 0x000b '11.2.5--v11.02.05 (Fancy Rat)')
    Trying to boot from MMC2
    Authentication passed
    Authentication passed
    
    
    U-Boot 2025.01-g7493977a537f-dirty (Mar 24 2026 - 06:39:35 +0000)
    
    SoC:   AM64X SR2.0 HS-FS
    Model: Texas Instruments AM642 EVM
    Board: AM64-EVM rev D
    DRAM:  1.8 GiB
    Core:  111 devices, 34 uclasses, devicetree: separate
    MMC:   mmc@fa10000: 0, mmc@fa00000: 1
    Loading Environment from nowhere... OK
    In:    serial@2800000
    Out:   serial@2800000
    Err:   serial@2800000
    Net:   eth0: ethernet@8000000port@1am65_cpsw_nuss_port ethernet@8000000port@2: phy_connect() failed
    , eth2: icssg1-eth-port@0
    Hit any key to stop autoboot:

    AM64SKEVM:

    U-Boot SPL 2025.01-g7493977a537f-dirty (Mar 24 2026 - 06:39:14 +0000)
    Resetting on cold boot to workaround ErrataID:i2331
    Please resend tiboot3.bin in case of UART/DFU boot
    resetting ...
    
    U-Boot SPL 2025.01-g7493977a537f-dirty (Mar 24 2026 - 06:39:14 +0000)
    SYSFW ABI: 4.0 (firmware rev 0x000b '11.2.5--v11.02.05 (Fancy Rat)')
    EEPROM not available at 0x50, trying to read at 0x51
    ECC is enabled, priming DDR which will take several seconds.
    ECC: priming DDR completed in 3230 msec
    Set clock rates for '/a53@0', CPU: 1000MHz at Speed Grade 'S'
    SPL initial stack usage: 13584 bytes
    Trying to boot from MMC2
    Authentication passed
    Authentication passed
    Loading Environment from nowhere... OK
    Authentication passed
    Authentication passed
    Starting ATF on ARM64 core...
    
    NOTICE:  BL31: v2.13.0(release):v2.13.0-259-ge0c4d3903b-dirty
    NOTICE:  BL31: Built : 07:01:36, Jul  1 2025
    I/TC:
    I/TC: OP-TEE version: 4.7.0-47-ga9690ae39 (gcc version 13.4.0 (GCC)) #1 Thu Aug  7 15:25:10 UTC 2025 aarch64
    I/TC: WARNING: This OP-TEE configuration might be insecure!
    I/TC: WARNING: Please check optee.readthedocs.io/.../porting_guidelines.html
    I/TC: Primary CPU initializing
    I/TC: GIC redistributor base address not provided
    I/TC: Assuming default GIC group status and modifier
    I/TC: SYSFW ABI: 4.0 (firmware rev 0x000b '11.2.5--v11.02.05 (Fancy Rat)')
    I/TC: Activated SA2UL device
    I/TC: Enabled firewalls for SA2UL TRNG device
    I/TC: EIP76D TRNG initialized
    I/TC: SA2UL Drivers initialized
    I/TC: HUK Initialized
    I/TC: Primary CPU switching to normal world boot
    
    U-Boot SPL 2025.01-g7493977a537f-dirty (Mar 24 2026 - 06:39:35 +0000)
    SYSFW ABI: 4.0 (firmware rev 0x000b '11.2.5--v11.02.05 (Fancy Rat)')
    Trying to boot from MMC2
    Authentication passed
    Authentication passed
    
    
    U-Boot 2025.01-g7493977a537f-dirty (Mar 24 2026 - 06:39:35 +0000)
    
    SoC:   AM64X SR2.0 HS-FS
    Model: Texas Instruments AM642 SK
    Board: AM64B-SKEVM rev A
    DRAM:  1.8 GiB
    Core:  102 devices, 34 uclasses, devicetree: separate
    MMC:   mmc@fa00000: 1
    Loading Environment from nowhere... OK
    In:    serial@2800000
    Out:   serial@2800000
    Err:   serial@2800000
    Failed to probe prueth driver
    Net:   eth0: ethernet@8000000port@1, eth1: ethernet@8000000port@2
    Hit any key to stop autoboot:

    此致、

    余姚市

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

    请给我一些时间来研究一下。

    James

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

    很抱歉耽误你的时间。  我一直在研究这一点、问题似乎与 BIST 引擎本身有关。  在两个电路板上运行基准测试代码时不会出现性能差异。  我仍需要更多时间在 Linux 之外尝试 BIST 引擎以进行进一步分析   

    此致、

    James

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

    您好、James、感谢您的更新。 值得注意的是、对于应用而言、这不是影响 LPDDR 性能的问题。

    此致、

    余姚市

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

    是的、我不知道为什么发生 LPDDR4、肯定是发生了一些低效的存储器访问。

    此致、

    James

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

    您好、James:

    对此有任何更新?

    谢谢、

    余姚市

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

    我深入研究了这一点、BIST 引擎似乎不如使用 DDR4 访问 LPDDR4 高效。  由于存储库更少且刷新次数更多、控制器似乎停止运行、需要更多激活和预充电命令、这不允许高效写入吞吐量。   

    然而、BIST 引擎仍然是保存存储器的最高效方式(通过 DMA 或处理器 memcpy)。  您还可以通过确保仅对所需的存储器区域使用 ECC(即,您可能不需要对整个 DDR 存储器进行纠错)来减少这段时间、因此必须优先使用的存储器容量会更少

    此致、

    James

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

    感谢 James 对此进行调查。

    此致、

    余姚市