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.

[参考译文] AM2431:DDR 中的 ECC 区域在哪里

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1645349/am2431-where-is-the-ecc-area-in-ddr

器件型号: AM2431

您好支持团队:
我们当前使用的 是 64MB DDR 存储器、并已启用 DDR 内联 ECC 功能。

在 DDR 地址空间内、会配置 ECC‑校验的区域和非‑ECC‑校验的区域。
ECC 校验范围设置如下:

  • StartAddress: 0x80000000
  • 结束地址: 0x83700000
根据技术参考手册 (TRM)、以下说明适用于内联 ECC:
对于每个 512‑字节数据块、64 字节的 ECC 以内联方式存储。 因此、总 SDRAM 空间的 1/9 用于 ECC 存储、剩余的 8/9 用于系统。 从系统的角度来看、这 8/9 SDRAM 数据空间被视为连续字节地址。 即使没有‑ECC‑受保护区域、前面描述的 1/9–8/9 规则仍然适用、并且从系统的角度可以看到连续的字节地址。 请注意、无论 ECC 区域的大小如何、总 SDRAM 空间的 8/9 可供系统使用。 换句话说、当启用 ECC 时、即使在非‑ECC 区域中、只有 8/9 的存储器可用。

根据这一描述、我们想确认以下几点:

从用户的角度来看、ECC 管理(ECC 存储)区域  是否应按下图所示进行组织?
如果需要访问非‑ECC 区域、有效起始地址是否应该为 0x83700000?
image.png

感谢您的支持。

此致、

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

    否、ECC 数据与数据混合、如下所示

    根据您的定义、非 ECC 区域将从 0x83700000 开始。

    此致、

    James

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

    Q1: 我想进一步澄清我对非‑ECC 区域的物理地址布局的理解。
    我的理解是、‑DDR ECC 后、物理地址布局就遵循下图所示的相同数据‑和 ‑ECC 交错方案、即使对于 系统地址空间中配置为非 ECC 的区域也是如此。
    这是正确的吗?
    例如、非‑ECC 区域从系统地址 0x03700000 开始

    Q2: 此外、由于启用了 ECC、因此只有 8/9 的 DDR 容量可用作系统地址空间。
    对于 64MB DDR、根据此规则、最后可访问的系统地址应为 0x038E37FF。

    基于这种理解、我期望不允许读取或写入超出该地址的访问。
    但在实践中、超出该地址的读写操作似乎仍然可以正常工作。

    您能解释一下为什么仍然可以访问 0x038E37FF 以外的寄存器吗?

    谢谢你。
    此致、

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

    Q1 是的、正确。  非 ECC 区域将被划分为相同的分区、只是在访问时忽略 ECC 数据。

    Q2 您可能会遇到存储器别名使用、其中存储器看起来可以在高位地址访问、但实际上是查看低位地址。  运行将相同值写入整个存储器的测试、然后写入高于 0x038E37FF 的不同模式、查看是否有较低的地址也显示不同的模式。

    此致、

    James