Seminar / Training
Inhaltsverzeichnis
- Einordnung
- Kompetenzziele
- Seminarinhalte
- Praxisübungen
- Methodik
- Zielgruppe
- Vorkenntnisse
Einordnung
Der Workshop überträgt die allgemeine oreboot-Portierungsmethodik auf eine K230-basierte CanMV-Zielplattform. Die Arbeit erfolgt vom dokumentierten Resetzustand über frühe Diagnose und Speicherinitialisierung bis zur SBI- und Linux-Übergabe.
Kompetenzziele
- K230-spezifische Boot-, Speicher- und Privilegannahmen für das Zielboard dokumentieren.
- Einen bestehenden Boardpfad reproduzierbar bauen und auf das Laborgerät übertragen.
- UART, frühe Stufe, DRAM, Storage, Device Tree und SBI in klaren Meilensteinen prüfen.
- Abweichungen zwischen Referenzpfad und konkreter Boardrevision systematisch behandeln.
- Einen belastbaren Bootnachweis bis zum Kernelstart erstellen.
Seminarinhalte
Modul 1: Boarddokumentation und technische Vorprüfung
- Schritt 1: Unterlagen ordnen
SoC-Handbuch, Board-Schaltplan, Speicherbestückung, Bootschalter, Pinbelegung und bekannte Errata werden versionsbezogen erfasst.
- Schritt 2: Bootkonfiguration prüfen
Straps, eFuses, Bootreihenfolge, Recovery-Modi und Sicherheitszustände werden für das konkrete Board dokumentiert.
- Schritt 3: Messpunkte festlegen
UART, JTAG, Reset, Versorgungsschienen, Takte und wichtige Chip-Select-Signale werden für das Labor zugänglich gemacht.
- Schritt 4: Risiken bewerten
Fehlende Dokumentation, geschlossene Initialisierungsbestandteile, nicht rücksetzbare Optionen und schwer zugängliche Flashbausteine werden vor Beginn markiert.
Modul 2: Canaan K230 und CanMV-orientierter Boardpfad
- Schritt 1: K230-Startumgebung einordnen
Boot-ROM-Verhalten, RISC-V-Harts, frühe Speicherbereiche und verfügbare Recovery-Wege werden für das Zielboard zusammengestellt.
- Schritt 2: Boarddateien abgleichen
Vorhandene frühe und spätere Stufen, Linkerannahmen, Device Tree und Payloadpositionen werden gegen das konkrete Board geprüft.
- Schritt 3: Peripherie priorisieren
UART, Clock, Reset, DRAM und das vorgesehene Bootmedium werden in einer bring-up-gerechten Reihenfolge bearbeitet.
- Schritt 4: Boot bis Linux nachweisen
Serielle Marker, SBI-Übergabe, Device Tree und Kernelstart werden als zusammenhängender Nachweis dokumentiert.
Modul 3: 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 4: Mainboard-Portierung und schrittweises Bring-up
- Schritt 1: Minimalziel definieren
Erster serieller Marker, stabiler DRAM, lesbares Bootmedium, SBI-Übergabe und Kernelstart werden als aufeinanderfolgende Meilensteine festgelegt.
- Schritt 2: Boardstruktur anlegen
Frühe Stufe, Hauptstufe, Cargo-Dateien, Linkerskripte, Build-Skript, Makefile und Device Tree werden mit minimalen Abhängigkeiten erstellt.
- Schritt 3: Hardware einzeln aktivieren
Clock, Reset, Pinmux, UART, Timer, DRAM und Storage werden nacheinander aktiviert und nach jedem Schritt geprüft.
- Schritt 4: Port stabilisieren
Fehlerpfade, Timeouts, Dokumentation, reproduzierbarer Build, Emulations- oder Hardwaretests und Reviewaufteilung werden ergänzt.
Modul 5: 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 6: UART als frühe Diagnose-Schnittstelle
- Schritt 1: Signalweg klären
SoC-Pins, Pegel, Adapter, Baudrate, Taktquelle und Massebezug werden vor dem ersten Zugriff geprüft.
- Schritt 2: Minimalinitialisierung schreiben
Clock-Gate, Reset, Pinmux, Teiler, Rahmenformat und FIFO werden mit möglichst wenigen Registerzugriffen gesetzt.
- Schritt 3: Bootmarker definieren
Kurze, eindeutige Marker kennzeichnen Reset, DRAM, Storage, SBI und Payload, ohne frühe Stufen unnötig zu vergrößern.
- Schritt 4: Fehler robust erfassen
Timeouts, unplausible Zeichen, falsche Taktrate und blockierende Ausgabe werden mit Alternativprüfungen eingegrenzt.
Modul 7: DRAM-Initialisierung und Speichertraining
- Schritt 1: Parameter beschaffen
Speichertyp, Takt, Topologie, Breite, Ranks, Timingwerte, Spannungen und Boardrouting werden aus belastbaren Hardwareangaben zusammengestellt.
- Schritt 2: Controller vorbereiten
Takt, Reset, PHY, Betriebsmodus, Timingregister und Initialisierungssequenz werden in einer kontrollierten Reihenfolge programmiert.
- Schritt 3: Training überwachen
Statusregister, Wartebedingungen, Timeouts und Fehlercodes werden mit frühen Diagnosemarkern sichtbar gemacht.
- Schritt 4: Speicher validieren
Adressleitungen, Datenmuster, verschiedene Größen, Cachezustände und Grenzbereiche werden vor dem Laden weiterer Stufen geprüft.
Modul 8: SBI und RustSBI als Übergabeschicht
- Schritt 1: SBI-Rolle festlegen
Timer, Interprozessorunterbrechung, Systemreset, Hartzustand und herstellerspezifische Erweiterungen werden zwischen Firmware und Supervisor getrennt.
- Schritt 2: Plattformadapter anbinden
Timerquelle, Interruptmechanismus, Resetpfad und Konsolenausgabe werden in die SBI-Implementierung integriert.
- Schritt 3: Übergaberegister setzen
Hart-ID, Device-Tree-Zeiger, Supervisor-Einstieg, Statusregister und Delegationen werden vor dem Moduswechsel verifiziert.
- Schritt 4: SBI-Aufrufe prüfen
Kernelanforderungen, Fehlercodes, nicht unterstützte Erweiterungen und Systemreset werden mit reproduzierbaren Tests bewertet.
Modul 9: Übergabe an Kernel und Betriebssystem
- Schritt 1: Einstiegsvertrag prüfen
Architekturabhängige Register, Privilegstufe, Interruptzustand, Cachezustand und erwarteter Einstiegspunkt werden festgehalten.
- Schritt 2: Speicher freigeben
Firmwarebereiche, reservierter Speicher, Device Tree, Initramfs und Kernel werden ohne Überlappung an das Betriebssystem übergeben.
- Schritt 3: Gerätebeschreibung abstimmen
Aktivierte Hardware, Konsolenpfad, Speicherkapazität, Interrupts und Bootargumente werden auf Konsistenz geprüft.
- Schritt 4: Startnachweis führen
Letzter Firmwaremarker, erster Kernelmarker, erkannter Speicher, Initialisierung der Konsole und Eintritt in den Userspace werden protokolliert.
Modul 10: Hardwarelabor und Abnahmemessungen
- Schritt 1: Laborzustand standardisieren
Versorgung, Adapter, Kabel, Bootschalter, Flashinhalt, Messgeräte und Hostsoftware werden vor jedem Versuch dokumentiert.
- Schritt 2: Beobachtungspunkte verbinden
Serielle Konsole, JTAG, Logikanalysator und Strommessung werden so vorbereitet, dass Bootphasen zeitlich zugeordnet werden können.
- Schritt 3: Testfälle ausführen
Kaltstart, Warmstart, wiederholter Reset, fehlendes Medium, beschädigtes Abbild und Recovery werden mit festen Erwartungswerten geprüft.
- Schritt 4: Abnahme protokollieren
Firmwarehash, Boardrevision, Messergebnis, Konsolenausgabe, Abweichung und Entscheidung werden in einem reproduzierbaren Prüfprotokoll zusammengeführt.
Praxisübungen
- Eine K230-Boardakte mit Bootmodus, Speicherkarte, Recovery und Messpunkten erstellen.
- Frühe Firmware mit eindeutigen UART-Markern bauen und laden.
- DRAM- und Payloadbereiche anhand von Map-Datei und Speicherprüfung verifizieren.
- Device Tree und SBI-Übergabe für einen kontrollierten Kernelstart abstimmen.
- Einen fehlgeschlagenen Start über Recovery wiederherstellen und 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
Firmwareentwickler, Embedded-Linux-Entwickler, RISC-V-Plattformteams, Board-Support und technische Integrationsverantwortliche.
Vorkenntnisse
Sichere Grundlagen in Rust oder systemnaher Programmierung, RISC-V-Grundkenntnisse, Erfahrung mit serieller Konsole und Cross-Builds. Ein geeignetes K230-Laborsystem ist für den vollständigen Praxisteil erforderlich.
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: | 3 Tage ca. 6 h/Tag, Beginn 1. Tag: 10:00 Uhr, weitere Tage: 09:00 Uhr |
| Preis: |
Öffentlich oder Live Stream: € 1.797 zzgl. MwSt. Inhaus: € 5.100 zzgl. MwSt. |
| Teilnehmeranzahl: | min. 2 - max. 8 |
| Teilnehmer: | Firmwareentwickler, Embedded-Linux-Entwickler, RISC-V-Plattformteams, Board-Support und technische Integrationsverantwortliche. |
| Voraussetzungen: | Sichere Grundlagen in Rust oder systemnaher Programmierung, RISC-V-Grundkenntnisse, Erfahrung mit serieller Konsole und Cross-Builds. Ein geeignetes K230-Laborsystem ist für den vollständigen Praxisteil erforderlich. |
| 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.
