Skip to content

Vedlegg E — Minneinternt

Formål

Forstå hvor programkode og data lever, og hvorfor AVR sin Harvard-arkitektur påvirker programmeringen.

Minnedomener

  • Flash: programinstruksjoner og persistente programkonstanter.
  • SRAM: runtime-variabler, .data, .bss, stack og eventuell heap.
  • EEPROM: ikke-flyktige data som håndteres separat fra vanlig SRAM.
  • I/O/registerrom: kontroll- og statusregistre for CPU og peripherals.

Startup

Før main() etablerer runtime normalt nødvendig CPU/runtime-state, kopierer initialiserte data fra Flash-bildet til SRAM og nullstiller .bss.

Seksjoner

Bruk ELF/map/disassembly-verktøyene til å finne .text, .data og .bss. Sammenlign størrelsene med de faktiske grensene i MCU-en.

Stack

Stacken vokser og krymper med funksjonskall, lagrede registre, lokal lagring og interrupts. Mål stack-bevegelsen i Exercise 04 og ISR-øvelsene.

PROGMEM

Store konstante tabeller trenger ikke bruke knapp SRAM. Studer AVR-skillet mellom ordinær dataaksess og programminneaksess før dette skjules bak helper-makroer.

EEPROM

EEPROM er persistent, men har andre aksess-semantikker og begrenset write endurance. Exercise 11 gir den praktiske veien.

Øvelse

For ett firmware-build: regnskapsfør Flash- og SRAM-bruk, identifiser hvor stacken starter, og forklar hvor hvert globalt/statisk objekt initialiseres fra og lagres ved runtime.