BL4S200 User’s Manual
131
4.4.8 SRAM Use
The BL4S200 model and some memory variations described in Table 1 have a battery-
backed data SRAM and a program-execution SRAM. Dynamic C provides the
protected
keyword to identify variables that are to be placed into the battery-backed
SRAM. The compiler generates code that maintains two copies of each protected variable
in the battery-backed SRAM. The compiler also generates a flag to indicate which copy of
the protected variable is valid at the current time. This flag is also stored in the battery-
backed SRAM. When a protected variable is updated, the “inactive” copy is modified, and
is made “active” only when the update is 100% complete. This assures the integrity of the
data in case a reset or a power failure occurs during the update process. At power-on the
application program uses the active copy of the variable pointed to by its associated flag.
The sample code below shows how a protected variable is defined and how its value can
be restored.
protected nf_device nandFlash;
int main() {
...
_sysIsSoftReset(); // restore any protected variables
The
bbram
keyword may also be used instead if there is a need to store a variable in bat-
tery-backed SRAM without affecting the performance of the application program. Data
integrity is
not
assured when a reset or power failure occurs during the update process.
Additional information on
bbram
and
protected
variables is available in the
Dynamic C
User’s Manual
.