ELM
Table 7-166. Events (continued)
Event Flag
Event Mask
Map to
Description
ELM_IRQSTATUS[1]
ELM_IRQENABLE[1]
ELM_IRQ
Error-location interrupt for syndrome polynomial 1
LOC_VALID_1
LOCATION_MASK_1
ELM_IRQSTATUS[0]
ELM_IRQENABLE[0]
ELM_IRQ
Error-location interrupt for syndrome polynomial 0
LOC_VALID_0
LOCATION_MASK_0
7.4.3.4
Processing Initialization
ELM_LOCATION_CONFIG global setting parameters must be set before using the error-location engine.
The ELM_LOCATION_CONFIG[1:0] ECC_BCH_LEVEL bit defines the error-correction level used (4-,8-,
or 16-bit error-correction). The ELM_LOCATION_CONFIG[26:16] ECC_SIZE bit field defines the
maximum buffer length beyond which the engine processing no longer looks for errors.
The CPU can choose to use the ELM in continuous mode or page mode. If all ELM_PAGE_CTRL[i]
SECTOR_i bits are reset (i is the syndrome polynomial number, i = 0 to 7), continuous mode is used. In
any other case, page mode is implicitly selected.
•
Continuous mode: Each syndrome polynomial is processed independently – results for a syndrome
can be retrieved and acknowledged at any time, whatever the status of the other seven processing
contexts.
•
Page mode: Syndrome polynomials are grouped into atomic entities – only one page can be
processed at any given time, even if all eight contexts are not used for this page. Unused contexts are
lost and cannot be affected to any other processing. The full page must be acknowledged and cleared
before moving to the next page.
For completion interrupts to be generated correctly, all ELM_IRQENABLE[i] LOCATION_MASK_i bits (i =
0 to 7) must be forced to 0 when in page mode, and set to 1 in continuous mode. Additionally, the
ELM_IRQENABLE[8] PAGE_MASK bit must be set to 1 when in page mode.
The CPU initiates error-location processing by writing a syndrome polynomial into one of the eight
possible register sets. Each of these register sets includes seven registers:
ELM_SYNDROME_FRAGMENT_0_i to ELM_SYNDROME_FRAGMENT_6_i. The first six registers can
be written in any order, but ELM_SYNDROME_FRAGMENT_6_i must be written last because it includes
the validity bit, which instructs the ELM that this syndrome polynomial must be processed (the
ELM_SYNDROME_FRAGMENT_6_i[16] SYNDROME_VALID bit).
As soon as one validity bit is asserted (ELM_SYNDROME_FRAGMENT_6_i[16] SYNDROME_VALID =
0x1, with i = 0 to 7), error-location processing can start for the corresponding syndrome polynomial. The
associated ELM_LOCATION_STATUS_i and ELM_ERROR_LOCATION_0_i to
ELM_ERROR_LOCATION_15_i registers are not reset (i = 0 to 7). The software must not consider them
until the corresponding ELM_IRQSTATUS[i] LOC_VALID_i bit is set.
7.4.3.5
Processing Sequence
While the error-location engine is busy processing one syndrome polynomial, further syndrome
polynomials can be written. They are processed when the current processing completes.
The engine completes early when:
•
No error is detected; that is, when the ELM_LOCATION_STATUS_i[8] ECC_CORRECTABLE bit is set
to 1 and the ELM_LOCATION_STATUS_i[4:0] ECC_NB_ERRORS bit field is set to 0x0.
•
Too many errors are detected; that is, when the ELM_LOCATION_STATUS_i[8]
ECC_CORRECTABLE bit is set to 0 while the ELM_LOCATION_STATUS_i[4:0] ECC_NB_ERRORS
bit field is set with the value output by the error-location engine. The reported number of errors is not
ensured if ECC_CORRECTABLE is 0.
If the engine completes early, the associated error-location registers ELM_ERROR_LOCATION_0_i to
ELM_ERROR_LOCATION_15_i are not updated (i = 0 to 7).
479
SPRUH73H – October 2011 – Revised April 2013
Memory Subsystem
Copyright © 2011–2013, Texas Instruments Incorporated