The DLPC231S-Q1 contains several internal memories, such as the internal RAM
and the sequencer memory. Data loaded into these memories comes from the external
flash. The Flash Direct Memory Access (FDMA) block is used to facilitate the access
and transport of data to the proper memories. To prevent or detect corruption of
this data, the following features are implemented in the DLPC231S-Q1:
- [SM_23] Flash Table Transport
CRC: The DLPC231S-Q1 performs two CRC checks
on all data that is transported from flash to internal memories such as IRAM and
sequencer memory. When the data is originally generated, a CRC is calculated and
appended to each block. When data is loaded from flash to an internal memory,
the embedded software reads the expected CRC value from flash. Next, the FDMA
block calculates a CRC as the data is transferred. This CRC is compared to the
expected CRC. Lastly, another CRC is calculated by the destination memory (IRAM,
sequencer memory, etc.) hardware. If the CRCs do not match at any point, the
data will be re-loaded and an error will be logged.
- [SM_24] ECC: The internal
memories of the DLPC231S-Q1 implement ECC. The ECC can
correct single-bit errors and detect, but not correct, multi-bit errors. In case
of any errors, an error will be logged. In case of multi-bit errors an emergency
shutdown will be executed.
- [SM_25] DLPC231S-Q1 Memory BIST: Checks functionality of internal
memories such as the frame buffers, internal RAM, and sequence look up tables
using a series of writes, delays, and reads. The frame buffer memory check is
critical for diagnosing a corrupt video path. The SRAM frame buffers are tested
using a series of instructions provided by the manufacturer of the SRAM cell.
The instructions for executing the test are stored in external flash, but the
test data is generated locally in the frame buffer. If the data read from the
memory does not match the data written to the memory the test fails. This test
can be configured to run at start-up, and it can be executed by command after
the software is changed to Stand-by mode using the host command. In case of test
failure, software will not transition Display Mode even if it is commanded by
the host. An error will also be logged.
- [SM_26] Flash Data
Verification: Each block of flash data contains an expected CRC. The DLPC231S-Q1 software calculates the CRC of each block
and compares it to the expected CRC stored in flash. If there is a mismatch, the
test fails. This test is typically executed after programming flash data. A
flash option determines if this test is executed at start-up. TI recommends
enabling this option. This test can also be executed from standby mode. In case
of failure, software will not transition Display Mode even if it is commanded by
the host. An error will also be logged.
- [SM_27] Periodic
Refresh: Memories in the DLPC231S-Q1 video
path are periodically refreshed. For example, the frame buffers are reloaded
every frame. The short reload period of these refreshes compared to the fault
tolerant time interval means that the periodic refresh can be considered as a
safety mechanism against transient errors in memories. Periodic refresh does not
protect against permanent faults.
- [SM_28] Boot ROM CRC:
The boot application runs a CRC on the boot ROM data and compares it to an
expected value stored in the boot ROM memory. If the CRCs do not match, the test
fails. Upon failure, the failure stays in the boot application and does not
proceed and logs an error.