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.

[参考译文] PROCESSOR-SDK-AM335X:请求支持:AM335x 处理器 DDR 内存升级和配置

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1382656/processor-sdk-am335x-request-for-support-am335x-processor-ddr-memory-upgrade-and-configuration

器件型号:PROCESSOR-SDK-AM335X

工具与软件:

尊敬的 TI 支持部门:

我目前使用的是 SDK 版本02.00.02.11的 AM335x 处理器、正在寻找兼容的1GB DDR 存储器模块建议。

在测试过程中,我试图从4GB 升级到8GB 模块,但系统只能识别4GB。

目前、sdram_config已将设置为MT41J512M8H125_EMIF_SDCONF。 我想使用MT41J512M16H125_EMIF_SDCONF(16位)配置进行测试。

这是否受支持?

我在当前 SDK 中找不到此配置的相关信息。

请你在这方面提供协助。

谢谢你。

此致、

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

    我假设您是指8Gbit?  支持的最大密度为8Gb。

    要更改 DDR 配置、您必须使用此应用手册中所述的 EMIF 工具:   应用手册中提供了指向电子表格工具的 www.ti.com/.../sprack4链接

    正确配置后、U-Boot 将在架构文件中的运行时自动检测、验证和配置 DDR 的大小、请使用  get_ram_size()

    此致、

    James

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

    您好!

    您提到的链接(https://www.ti.com/lit/pdf/sprack4)是由 TI 和 ISSI 芯片制造商共同编写的应用手册。 我们使用您建议的8G 配置值进行了测试、但结果是相同的。

    在测试时、我确认当我在内核 dts 中将内存配置设置为1 GB 并使用常规 U-Boot (而不是 Falcon 引导)进行引导时、可以识别到1 GB 的内存。

    但是、Falcon 引导仍然无法识别它。

    让我总结一下我们迄今所做的工作。

    AM335x EMIF 工具配置详细信息

    我已经将以这种方式获得的 u-boot 设置应用于源代码。

    我通过对当前使用512MB 的变量应用1GB 设置值进行测试、以进行精确测试。

    请验证配置1GB 内存的上述设置没有问题。

    我还在 SRAM_INIT ()中将 CONFIG_DDR 中的 PPL 值从303更改为400

    我已使用 printf 从 config_DDR 函数确认进入 CONFIG_SDRAM 中。

    除了存储配置之外、CONFIG_SDRAM 函数似乎没有任何其他重要的功能。

    此外、我还应该在哪里寻找?

    我可以在源代码中的哪里找到 get_ram_size ()? 它不在 SDRAM_init 中

    请你在这方面提供协助。

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

    由于您可以让常规 u-boot 正常工作、因此我认为这不是 DDR 问题。  您好像拥有了正确的 DDR 配置。  对不起,我不知道什么是 falcon 启动,我必须把它传递给软件团队。

    此致、

    James

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

    https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1365351/processor-sdk-am335x-request-for-1gb-ddr-memory-recommendations-and-integration-instructions-for-am335x-sdk-02-00-02-11/5227495#5227495

    "用于 u-boot 2015.07的 SPL 中 DDR 配置的一些参考(SDK 02.00.02.11)。
    https://git.ti.com/cgit/ti-u-boot/ti-u-boot/tree/board/ti/am335x/board.c?h=v2015.07#n443
    https://git.ti.com/cgit/ti-u-boot/ti-u-boot/tree/arch/arm/cpu/armv7/am33xx/emif4.c?h=v2015.07#n99

    请注意、TI 对 SDK 2.x (发布于2015/2016年)的支持非常有限。"

    此致!
    -hong

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

    你好

    该回复是否由 TI (德州仪器(TI)软件支持?

    我是否应该等待其他回复?

    此致、

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

    是的、请注意、TI 对 SDK 2.x (发布于2015/2016年)的支持非常有限。
    您是否已引导至 u-boot 提示符?
    此致!
    -hong

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

    您好!

    我们是通过直接从 SPL 加载内核以提高引导速度的方式进行引导、而不是使用典型的 U-Boot 方法。

    然而、正如我之前提到的、

    在 dts 文件中配置并按如下所示引导后、1GB 将被识别。

    我有一个关于您在之前的回复中提到的 get_ram_size ()的问题

    ============================================================================================

    正确配置后、U-Boot 将在架构文件中的运行时使用 get_ram_size ()自动检测、验证和配置 DDR 的大小。

    ============================================================================================

    在我们所使用的 U-Boot 的 SPL 部分中, SDRAM_init ()函数中没有 get_ram_size ()函数

    如果我添加一个与 get_ram_size ()具有相同角色的函数,是否可以配置和使用1GB ?

    如果是、您能为 get_ram_size ()提供示例代码吗?

    我期待您的答复。

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

    在您使用的 Linux SDK 2.0.2.11 (u-boot 2015.x)上。
    - get_ram_size ()
    https://git.ti.com/cgit/ti-u-boot/ti-u-boot/tree/common/memsize.c?h=v2015.07#n27
    - get_ram_size ()在 dram_init ()中调用,在 u-boot 中调用  
    https://git.ti.com/cgit/ti-u-boot/ti-u-boot/tree/arch/arm/cpu/armv7/am33xx/emif4.c?h=v2015.07#n29
    https://git.ti.com/cgit/ti-u-boot/ti-u-boot/tree/common/board_f.c?h=v2015.07#n848
    此致!
    -hong

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

    我使用您提供的链接中的功能对其进行了测试、但结果是相同的。

    我曾尝试在进入 SPL 前进行设置、也尝试了 void s_init (void)中的值、但结果是相同的。

    由于通过调试消息检查存储器大小、

    即使在 Uboot 中、也能很好地识别1024M 字节(1Gbyte)。

    它以相同的方式运行,直到它使用 Falcon DTB 从常规 DTB 跳到内核。

    这是引导内核后的消息。

    比较内核引导消息

    在节点0上总页数:131072 (512M)
    在节点0上总页数:262144 (1G)

    PID 哈希表条目:2048 (512M)
    PID 哈希表条目:4096 (1G)

    条目高速缓存哈希表条目:65536 (512M)
    条目高速缓存哈希表条目:131072 (1G)

    内存:486256K/524288K 可用(5687K 内核代码、226K rwdata、1772K rodata、240K init、185K BSS、 13456K 保留、24576K CMA 保留、0K HIGHMEM)

    内存:1005620K/1048576K 可用(5687K 内核代码、226K rwdata、1772K rodata、240K init、185K BSS、 18380K 保留、24576K CMA 保留、245760K HIGHMEM)


    所有这些数据都有两倍的差异。 它设置在哪里?

    我们使用的 falcon dtb 文件创建如下:

    ============================================================

    U-Boot# n 并读取0x82000000 Nandr.kernel;

    u-Boot# n 并读取0x88000000 NAND.u-boot-spl-OS;

    U-Boot# run nandargs;

    U-Boot# spl export FDT 0x82000000 - 0x88000000

    ##从旧映像引导内核在82000000 ...

      图像名称:  Linux-4.1.18

      创建时间:     2016年10月12日  7:18:22 UTC

      图像类型:  ARM Linux 内核图像(未压缩)

      数据大小:   2915392字节= 2.8MiB

      载入地址:82000000

      入口点: 82000000

      正在验证校验和...确定

    ###平展设备树在88000000时出现斑点

      使用0x88000000的 FDT blob 进行引导

      正在加载内核映像...确定

      保留 FDT 存储器区域:Addr=8ffe3000 size=a000

      正在将设备树加载到8fff3000、结束8fffffff...确定

    不支持子命令

    不支持子命令

      保留 FDT 存储器区域:Addr=8ffe3000 size=a000

      正在将设备树加载到8ffd3000、结束8ffe2fff...确定

    参数映像现在位于 RAM 中:0x8ffd3000

    u-Boot# nand erase.part NNAND。u-boot-spl-os;

    u-Boot# n 并写入0x8ffe3000 NAND.u-boot-spl-OS 0x20000

    U-Boot# MMC 重新扫描

    u-Boot# n 并读取0x82000000 Nandr.u-boot-spl-os;

    NAND 读取:器件0偏移0x20000、大小0x20000

    131072字节读取:确定

    U-Boot# fatwrite MMC 0 0x82000000 AM335x-EVM-FALCON.DTB 0x20000

    写入 AM335x-EVM-FALCON.dtb

    写入了131072字节

    U-Boot# ls MMC 0  

       76492  MLO

     13369344  sg-df.ubi.

               found.000/

     62783488  SG-FS.ubi.

      432968  u-boot.img

     2915216  uimage

               !!sqbd/

      131072 AM335x-EVM-FALCON.DTB

    6个文件、2个目录

    ============================================================

    为什么 falcon.dtb 与常规 dtb 文件不同?

    如果您有任何其他想法、请将其传递给我们。

     

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

    这是早期的 e2e DDR 大小配置和使用 TI AM335x EVM 上的 SDK 6.3调整大小、供您参考
    https://e2e.ti.com/support/processors-group/processors/f/processors-forum/984366/am3356-memory-change/3647854#3647854
    此致!
    -hong

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

    您好!

    我在您提供的参考文章中找到了解决方案。 谢谢你。 解决方案是将"mem=1024M"添加到 kernel 命令中、从而解决了问题。 再次感谢。

    我又收到一个问题。 目前、在 Uboot 设置和内核命令设置为"mem=1024M"时、对于1024MB 内存配置、

    是否可以使用512MB 内存?

    内核命令行:console=ttyS0115200n8 vT.global_cursor_default=0 root=ubi0:rootfs rw ubi.mtd=nand.file-system、2048 rootfsttype=ubifs rootwait=1 quiet mem=1024M

    我确认主板在应用512MB 内存时识别为1024MB。

    我很感谢您的答复。

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

    您将能够在 u-boot 中配置 DDR 大小、或者通过引导参数"mem=DDR_size"重新配置其内核大小、如参考的 e2e 中所述。
    此致!
    -hong

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

    我知道内存设置是在 U-Boot 和内核配置中配置的。

    我想知道的是、如果我们对1024MB 和512MB 内存配置使用相同的设置、是否存在稳定性问题。

    理想情况下、每个内存都应根据自己的设置进行配置、但我想知道是否可以对两种内存大小使用一种配置、同时保持向后兼容性。

    总结:

    如果我将 PLL 从303更改为400、并将 tRFC 时序从230ns 更改为350ns、如果我也直接在512MB 配置中使用1024MB 设置、是否还会存在任何兼容性问题?

    具体而言:

    • MT41K256M16HA125E_EMIF_READ_LATENCY:读取延迟设置。
    • MT41K256M16HA125E_EMIF_TIM1:定时设置1。
    • MT41K256M16HA125E_EMIF_TIM2:时序设置2。
    • MT41K256M16HA125E_EMIF_TIM3:定时设置3。
    • MT41K256M16HA125E_EMIF_SDCFG:内存配置设置。
    • MT41K256M16HA125E_EMIF_SDREF:刷新设置。
    • MT41K256M16HA125E_ZQ_CFG:zq 校准设置。
    • MT41K256M16HA125E_RATIO:比率设置。
    • MT41K256M16HA125E_INVERT_CLKOUT:时钟输出反相设置。
    • MT41K256M16HA125E_IOCTRL_VALUE:I/O 控制值设置。

    或者它可能会起作用,但可能会有一些小问题,因为差异,我们应该对它进行彻底的测试,以作出决定?

    感谢您的答复。

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

    如 APN 中所述、DDR 参数需要根据 DDR 器件规格使用 EMIF 工具进行配置。
    一般而言、我认为一种 DDR 参数配置不适用于具有不同 DDR 规格的两个 DDR 器件。
    此致!
    -hong

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

    非常感谢您的帮助。