EduAVR — kursoversikt¶
EduAVR lærer AVR fra maskinvaren og opp, med Assembly og C side om side.
Single source of truth
Denne Markdown-filen og de øvrige leksjonene er selve kurset. GitHub Pages genererer HTML direkte fra Markdown-kildene.
Grunnløp¶
- Kursprinsipper
- Åpen AVR-verktøykjede
- AVR-arkitektur
- GPIO
- Stack og funksjoner
- Timere og avbrudd
- PWM
- USART
- Dual-UART-bro
- SPI
- TWI / I²C
- EEPROM
- ADC
- Pekere, buffere og structs
- volatile, interrupts og atomicitet
- SRAM- og stackbudsjett
M6-utvidelse — optimalisering og kodeanalyse¶
Leksjon 17 legger til sammenligning av optimaliseringsnivåer og analyse av generert Assembly, med parede C/Assembly-eksempler og Q1-evidens.
Planlagt utvidelse¶
Milepæl-kobling: M7 = nettverk/Home Assistant, M8 = capstone-prosjekter. Dette er fortsatt roadmap-stoff til leksjoner, eksempler og kvalifikasjonsevidens er ferdig.
Følgende emner er ikke ferdige publiserte kjerneleksjoner ennå:
- compiler-optimalisering/disassembly
- små gjenbrukbare drivere
- systemintegrasjon
- capstone-prosjekt
Arbeidsmåte¶
Hver leksjon kombinerer teori med praktisk inspeksjon av maskinen. Bygg C og Assembly, undersøk disassembly, bruk simulatoren i størst praktisk mulig grad der den gir gyldig evidens, og gå til fysisk maskinvare bare når oppgaven avhenger av elektrisk eller annen ikke-modellert oppførsel.
Referanseappendikser¶
Publiserte appendikser:
- A — AVR og Arduino
- B — Debugging AVR
- C — Disassembly og reverse engineering
- D — C ↔ Assembly og compiler
- E — Minne og internals
- F — Programmering og bootloadere
- G — Elektronikk for AVR-programmerere
- H — Protokollanalyse
- I — Ytelse og optimalisering
- J — Testing og kvalifikasjon
- K — Bygg ditt eget AVR-board
- L — AVR for retro computing
- M — Overlevelsesguide for datablad
- Utvidet guide — Slik leser du AVR-datablader
Disse kildene finnes nå i begge språkspor. Semantisk paritet vurderes separat fra at filene bare finnes.
M6-utvidelse — analyse av kodestørrelse og SRAM¶
Leksjon 18 gjør ELF-seksjons- og symboldata om til en reproduserbar Flash/SRAM-rapport, mens dynamisk stackbruk holdes som en separat runtime-måling.