Seminar / Training
Inhaltsverzeichnis
- Einordnung
- Kompetenzziele
- Seminarinhalte
- Praxisübungen
- Methodik
- Zielgruppe
- Vorkenntnisse
Einordnung
Das erste Intensivseminar bündelt Architektur, Einsatzbewertung, Quellbaum, Toolchain, Bare-Metal Rust, Build, QEMU, Bootstufen, Speicherlayout, Device Tree und automatisierte Grundtests. Am Ende steht ein reproduzierbares, analysiertes Firmwareabbild mit dokumentierter Bootkette.
Kompetenzziele
- oreboot fachlich und technisch in eine Zielarchitektur einordnen.
- Eine reproduzierbare Rust- und Cross-Build-Umgebung aufbauen.
- Bare-Metal-Rust-Code, Linkerskript und MMIO-Grenzen sicher strukturieren.
- Bootstufen, Speicherlayout, DTFS und Device Tree konsistent entwerfen.
- Ein Firmwareabbild in QEMU starten, diagnostizieren und automatisiert prüfen.
- Eine belastbare Grundlage für anschließende Board-Portierung schaffen.
Seminarinhalte
Modul 1: Einsatzbild und Entscheidungsrahmen
- Schritt 1: Anforderungen erfassen
Startzeit, kontrollierbarer Quellcode, unterstützte Architektur, Wiederherstellbarkeit und betriebliche Nachweise werden als messbare Kriterien dokumentiert.
- Schritt 2: Systemgrenzen bestimmen
Boot-ROM, frühe Firmware, DRAM-Initialisierung, SBI-Schicht, Payload und Betriebssystem werden getrennt betrachtet, damit Zuständigkeiten eindeutig bleiben.
- Schritt 3: Eignung bewerten
Vorhandene Board-Unterstützung, verfügbare Hardwaredokumentation, Laborzugang und Wartungskapazität werden gegen die Zielplattform geprüft.
- Schritt 4: Einführungsweg festlegen
Für Evaluierung, Prototyp, Pilot und produktiven Einsatz werden Abnahmepunkte, Rückfalloptionen und verantwortliche Rollen definiert.
Modul 2: Architektur und Vertrauensgrenzen
- Schritt 1: Startkette zerlegen
Der Weg vom Resetvektor über SRAM- oder XIP-Code, DRAM-Phase und SBI bis zur Nutzlast wird als überprüfbare Abfolge modelliert.
- Schritt 2: Codeanteile zuordnen
Rust, Assemblereinstieg, generierte Registerzugriffe und unvermeidbare Binärbestandteile werden nach Herkunft und Funktion klassifiziert.
- Schritt 3: Schnittstellen festlegen
Übergabewerte, Speicherbereiche, Device Tree, Konsolenzugriff und Fehlerzustände werden zwischen den Stufen verbindlich beschrieben.
- Schritt 4: Prüfpunkte definieren
Für jede Bootstufe werden beobachtbare Signale, erwartete Seiteneffekte und ein klarer Abbruch- oder Recovery-Pfad festgelegt.
Modul 3: Quellbaum, Mainboards und Build-Zusammenhang
- Schritt 1: Verzeichnisstruktur lesen
Workspace, Architekturcode, SoC-Unterstützung, Mainboard-Verzeichnisse, Bibliotheken und Werkzeuge werden funktional zugeordnet.
- Schritt 2: Boardpfad nachvollziehen
Die Trennung von früher Stufe und Hauptstufe sowie die Rollen von Cargo-Konfiguration, Linkerskript, Build-Skript und Makefile werden untersucht.
- Schritt 3: Abhängigkeiten prüfen
Crates, Features, Zielarchitektur und lokale Pfade werden auf Reproduzierbarkeit, unnötige Kopplung und Plattformabhängigkeit geprüft.
- Schritt 4: Änderungsumfang planen
Neue Treiber, SoC-Bausteine, Boarddateien, Dokumentation und Tests werden als getrennte, reviewfähige Arbeitspakete vorbereitet.
Modul 4: Entwicklungsumgebung und Rust-Toolchain
- Schritt 1: Werkzeugbestand erfassen
Rust-Toolchain, Cross-Compiler, Binutils, Device-Tree-Compiler, Emulator, serielle Werkzeuge und Flash-Hilfen werden versioniert dokumentiert.
- Schritt 2: Zielplattform einrichten
Target-Spezifikation, Runner, Linker, Rust-Quellenkomponenten und benötigte Cargo-Erweiterungen werden reproduzierbar konfiguriert.
- Schritt 3: Build-Umgebung isolieren
Pfadabhängigkeiten, Umgebungsvariablen, Cache-Verhalten und lokale Werkzeuge werden so festgelegt, dass mehrere Arbeitsplätze gleiche Artefakte erzeugen.
- Schritt 4: Diagnose durchführen
Fehlende Targets, Linkerfehler, inkompatible Nightly-Funktionen und Werkzeugsuchpfade werden anhand eines systematischen Prüfablaufs eingegrenzt.
Modul 5: Bare-Metal Rust und kontrollierte Unsicherheit
- Schritt 1: Laufzeit minimieren
No-Standard-Library-Aufbau, eigener Einstieg, Panic-Behandlung und statische Speicherverwaltung werden für die frühe Firmware eingerichtet.
- Schritt 2: Unsichere Grenzen kapseln
MMIO, Inline-Assembler, rohe Zeiger und volatile Zugriffe werden in kleine, dokumentierte Schnittstellen mit klaren Vorbedingungen eingeschlossen.
- Schritt 3: Fehlerzustände modellieren
Initialisierungsfehler, Timeouts, ungültige Registerwerte und nicht verfügbare Geräte werden ohne dynamische Laufzeit kontrolliert behandelt.
- Schritt 4: Codegröße bewerten
Monomorphisierung, Formatierungsausgaben, Panic-Pfade, Optimierungsstufen und Link-Time-Optimierung werden auf Firmwaregröße und Diagnosefähigkeit abgestimmt.
Modul 6: Resetvektor, Assemblereinstieg und Linkerskript
- Schritt 1: Einstiegspunkt festlegen
Resetadresse, Symbolname, Ausrichtungsanforderungen und der Übergang vom Assemblereinstieg zu Rust werden eindeutig definiert.
- Schritt 2: Minimalzustand herstellen
Stackzeiger, globale Pointer, BSS-Löschung, erforderliche Register und mehrere Harts werden kontrolliert initialisiert.
- Schritt 3: Sektionen platzieren
Code, schreibgeschützte Daten, initialisierte Daten, BSS, Stack und eingebettete Binärdaten werden passenden Speicherbereichen zugewiesen.
- Schritt 4: Abbild prüfen
Map-Datei und Disassemblierung werden genutzt, um Einstieg, Sprungweiten, Adressen und unerwartete Laufzeitabhängigkeiten zu kontrollieren.
Modul 7: Build, Artefakte und Reproduzierbarkeit
- Schritt 1: Boardziel auswählen
Mainboard, Architektur, Feature-Satz, Payload und Ausgabeziel werden in einem nachvollziehbaren Build-Aufruf zusammengeführt.
- Schritt 2: Zwischenprodukte untersuchen
ELF-Dateien, Binärabbilder, Map-Dateien, Disassemblierung und Größeninformationen werden den Bootstufen zugeordnet.
- Schritt 3: Layout kontrollieren
Startadressen, Sektionen, Ausrichtung, BSS, Stack, eingebettete Daten und freie Bereiche werden gegen das geplante Speicherlayout geprüft.
- Schritt 4: Buildvergleich etablieren
Hashwerte, Werkzeugversionen, Buildprotokoll und deterministische Parameter werden für wiederholbare Ergebnisse erfasst.
Modul 8: Bootflow und Stufenmodell
- Schritt 1: Resetzustand bestimmen
Ausführungsadresse, Privilegstufe, verfügbare Speicherbereiche, Registerzustand und Bootmedium werden aus der Plattformbeschreibung abgeleitet.
- Schritt 2: Frühe Stufe strukturieren
Stack, minimale Takt- und Pin-Konfiguration, UART-Marker sowie der Übergang aus SRAM oder XIP werden in fester Reihenfolge geplant.
- Schritt 3: Hauptstufe laden
Nach verfügbarer DRAM-Kapazität werden Firmwarebestandteile, Device Tree und Payload adresssicher in den Arbeitsspeicher übertragen.
- Schritt 4: Nutzlast übergeben
SBI-Umgebung, Hart-ID, Device-Tree-Adresse, Einstiegspunkt und Fehlerbehandlung werden vor dem Sprung zur Nutzlast geprüft.
Modul 9: Speicherlayout, Firmwareabbild und DTFS
- Schritt 1: Adressräume erfassen
Boot-ROM, SRAM, Memory-Mapped Flash, DRAM, Gerätefenster und reservierte Bereiche werden in einer gemeinsamen Karte dokumentiert.
- Schritt 2: Abbild gliedern
Frühe Stufe, Hauptstufe, Device Tree, Payload und optionale Konfigurationsdaten erhalten feste, ausgerichtete Bereiche.
- Schritt 3: DTFS aufbauen
Dateinamen, Offsets, Größen, Ausrichtung und maximale Kapazität werden so definiert, dass Loader und Buildwerkzeuge dieselbe Struktur verwenden.
- Schritt 4: Grenzfälle testen
Zu große Payloads, überlappende Bereiche, falsche Ausrichtung und unvollständige Abbilder werden vor dem Flashen erkannt.
Modul 10: Device Tree, DTB und Hardwarebeschreibung
- Schritt 1: Hardwareknoten erfassen
CPU, Speicher, UART, Timer, Interruptcontroller, Flash, SD-Schnittstelle und reservierte Speicherbereiche werden fachlich geprüft.
- Schritt 2: Bootparameter pflegen
Konsolenpfad, Kernelparameter, Initrd-Bereich und gewählte Knoten werden für die geplante Nutzlast konsistent gesetzt.
- Schritt 3: DTB erzeugen und prüfen
Quellbaum, Includes, Kompilierung, Deassemblierung und strukturelle Plausibilitätsprüfung werden als fester Arbeitsablauf ausgeführt.
- Schritt 4: Übergabe verifizieren
Adresse, Größe, Speicherüberlappung und tatsächlich vom Betriebssystem erkannte Hardware werden mit der Firmwarekonfiguration abgeglichen.
Modul 11: QEMU-Emulation und kontrollierter Erststart
- Schritt 1: Maschinenmodell vorbereiten
CPU, Arbeitsspeicher, Firmwareabbild, serielle Konsole, Laufwerke und Payload werden als reproduzierbares Emulationsprofil festgelegt.
- Schritt 2: Bootausgabe beobachten
Frühe Marker, UART-Ausgabe, SBI-Meldungen, Device-Tree-Übergabe und Kernelstart werden einer erwarteten Sequenz gegenübergestellt.
- Schritt 3: Fehler gezielt erzeugen
Fehlende Payload, falsche Adresse, beschädigtes Dateisystem und ungültiger Device Tree werden als Negativfälle getestet.
- Schritt 4: Testlauf automatisieren
Timeout, erwartete Konsolenmuster, Rückgabestatus und Artefaktsicherung werden in einen wiederholbaren Testschritt überführt.
Modul 12: Testautomatisierung und Continuous Integration
- Schritt 1: Prüfmatrix bilden
Architekturen, Mainboards, Features, Debug- und Release-Builds sowie Payloadvarianten werden in einer wartbaren Matrix zusammengefasst.
- Schritt 2: Statische Prüfungen integrieren
Formatierung, Lints, Abhängigkeitskontrollen, Dokumentationsprüfung und Größenlimits werden vor dem Laufzeittest ausgeführt.
- Schritt 3: Boottests ausführen
Emulationsstart, serielle Sollmuster, Zeitgrenzen und definierte Fehlerfälle werden automatisch bewertet.
- Schritt 4: Artefakte sichern
Buildprotokolle, Firmwareabbilder, Disassemblierungen, Größenberichte und Testergebnisse werden je Änderung nachvollziehbar archiviert.
Praxisübungen
- Eignungsmatrix und Bootkettenmodell für eine Beispielplattform erstellen.
- Reproduzierbare Toolchain einrichten und Debug- sowie Release-Artefakte bauen.
- Minimalen Bare-Metal-Rust-Einstieg mit UART-Abstraktion entwickeln.
- Speicherkarte, DTFS, Device Tree und Payloadbereiche zusammenführen.
- QEMU-Boot mit positiven und negativen Testfällen automatisieren.
- Alle Ergebnisse in einer technischen Übergabedokumentation konsolidieren.
Methodik
Fachliche Einordnung, kommentierte Demonstrationen und schrittweise Laboraufgaben werden eng miteinander verbunden. Jeder Arbeitsabschnitt beginnt mit einem überprüfbaren Zielzustand, wird anhand von Konsolen-, Build- oder Messdaten kontrolliert und endet mit einer dokumentierten Fehler- oder Abnahmeprüfung. Vorbereitete Negativfälle verhindern, dass ausschließlich der erfolgreiche Idealfall betrachtet wird.
Zielgruppe
Firmware- und Embedded-Rust-Entwicklung, technische Architektur, Build- und Testverantwortliche sowie Teams vor einer oreboot-Portierung.
Vorkenntnisse
Sichere Rust-Grundlagen, Linux-Kommandozeile, Git und Basiswissen zu Rechnerarchitektur und Embedded Linux. Erfahrung mit Cross-Compilern ist hilfreich.
Fachbereichsleitung und Trainingskoordination
-

Lucas Beich
Telefon: + 49 (221) 74740055
E-Mail: lucas.beich@seminar-experts.de -

Paul Goldschmidt
Telefon: + 49 (221) 74740055
E-Mail: paul.goldschmidt@seminar-experts.de
Seminardetails
| Dauer: | 5 Tage ca. 6 h/Tag, Beginn 1. Tag: 10:00 Uhr, weitere Tage: 09:00 Uhr |
| Preis: |
Öffentlich oder Live Stream: € 2.995 zzgl. MwSt. Inhaus: € 8.500 zzgl. MwSt. |
| Teilnehmeranzahl: | min. 2 - max. 8 |
| Teilnehmer: | Firmware- und Embedded-Rust-Entwicklung, technische Architektur, Build- und Testverantwortliche sowie Teams vor einer oreboot-Portierung. |
| Voraussetzungen: | Sichere Rust-Grundlagen, Linux-Kommandozeile, Git und Basiswissen zu Rechnerarchitektur und Embedded Linux. Erfahrung mit Cross-Compilern ist hilfreich. |
| Standorte: | Stream Live, Inhaus/Firmenseminar, Berlin, Bremen, Darmstadt, Dresden, Erfurt, Essen, Flensburg, Frankfurt, Freiburg, Friedrichshafen, Hamburg, Hamm, Hannover, Jena, Kassel, Köln, Konstanz, Leipzig, Luxemburg, Magdeburg, Mainz, München, Münster, Nürnberg, Paderborn, Potsdam, Regensburg, Rostock, Stuttgart, Trier, Ulm, Wuppertal, Würzburg |
| Methoden: | Fachvortrag, kommentierte Demonstrationen, schrittweise Laborübungen und dokumentierte Fehleranalyse |
| Seminararten: | Öffentlich, Webinar, Inhouse, Workshop - Durchführung mit Trainer vor Ort; Webinar nur bei ausdrücklicher Festlegung |
| Durchführungsgarantie: | ja, ab 2 Teilnehmern |
| Sprache: | Deutsch - bei Firmenseminaren ist auch Englisch möglich |
| Seminarunterlage: | Dokumentation auf Datenträger oder als Download |
| Teilnahmezertifikat: | ja, selbstverständlich |
| Verpflegung: | Kalt- und Warmgetränke, Mittagessen wahlweise vegetarisch |
| Support: | 3 Anrufe im Seminarpreis enthalten |
| Barrierefreier Zugang: | an den meisten Standorten verfügbar |
| Weitere Informationen unter + 49 (221) 74740055 |
Seminartermine
Die Ergebnissliste kann durch Anklicken der Überschrift neu sortiert werden.
