RASDP

1.2 初始化步骤

1:启用 ECC/Parity 保护与纠正 默认情况下保护可能已启用,但建议显式清除“禁用”位以确保纠错功能开启。

  • 寄存器RASDP_ERROR_PROT_CTRL_OFF (Offset RASDP_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 (Offset RASDP_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 (Offset RASDP_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 报告。

        1. 配置注入

          • 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)。

        2. 触发

          • 主机向设备发送数据包(Memory Write),确保数据写入该 RAM。

          • 设备读取该数据(硬件在读取时触发 ECC 校验)。

        3. 检查

          • 验证数据传输是否成功(数据应正确,因为被硬件纠正了)。

          • 检查 AER Correctable Error Status 是否置位。

          • 读取 RASDP_CORR_COUNT_REPORT_OFF 确认计数增加。

        3.3 验证用例 B:2-bit ECC 错误(不可纠正)

        目标:验证错误模式进入及错误报告。

        1. 配置注入

          • ERROR_INJ_TYPE = 0x2 (2-bit)。

          • ERROR_INJ_COUNT = 0x1

          • ERROR_INJ_EN = 1

        2. 触发

          • 发送数据包命中目标 RAM。

        3. 检查

          • 验证 AER Uncorrectable Error Status (Internal Error) 被置位。

          • 读取 RASDP_RAM_ADDR_UNCORR_ERROR_OFF 确认捕获到了地址。

          • 重要:验证此时链路是否正常响应(如果配置了 Error Mode,数据应被丢弃但 Link Up;如果配置了 Link Down,链路应掉线)。

        4. 恢复

          • 执行“错误处理方案”中的恢复步骤(写 RASDP_ERROR_MODE_CLEAR_OFF),确认设备恢复正常通信。

posted @ 2020-06-25 23:16  qiuqiu95  阅读(250)  评论(0)    收藏  举报