Harden firmware state and transfer handling

This commit is contained in:
2026-07-24 09:49:21 +02:00
parent 50dbf8fbee
commit ce5db617a1
27 changed files with 558 additions and 231 deletions
+16 -7
View File
@@ -43,8 +43,9 @@ festgehalten werden.
Firmware-Migration/Versionswechsel, Anpassung der externen GUI und
Aktualisierung von `doc/06_nvm_config.md` sowie
`doc/07_serial_protocol.md`.
- Die Windows-GUI gehört nicht zu diesem Repository. Keine Kompatibilität mit
ihr behaupten, wenn nur die Firmware geändert oder geprüft wurde.
- Die Windows-GUI liegt im benachbarten, eigenständigen Repository
`../VersaGUI`. Bei gemeinsamen Verträgen beide Repositories ändern, prüfen
und jeweils bedarfsgerecht committen. `DelphiGUI` wird nicht gepflegt.
- Die NVM-Adressen liegen am oberen Ende des 128-KiB-Flash. Vor Änderungen an
Linker-Skripten, Boardgrößen oder NVM-Layouts immer
`doc/09_known_limitations.md` lesen.
@@ -52,8 +53,9 @@ festgehalten werden.
großen Stackpuffer und keine Float-Arithmetik in Loop-/ISR-Pfaden einführen.
- ISR-Code muss kurz und nicht blockierend bleiben. Niemals USB, NVM,
WS2812-Ausgabe oder `delay()` aus einer ISR aufrufen.
- Das feste CDC-Protokoll besteht aus 8-Byte-Paketen. Es besitzt aktuell weder
Framing noch Sequenz-/Vollständigkeitsprüfung.
- Das feste CDC-Protokoll besteht aus 8-Byte-Paketen. Blob-Transfers prüfen
Chunkzahl, eindeutige Indizes und Vollständigkeit; paketweises Framing und
eine Makro-CRC gibt es weiterhin nicht.
## Änderungsleitfaden
@@ -81,9 +83,16 @@ git diff --check
```
Für Hardware-, USB-, NVM- oder Timingänderungen zusätzlich einen passenden
Gerätetest beschreiben. Es gibt derzeit keine automatisierten Unit- oder
Integrationstests. Ein erfolgreicher Build beweist daher weder elektrische
Funktion noch GUI-Kompatibilität.
Gerätetest beschreiben. Für die Firmware gibt es derzeit keine automatisierten
Unit- oder Integrationstests. Ein erfolgreicher Build beweist daher weder
elektrische Funktion noch GUI-Kompatibilität.
Bei Änderungen an Config-, Makro- oder CDC-Verträgen zusätzlich:
```bash
dotnet build ../VersaGUI/src/VersaGUI.csproj --no-restore
dotnet run --project ../VersaGUI/tests/VersaGUI.ContractTests/VersaGUI.ContractTests.csproj
```
Vor Abschluss prüfen: