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:如何在 SDK 9.2上设置 AM625 4GB RAM?

Guru**** 2564565 points


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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1387864/am625-how-to-set-up-am625-4gb-ram-on-sdk-9-2

器件型号:AM625

工具与软件:

CPU: am6254ATCGGAALW  

RAM: MT40A2G16

尊敬的团队:

以下是可在9.0上成功运行的修补程序。

编辑:

board-support/ti-linux-kernel/arch/arm64/boot/dts/ti/ k3-am625-sk.dts

board-support/ti-linux-kernel/arch/arm64/boot/dts/ti/ k3-am62x-sk-common.dtsi

board-support/ti-u-boot/arch/arm/dts/ k3-am625-sk.dts

memory@80000000 {
    device_type = "memory";
-   /* 2G RAM */
-   reg = <0x00000000 0x80000000 0x00000000 0x80000000>;
+   /* 4G RAM */
+   reg = <0x00000000 0x80000000 0x00000000 0x80000000>,
+   <0x00000008 0x80000000 0x00000000 0x80000000>;

};

board-support/ti-u-boot/arch/arm/dts/ k3-am625-r5-sk.dts

-#include "k3-am62x-sk-ddr4-1600MTs.dtsi"
+#include "k3-am62x-ddr-config.dtsi"

/ {
	memory@80000000 {
		device_type = "memory";
-		/* 2G RAM */
-		reg = <0x00000000 0x80000000 0x00000000 0x80000000>;
+		/* 4G RAM */
+		reg = <0x00000000 0x80000000 0x00000000 0x80000000>,
+		<0x00000008 0x80000000 0x00000000 0x80000000>;
		bootph-pre-ram;
	};
};

添加 board-support/ti-u-boot/arch/arm/dts/ k3-am62x-DDR-CONFIG 生成.dtsi 字段  SysConfig

board-support\ti-u-boot\drivers\ram\k3-ddrss\ k3-ddrss.c

/* AM64x supports only up to 2 GB SDRAM */

-writel(0x000001EF, ddrss->ddrss_ss_cfg + DDRSS_V2A_CTL_REG);

+writel(0x00000210, ddrss->ddrss_ss_cfg + DDRSS_V2A_CTL_REG);

writel(0x0, ddrss->ddrss_ss_cfg + DDRSS_ECC_CTRL_REG);

 

输出电压特性 bdinfo FREE -h  在 SDK9.0和 SDK9.2上使用相同的补丁。

SDK9.0:

U-Boot SPL 2023.04-00001-gf5b119738d-dirty (Jun 19 2024 - 19:58:43 +0800)
SYSFW ABI: 3.1 (firmware rev 0x0009 '9.0.5--v09.00.05 (Kool Koala)')
SPL initial stack usage: 13376 bytes
Trying to boot from MMC2
Starting ATF on ARM64 core...

NOTICE:  BL31: v2.8(release):v2.8-226-g2fcd408bb3-dirty
NOTICE:  BL31: Built : 00:42:57, Jan 13 2023

U-Boot SPL 2023.04-00001-gf5b119738d-dirty (Jun 19 2024 - 19:58:52 +0800)
SYSFW ABI: 3.1 (firmware rev 0x0009 '9.0.5--v09.00.05 (Kool Koala)')
SPL initial stack usage: 1856 bytes
i2c_write: error waiting for data ACK (status=0x116)
pca953x gpio@22: Error reading output register
Error (-2): cannot determine file size
Trying to boot from MMC2


U-Boot 2023.04-00001-gf5b119738d-dirty (Jun 19 2024 - 19:58:52 +0800)

SoC:   AM62X SR1.0 GP
Model: Texas Instruments AM625 SK
EEPROM not available at 80, trying to read at 81
Reading on-board EEPROM at 0x51 failed -1
DRAM:  2 GiB (effective 4 GiB)
Core:  70 devices, 31 uclasses, devicetree: separate
MMC:   mmc@fa10000: 0, mmc@fa00000: 1
Loading Environment from nowhere... OK
In:    serial
Out:   serial
Err:   serial
EEPROM not available at 80, trying to read at 81
Reading on-board EEPROM at 0x51 failed -1
Net:   eth0: ethernet@8000000port@1
Autoboot in 3 seconds
i2c_write: error waiting for data ACK (status=0x116)
pca953x gpio@22: Error reading output register
switch to partitions #0, OK
mmc1 is current device
i2c_write: error waiting for data ACK (status=0x116)
pca953x gpio@22: Error reading output register
SD/MMC found on device 1
Failed to load 'boot.scr'
677 bytes read in 14 ms (46.9 KiB/s)
Loaded env from uEnv.txt
Importing environment from mmc1 ...
=> bdinfo
boot_params = 0x0000000000000000
DRAM bank   = 0x0000000000000000
-> start    = 0x0000000080000000
-> size     = 0x0000000080000000
DRAM bank   = 0x0000000000000001
-> start    = 0x0000000880000000
-> size     = 0x0000000080000000
flashstart  = 0x0000000000000000
flashsize   = 0x0000000000000000
flashoffset = 0x0000000000000000
baudrate    = 115200 bps
relocaddr   = 0x00000000ff61b000
reloc off   = 0x000000007ee1b000
Build       = 64-bit
current eth = ethernet@8000000port@1
ethaddr     = 1c:63:49:1b:f9:cf
IP addr     = <NULL>
fdt_blob    = 0x00000000fd5ec020
new_fdt     = 0x00000000fd5ec020
fdt_size    = 0x000000000000fd60
Video       = dss@30200000 inactive
multi_dtb_fit= 0x0000000000000000
lmb_dump_all:
 memory.cnt  = 0x2
 memory[0]      [0x80000000-0xffffffff], 0x80000000 bytes flags: 0
 memory[1]      [0x880000000-0x8ffffffff], 0x80000000 bytes flags: 0
 reserved.cnt  = 0x6
 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]    [0xfc5e0000-0xffffffff], 0x03a20000 bytes flags: 0
 reserved[4]    [0xfd5e69d0-0xffffffff], 0x02a19630 bytes flags: 0
 reserved[5]    [0x880000000-0x8ffffffff], 0x80000000 bytes flags: 0
devicetree  = separate
arch_number = 0x0000000000000000
TLB addr    = 0x00000000ffff0000
irq_sp      = 0x00000000fd5eaff0
sp start    = 0x00000000fd5eaff0
Early malloc usage: 3c28 / 8000
=>

root@AM62:~# free -h
               total        used        free      shared  buff/cache   available
Mem:           3.8Gi       390Mi       3.3Gi        11Mi       284Mi       3.4Gi
Swap:             0B          0B          0B
root@AM62:~#

SDK9.2:

U-Boot SPL 2023.04-dirty (Jul 16 2024 - 16:59:51 +0800)
SYSFW ABI: 3.1 (firmware rev 0x0009 '9.2.7--v09.02.07 (Kool Koala)')
SPL initial stack usage: 13408 bytes
Trying to boot from MMC2
Starting ATF on ARM64 core...

NOTICE:  BL31: v2.10.0(release):v2.10.0-367-g00f1ec6b87-dirty
NOTICE:  BL31: Built : 16:09:05, Feb  9 2024

U-Boot SPL 2023.04-dirty (Jul 16 2024 - 16:59:59 +0800)
SYSFW ABI: 3.1 (firmware rev 0x0009 '9.2.7--v09.02.07 (Kool Koala)')
SPL initial stack usage: 1856 bytes
i2c_write: error waiting for data ACK (status=0x116)
pca953x gpio@22: Error reading output register
Trying to boot from MMC2


U-Boot 2023.04-dirty (Jul 16 2024 - 16:59:59 +0800)

SoC:   AM62X SR1.0 GP
Model: Texas Instruments AM625 SK
EEPROM not available at 80, trying to read at 81
Reading on-board EEPROM at 0x51 failed -1
DRAM:  2 GiB (effective 4 GiB)
Core:  72 devices, 32 uclasses, devicetree: separate
MMC:   mmc@fa10000: 0, mmc@fa00000: 1
Loading Environment from nowhere... OK
In:    serial
Out:   serial
Err:   serial
EEPROM not available at 80, trying to read at 81
Reading on-board EEPROM at 0x51 failed -1
Net:   eth0: ethernet@8000000port@1
Hit any key to stop autoboot:  0
=> bdinfo
boot_params = 0x0000000000000000
DRAM bank   = 0x0000000000000000
-> start    = 0x0000000080000000
-> size     = 0x0000000080000000
DRAM bank   = 0x0000000000000001
-> start    = 0x0000000080000000
-> size     = 0x0000000080000000
flashstart  = 0x0000000000000000
flashsize   = 0x0000000000000000
flashoffset = 0x0000000000000000
baudrate    = 115200 bps
relocaddr   = 0x00000000ff616000
reloc off   = 0x000000007ee16000
Build       = 64-bit
current eth = ethernet@8000000port@1
ethaddr     = 1c:63:49:1b:f9:cf
IP addr     = <NULL>
fdt_blob    = 0x00000000fd5e7820
new_fdt     = 0x00000000fd5e7820
fdt_size    = 0x000000000000f560
Video       = dss@30200000 inactive
multi_dtb_fit= 0x0000000000000000
lmb_dump_all:
 memory.cnt  = 0x1
 memory[0]      [0x80000000-0xffffffff], 0x80000000 bytes flags: 0
 reserved.cnt  = 0x4
 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]    [0xfc5e2000-0xffffffff], 0x03a1e000 bytes flags: 0
devicetree  = separate
arch_number = 0x0000000000000000
TLB addr    = 0x00000000ffff0000
irq_sp      = 0x00000000fd5e6ff0
sp start    = 0x00000000fd5e6ff0
Early malloc usage: 3c28 / 8000
=>

root@am62xx-evm:~# free -h
               total        used        free      shared  buff/cache   available
Mem:           1.9Gi       151Mi       1.7Gi       900Ki        99Mi       1.7Gi
Swap:             0B          0B          0B
root@am62xx-evm:~# 

 

谢谢!

Andrew

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

    Andrew、您好!

    我需要几天时间才能回复您。 如果我在一周结束前没有回复、请随意 ping 该主题。

    此致、

    Nick

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

    尊敬的 Nick:

    您有任何新信息吗?

    谢谢!

    Andrew

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

    Andrew、您好!

    我仍在与我们的硬件和软件团队(以及 Rich)讨论如何尝试理解更新的 DDR 驱动程序代码。 可能是另一个几天前,我有任何报告,但请保持我们诚实,并再次 ping 该线,如果我没有在下周的星期三回复.

    此致、

    Nick

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

    尊敬的 Nick:

    您有任何新信息吗?

    谢谢!

    Andrew

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

    Andrew、您好!

    很抱歉此处出现延迟、感谢您 ping 命令。 我没有收到来自软件团队的反馈、因为他们确认他们正在调查更新的代码。 我会在本周初尝试与他们聊天、然后回复您。

    此致、

    Nick

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

    Andrew、您好!

    该团队仍在讨论哪些修复方法是合适的、因此这不是一个经过测试的解决方案。 但是、我现在想向您提供信息、而不是让您再等一周。

    此问题可能是由以下原因引起的:
    https://git.ti.com/cgit/ti-u-boot/ti-u-boot/tree/drivers/ram/k3-ddrss/k3-ddrss.c?h=09.02.00.010#n786

    这个命令所在的位置

    writel((((ilog2(ddrss->ddr_ram_size) - 16) << 5) | 0xF),
                      ddrss->ddrss_ss_cfg + DDRSS_V2A_CTL_REG);

    由于 region_idx 参数为5位、因此应使用0x1F 进行"或"运算、而不是0xF。

    我能否让您尝试将0xF 更改为0x1F、重新编译 uboot、并查看您的完整4GB DDR 分配是否可用?

    此致、

    Nick

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

    Nick、  

    Andrew 尚未在自己的电路板上测试此更改。  

    他忙于执行其他任务、并询问此修复程序是否已合并到新版本的 SDK 10中?  

    BR、丰富  

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

    您好、Rich:

    谢谢您的 Ping。 开发人员说、AM62x 暂时看起来应该在 SDK 10.0上使用4GB DDR、因为我上面提到的代码不再适用于 AM62x:
    https://git.ti.com/cgit/ti-u-boot/ti-u-boot/tree/drivers/ram/k3-ddrss/k3-ddrss.c?h=10.00.08#n736

    但是、AM64x 客户将遇到与 SDK 9.2相同的行为。

    我在上面的响应中说"暂时"、因为我没有具有4GB DDR 的 EVM 可用于测试。

    此致、

    Nick