ZHDA271 August   2026 AM620-Q1 , AM623 , AM625-Q1 , AM62A1-Q1 , AM62A3-Q1 , AM62A7-Q1 , AM62D-Q1 , AM62L , AM62P-Q1 , DRA821U-Q1 , DRA829V-Q1 , TDA4AEN-Q1 , TDA4AH-Q1 , TDA4AL-Q1 , TDA4AP-Q1 , TDA4APE-Q1 , TDA4VE-Q1 , TDA4VEN-Q1 , TDA4VH-Q1 , TDA4VL-Q1 , TDA4VP-Q1 , TDA4VPE-Q1

 

  1.   1
  2.   摘要
  3.   商标
  4. 1简介
  5. 2详细说明
    1. 2.1 ECC 错误日志记录概述
      1. 2.1.1 了解 ERR_ADR 和 ERR_MSK
    2. 2.2 为什么需要地址解码
    3. 2.3 DDR 内联 ECC 存储器布局
      1. 2.3.1 TDA4VM/TDA4VE/TDA4VH
      2. 2.3.2 DRA821/DRA829/TDA4VEN/AM62A/AM62P
      3. 2.3.3 AM62/AM62L/AM64
    4. 2.4 地址解码方法
    5. 2.5 AM62A 解码示例
    6. 2.6 TDA4VE 双 DDR 交错示例
    7. 2.7 解码工具使用
  6. 3总结
  7. 4参考资料

TDA4VE 双 DDR 交错示例

TDA4VE 配置:

TDA4VE 采用两个在交错模式下运行的 DDR 控制器。每个 DDR 控制器都维护一组独立的 ECC 错误日志寄存器。因此,报告 ECC 事件的 DDR 控制器确定哪个通道包含故障位置。

  • 双 DDR 控制器
  • 32 位 DDR 接口宽度
  • 512 位 VBUSM 宽度
  • ERR_ADR 粒度= 64 字节
  • ERR_MSK 宽度 = 16 位
  • 默认 DDR 交错粒度 = 128 字节

在双 DDR 交错模式下,连续的 128 字节存储器区域会交替映射到 DDR0 和 DDR1。对于 TDA4VE 双 DDR 交错模式,每 16 个 ERR_ADR 条目构成一个重复地址模式。表 2-4 显示与 ERR_ADR mod 16 对应的逻辑偏移和物理偏移,如下所示:

表 2-4 逻辑偏移和物理偏移的 ADR 映射表
MOD(ADR,16) DDR0 逻辑偏移 DDR1 逻辑偏移 DDR0 物理偏移 DDR1 物理偏移
0 0x0 0x80 0x0 0x80
1 0x40 0xC0 0x40 0xC0
2 0x100 0x180 0x100 0x180
3 0x140 0x1C0 0x140 0x1C0
4 0x200 0x280 0x200 0x280
5 0x240 0x2C0 0x240 0x2C0
6 0x300 0x380 0x300 0x380
7 0x340 0x3C0 0x340 0x3C0
汉明码 不可见 不可见 0x400 0x480
汉明码 不可见 不可见 0x440 0x4C0
8 0x400 0x480 0x500 0x580
9 0x440 0x4C0 0x540 0x5C0
10 0x500 0x580 0x600 0x680
11 0x540 0x5C0 0x640 0x6C0
12 0x600 0x680 0x700 0x780
13 0x640 0x6C0 0x740 0x7C0
14 0x700 0x780 0x800 0x880
15 0x740 0x7C0 0x840 0x8C0

假设:

DDR0_1B_ERR_ADR = 0x49

DDR0_1B_ERR_MSK = 0x0400

解码系统地址

地址粒度 = 64 字节

系统配置为双 DDR 交错模式,交错粒度为 128 字节。


对于每 16 个 ERR_ADR 条目:

占用的逻辑地址空间:

16 × 128B = 0x800B

占用的物理 DDR 空间:

16 × 128B + ECC 存储

= 0x900B


ECC 块起始偏移为:

floor (0x49 / 16) × 0x800

0x4 × 0x800

= 0x2000


ECC 块段偏移为:

0x49 mod 16 = 9

根据地址映射表,对应 ERR_ADR mod 16 = 9 的 DDR0 逻辑偏移为 0x440。


ERR_MSK 中的位 10 置位为:

误差偏移 = 10 × 8 = 0x50

由于 ERR_ADR 为奇数,故对应的 ECC 块与上一个地址块共用同一个 ERR_MSK 字段。因此:

系统偏移

= 0x440 - 0x40 + 0x50 + 0x2000

= 0x2450


系统地址

= 系统偏移 + 0x80000000

= 0x80002450


物理地址计算:

ECC 块起始偏移为:

floor (0x49 / 16) × 0x900

= 0x4 × 0x900

= 0x2400


ECC 块段偏移为:

0x49 mod 16 = 9

根据地址映射表,对应 ERR_ADR mod 16 = 9 的 DDR0 物理偏移为 0x540。


ERR_MSK 中的位 10 置位为:

误差偏移 = 10 × 8 = 0x50

由于 ERR_ADR 为奇数,故对应的 ECC 块与上一个地址块共用同一个 ERR_MSK 字段。因此:

物理偏移

= 0x540 - 0x40 + 0x50 + 0x2400

= 0x2950


物理地址

= 物理偏移 + 0x80000000

= 0x80002950