4.4.5.1 Eeprom Variables
Objects can be placed in the EEPROM by specifying that they be placed in
the .eeprom section, using the section attribute. A
warning is produced if the attribute is not supported for the selected device. Check
your device data sheet to see the memory available with your device.
The macro EEMEM is defined in
<avr/eeprom.h> and can be alternatively used to simplify the
definition of objects in EEPROM. For example, both the following definitions create
objects which will be stored in EEPROM.
int serial __attribute__((section(.eeprom)));
char EEMEM ID[5] = { 1, 2, 3, 4, 5 };
Objects in this section are cleared or initialized, as required, just like ordinary RAM-based objects; however, the initialization process is not carried out by the runtime startup code. Initial values are placed into a HEX file and are burnt into the EEPROM when you program the device. If you modify the EEPROM during program execution and then reset the device, these objects will not contain the initial values specified in your code at startup up.
Note that the objects that are in the eeprom section
must all use the const type qualifier or all not use this
qualifier.
