SPRADT6 July 2026 AWR2944 , AWR2944P
MCRC (Memory Cyclic Redundancy Check) verifies memory data integrity through hardware-accelerated CRC calculation. This module uses a maximum 64-bit polynomial f(x) = x⁶⁴ + x⁴ + x³ + x + 1 to construct PSA (Parallel Signature Analysis) registers, performing calculations on 8/16/32/64-bit data widths.
MCRC supports two independent channels, which can perform CRC calculations on multiple memory regions in parallel and supports three modes:
Auto Mode: DMA automatically transfers data for CRC calculation without CPU involvement. When a mismatch occurs, an interrupt is generated, and the hardware provides a 16-bit sector ID to locate the faulty sector.
Semi-CPU Mode: DMA remains responsible for data transfer, but an interrupt is triggered after each sector compression is completed, prompting the CPU to read the signature register and manually compare it with the preset value.
Full-CPU Mode: The CPU is fully responsible—both transferring data to the signature register and reading the result for comparison. No interrupts, no DMA, and all counters are disabled.
Full-CPU Mode Testing (mcrc_full_cpu):
| Step | Action | Description |
|---|---|---|
| 1 | SDL_MCRC_init | Initializes the MCRC channel |
| 2 | SDL_MCRC_channelReset | Resets the CRC channel |
| 3 | SDL_MCRC_config | Configures mode, pattern size, and sector count |
| 4 | Input raw data | Writes known data patterns |
| 5 | SDL_MCRC_computeSignCPUmode | Calculates the CRC signature |
| 6 | Compare signature | Compares with the reference signature |
Semi-CPU Mode Testing (mcrc_semi_cpu):
| Step | Action | Description |
|---|---|---|
| 1 | SDL_MCRC_init | Initializes the MCRC channel |
| 2 | SDL_MCRC_channelReset | Resets the CRC channel |
| 3 | SDL_MCRC_config | Configures the channel to Semi-CPU mode |
| 4 | EDMA operation | Transfers data into PSA registers |
| 5 | Waiting for interrupt | MCRC completes one sector compression |
| 6 | Read PSA Sector Signature | Compares with the reference signature |
Auto Mode Testing (mcrc_auto_cpu):
| Step | Action | Description |
|---|---|---|
| 1 |
SDL_MCRC_init SDL_MCRC_channelReset |
Initializes and resets the MCRC channel |
| 2 | SDL_MCRC_config | Sets SDL_MCRC_OPERATION_MODE_AUTO |
| 3 | EDMA transfer | Transfers both data and pre-calculated signatures to the CRC Value Register |
| 4 | MCRC auto comparison | Hardware completes signature comparison |
| 5 | Interrupt gets result | CRC Fail interrupt or completion notification |
Key Function Description:
| Key Function | Functions |
|---|---|
| SDL_MCRC_init | Initializes MCRC channels (watchdog/block preload values) |
| SDL_MCRC_channelReset | Resets the CRC channel |
| SDL_MCRC_config | Configures mode, pattern size, and sector count |
| SDL_MCRC_configCRCType | Configures the CRC polynomial |
| SDL_MCRC_computeSignCPUmode | Calculates CRC signature in Full-CPU mode |
| SDL_MCRC_getPSASigRegAddr | Gets PSA signature register address |
| SDL_MCRC_getPSASectorSig | Gets sector signature value |
| SDL_MCRC_getPSASig | Reads PSA signature value |
| SDL_MCRC_enableIntr | Enables MCRC interrupts |