ZHCAG86 July 2026 AWR2944 , AWR2944P
MCRC(Memory Cyclic Redundancy Check)通过硬件加速的 CRC 计算验证存储器数据完整性。该模块使用最大长度 64 位多项式 f(x) = x⁶⁴ + x⁴ + x³ + x + 1 构建 PSA(Parallel Signature Analysis)寄存器,对 8/16/32/64 位数据宽度进行计算。
MCRC 支持两个独立通道,可并行对多个存储器区域进行 CRC 计算并支持三种模式:
自动模式:DMA 自动搬运数据做 CRC,无需 CPU 参与,匹配失败时产生中断,硬件提供 16 位扇区 ID 定位错误扇区。
半CPU 模式:DMA 仍负责数据搬运,但每个扇区压缩完成后触发中断,由 CPU 读取签名寄存器并手动比对预置值。
全CPU 模式:CPU 全程负责——既搬运数据到签名寄存器,又读取结果做比对。无中断、无 DMA,所有计数器关闭。
测试全 CPU 模式(mcrc_full_cpu):
| 步骤 | 操作 | 说明 |
|---|---|---|
| 1 | SDL_MCRC_init | 初始化 MCRC 通道 |
| 2 | SDL_MCRC_channelReset | 复位 CRC 通道 |
| 3 | SDL_MCRC_config | 配置模式/模式大小/扇区数 |
| 4 | Input raw data | 写入已知数据模式 |
| 5 | SDL_MCRC_computeSignCPUmode | 计算 CRC 签名 |
| 6 | Compare signature | 与参考签名比较 |
半 CPU 模式(mcrc_semi_cpu):
| 步骤 | 操作 | 说明 |
|---|---|---|
| 1 | SDL_MCRC_init | 初始化 MCRC 通道 |
| 2 | SDL_MCRC_channelReset | 复位 CRC 通道 |
| 3 | SDL_MCRC_config | 配置通道为 Semi-CPU 模式 |
| 4 | EDMA operation | 将数据搬入 PSA 寄存器 |
| 5 | Waiting for interrupt | MCRC 完成一个扇区压缩 |
| 6 | 读取 PSA Sector Signature | 与参考签名比较 |
自动模式(mcrc_auto_cpu):
| 步骤 | 操作 | 说明 |
|---|---|---|
| 1 |
SDL_MCRC_init SDL_MCRC_channelReset |
初始化 并复位MCRC 通道 |
| 2 | SDL_MCRC_config | 设置 SDL_MCRC_OPERATION_MODE_AUTO |
| 3 | EDMA transfer | 同时搬运数据和预计算签名到 CRC Value Register |
| 4 | MCRC 自动比较 | 硬件完成签名比较 |
| 5 | 中断获取结果 | CRC Fail 中断或完成通知 |
关键函数功能说明:
| 关键函数 | 功能 |
|---|---|
| SDL_MCRC_init | 初始化 MCRC 通道(看门狗/块预载值) |
| SDL_MCRC_channelReset | 复位 CRC 通道 |
| SDL_MCRC_config | 配置模式、模式大小、扇区数 |
| SDL_MCRC_configCRCType | 配置 CRC 多项式 |
| SDL_MCRC_computeSignCPUmode | 全 CPU 模式计算 CRC 签名 |
| SDL_MCRC_getPSASigRegAddr | 获取 PSA 签名寄存器地址 |
| SDL_MCRC_getPSASectorSig | 获取扇区签名值 |
| SDL_MCRC_getPSASig | 读取 PSA 签名值 |
| SDL_MCRC_enableIntr | 使能 MCRC 中断 |