- Flash-Skript flasht jetzt das App-Image (ninlight_<dev>_gz.img) mit 460800 baud - -rs none statt -rs rts, Reset-Taste manuell nötig - Optionales Argument 'full' für Vollbild-Flash (blank chips nur) - Checkliste Light und Persistenz als bestanden markiert, Testdatum notiert
62 lines
2.1 KiB
Markdown
62 lines
2.1 KiB
Markdown
# ninlight
|
||
|
||
Lokale Firmware für die alten Klyqa-Lampen mit WinnerMicro W600 (E27/E14/GU10 RGB+CW, E27/E14/GU10 CW, G95 Vintage) und das W600-EVK.
|
||
|
||
## Voraussetzungen
|
||
|
||
- **Docker Desktop** (primärer Build-Pfad, erste Ausführung baut das Image `ninlight-build`)
|
||
- **CMake ≥ 3.20**, Ninja, host C compiler (für Host-Tests)
|
||
- **uv** (für die serielle Konsole)
|
||
- ARM GNU Toolchain mit newlib: `brew install --cask gcc-arm-embedded` (nur Fallback für nativen Build)
|
||
|
||
## Bauen
|
||
|
||
Docker (empfohlen – kein lokaler ARM-Compiler nötig):
|
||
|
||
tools/docker.sh cmake -S . -B build/evk -G Ninja -DCMAKE_TOOLCHAIN_FILE=cmake/arm-none-eabi.cmake -DNINLIGHT_DEVICE=evk
|
||
tools/docker.sh cmake --build build/evk
|
||
tools/docker.sh tools/build_all.sh # alle 8 Geräte
|
||
|
||
Für die tägliche Entwicklung: nur das Gerät bauen, das du verwendest (z.B. `tools/docker.sh cmake --build build/evk`). Der emulierte Docker-Build ist langsam — `build_all.sh` ist nur für Releases gedacht.
|
||
|
||
Native Builds (mit lokal installierter ARM-Toolchain):
|
||
|
||
cmake -S . -B build/evk -G Ninja -DCMAKE_TOOLCHAIN_FILE=cmake/arm-none-eabi.cmake -DNINLIGHT_DEVICE=evk
|
||
cmake --build build/evk
|
||
|
||
**Geräte:** evk, e27_rgb, e14_rgb, gu10_rgb, e27_cw, e14_cw, gu10_cw, g95_cw.
|
||
|
||
**Lokale Einstellungen** (Token, später WLAN): `config.local.cmake.example` → `config.local.cmake`.
|
||
|
||
## Tests
|
||
|
||
Host-basierte Unit-Tests (laufen nativ auf dem Mac):
|
||
|
||
tools/test_host.sh
|
||
|
||
## Flashen und Konsole
|
||
|
||
Verfügbare Ports anzeigen:
|
||
|
||
build/host-tools/wm_tool -l
|
||
|
||
Firmware flashen (Standard: App-Image):
|
||
|
||
tools/flash.sh <device> <port>
|
||
|
||
Das Skript druckt `Bitte bei "please manually reset the device" die Reset-Taste drücken.` — wenn wm_tool diese Nachricht zeigt, musst du die Reset-Taste am EVK drücken (Baud 460800). Für blank/erased Chips: `tools/flash.sh <device> <port> full` (flasht stattdessen das Vollbild mit secboot).
|
||
|
||
Serielle Konsole (115200 8N1, lokales Echo):
|
||
|
||
tools/monitor.sh /dev/cu.<port>
|
||
|
||
Verfügbare Befehle in der Konsole: `help`.
|
||
|
||
## Werksreset
|
||
|
||
Gerät 5× hintereinander einschalten, jeweils kürzer als 5 Sekunden.
|
||
|
||
## Hardwaretests
|
||
|
||
Manuelle Checkliste: `docs/hardware-checklist.md`.
|