# Workshop Plan (60 Minutes) ## Goal Von Rust-Basics zu echter Hardware auf STM32F103C8 Bluepill: - LED blinken - Button einlesen - Analogwert einlesen - Ausgabe live über `probe-rs` / RTT sehen ## Timing 1. 00:00-00:10: Setup + Probe Smoke Test (`00`) 2. 00:10-00:28: Rust Basics (`01`-`03`) 3. 00:28-00:36: Erstes `no_std` Firmware-Projekt (`04`) 4. 00:36-00:44: LED Blinky (`05`) 5. 00:44-00:50: Button Input (`06`) 6. 00:50-00:56: Analog Readout (`07`) 7. 00:56-01:00: Integration (`08`) ## Rules During Workshop 1. Bearbeite nur `task/`. 2. Nutze `solution/` nur als Hilfe bei Blockern. 3. Falls >3 Minuten blockiert: Diff vergleichen, minimalen Fix übernehmen, weiter. 4. Bei Embedded-Schritten: Board vor jedem `cargo run` korrekt verkabeln. ## Repo Management During Workshop 1. `main` enthält Aufgaben und Referenzlösungen. 2. Instructor kann Wiederherstellungspunkte als Tags setzen: - `step-00-start` ... `step-08-solution` 3. Teilnehmer arbeiten auf lokalem Branch: - `participant/` 4. Wenn eine Aufgabe nicht weitergeht: - minimalen Diff aus `solution/` übernehmen und fortfahren. ## Step Contract Jeder Schritt enthält: - `README.md` mit Ziel, Ablauf, Done-Check - `task/` (Aufgabe) - `solution/` (Referenz) ## Script Contract - `scripts/setup-live.sh` - `scripts/verify-host.sh` - `scripts/verify-probe.sh` - `scripts/run-step.sh ` - `scripts/check-step.sh ` ## Target Contract (Embedded Steps 04-08) - Target: `thumbv7m-none-eabi` - Runner: `probe-rs run --chip STM32F103C8` - Logging: `defmt-rtt` + `panic-probe` ## Acceptance Scenarios 1. Steps `01`-`03`: `cargo run` funktioniert für `task/` und `solution/`. 2. Steps `04`-`08`: `cargo build --release` funktioniert für `task/` und `solution/`. 3. Probe-Verbindung: - `probe-rs list` erkennt ST-Link. 4. Behavior: - `05`: LED blinkt - `06`: Press/Release Logs - `07`: ADC-Wert reagiert auf Eingang - `08`: integriertes Verhalten läuft stabil