It has long been common knowledge that particle strikes can flip bits in memory arrays and disrupt code execution. This is a common event in space, is somewhat common when travelling on aircraft and will occur to a lesser but measurable extent at sea level.
An Error Detection and Correction (EDAC) subsystem can be used to check for flipped bits and fix them. These systems are implemented on terrestrial safety critical electronics systems such as those found on automobiles and are regarded as a must-have feature in space electronics where radiation activity is significant.
The Arm Cortex-M0 based VA10820 microcontroller includes an EDAC that is capable of detecting eight bit flips per word and correcting four of them (two detects and one correct per byte). A Hamming error code algorithm is used which requires a 5-bit syndrome for each byte. The memory cells are laid-out to reduce the probability of two bit-errors occurring due to a single particle strike. The EDAC operates on data as it is fetched by the CPU.
A ‘Scrub’ engine is used in conjunction with the EDAC to further reduce the probability of bit errors. The Scrub engine will sequentially step through all memory locations on the device looking for errors and correcting them before the CPU / EDAC fetches them. This action reduces the probability of an uncorrectable (double bit) error occurring in any bytes. The speed of the Scrub engine can be adjusted by the programmer in order to ensure that the memory is being scrubbed fast enough for the radiation conditions. The entire memory should be scrubbed frequently enough to prevent the accumulation of single-bit errors.
Vanderbilt University hosts a very useful model, CREME96, that uses phenomenological models to predict SEE (Single Event Effect) rates that cause bit flips on memories. The tool allows the user to model the expected bit-upset rate in different orbits and even takes into account shielding materials and thickness. This type of information can be used to estimate a base scrub speed. If solar radiation conditions change and a higher level of Single Bit Errors (SBEs) are measured by the VA10820, the scrub speed can be adjusted in real-time to ensure that the system is operating fast enough to maintain an appropriately low level of probability of a double-bit error accumulating in the memory array. Increasing the scrub rate is a trade-off with power consumption.
To learn more about the VA10820 EDAC and Scrub Engine, check out the new VORAGO VA10820 EDAC programming application note. This will help you avoid the faults that can occur in our stars. You can find it here: http://www.voragotech.com/resources