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:访问4G RAM

Guru**** 1805680 points
Other Parts Discussed in Thread: SK-AM62B
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1424047/am620-q1-accessing-4g-of-ram

器件型号:AM620-Q1
主题中讨论的其他器件:SK-AM62B

工具与软件:

我们的定制电路板设计使用2 (MT40A2G8AG-062E AUT:F)来获得4GB SDRAM。  我可以使用 u-boot 实用程序(MM 和 MD)访问完整地址范围吗?  如果是、您能否为每个2GB 芯片提供示例?  

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

    我认为在 U-Boot 中、地址空间限制为前4GB (32位)、这意味着2GB 的 DDR (因为 DDR 始于0x8000_0000)。 但让我仔细检查一下、我们这里有一些4GB 板。

    此致、Andreas

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

    安德烈亚斯

    好!  谢谢!   

    现在、当我使用0x880000000或0x80000000作为 MD 的地址时、看起来是同一存储器位置。

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

    我简单地介绍一下、64位内存命令支持应该是自动的。

    README-Configuration Settings:
    README------------------------
    README-
    README:- MEM_SUPPORT_64BIT_DATA: Defined automatically if compiled as 64-bit.
    README-         Optionally it can be defined to support 64-bit memory commands.

    ...一些相关的代码片段这里...

    include/compiler.h-#ifdef __LP64__
    include/compiler.h:#define MEM_SUPPORT_64BIT_DATA       1
    include/compiler.h-#else
    include/compiler.h:#define MEM_SUPPORT_64BIT_DATA       0
    include/compiler.h-#endif

    我还没有机会尝试一下。

    此致、Andreas

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

    安德烈亚斯

    让我知道你发现了什么!

    我将使用其中一个预先构建的图像。  我会寻找这个定义!

      

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

    Jim、

    我刚刚使用去年的 SDK v9.x U-Boot 映像在具有4GB DDR 的 SK-AM62A 上进行了此尝试。 访问前2GB 以上的内存时没有问题。

    首先、您可以使用 U-Boots `bdinfo`命令确认存储器映射。 您可以看到、所有 AM6x 器件的前2GB 映射到地址0x8000_0000、后2GB 映射到地址0x8_8000_0000 (请参阅 TRM)。

    => 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   = 0x00000000ffedd000
    reloc off   = 0x000000007f6dd000
    Build       = 64-bit
    current eth = ethernet@8000000port@1
    ethaddr     = 1c:63:49:17:21:cc
    IP addr     = <NULL>
    fdt_blob    = 0x00000000fde90dd0
    new_fdt     = 0x00000000fde90dd0
    fdt_size    = 0x000000000000bfe0
    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]    [0x99800000-0x9b7ffffe], 0x01ffffff bytes flags: 4
     reserved[1]    [0x9b800000-0x9e6fffff], 0x02f00000 bytes flags: 4
     reserved[2]    [0x9e780000-0xa2ffffff], 0x04880000 bytes flags: 4
     reserved[3]    [0xae000000-0xbfffffff], 0x12000000 bytes flags: 4
     reserved[4]    [0xfce8c000-0xffffffff], 0x03174000 bytes flags: 0
     reserved[5]    [0x880000000-0x8ffffffff], 0x80000000 bytes flags: 0
    devicetree  = separate
    arch_number = 0x0000000000000000
    TLB addr    = 0x00000000ffff0000
    irq_sp      = 0x00000000fde90dc0
    sp start    = 0x00000000fde90dc0
    Early malloc usage: 2dc8 / 8000

    现在、让我们将一个字序列(1、2、3、4)写入地址0x8000_0000、并将第二个字序列(5、6、7、8)写入地址 0x8_8000_0000 (在两个存储器区域之间)、从而确保一个不会影响另一个区域并且它们真的是独立的。

    => md 0x80000000 10
    80000000: 01000000 02000000 40000000 00000100  ...........@....
    80000010: 80000400 20000000 00000200 00000000  ....... ........
    80000020: 00000000 40002000 00008100 a0000000  ..... .@........
    80000030: 00008000 00000400 02000000 00000000  ................
    => md 0x880000000 10
    880000000: 42400000 10100000 00000200 00000200  ..@B............
    880000010: 08000000 01000000 00000000 0a000000  ................
    880000020: 00080200 00020200 01000000 22000000  ..............."
    880000030: 00000001 10000000 06000000 02000010  ................
    => mm 0x80000000
    80000000: 01000000 ? 1
    80000004: 02000000 ? 2
    80000008: 40000000 ? 3
    8000000c: 00000100 ? 4
    80000010: 80000400 ? q
    => md 0x80000000 10
    80000000: 00000001 00000002 00000003 00000004  ................
    80000010: 80000400 20000000 00000200 00000000  ....... ........
    80000020: 00000000 40002000 00008100 a0000000  ..... .@........
    80000030: 00008000 00000400 02000000 00000000  ................
    => md 0x880000000 10
    880000000: 42400000 10100000 00000200 00000200  ..@B............
    880000010: 08000000 01000000 00000000 0a000000  ................
    880000020: 00080200 00020200 01000000 22000000  ..............."
    880000030: 00000001 10000000 06000000 02000010  ................
    => mm 0x880000000
    880000000: 42400000 ? 5
    880000004: 10100000 ? 6
    880000008: 00000200 ? 7
    88000000c: 00000200 ? 8
    880000010: 08000000 ? q
    => md 0x80000000 10
    80000000: 00000001 00000002 00000003 00000004  ................
    80000010: 80000400 20000000 00000200 00000000  ....... ........
    80000020: 00000000 40002000 00008100 a0000000  ..... .@........
    80000030: 00008000 00000400 02000000 00000000  ................
    => md 0x880000000 10
    880000000: 00000005 00000006 00000007 00000008  ................
    880000010: 08000000 01000000 00000000 0a000000  ................
    880000020: 00080200 00020200 01000000 22000000  ..............."
    880000030: 00000001 10000000 06000000 02000010  ................

    一切都按预期运行。

    这不仅适用于 MEMORY 命令、还适用于其他命令。 我过去已成功通过 TFTP 将一个大映像传输到地址0x8_8000_0000、而没有遇到任何问题。

    此致、Andreas

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

    安德烈亚斯

    我没有看到第二个2GB 的 DDR ...

    是否缺少配置设置?

    下面是我在 k3-am625-sk.dts 中的内容-

    我发现另一个主题包含一些相关信息、但似乎不是解决方案-

    AM625:如何在 SDK 9.2上设置 AM625 4GB RAM? -处理器论坛-处理器- TI E2E 支持论坛

    我使用的是09.02.01.10。

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

    SK-AM62B (上面有 AM62x 器件)、这是使用 您查看的 k3-am625-sk.dts 文件、但仅提供2GB DDR、因此这是预期结果、

    我测试的是一个 SK-AM62A (上面有 AM62Ax 器件)、它具有4GB 的 DDR。 不同的器件树文件、请见。。

    $ git grep -A 5 'memory@8' arch/arm/dts/k3-am62a7-sk.dts
    arch/arm/dts/k3-am62a7-sk.dts:  memory@80000000 {
    arch/arm/dts/k3-am62a7-sk.dts-          device_type = "memory";
    arch/arm/dts/k3-am62a7-sk.dts-          /* 4G RAM */
    arch/arm/dts/k3-am62a7-sk.dts-          reg = <0x00000000 0x80000000 0x00000000 0x80000000>,
    arch/arm/dts/k3-am62a7-sk.dts-                <0x00000008 0x80000000 0x00000000 0x80000000>;
    arch/arm/dts/k3-am62a7-sk.dts-  };

    此致、 Andreas

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

    安德烈亚斯

    好!  我曾尝试遵循上述主题、但 Am62x 驱动程序似乎存在问题。  在不更新至新版本的情况下、我们如何才能继续。  似乎有必要在代码中添加补丁。 (k3-ddrss.c 等)

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    在不更新至更新版本的情况下、我们该如何继续。  似乎有必要在代码中添加补丁。 (k3-ddrss.c 等)[/QUOT]

    您应该尝试改用最新的 U-Boot、至少是为了进行测试。 这不应该是那么困难。 如果您有任何具体问题、请告知我们。

    此致、Andreas

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

    安德烈亚斯

    好!  他们会在一周结束时让我离开这个项目  我将看到我所能达到的程度!  在大多数情况下、我的投入是为了让 USB、SPI、EMMC 和以太网进入其中一个 TI Linux 环境。  这已经取得了成功。  我让他们了解上2 GB 内存问题。
    感谢您的帮助!  我会看我是否可以在我离开的时间内解决最后一个问题!  我会在接下来的几天内跟进。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    在大多数情况下、我接到这篇文章是为了让 USB、SPI、EMMC 和以太网在其中一个 TI Linux 环境中运行。  这已经取得了成功。  [报价]

    很高兴听到!

    我告诉他们有关前2 GB 内存问题的信息。

    是的、尝试使用 SDK v10.0应该是起点;同时也应该用于进一步开发(而不是 SDK v9.x)。 如果必须使用 v9.x、您可以始终尝试识别和反向特定的修复程序、以使 DDR 在 AM62x 上使用4GB。 但您仍然需要了解 SDK v10.0与 SDK v9.x 中 U-Boot 的其他修复/改进措施

    此致、Andreas

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

    安德烈亚斯

    我更新到了 SDK 的版本10、以便尝试可修改并显示内存的 u-boot 工具。  完成上述配置更改后、我仍然只能访问0x80000000 - 0x100000000、

    日志如下:

    e2e.ti.com/.../6523.U_2D00_Boot-SPL-2024.04_2D00_dirty-_2800_Oct-25-20.txt

    我还没有完成 V10的配置(以太网不工作)。  但大多数其他的一切似乎都在工作。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我更新至 SDK 版本10、尝试使用可修改并显示内存的 u-boot 工具。  对于您在上面提到的配置更改、我仍然只能访问0x80000000 - 0x100000000、

    感谢您的试用。 我正在与团队核实这里可能会出现什么问题。 AFAIK 支持>2GG 应适用于 SDK v10.x+。

    此致、Andreas

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

    安德烈亚斯

    我清理了 DT 更改、现在可以使用:

    谢谢!

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

    Jim、您好!

    刚刚提到您的一位同事也在单独的主题(https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1430847/am620-q1-4gb-ddr---unable-to-access-upper-2gb)上讨论过这个问题、并且问题已经解决。

    解决方案似乎是使用我先前在该线程中指出的全部 DTS 配置。 不知道为什么混淆/断开是 这没有在 SDK v10的上下文中尝试过、但我很高兴它现在已确认可以正常工作。

    此致、Andreas

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

    安德烈亚斯

    谢谢!