ECC Module Development Guide

Before undertaking the task of writing a software ECC module, or a software interface to a hardware ECC module, you should evaluate whether or not modifications to the controller layer are needed as well. Some hardware ECC modules integrated within a NAND device or a micro-controller’s memory controller can be handled through a generic controller extension module.

However, if your ECC module can be interfaced with the software ECC generic controller extension, you could limit the code to be developed to the ECC layer only. If this is the case, you will need to provide the implementation of the API as shown in Listing - ECC API type definition:

Listing - ECC API type definition
typedef  struct  ecc_calc {
    CPU_SIZE_T        BufLenMin;              (1)
    CPU_SIZE_T        BufLenMax;              (2)
    CPU_INT08U        ECC_Len;                (3)
    CPU_INT08U        NbrCorrectableBits;     (4)
    ECC_CALC_FNCT     Calc;                   (5)
    ECC_CHK_FNCT      Chk;                    (6)
    ECC_CORRECT_FNCT  Correct;                (7)
} ECC_CALC;


(1) Minimum buffer length that the ECC module can handle.

(2) Maximum buffer length that the ECC module can handle.

(3) Length, in octets, of the code for a single buffer.

(4) Number of bits the module can correct for each buffer.

(5) Pointer to the code calculation function.

(6) Pointer to the error detection function.

(7) Pointer to the error correction function.

For more details on the implementation, please refer to the µC/CRC User Manual.