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:
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.