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:DDR4变更查询

Guru**** 2393085 points
Other Parts Discussed in Thread: SYSCONFIG

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1494896/am625-ddr4-change-inquiry

器件型号:AM625
主题: SysConfig 中讨论的其他器件

工具/软件:

我使用 am6252制作了一个定制电路板。

现有电路板使用相同的2GB DDR4 RAM、我想将其更改为512MB。

数据速率相同、为3200、如果在更改时需要更改任何内容、请回复。

谢谢你。

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

    从硬件角度而言、您不需要进行任何更改。  对于软件、您需要使用 DDR 寄存器配置工具( https://dev.ti.com/sysconfig/?product=Processor_DDR_Config&device=AM62x )更改 DDR 配置、以针对新的存储器大小进行配置。  如果您使用 Linux、也要考虑以下情况:  https://dev.ti.com/tirex/explore/content/am62x_academy_10_00_00_01/am62x_academy_10_00_00_01/source/linux/ch-porting/porting-uboot.html#modifying-ram-size

    此致、

    James

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

    你好。

    感谢您的答复。

    我想先应用它、只需在 SysConfig 中更改16GB (2GB)-> 2Gb (512MB)、然后进行测试。

    但是、由于 SDK 版本为9.xx、SysConfig 文件中的数据不匹配。 是否有任何具体需要更改的数据?

    当前版本确认为10.xx。

    请回复。
    谢谢你。

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

    大家好、我不明白 SysConfig 中的数据不匹配。  您能告诉我您尝试做什么吗?

    此致、

    James

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

    您的评论基于 SDK 10或更高版本。
    不过、我们使用 SDK 9。

     SDK 9中不存在 DDRSS_SDRAM_IDX、DDRSS_REGION_IDX 17。

    我明白在 SDK 9中、我们需要更改 k3-ddrss.c 文件中的以下内容、对吧?
    Writel (0x000001EF、ddrss->ddrss_ss_cfg + DDRSS_V2A_CTL_REG);

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

    我修改了 DDR 大小配置并进行了测试(2G -> 512MB)

    但是、DDR 大小不变。

    diff --git a/arch/arm/dts/k3-am625-sk.dts b/arch/arm/dts/k3-am625-sk.dts
    index 859f038c376..4c0d8f2241c 100644
    --- a/arch/arm/dts/k3-am625-sk.dts
    +++ b/arch/arm/dts/k3-am625-sk.dts
    @@ -45,7 +45,8 @@
     	memory@80000000 {
     		device_type = "memory";
     		/* 2G RAM */
    -		reg = <0x00000000 0x80000000 0x00000000 0x80000000>;
    +		// reg = <0x00000000 0x80000000 0x00000000 0x80000000>;
    +		reg = <0x00000000 0x80000000 0x00000000 0x20000000>;
     
     	};
     
    diff --git a/arch/arm/dts/k3-am62x-r5-sk-common.dtsi b/arch/arm/dts/k3-am62x-r5-sk-common.dtsi
    index bd037773222..14f271a015f 100644
    --- a/arch/arm/dts/k3-am62x-r5-sk-common.dtsi
    +++ b/arch/arm/dts/k3-am62x-r5-sk-common.dtsi
    @@ -20,7 +20,8 @@
     	memory@80000000 {
     		device_type = "memory";
     		/* 2G RAM */
    -		reg = <0x00000000 0x80000000 0x00000000 0x80000000>;
    +		// reg = <0x00000000 0x80000000 0x00000000 0x80000000>;
    +		reg = <0x00000000 0x80000000 0x00000000 0x20000000>;
     		bootph-pre-ram;
     	};
     
    diff --git a/arch/arm/dts/k3-am62x-sk-common.dtsi b/arch/arm/dts/k3-am62x-sk-common.dtsi
    index 49f3c280e04..8746277602f 100644
    --- a/arch/arm/dts/k3-am62x-sk-common.dtsi
    +++ b/arch/arm/dts/k3-am62x-sk-common.dtsi
    @@ -31,7 +31,8 @@
     	memory@80000000 {
     		device_type = "memory";
     		/* 2G RAM */
    -		reg = <0x00000000 0x80000000 0x00000000 0x80000000>;
    +		// reg = <0x00000000 0x80000000 0x00000000 0x80000000>;
    +		reg = <0x00000000 0x80000000 0x00000000 0x20000000>;
     
     	};
     
    diff --git a/arch/arm/dts/k3-am62x-sk-ddr4-1600MTs.dtsi b/arch/arm/dts/k3-am62x-sk-ddr4-1600MTs.dtsi
    index d92e3ce048b..8c8e8861cc8 100644
    --- a/arch/arm/dts/k3-am62x-sk-ddr4-1600MTs.dtsi
    +++ b/arch/arm/dts/k3-am62x-sk-ddr4-1600MTs.dtsi
    @@ -330,8 +330,8 @@
     #define DDRSS_CTL_314_DATA 0x00000000
     #define DDRSS_CTL_315_DATA 0x00000100
     #define DDRSS_CTL_316_DATA 0x01010000
    -#define DDRSS_CTL_317_DATA 0x00000000
    -#define DDRSS_CTL_318_DATA 0x3FFF0000
    +#define DDRSS_CTL_317_DATA 0x00000202
    +#define DDRSS_CTL_318_DATA 0x0FFF0000
     #define DDRSS_CTL_319_DATA 0x000FFF00
     #define DDRSS_CTL_320_DATA 0xFFFFFFFF
     #define DDRSS_CTL_321_DATA 0x000FFF00
    @@ -513,7 +513,7 @@
     #define DDRSS_PI_74_DATA 0x00000000
     #define DDRSS_PI_75_DATA 0x00000005
     #define DDRSS_PI_76_DATA 0x01000000
    -#define DDRSS_PI_77_DATA 0x04000100
    +#define DDRSS_PI_77_DATA 0x04020100
     #define DDRSS_PI_78_DATA 0x00020000
     #define DDRSS_PI_79_DATA 0x00010002
     #define DDRSS_PI_80_DATA 0x00000001
    diff --git a/drivers/ram/k3-ddrss/k3-ddrss.c b/drivers/ram/k3-ddrss/k3-ddrss.c
    index 7e445d2b737..6263464d20e 100644
    --- a/drivers/ram/k3-ddrss/k3-ddrss.c
    +++ b/drivers/ram/k3-ddrss/k3-ddrss.c
    @@ -626,7 +626,8 @@ static int k3_ddrss_probe(struct udevice *dev)
     
     #ifdef CONFIG_K3_AM64_DDRSS
     	/* AM64x supports only up to 2 GB SDRAM */
    -	writel(0x000001EF, ddrss->ddrss_ss_cfg + DDRSS_V2A_CTL_REG);
    +	//writel(0x000001EF, ddrss->ddrss_ss_cfg + DDRSS_V2A_CTL_REG);
    +	writel(0x000001AF, ddrss->ddrss_ss_cfg + DDRSS_V2A_CTL_REG); // 512 MB
     	writel(0x0, ddrss->ddrss_ss_cfg + DDRSS_ECC_CTRL_REG);
     #endif
     

    测试结果如下

    => bdinfo
    boot_params = 0x0000000000000000
    DRAM bank   = 0x0000000000000000
    -> start    = 0x0000000080000000
    -> size     = 0x0000000080000000
    flashstart  = 0x0000000000000000
    flashsize   = 0x0000000000000000
    flashoffset = 0x0000000000000000
    baudrate    = 115200 bps
    relocaddr   = 0x00000000ff61b000
    reloc off   = 0x000000007ee1b000
    Build       = 64-bit
    Could not get PHY for ethernet@8000000port@1: addr 0
    am65_cpsw_nuss_port ethernet@8000000ethernet@8000000port@1: phy_connect() failed
    Could not get PHY for ethernet@8000000port@1: addr 0
    am65_cpsw_nuss_port ethernet@8000000ethernet@8000000ethernet@8000000port@1: phy_connect() failed
    current eth = unknown
    ethaddr     = (not set)
    IP addr     = <NULL>
    fdt_blob    = 0x00000000fd5ebf20
    new_fdt     = 0x00000000fd5ebf20
    fdt_size    = 0x000000000000fe60
    Video       = dss@30200000 inactive
    multi_dtb_fit= 0x0000000000000000
    lmb_dump_all:
     memory.cnt  = 0x1
     memory[0]      [0x80000000-0xffffffff], 0x80000000 bytes flags: 0
     reserved.cnt  = 0x5
     reserved[0]    [0x9ca00000-0x9cafffff], 0x00100000 bytes flags: 0
     reserved[1]    [0x9cb00000-0x9e6fffff], 0x01c00000 bytes flags: 4
     reserved[2]    [0x9e780000-0x9fffffff], 0x01880000 bytes flags: 4
     reserved[3]    [0xfc5e6000-0xffffffff], 0x03a1a000 bytes flags: 0
     reserved[4]    [0xfd5e69d0-0xffffffff], 0x02a19630 bytes flags: 0
    devicetree  = separate
    arch_number = 0x0000000000000000
    TLB addr    = 0x00000000ffff0000
    irq_sp      = 0x00000000fd5eaff0
    sp start    = 0x00000000fd5eaff0
    Early malloc usage: 3b40 / 8000
    

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

    尊敬的 Inseok:

    请在 U-Boot 提示符处运行以下命令以检查 U-Boot 器件树中的存储器配置:

    =>打印 fdtcontroladdr
    => fdt addr $fdtcontroladdr
    => FDT 列表/存储器@80000000

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    下面是您提到的测试结果。
    
    我显然修改了 DTS 文件中的 DDR 设置、但我不知道为什么更改不起作用。 

    => print fdtcontroladdr
    fdtcontroladdr=fd5ebf20
    => fdt addr $fdtcontroladdr
    Working FDT set to fd5ebf20
    => fdt list /memory@80000000
    memory@80000000 {
      device_type = "memory";
      reg = <0x00000000 0x80000000 0x00000000 0x80000000>;
      bootph-pre-ram;
    };
    

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

    转至 U-Boot 构建目录、找到 dtb 文件:

    r5/arch/arm/dts/k3-am625-sk.dtb
    a53/arch/arm/dts/k3-am625-sk.dtb

    然后使用 dcd 命令将 DTB 转换回 dts、并检查存储器@80000000节点中的存储器大小、看看该值是否正确。

    例如:

    DTC -i DTB ./r5/arch/arm/dts/k3-am625-sk.dtb |更小

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

    结果如下。

    u-boot.img 中不包含 dtb 文件吗? 我是否需要像内核一样单独安装 dtb 文件?

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

    我提到有2个 dtb、一个在 R5目录中、另一个在 A53目录中。 两者是否都有相同的正确大小0x20000000?

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

    正如您提到的、有2个 dtb 文件。


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

    它们的存储器节点中是否都有相同的大小0x20000000?

    请对以下两个 DTB 文件进行相同的存储器大小检查。

    r5/u-boot.dtb
    a53/u-boot.dtb

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

    存储器节点的两个 DTS 文件相同。

    [12:24:01] ischoi@Lenovo $ dtc -I dtb ./r5/arch/arm/dts/k3-am625-sk.dtb | less
    
    ....
    
            memory@80000000 {
                    device_type = "memory";
                    reg = <0x00 0x80000000 0x00 0x20000000>;
                    bootph-pre-ram;
            };
    
    ....
    
    
    
    [12:24:01] ischoi@Lenovo $ dtc -I dtb ./a53/arch/arm/dts/k3-am625-sk.dtb | less
    ...
    
            memory@80000000 {
                    device_type = "memory";
                    reg = <0x00 0x80000000 0x00 0x20000000>;
                    bootph-pre-ram;
            };
    ....

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

    您使用的 SDK9.x 的确切版本是什么?

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

    我的 SDK 版本是09.00.00.03

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

    请检查 U-Boot 控制台消息中的编译时间戳、并确保您确实正在运行刚刚编译的 U-Boot 二进制文件?

    例如:

    U-Boot SPL 2023.04-gb0d717b732 ( 2023年12月6日- 15:11:45 +0000 )

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

    下面有一条 U-Boot 控制台消息。

    U-Boot SPL 2023.04-g24098ea90d (2023年7月6日- 12:59:40 +0000)

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    [引述 userid="599706" url="~/support/processors-group/processors/f/processors-forum/1494896/am625-ddr4-change-inquiry/5751721 #5751721"](2023年7月6日- 12:59:40 +0000)

    现在是2025、显然您没有使用刚刚编译的 U-Boot 二进制文件?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我再次进行了检查、但编译没有问题。
    我在构建后仅替换 u-boot.img 文件来进行测试。 
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我正在通过在构建后仅替换 u-boot.img 文件来进行测试。

    您需要从 U-Boot 构建中更新所有3个二进制文件。