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
  2. Systemstart & Remapping
  3. Assembler: Pro & Contra
  4. Ausblick
  5. Prüfungsrelevanz

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):
    1. Interrupt Controller (AIC) initialisieren.
    2. Vektortabelle vom Flash ins interne RAM kopieren.
    3. Remapping (RAM an Adresse 0 sichtbar).
    4. Stacks + Stackpointer für alle Modi definieren.
    5. Variablen initialisieren (BSS löschen, Daten kopieren).
    6. 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.

Kap. 10 Leitungscodes & CRC · Startseite