Many high-reliability and high-availability systems such as servers and communications equipment contain a backup copy of flash memory. Flash memory allows the equipment to be upgraded in the field but there is always a risk that a new software release will have some unintentional consequences or that the new software will become corrupted during loading and unsable. By maintaining the previous software version, the equipment has the option to revert to the older more stable version should problems arise with the new version.
Figure 1 shows how the nonvolatile I/O expanders can be used to select which page of flash memory the system controller should use. The latest software version and the backup copy will be stored in separate pages of the flash memory. For example, a new software load will be loaded into Page 0 when the current software is loaded into Page 1 and vice versa. Once the new software is loaded, the system controller can select the new software by changing the programmed value in the I/O expander and initiating a system re-start.
One key feature of the nonvolatile I/O expanders is that their configuration can be changed without storing the configuration in the nonvolatile memory. This allows the system controller to overwrite the current configuration and try it without disrupting the power-on default state. Hence the system controller can try the new software version and if it fails, upon system power-up, the nonvolatile I/O expanders will retain the old configuration and revert to the older stable software version. When the system controller is sure that it wants to always operate with the newly loaded software, it writes the configuration into nonvolatile memory which will make it the default power-up value. The SEE bit in the DS4510, DS4520, and DS4550 nonvolatile I/O expanders controls this feature. Please see their respective data sheets for more information on the operation of the SEE bit.
Figure 1. Using nonvolatile I/O expanders to select flash memory.