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.

[参考译文] AM5728:配置4GB DDR3L

Guru**** 2589300 points


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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/586776/am5728-configuring-4gb-ddr3l

器件型号:AM5728

我们刚刚收到了定制板、我们有4GB 的 DDR3L、器件型号为 MT41K512M16HA、因此总共有4个 IC。 我们的问题是 Uboot/Linux 仅显示我们有2 GB 的 RAM。

uBoot 工作正常、引导至 Linux 工作正常、显示、以太网等工作正常、但我们的内存访问限制为2 GB。

我们感兴趣的是让 Q2通过其1 GB 窗口访问2 GB 内存、并通过其1 GB 窗口访问 Q3 2 GB 内存。 我们希望 EMIF 1和2在 Q2和 Q3上交错。 我们是否需要设置所有4个 Lisa 寄存器、还是仅设置2个 Lisa 寄存器、如大多数示例中所示? 我们使用哪种寄存器是否重要? 这是否是考虑这一点的正确方法?

是否有一个交错 EMIF 1和2以实现对4GB RAM 的访问的有效示例?

我们已经了解了 DRA74x EVM uboot 设置、但寄存器设置没有太大意义、并且这些设置对我们无效。 我们可以在这方面使用一些支持。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    软件团队已收到通知。 他们将在这里作出回应。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好!

    对延迟答复表示歉意。
    请参阅以下主题:
    e2e.ti.com/.../552861

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

    Yordan、您好!


    我们已经尝试了该主题和其他主题中建议的所有内容。 我们检查了内核是否启用了 LPAE、验证了 MA_PRIORITY 中是否启用了较高的内存交错、并将 Lisa 映射设置为在较低的2 GB 上启用交错。 我还使用了 devmem2来读取 MA_PRIORITY 寄存器、并使用 Lisa 映射寄存器来验证是否已设置。 Lisa 映射寄存器设置为:

       .dm_lisa_map_0 = 0x0、
       .dm_lisa_map_1 = 0x0、
       .dm_lisa_map_2 = 0x80740300、
       .dm_lisa_map_3 = 0xFF020100、
       .in_ma_present = 0x1

    我们是否需要在 MMU 中执行一些操作来告知它可以访问更大的存储器空间? 或者我们可能遗漏的其他任何东西吗?

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

    好的、您能否下载支持 www.ti.com/.../j6evm5777的最新汽车处理器 SDK。 DRA75x EVM 在每个 EMIF 上使用4GB RAM、2GB。 汽车 DRA75x 和 AM57x 的架构完全相同、因此请查看其中的 Lisa 地图配置。 SDK 位于以下位置:
    processors.wiki.ti.com/.../Category:Processor_SDK_Linux_Automotive

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

    我们已经了解了该 SDK、并验证了我们的 Lisa 地图是相同的。 Lisa 映射仅适用于低2 GB 内存、对吧? 因此、这仍然不能帮助我们启用高2 GB。 或者、可能启用了高2 GB、但 U-Boot 和 Linux 不知道这一点、因为只有 MPU 可以访问它? 是否有任何方法可以确定 MPU 是否能够使用 RAM 的高2 GB?

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

    我们发现了我们缺少的东西! 我们返回并查看了 DRA75x EVM 的板级配置文件、我们注意到它具有不同的 DRAM_init_banksize 函数、该函数告诉 uboot 从0x200000000开始的第二个存储器区域。如果其他人看到该函数、请参阅以下函数:

    void DRAM_init_banksize (void)

       u64 ram_size;

       RAM_SIZE = board_ti_get_EMIF_size ();

       gD->bD->bi_dram[0].start = CONFIG_SYS_SDRAM_base;
       gD->bD->bi_dram[0].size = get_effective memsize();
       if (ram_size > CONFIG_MAX_MEM_MAPPED){
           gD->bD->bi_dram[1].start = 0x200000000;
           gd->bd->bi_dram[1].size = ram_size - CONFIG_MAX_MEM_MAPPED;
       }

    我们已刻意修改并将 ram_size 设置为等于0x100000000、并将 bi_dram.start/stop 的类型更改为 u64、但更正确的方法可能是将系统配置为64位系统?

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

      成功配置4GB DDR3的另一个因素 是 不在   u-boot 中启用 CONFIG_ARMV7_LPAE。  使用 上述 DRAM_INIT_Banksize 更新在 u-boot 中启用 CONFIG_ARMV7_LPAE 会导致系统"挂起"。  在本例中、DRAM_init_banksize 执行以下操作:

               gD->bD->bi_dram[0].start = CONFIG_SYS_SDRAM_base;
               gD->bD->bi_dram[0].size = get_effective memsize();
               gD->bD->bi_dram[1].start = 0x200000000;
               gD->bD->bi_dram[1].size = CONFIG_MAX_MEM_MAPPED;  //我们将 CONFIG_MAX_MEM_MAPPED 定义 为0x8000000 */

    另请记住更新 include\ASM-generic\u-boot.h 以将起始类型和大小更改为 u64:

    struct{   /* RAM configuration */
      U64启动;
      u64大小;
     }bi_dram[CONFIG_NR_DRAM_Banks];  //我们将 CONFIG_NR_DRAM_Banks 定义 为2 */


    内核确实需要 CONFIG_ARM_LPAL=y 才能识别4GB。

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

    我们在 u-boot 中启用了 LPAE、但它没有导致我们出现问题。 我们还更改了 bi-DRAM 结构中的起始类型和大小、因此、这样做可能会消除启用 LPAE 导致的问题?