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.

[参考译文] Linux/AM4376:DDR3访问问题

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/668292/linux-am4376-ddr3-access-issue

器件型号:AM4376

工具/软件:Linux

大家好、社区

我们无法在定制板中使用完整的32位 DDR3 RAM。 该原理图基于 AM437x 工业开发套件(IDK)的原理图。 我们使用两个 AS4C64M16D3A-12BIN DDR3 RAM 组和一个25MHz 振荡器、而不是两个 MT41K256M16HA。

为了启动 Linux 内核、我们使用 TI U-Boot (分支 ti-u-boot-2017.01)并在其中添加了一个定制板来执行 PLL 和 DDR 设置。 U-Boot 板是 am43xx 板的自适应版本。 使用 AM43xx DDR 计算工具(.zip) 、我获得了以下寄存器值:

静态常量结构 EMIF_regs DDR3_leu150_EMIF_regs_400MHz ={
SDRAM_CONFIG             = 0x61A11A32、
SDRAM_CONFIG2           = 0x00000000、
.ref_ctrl                        = 0x00000c30、
SDRAM_TIM1                = 0xEAAD4D3、
SDRAM_TIT2                = 0x282F7FD2、
SDRAM_TIM3                = 0x507F82B8、
READ_IDLE_Ctrl             = 0x00050000、
.zq_config                   = 0x50074be4、
temp_alert_config       = 0x00000000、
.EMIF_DDR_phy_ctlr_1  = 0x00008009、
(笑声)
};

使用此设置、U-Boot SPL 不会从 SD 卡启动、并且串行控制台上没有输出。 如果我切换到16位模式(.SDRAM_CONFIG = 0x61A15A32)、U-Boot SPL 将启动、甚至 U-Boot 也将启动。 但只能访问一半的 DDR3 RAM (128MB)。 因此、我认为计算出的 DDR 时序是正确的。 布局看起来不错、符合指导原则。 所以我不知道会出现什么问题。

感谢您的提示、非常感谢。

谢谢
Thomas

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    已通知解除武装、复员和重返社会专家。 他们将在这里作出回应。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    谢谢!

    我还添加了 U-Boot 代码和 DDR 时序计算表。
    e2e.ti.com/.../0804.board.c
    e2e.ti.com/.../5684.board.h
    e2e.ti.com/.../3036.mux.c

    e2e.ti.com/.../AM43xx_5F00_DDR_5F00_register_5F00_AS4C64M16D3A_2D00_12BIN.xls

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    请使用此 EMIF 工具、而不是您在此处附加的电子表格。

    www.ti.com/lit/an/sprac70/sprac70.pdf

    如果您发现此问题相同、请告知我们。

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

    你好、Siva

    感谢您的回答。 同时、我也使用了此工作表、但没有效果。

    您会发现工作表作为附件。

    此致、Thomas

    e2e.ti.com/.../6281.SPRAC70_5F00_AM437x_5F00_EMIF_5F00_Configuration_5F00_Tool_5F00_V20.xlsx

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

    您能否共享原理图?

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

    Thomas、

    一个问题是电子表格指定使用 INVER_CLOCK = 1、这会影响 EXT_PHY_CTRL1和 EXT_PHY_CTRL1_SHADOW 的编程。

    查看 u-boot 中的文件 arch/arm/mach-OMAP2/am33xx/DDR.c  请特别查看 ext_phy_settings_hwlvl()函数。  您将注意到、这里的值与"寄存器"表中的值不匹配。  我建议按如下方式进行修复:

    diff --git a/arch/arm/mach-omap2/am33xx/dr.c b/arch/arm/mach-omap2/am33xx/dr.c
    索引690487e.12c10b4 100644
    -- a/arch/arm/mach-OMAP2/am33xx/DDR.c
    ++ b/arch/arm/mach-omap2/am33xx/dr.c
    @@-248、8 +248、15 @@静态空 ext_phy_settings_hwlvl (const struct EMIF_regs * regs、int nr)
    *启用 EMIF 上的硬件调平。 以了解有关这些功能的详细信息
    *魔法值请参阅 TRM 的 EMIF 寄存器部分。
    *
    - writel (0x08020080、&EMIF_REG[nr]->EMIF_DDR_ext_phy_Ctrl_1);
    - writel (0x08020080、&EMIF_REG[nr]->EMIF_DDR_ext_phy_Ctrl_1_Shdw);
    + if (regs->EMIF_DDR_phy_ctlr_1 & 0x00040000){
    +/* PHY_INOP_CLKOUT = 1 */
    + writel (0x00040100、&EMIF_REG[nr]->EMIF_DDR_ext_phy_Ctrl_1);
    + writel (0x00040100、&EMIF_REG[nr]->EMIF_DDR_ext_phy_Ctrl_1_Shdw);
    +}否则{
    +/* PHY_INOP_CLKOUT = 0 */
    + writel (0x08020080、&EMIF_REG[nr]->EMIF_DDR_ext_phy_Ctrl_1);
    + writel (0x08020080、&EMIF_REG[nr]->EMIF_DDR_ext_phy_Ctrl_1_Shdw);
    +}
    writel (0x00000000、&EMIF_REG[nr]->EMIF_DDR_ext_phy_Ctrl_22);
    writel (0x00000000、&EMIF_REG[nr]->EMIF_DDR_ext_phy_Ctrl_22_Shdw);
    writel (0x00600020、&EMIF_REG[nr]->EMIF_DDR_ext_phy_Ctrl_23);

    请告诉我们、这是否能为您提供帮助。

    此致、
    Brad

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

    这解决了我的问题、非常感谢! 是否需要将此修补程序提供给 U-boot 存储库?

    @Siva DDR3原理图部分与 IDK 部分相同。

    感谢您的支持!

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

    尊敬的 Thomas:

    我现已将此问题提交为 LCPD-12244。  我们的 Linux/u-boot 团队将实现集成。  我很高兴听到有人在工作!

    此致、
    Brad