Seminar oreboot SoC-Enablement mit PAC, HAL und SVD

Seminar / Training

Inhaltsverzeichnis

  • Einordnung
  • Kompetenzziele
  • Seminarinhalte
  • Praxisübungen
  • Methodik
  • Zielgruppe
  • Vorkenntnisse

Einordnung

Das Seminar entwickelt aus Hardwaredokumentation und SVD-Beschreibung eine wartbare SoC-Schicht. Generierter PAC, sichere Registerzugriffe, Clock und Reset, Pinmux, UART, Timer, Speicher- und Storagebausteine sowie die Trennung zwischen SoC, HAL und Mainboard werden praktisch umgesetzt.

Kompetenzziele

  • Qualität und Lücken einer SVD-Beschreibung systematisch bewerten.
  • Einen reproduzierbaren PAC mit stabilen Namen und Features erzeugen.
  • Registerzugriffe und Seiteneffekte sicher typisieren und testen.
  • HAL-Grenzen für Clock, Reset, GPIO, UART und Timer entwerfen.
  • SoC- und Mainboardcode mit klaren Verantwortlichkeiten trennen.
  • SoC-Unterstützung mit Dokumentation, Tests und Reviewstruktur abschließen.

Seminarinhalte

Modul 1: Boarddokumentation und technische Vorprüfung

  1. Schritt 1: Unterlagen ordnen

    SoC-Handbuch, Board-Schaltplan, Speicherbestückung, Bootschalter, Pinbelegung und bekannte Errata werden versionsbezogen erfasst.

  2. Schritt 2: Bootkonfiguration prüfen

    Straps, eFuses, Bootreihenfolge, Recovery-Modi und Sicherheitszustände werden für das konkrete Board dokumentiert.

  3. Schritt 3: Messpunkte festlegen

    UART, JTAG, Reset, Versorgungsschienen, Takte und wichtige Chip-Select-Signale werden für das Labor zugänglich gemacht.

  4. Schritt 4: Risiken bewerten

    Fehlende Dokumentation, geschlossene Initialisierungsbestandteile, nicht rücksetzbare Optionen und schwer zugängliche Flashbausteine werden vor Beginn markiert.

Modul 2: SVD-basierte SoC-Erschließung

  1. Schritt 1: Beschreibungsqualität prüfen

    Peripherieblöcke, Adressen, Registerbreiten, Felder, Enumerationen, Resetwerte und bekannte Lücken werden gegen das Handbuch abgeglichen.

  2. Schritt 2: PAC generieren

    Namenskonventionen, Feature-Aufteilung, Generierungsparameter und reproduzierbare Erzeugung werden im Projekt festgelegt.

  3. Schritt 3: Abweichungen korrigieren

    Fehlerhafte Offsets, fehlende Felder und herstellerspezifische Sonderfälle werden dokumentiert und möglichst an der Beschreibungsquelle behoben.

  4. Schritt 4: HAL-Grenzen entwerfen

    Wiederkehrende Abläufe für UART, GPIO, Clock, Reset und Speichercontroller werden oberhalb der Registerebene stabil gekapselt.

Modul 3: Registerzugriffe, PAC und HAL

  1. Schritt 1: Registermodell auswählen

    Manuelle Registerdefinition, generierter Peripheral Access Crate und Hardware-Abstraction-Layer werden nach Dokumentationslage und Wiederverwendbarkeit bewertet.

  2. Schritt 2: Zugriffe typisieren

    Lesen, Schreiben, Read-Modify-Write, reservierte Bits und write-one-to-clear-Verhalten werden in sichere Bedienmuster überführt.

  3. Schritt 3: Takt und Reset berücksichtigen

    Vor jedem Peripheriezugriff werden Clock-Gates, Resetleitungen, Pin-Multiplexing und notwendige Wartezeiten geprüft.

  4. Schritt 4: Seiteneffekte testen

    Registerwerte, externe Signale, Timeout-Verhalten und Wiederholbarkeit werden mit serieller Diagnose und Messmitteln validiert.

Modul 4: Bare-Metal Rust und kontrollierte Unsicherheit

  1. Schritt 1: Laufzeit minimieren

    No-Standard-Library-Aufbau, eigener Einstieg, Panic-Behandlung und statische Speicherverwaltung werden für die frühe Firmware eingerichtet.

  2. Schritt 2: Unsichere Grenzen kapseln

    MMIO, Inline-Assembler, rohe Zeiger und volatile Zugriffe werden in kleine, dokumentierte Schnittstellen mit klaren Vorbedingungen eingeschlossen.

  3. Schritt 3: Fehlerzustände modellieren

    Initialisierungsfehler, Timeouts, ungültige Registerwerte und nicht verfügbare Geräte werden ohne dynamische Laufzeit kontrolliert behandelt.

  4. Schritt 4: Codegröße bewerten

    Monomorphisierung, Formatierungsausgaben, Panic-Pfade, Optimierungsstufen und Link-Time-Optimierung werden auf Firmwaregröße und Diagnosefähigkeit abgestimmt.

Modul 5: Resetvektor, Assemblereinstieg und Linkerskript

  1. Schritt 1: Einstiegspunkt festlegen

    Resetadresse, Symbolname, Ausrichtungsanforderungen und der Übergang vom Assemblereinstieg zu Rust werden eindeutig definiert.

  2. Schritt 2: Minimalzustand herstellen

    Stackzeiger, globale Pointer, BSS-Löschung, erforderliche Register und mehrere Harts werden kontrolliert initialisiert.

  3. Schritt 3: Sektionen platzieren

    Code, schreibgeschützte Daten, initialisierte Daten, BSS, Stack und eingebettete Binärdaten werden passenden Speicherbereichen zugewiesen.

  4. Schritt 4: Abbild prüfen

    Map-Datei und Disassemblierung werden genutzt, um Einstieg, Sprungweiten, Adressen und unerwartete Laufzeitabhängigkeiten zu kontrollieren.

Modul 6: UART als frühe Diagnose-Schnittstelle

  1. Schritt 1: Signalweg klären

    SoC-Pins, Pegel, Adapter, Baudrate, Taktquelle und Massebezug werden vor dem ersten Zugriff geprüft.

  2. Schritt 2: Minimalinitialisierung schreiben

    Clock-Gate, Reset, Pinmux, Teiler, Rahmenformat und FIFO werden mit möglichst wenigen Registerzugriffen gesetzt.

  3. Schritt 3: Bootmarker definieren

    Kurze, eindeutige Marker kennzeichnen Reset, DRAM, Storage, SBI und Payload, ohne frühe Stufen unnötig zu vergrößern.

  4. Schritt 4: Fehler robust erfassen

    Timeouts, unplausible Zeichen, falsche Taktrate und blockierende Ausgabe werden mit Alternativprüfungen eingegrenzt.

Modul 7: DRAM-Initialisierung und Speichertraining

  1. Schritt 1: Parameter beschaffen

    Speichertyp, Takt, Topologie, Breite, Ranks, Timingwerte, Spannungen und Boardrouting werden aus belastbaren Hardwareangaben zusammengestellt.

  2. Schritt 2: Controller vorbereiten

    Takt, Reset, PHY, Betriebsmodus, Timingregister und Initialisierungssequenz werden in einer kontrollierten Reihenfolge programmiert.

  3. Schritt 3: Training überwachen

    Statusregister, Wartebedingungen, Timeouts und Fehlercodes werden mit frühen Diagnosemarkern sichtbar gemacht.

  4. Schritt 4: Speicher validieren

    Adressleitungen, Datenmuster, verschiedene Größen, Cachezustände und Grenzbereiche werden vor dem Laden weiterer Stufen geprüft.

Modul 8: SPI-Flash und Firmwarezugriff

  1. Schritt 1: Controller initialisieren

    Takt, Pin-Multiplexing, Chip-Select, Modus, Wortbreite und sichere Anfangsfrequenz werden gesetzt.

  2. Schritt 2: Baustein identifizieren

    JEDEC-Kennung, Kapazität, Adressmodus, Statusregister und Schutzbits werden ausgelesen und plausibilisiert.

  3. Schritt 3: Lesepfad implementieren

    Befehl, Adresse, Dummy-Zyklen, Transfergrenzen und Timeout werden in einen kleinen, testbaren Treiber überführt.

  4. Schritt 4: Schreibschutz beachten

    Löschen, Programmieren, Busy-Prüfung, Verifikation und Recovery werden getrennt vom normalen Boot-Lesepfad behandelt.

Modul 9: SD- und eMMC-Zugriff

  1. Schritt 1: Hostcontroller starten

    Clock, Reset, Pins, Versorgung und Identifikationsfrequenz werden vor der Kartenkommunikation geprüft.

  2. Schritt 2: Medium identifizieren

    Resetfolge, Fähigkeiten, Kapazität, Blocklänge und Busbreite werden mit klaren Timeouts ermittelt.

  3. Schritt 3: Blockleser aufbauen

    Einzel- und Mehrblockzugriff, DMA- oder PIO-Pfad, Alignment, Cachebehandlung und Fehlercodes werden implementiert.

  4. Schritt 4: Bootdaten prüfen

    DTFS- oder Payloadbereiche werden blockweise gelesen, auf Grenzen geprüft und vor der Ausführung verifiziert.

Modul 10: Mainboard-Portierung und schrittweises Bring-up

  1. Schritt 1: Minimalziel definieren

    Erster serieller Marker, stabiler DRAM, lesbares Bootmedium, SBI-Übergabe und Kernelstart werden als aufeinanderfolgende Meilensteine festgelegt.

  2. Schritt 2: Boardstruktur anlegen

    Frühe Stufe, Hauptstufe, Cargo-Dateien, Linkerskripte, Build-Skript, Makefile und Device Tree werden mit minimalen Abhängigkeiten erstellt.

  3. Schritt 3: Hardware einzeln aktivieren

    Clock, Reset, Pinmux, UART, Timer, DRAM und Storage werden nacheinander aktiviert und nach jedem Schritt geprüft.

  4. Schritt 4: Port stabilisieren

    Fehlerpfade, Timeouts, Dokumentation, reproduzierbarer Build, Emulations- oder Hardwaretests und Reviewaufteilung werden ergänzt.

Modul 11: Testautomatisierung und Continuous Integration

  1. Schritt 1: Prüfmatrix bilden

    Architekturen, Mainboards, Features, Debug- und Release-Builds sowie Payloadvarianten werden in einer wartbaren Matrix zusammengefasst.

  2. Schritt 2: Statische Prüfungen integrieren

    Formatierung, Lints, Abhängigkeitskontrollen, Dokumentationsprüfung und Größenlimits werden vor dem Laufzeittest ausgeführt.

  3. Schritt 3: Boottests ausführen

    Emulationsstart, serielle Sollmuster, Zeitgrenzen und definierte Fehlerfälle werden automatisch bewertet.

  4. Schritt 4: Artefakte sichern

    Buildprotokolle, Firmwareabbilder, Disassemblierungen, Größenberichte und Testergebnisse werden je Änderung nachvollziehbar archiviert.

Modul 12: Upstream-Entwicklung und reviewfähige Änderungen

  1. Schritt 1: Änderung zerlegen

    Infrastruktur, generischer Treiber, SoC-Unterstützung, Mainboardcode, Device Tree, Dokumentation und Tests werden in logisch getrennte Beiträge aufgeteilt.

  2. Schritt 2: Commitqualität herstellen

    Jeder Commit erhält einen klaren Zweck, baut eigenständig, enthält keine Nebenänderungen und beschreibt beobachtbares Verhalten.

  3. Schritt 3: Review vorbereiten

    Hardwarevoraussetzungen, Testablauf, Konsolenausgabe, bekannte Einschränkungen und Sicherheitsauswirkungen werden nachvollziehbar dokumentiert.

  4. Schritt 4: Rückmeldungen einarbeiten

    Technische Einwände werden reproduziert, Änderungen gezielt überarbeitet und neue Testnachweise ohne unnötiges Umschreiben der Historie ergänzt.

Praxisübungen

  • Eine SVD-Datei gegen eine ausgewählte Registergruppe plausibilisieren.
  • PAC erzeugen und eine kontrollierte Registerinitialisierung implementieren.
  • Clock-, Reset- und Pinmux-Helfer als kleine HAL-Schicht gestalten.
  • UART- und Timerpfad mit Timeouts und Tests anbinden.
  • SoC-Abstraktion in einen minimalen Mainboardpfad integrieren.
  • Generierungs- und Testablauf für spätere Aktualisierungen dokumentieren.

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

SoC- und Firmwareentwickler, Embedded-Rust-Teams, Plattformarchitektur, Chip-Enablement und technische Maintainer.

Vorkenntnisse

Sichere Rust-Kenntnisse, MMIO und Rechnerarchitektur, Erfahrung mit Datenblättern und Linkerskripten. Grundkenntnisse in XML- oder SVD-Strukturen sind hilfreich.

Fachbereichsleitung und Trainingskoordination

Seminardetails

   
Dauer: 4 Tage ca. 6 h/Tag, Beginn 1. Tag: 10:00 Uhr, weitere Tage: 09:00 Uhr
Preis: Öffentlich oder Live Stream: € 2.396 zzgl. MwSt.
Inhaus: € 6.800 zzgl. MwSt.
Teilnehmeranzahl: min. 2 - max. 8
Teilnehmer: SoC- und Firmwareentwickler, Embedded-Rust-Teams, Plattformarchitektur, Chip-Enablement und technische Maintainer.
Voraussetzungen: Sichere Rust-Kenntnisse, MMIO und Rechnerarchitektur, Erfahrung mit Datenblättern und Linkerskripten. Grundkenntnisse in XML- oder SVD-Strukturen sind 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.

Seminar Startdatum Enddatum Ort Dauer
Basel 4 Tage
Winterthur 4 Tage
Zürich 4 Tage
Stream live 4 Tage
Stream gespeichert 4 Tage
Luzern 4 Tage
Bern 4 Tage
Inhaus / Firmenseminar 4 Tage
Sankt Gallen 4 Tage
Sankt Gallen 4 Tage
Basel 4 Tage
Winterthur 4 Tage
Zürich 4 Tage
Stream live 4 Tage
Stream gespeichert 4 Tage
Luzern 4 Tage
Bern 4 Tage
Inhaus / Firmenseminar 4 Tage
Inhaus / Firmenseminar 4 Tage
Sankt Gallen 4 Tage
Basel 4 Tage
Winterthur 4 Tage
Zürich 4 Tage
Stream live 4 Tage
Stream gespeichert 4 Tage
Luzern 4 Tage
Bern 4 Tage
Luzern 4 Tage
Bern 4 Tage
Inhaus / Firmenseminar 4 Tage
Sankt Gallen 4 Tage
Basel 4 Tage
Winterthur 4 Tage
Zürich 4 Tage
Stream live 4 Tage
Stream gespeichert 4 Tage
Stream gespeichert 4 Tage
Luzern 4 Tage
Bern 4 Tage
Inhaus / Firmenseminar 4 Tage
Nach oben
Seminare als Stream SRI zertifiziert
© 2026 www.seminar-experts.ch All rights reserved.  | Kontakt | Impressum | Nach oben