ECRC
1.配置错误策略
- 解屏蔽: 清除
UNCORR_ERR_MASK(AER_BASE + 0x08) 的 Bit 19(写 0),允许 ECRC 错误上报给系统。 -
设置严重性 (Severity): 设置
UNCORR_ERR_SEV(AER_BASE + 0x0C) 的 Bit 19。- 写 0 (Non-Fatal): 仅报告错误,链路可能不需要复位(默认推荐)。
- 写 1 (Fatal): 触发系统级致命错误处理(可能导致链路复位)。
2.启用 ECRC 生成与检查 (Enable Logic)
执行“读-改-写”操作
ADV_ERR_CAP_CTRL (AER_BASE + 0x18):- 置位 Bit 6 (ECRC_GEN_EN): 启用发送端 ECRC 生成。
- 置位 Bit 8 (ECRC_CHECK_EN): 启用接收端 ECRC 检查。
3. 注错实施方案 (Injection Scheme)
步骤 2:配置错误注入寄存器
-
解锁注入功能(如果被锁定):检查
CX_ERR_INJ_WIRE_WR_DISABLE参数是否允许写操作。 -
设置注入参数 (
EINJ0_CRC_REG):-
写入
RAS_DES_BASE + 0x34:-
EINJ0_CRC_TYPE=0xB(RX Path ECRC Error) —— 核心步骤 -
EINJ0_COUNT=0x1(仅注入 1 次,避免错误风暴) -
ECRC_FC_SEL=0x0(假设稍后通过发送 Memory Write 来触发) -
ECRC_VC_SEL=0x0(Default VC)
-
-
寄存器值示例:
0x00000B01(假设 VC=0, FC=Posted, Type=RX ECRC, Count=1)
-
步骤 3:启用注入 (EINJ_ENABLE_REG)
-
写入
RAS_DES_BASE + 0x30:-
置位 Bit 0 (
ERROR_INJECTION0_ENABLE= 1)。
-
步骤 4:触发数据流 (Traffic Generation)
-
控制器需要实际“接收”到一个 TLP 才能触发注入逻辑。
-
方法 A(通过对端):让 Link Partner 发送一个简单的 Memory Write TLP 给本端。
-
方法 B(内部回环):如果处于 Loopback 模式,本端发送一个包给自己。
-
注:当接收逻辑处理该 TLP 时,硬件会自动反转其 ECRC 位,导致校验失败。

浙公网安备 33010602011771号