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.

[参考译文] AM620-Q1:4GB DDR 无法在 u-boot 中设置上部2GB 以更正地址

Guru**** 2390755 points


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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1500118/am620-q1-4gb-ddr-unable-to-set-upper-2gb-to-correct-address-in-u-boot

器件型号:AM620-Q1

工具/软件:

我尝试在 AM62x u-boot 代码上启用4GB 的 RAM、并且已经执行了 DDR 的所有步骤、并且器件树会发生更改:

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

当 I load u-boot 时、它确实会注意到额外的2GB RAM:
DRAM:2 GiB (有效4 GiB)

但是、当我查看"bdinfo"时、两个 DRAM 组的起始地址都匹配:0x00000000 8. 0000000

我相信第二个银行应该注明起始地址:0x0000000 88 器件树中指定的0000000。

似乎忽略了器件树设置的高32位、这导致它映射到与 DRAM 组0相同的位置。

=> bdinfo
boot_params = 0x0000000000000000
DRAM bank   = 0x0000000000000000
-> start    = 0x0000000080000000
-> size     = 0x0000000080000000
DRAM bank   = 0x0000000000000001
-> start    = 0x0000000080000000
-> size     = 0x0000000080000000

当我启动到内核时(适当的设备树也在更改、并引用第二个2GB 以从0x0000000开始 88 0000000、它只报告总共2GB 的 RAM。  我相信由于 u-boot 没有将第二个存储体映射到正确的地址、它只会将2GB 配置传递给内核。

有人能帮我理解为什么第二家银行没有申请正确的起始地址吗?  或者这是正确的,我在其他地方有一个问题得到的全部4GB 显示在内核中?

我正在使用 TI SDK v9.2

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

    我找到了这个论坛: https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1387864/am625-how-to-set-up-am625-4gb-ram-on-sdk-9-2 似乎正是我正在运行的。

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

    不断变化  

    writel (((((ilog2 (ddrss->DDR_ram_size)-16)<< 5)| 0xf )、
    ddrss->ddrss_ss_cfg + DDRSS_V2A_CTL_REG);

    最终目的

    writel (((((ilog2 (ddrss->DDR_ram_size)-16)<< 5)|  0x1F )、
    ddrss->ddrss_ss_cfg + DDRSS_V2A_CTL_REG);

    没有解决我的问题、我要尝试使用 SDK 的版本9、而不是9.2、因为有人建议也不存在此问题。  我目前不能选择版本10、因为我们仅限于与 kirkstone Yocto 兼容。

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

    嗨、Heather、

    将以下行添加到 MEMORY@80000000节点时、您将其添加到哪个器件树文件中?

             <0x00000008 0x80000000 0x00000000 0x80000000>;

    当 bdinfo 命令显示错误的第二组信息时、请运行以下 U-Boot 命令并共享输出。

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

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

    我向 k3-am625-sk.dts 和 k3-am62x-sk-common.dtsi 添加了额外的存储器行

    以下是这些命令的输出:

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

    更新:我尝试使用版本9.0、它在 bdinfo 中显示了正确的信息、以及引导的内核。  对于 AM62x 板、此问题似乎特定于9.2。  如果我可以让它与 v9.2一起工作,那就更好了!

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我向 k3-am625-sk.dts 和 k3-am62x-sk-common.dtsi
    添加了额外的存储器行

    请在 k3-am625-中修改此存储器大小 R5 而是-sk.dts。