Flash Controller Memory Module
503
SPRUH22I – April 2012 – Revised November 2019
Copyright © 2012–2019, Texas Instruments Incorporated
Internal Memory
Read margin modes should only be entered when executing from RAM. Banks must be powered up
before entering a read margin mode. When entering a read margin mode, or changing from one read
margin mode to the other, allow 1us delay before the first flash access to allow the flash banks to adjust to
the new mode.
Read margin modes 0/1 are enabled by setting the RM0/RM1 bits in the special read control register,
FSPRD. The recommended procedures to enter, change, and exit read margin mode are shown below.
To enter read-margin mode:
1. Start execution out of RAM.
2. Set the banks to remain powered up by writing 3 to bits 0:1 of the FBFALLBACK register.
3. Turn on read margin 0 or 1 by writing 1 or 2 to the FSPRD register.
4. Do one dummy read from each bank to turn on the bank.
5. Flush the data cache by reading two flash locations separated by at least 32 bytes. The read data
should be ignored for these reads.
6. Wait 1 us
Any reads will now be with the selected read margins. The application can now return to flash if desired.
To exit read-margin mode:
1. Start execution out of RAM
2. Turn off read margin 0 or 1 by writing 0 to the FSPRD register
3. Flush the data cache by reading two flash locations separated by at least 32 bytes. The read data
should be ignored for these reads.
4. Wait 1 µs
Any reads will now be a standard read. The application can now return to flash if desired. The application
can also set the FBFALLBACK register to the original values.
To change one read margin mode to the other:
1. Follow the procedure above to exit read margin mode.
2. Follow the procedure above to enter read margin mode.
5.3.10 Error Correction Code (ECC) Protection
M3-FMC and C28x-FMC contain an embedded single error correction and double error detection
(SECDED) module. SECDED, when enabled, provides the capability to screen out memory faults.
SECDED can detect and correct single-bit data errors and detect address errors/double-bit data errors.
For every 64 bits of flash/OTP data (aligned on a 64-bit memory boundary) that is programmed, eight ECC
check bits have to be calculated and programmed in ECC memory space. Refer to the device data
manual for the flash/OTP ECC memory map.
SECDED works with a total of eight user-calculated error correction code (ECC) check bits associated
with each 64-bit wide data word and its corresponding 128-bit memory-aligned address. Users must
program ECC check bits along with flash data. TI recommends using the AutoEccGeneration option
available in the Plugin/API to program the ECC.
illustrates the ECC logic inputs and outputs.
The Flash API uses hardware ECC logic in the device to generate the ECC data for the given flash data.
The Flash plugin and UniFlash use Flash APIs to generate and program ECC data.