Kapitel 11 - Weiterführende Themen (Thumb, Systemstart, Assembler)
← Startseite · Kap. 10 Leitungscodes & CRC · 11 Weiterführende Themen Verwandt: ARM-Architektur · Kap. 1 §7 C-Deklarationen Quellen: [Q: ZF §12] (keine eigenen Folien)
Inhalt
1. Thumb-Befehlssatz
16-Bit-Befehlssatz zur Verbesserung der Codedichte.
- Eigenschaften: Befehle 16 Bit → ca. 65 % der Codegröße gegenüber 32-Bit-ARM. Zusätzlicher Ausführungszustand (T-Bit im CPSR gesetzt), Umschalten per
BX-Befehl. - Vorteile: höhere Codedichte, energieeffizienter bei externem Speicher, schneller auf 16-Bit-Speichersystemen.
- Nachteile: ~40 % langsamer auf 32-Bit-Speicher, eingeschränkter Registerzugriff (meist R0–R7), keine bedingte Ausführung (außer Branches).
- HW-Umsetzung: „Thumb Decompressor" in der Pipeline wandelt 16-Bit-Befehle zur Laufzeit in native ARM-Befehle.
- Thumb-2 (Cortex-M3): mischt 16- und 32-Bit-Befehle → Dichte von Thumb + Leistung von ARM, ohne explizites Umschalten.
2. Systemstart & Remapping
Beim Power-Up startet der Prozessor an Adresse 0x00000000.
- Problem: Zum Start muss dort nicht-flüchtiger Speicher (ROM/Flash) liegen; im Betrieb will man dort aber oft RAM (flexible Interrupt-Vektortabelle).
- Lösung - Remapping: Ein Memory Controller (z. B. EBI beim AT91) blendet nach dem Start RAM über den ROM-Bereich an Adresse 0 ein.
- Boot-Ablauf (AT91):
- Interrupt Controller (AIC) initialisieren.
- Vektortabelle vom Flash ins interne RAM kopieren.
- Remapping (RAM an Adresse 0 sichtbar).
- Stacks + Stackpointer für alle Modi definieren.
- Variablen initialisieren (BSS löschen, Daten kopieren).
- Sprung nach
main().
Bezug: Speicheraufteilung .text (Code+Konstanten), .data (initialisierte Daten), .bss (uninitialisiert), Stack ([Q: EI S. 28]).
3. Assembler-Programmierung: Pro & Contra
Dafür: tiefste Systemroutinen (Context Switch, Startup-Code), direkter HW-Zugriff/Inbetriebnahme, zeitkritische ISRs, extreme Optimierung, Verständnis des Compiler-Outputs. Dagegen: geringe Produktivität (Faktor 5–10 schlechter), teuer, schlechte Lesbarkeit/Wartbarkeit/Portierbarkeit (prozessorspezifisch). Relevanz heute: in großen Projekten (Linux-Kernel, OpenOffice) < 3 % bzw. ~0 % Assembler.
4. Ausblick: Mikrocontroller-Landschaft
- Hobby/Maker: Arduino, Raspberry Pi, ESP32.
- Industrie/Automotive: Infineon Aurix, NXP, Renesas.
- Trends: IoT (Low-Energy, Wireless), Embedded AI (NPU-Integration).
- Bewusstsein für Ressourcen (Speicher, Energie) nötig.
Prüfungsrelevanz
- Thumb: Zweck (Codedichte), T-Bit, ~65 % Größe, Einschränkungen; Thumb-2 mischt.
- Remapping: Start bei
0x0, ROM→RAM tauschen für Vektortabelle; Boot-Ablauf grob. - Assembler-Pro/Contra als Kurzfrage.