NOTICE: The Processors Wiki will End-of-Life on January 15, 2021. It is recommended to download any files or other content you may need that are hosted on processors.wiki.ti.com. The site is now set to read only.
StarterWare ELM
Introduction[edit]
Non-managed NAND flash memories can be dense and nonvolatile in their own nature, but error-prone.When reading from NAND flash memories, some level of error-correction is required. GPMC uses ELM(error-location module) to extract the error from the syndrome polynomials which are calculated through GPMC as part of NAND read.Based on the syndrome polynomial value, the ELM can detect errors, compute the number of errors, and give the location of each error bit.
Features :
- 4, 8, and 16 bits per 512-byte block error-location based on BCH algorithms
- Eight simultaneous processing contexts
- Page-based and continuous modes
- Interrupt generation on error-location process completion.
Programming[edit]
Following sections explains the progrmming sequence to be followed to calculate the error location using ELM.
- Initialize the ELM module as part of GPMC controller initialization by following steps :
- Reset the module using ELMModuleReset().
- Wait till ELM module is out of reset using ELMModuleResetStatusGet().
- Configure the internal OCP clock gating strategy to free running using ELMCAutoGatingConfig().
- Set the idle mode to no idle using ELMCIdleModeSelect().
- Set the OCP Clock activity when module is in IDLE mode to ON using ELMOCPClkActivityConfig().
- Clear the pending interrupts using ELMIntStatusClear().
- Enable the interrupt for syndrome polynomial 0 using ELMIntConfig().
- Sets the Error correction level for BCH alogorithm using ELMErrCorrectionLevelSet().
- Set the size of the buffers for which the error-location engine is used to 0x7FF using ELMECCSizeSet().
- Set the mode of module to PAGE MODE.
- Follow the follwing steps to calculate the number of errors and error location after syndrome polynomial read from GPMC --
- Set the fragments of syndrome polynomial for error-location processing using ELMSyndromeFrgmtSet().
- Start the error-location processing for the polynomial set.
- After the processing completion, interrupt is generated. Check the same using ELMIntStatusGet().
- Clear the interrupt using ELMIntStatusClear().
- Get the status of error-location processing using ELMErrLocProcessingStatusGet().
- Get the number of errors using ELMNumOfErrsGet().
- Gets the Error-location bit address using ELMErrLocBitAddrGet()