MCU memories (Flash, SRAM, EEPROM) + the memory map
Flash keeps your program, SRAM holds variables and forgets at power off, EEPROM keeps settings; every byte has an address in the memory map (PORTB = 0x25). Follower request (@antonis_aggouridis).
You asked, @antonis_aggouridis — here it is! 🔥 Your Arduino has THREE memories 🧠
1️⃣ FLASH (32 KB): holds your program (your sketch). It stays when the power goes off. (0.5 KB of it holds the bootloader.)
2️⃣ SRAM (2 KB): holds your variables while the code runs — gone the moment the power goes off.
EEPROM (1 KB): keeps small settings (like a volume level) even with the power off. About 100,000 writes per byte, so don't write it in a loop!
3️⃣ THE MEMORY MAP: every byte has an address. On the ATmega328P (Arduino Uno) the data space goes:
0x0000–0x001F → 32 CPU registers
0x0020–0x005F → 64 I/O registers (PORTB lives at 0x25!)
0x0060–0x00FF → 160 more I/O registers
0x0100–0x08FF → your 2 KB of SRAM
Flash and EEPROM have their own separate address spaces (a "Harvard" chip).
Three memories, one map. 🗺️
Read the voiceover (transcript)
- Your Arduino has three memories!
- Flash holds your program: thirty-two kilobytes. It stays when the power goes off.
- SRAM holds your variables: just two kilobytes, gone at power off. EEPROM keeps settings: one kilobyte.
- Every byte has an address. That list is the memory map. Even PORTB lives at hex two five!
- Three memories, one map!
- Next: MMIO versus PMIO. Follow for Lesson six!
Related lessons
Get new lessons + early access to the full course
One email when new lessons drop. No spam, unsubscribe any time.
✓ You're on the list. Check your inbox to confirm.
By joining you agree to the privacy policy.




