The storage and memory system of microcontrollers consists out of multiple components. There is a section of read-only-memory (ROM) that is only written to once when the chip is programmed, but which cannot normally be altered by the MCU itself, as we saw in the previous section.
The MCU may also have a bit of persistent storage, in the form of EEPROM or equivalent. Finally, there are CPU registers and the random-access memory (RAM). This results in the following exemplary memory layout:
The use of a modified Harvard architecture (split program and data memory at some architectural level, generally with the data buses) is common with MCUs. With the AVR architecture, for example, the program memory is found in the ROM, which for the ATmega2560 is connected using its own bus with the CPU core, as one can seen on the block diagram for this MCU, which we looked...