RASDP
1.2 初始化步骤
1:启用 ECC/Parity 保护与纠正 默认情况下保护可能已启用,但建议显式清除“禁用”位以确保纠错功能开启。
-
寄存器:
RASDP_ERROR_PROT_CTRL_OFF(OffsetRASDP_BASE + 0x08) -
操作:写入
0x00000000。 -
说明:该寄存器的位(如
ERROR_PROT_DISABLE_TX,ERROR_PROT_DISABLE_RX等)用于禁用保护。全 0 表示启用所有层级(TX/RX, AXI, DMA 等)的 ECC 纠正和检查。
2:配置不可纠正错误处理策略 决定当发生 2-bit ECC 错误等不可纠正错误时,控制器是直接让链路 Down 掉(复位),还是保持链路 Up 但进入“错误模式”。
-
寄存器:
RASDP_ERROR_MODE_EN_OFF(OffsetRASDP_BASE + 0x28) -
操作:
-
方案 A(推荐 - 高可用性):设置 Bit 0 (
ERROR_MODE_EN) = 1。-
行为:控制器进入 RAS DP Error Mode。链路保持 Up,但损坏的 TLP 会被丢弃或标记(Nullified),防止数据污染。固件有机会读取日志并尝试恢复。
-
-
方案 B(严格模式):设置 Bit 0 = 0。
-
行为:检测到不可纠正错误时,控制器可能触发 Link Down 并复位(具体取决于
AUTO_LINK_DOWN_EN硬件参数或相关位设定) -
3. 错误注入验证方案 (Error Injection Verification)
使用
RASDP_ERROR_INJ_CTRL_OFF寄存器验证上述机制是否生效。3.1 寄存器定义
-
寄存器:
RASDP_ERROR_INJ_CTRL_OFF(OffsetRASDP_BASE + 0x1C) -
关键位域:
-
Bit 0 (
ERROR_INJ_EN): 1 = 启用注入。 -
Bits 5:4 (
ERROR_INJ_TYPE):0x1= 1-bit (可纠正),0x2= 2-bit (不可纠正)。 -
Bits 15:8 (
ERROR_INJ_COUNT): 注入次数。设为0x1(Inject 1 error)。 -
Bits 23:16 (
ERROR_INJ_LOC): RAM Index。选择要注入错误的 RAM(例如 RX Buffer, Replay Buffer 等,具体 ID 需查阅 Databook 的 RAM 表)。
-
3.2 验证用例 A:1-bit ECC 错误(可纠正)
目标:验证硬件自动纠错及 AER 报告。
-
配置注入:
-
设
ERROR_INJ_TYPE=0x1(1-bit)。 -
设
ERROR_INJ_COUNT=0x1。 -
设
ERROR_INJ_LOC= 目标 RAM ID (例如 0x01,假设为接收缓冲)。 -
设
ERROR_INJ_EN=1。 -
写入值示例:
0x00010111(Loc=1, Count=1, Type=1, En=1)。
-
-
触发:
-
主机向设备发送数据包(Memory Write),确保数据写入该 RAM。
-
设备读取该数据(硬件在读取时触发 ECC 校验)。
-
-
检查:
-
验证数据传输是否成功(数据应正确,因为被硬件纠正了)。
-
检查 AER
Correctable Error Status是否置位。 -
读取
RASDP_CORR_COUNT_REPORT_OFF确认计数增加。
-
3.3 验证用例 B:2-bit ECC 错误(不可纠正)
目标:验证错误模式进入及错误报告。
-
配置注入:
-
设
ERROR_INJ_TYPE=0x2(2-bit)。 -
设
ERROR_INJ_COUNT=0x1。 -
设
ERROR_INJ_EN=1。
-
-
触发:
-
发送数据包命中目标 RAM。
-
-
检查:
-
验证 AER
Uncorrectable Error Status(Internal Error) 被置位。 -
读取
RASDP_RAM_ADDR_UNCORR_ERROR_OFF确认捕获到了地址。 -
重要:验证此时链路是否正常响应(如果配置了 Error Mode,数据应被丢弃但 Link Up;如果配置了 Link Down,链路应掉线)。
-
-
恢复:
-
执行“错误处理方案”中的恢复步骤(写
RASDP_ERROR_MODE_CLEAR_OFF),确认设备恢复正常通信。
-
-
-

浙公网安备 33010602011771号