主题: SysConfig 中讨论的其他器件
工具/软件:
我使用 am6252制作了一个定制电路板。
现有电路板使用相同的2GB DDR4 RAM、我想将其更改为512MB。
数据速率相同、为3200、如果在更改时需要更改任何内容、请回复。
谢谢你。
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.
工具/软件:
我使用 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
您的评论基于 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
下面是您提到的测试结果。
我显然修改了 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 |更小
存储器节点的两个 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; }; ....
现在是2025、显然您没有使用刚刚编译的 U-Boot 二进制文件?
我正在通过在构建后仅替换 u-boot.img 文件来进行测试。
您需要从 U-Boot 构建中更新所有3个二进制文件。