Bird
Raised Fist0
Embedded Cprogramming~5 mins

Memory layout on a microcontroller (Flash, SRAM, EEPROM) in Embedded C - Cheat Sheet & Quick Revision

Choose your learning style10 modes available
Recall & Review
beginner
What is Flash memory used for in a microcontroller?
Flash memory stores the program code and constants. It is non-volatile, so it keeps data even when power is off.
Click to reveal answer
beginner
What is SRAM and what is it used for?
SRAM is fast, volatile memory used for temporary data storage while the program runs. It loses data when power is off.
Click to reveal answer
beginner
What is EEPROM used for in microcontrollers?
EEPROM stores small amounts of data that must be saved even when power is off, like settings or calibration data.
Click to reveal answer
intermediate
How does Flash memory differ from EEPROM?
Flash memory stores program code and is usually larger. EEPROM stores small data and allows byte-level writing, but is slower.
Click to reveal answer
beginner
Why is SRAM considered volatile memory?
SRAM is volatile because it loses all stored data when the microcontroller loses power.
Click to reveal answer
Which memory type in a microcontroller is used to store the program code?
AFlash memory
BSRAM
CEEPROM
DCache memory
What happens to data stored in SRAM when the microcontroller is powered off?
AData is lost
BData is saved permanently
CData is copied to Flash
DData is backed up to EEPROM
Which memory type is best for storing user settings that must persist after power off?
ASRAM
BFlash
CEEPROM
DCache
Which memory type allows byte-level writing but is slower than Flash?
ASRAM
BFlash
CROM
DEEPROM
Why is Flash memory considered non-volatile?
AIt loses data when power is off
BIt keeps data without power
CIt is very fast
DIt is volatile
Explain the roles of Flash, SRAM, and EEPROM in a microcontroller's memory layout.
Think about what data needs to stay after power off and what is temporary.
You got /3 concepts.
    Describe why SRAM is called volatile memory and how it differs from Flash and EEPROM.
    Focus on data retention and speed differences.
    You got /3 concepts.

      Practice

      (1/5)
      1. Which type of memory in a microcontroller is used to store the program code permanently?
      easy
      A. SRAM
      B. Flash memory
      C. EEPROM
      D. Cache memory

      Solution

      1. Step 1: Understand memory types

        Flash memory is non-volatile and stores the program code permanently.
      2. Step 2: Compare with other memories

        SRAM is temporary for variables, EEPROM stores small data but not the main program.
      3. Final Answer:

        Flash memory -> Option B
      4. Quick Check:

        Program code = Flash memory [OK]
      Hint: Program code is always in Flash memory [OK]
      Common Mistakes:
      • Confusing SRAM with Flash memory
      • Thinking EEPROM stores program code
      • Assuming cache memory is used in microcontrollers
      2. Which of the following declarations correctly places a variable in EEPROM memory in embedded C?
      easy
      A. int var __attribute__((section(".eeprom")));
      B. int var __attribute__((section(".sram")));
      C. int var __attribute__((section(".flash")));
      D. int var __attribute__((section(".stack")));

      Solution

      1. Step 1: Identify EEPROM section syntax

        Variables placed in EEPROM use the section attribute ".eeprom" in embedded C.
      2. Step 2: Check other options

        ".sram" is for SRAM, ".flash" for Flash, ".stack" is not a valid section for variables.
      3. Final Answer:

        int var __attribute__((section(".eeprom"))); -> Option A
      4. Quick Check:

        EEPROM section attribute = .eeprom [OK]
      Hint: EEPROM variables use section ".eeprom" attribute [OK]
      Common Mistakes:
      • Using .sram or .flash instead of .eeprom
      • Forgetting __attribute__ syntax
      • Confusing stack with memory sections
      3. Consider this embedded C code snippet:
      const int x = 10;
      int y = 20;
      int main() {
        static int z = 30;
        return 0;
      }
      Where are the variables x, y, and z stored respectively?
      medium
      A. x in SRAM, y in EEPROM, z in Flash
      B. x in EEPROM, y in Flash, z in EEPROM
      C. x in Flash, y in EEPROM, z in SRAM
      D. x in Flash, y in SRAM, z in SRAM

      Solution

      1. Step 1: Analyze variable storage rules

        Constants like x are stored in Flash memory. Global variables like y go to SRAM. Static variables like z also reside in SRAM during runtime.
      2. Step 2: Match variables to memory types

        x = Flash, y = SRAM, z = SRAM.
      3. Final Answer:

        x in Flash, y in SRAM, z in SRAM -> Option D
      4. Quick Check:

        const = Flash, global/static = SRAM [OK]
      Hint: const vars in Flash, globals and statics in SRAM [OK]
      Common Mistakes:
      • Assuming static variables go to EEPROM
      • Thinking const variables are in SRAM
      • Mixing EEPROM with Flash for constants
      4. This embedded C code tries to store a variable in EEPROM:
      int var __attribute__((section(".eeprom"))) = 5;
      void main() {
        var = 10;
      }
      What is the main problem with this code?
      medium
      A. You cannot assign a new value to EEPROM variable at runtime like this
      B. The section attribute syntax is incorrect
      C. Variables in EEPROM must be declared as const
      D. The main function must return int, not void

      Solution

      1. Step 1: Understand EEPROM write limitations

        EEPROM variables cannot be assigned new values by simple assignment at runtime; special functions are needed to write EEPROM.
      2. Step 2: Check other code aspects

        The section attribute syntax is correct, variables need not be const, and main can be void in embedded C.
      3. Final Answer:

        You cannot assign a new value to EEPROM variable at runtime like this -> Option A
      4. Quick Check:

        EEPROM write needs special functions [OK]
      Hint: EEPROM writes need special functions, not simple assignment [OK]
      Common Mistakes:
      • Assuming normal assignment writes EEPROM
      • Thinking section attribute is wrong
      • Confusing main return type with memory issues
      5. You want to store a configuration value that must persist after power off and be modifiable during runtime on a microcontroller. Which memory type should you use and why?
      hard
      A. Cache memory, because it stores frequently used data
      B. Flash, because it is fast and can be rewritten easily during runtime
      C. EEPROM, because it retains data without power and allows runtime updates with special functions
      D. SRAM, because it is volatile and fast for temporary storage

      Solution

      1. Step 1: Identify memory needs

        The value must persist after power off and be modifiable during runtime.
      2. Step 2: Match memory type to needs

        EEPROM is non-volatile and supports runtime updates via special functions. Flash is non-volatile but rewriting is slower and more complex. SRAM is volatile and loses data on power off. Cache is not used for persistent storage.
      3. Final Answer:

        EEPROM, because it retains data without power and allows runtime updates with special functions -> Option C
      4. Quick Check:

        Persistent modifiable data = EEPROM [OK]
      Hint: Use EEPROM for persistent, modifiable data [OK]
      Common Mistakes:
      • Choosing Flash for frequent runtime updates
      • Using SRAM for persistent storage
      • Confusing cache with persistent memory
      Recommended

      Ready to prove it?

      Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

      10 questions~5 mineasy hard