Use of flash memory for series 5000 chips – Echelon Neuron C User Manual
Page 198

186 Memory
Management
Any direct write by the application to the flash memory causes a programming
cycle, even if the flash memory is write protected. This condition is an error that
occurs when the application bypasses the Neuron firmware for accessing the
flash memory. The Neuron firmware uses the software write protection feature
of the flash memory, so the invalid write does not change the contents of the flash
memory, but a programming cycle is initiated. The flash memory provides
invalid data during the programming cycle, causing a watchdog reset. It is
possible for the reset to occur during a write cycle, which could, in the worst case,
cause recurring resets. Therefore, having the system image in flash memory
requires that there be a hardware mechanism to extend the device’s reset state
for at least the duration of the write cycle (typically 10 msec). The LVI circuitry
described in the Smart Transceivers databooks can accomplish this. See also the
Neuron 3150 Chip External Memory Interface
engineering bulletin for more
information.
When writing to EEPROM, if a power cycle or other reset occurs, the data
corruption is localized to the area being written. However, with flash memory,
because an entire sector is always programmed at once, all data in the sector
which was being written at the time of the failure is suspect. It is up to the
application program to protect any critical non-checksummed read/write data
through duplication, voting, journaling, or whatever technique is appropriate.
Because loading of flash memory occurs a sector at a time, it is important that
the load image data be contiguous. Thus, uninit eeprom data and initialized
eeprom data should not be interleaved. The linker processes declarations in the
order they appear in the program, thus you can reduce loading time by grouping
uninit eeprom declarations together.
Use of Flash Memory for Series 5000 Chips
For Series 5000 devices, the firmware supports the following flash memory parts:
• Atmel AT25F512B 512-Kilobit 2.7-volt Minimum SPI Serial Flash
Memory
• Numonyx™ M25P05-A 512-Kbit, serial flash memory, 50 MHz SPI bus
interface
• Silicon Storage Technology SST25VF512A 512 Kbit SPI Serial Flash
You can use flash memory for the Extended Non-Volatile memory region for
EECODE data. You can also use an additional 16 KB of the flash memory to
store an alternate Neuron firmware system image. Because of the large sector
size of these flash memory parts, you cannot use flash memory for EENEAR or
EEFAR data (eeprom class variables); the entire data region must be erased to
modify data in this memory region. The use of flash memory for Series 5000
chips does not require additional RAM, but does require additional EEPROM for
the storage of a device-specific flash memory driver.
If you use the uninit eeprom far keywords to create storage variables in flash
memory, that application has access to memory that is initially erased to an “all
ones” state after application load. This memory can only be modified by setting
data bits to the zero state through memory writes.
When using a 32 KB sector flash device, the available space for the Extended
Non-Volatile memory region is limited to 32 KB. For a smaller sector flash
device (such as the SST25VF512A) the available space is 42 KB.