diff --git a/README.md b/README.md index ac375f1..c543ac4 100644 --- a/README.md +++ b/README.md @@ -17,6 +17,8 @@ Docker (empfohlen – kein lokaler ARM-Compiler nötig): 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 @@ -38,10 +40,12 @@ Verfügbare Ports anzeigen: build/host-tools/wm_tool -l -Firmware flashen: +Firmware flashen (Standard: App-Image): tools/flash.sh +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 full` (flasht stattdessen das Vollbild mit secboot). + Serielle Konsole (115200 8N1, lokales Echo): tools/monitor.sh /dev/cu. diff --git a/docs/hardware-checklist.md b/docs/hardware-checklist.md index 9488be3..7d41c5c 100644 --- a/docs/hardware-checklist.md +++ b/docs/hardware-checklist.md @@ -3,23 +3,24 @@ Konsole: `tools/monitor.sh /dev/cu.` (115200 8N1). Flashen: `tools/flash.sh evk `. ## Licht (Plan 1, Task 11) -- [ ] Nach dem Boot blendet warmweiß 100 % in 0,5 s ein -- [ ] `rgb 255 0 0` → nur Rot, `rgb 0 255 0` → nur Grün, `rgb 0 0 255` → nur Blau -- [ ] `ct 2700` → nur Warmweiß, `ct 6500` → nur Kaltweiß, `ct 4000` → Mischung -- [ ] `bri 1` sichtbar sehr dunkel, `bri 100` hell; `bri 1 3000` → gleichmäßig wirkender Fade -- [ ] `off 2000` → blendet mit aktueller Farbe aus; `on 2000` → blendet ein -- [ ] `rgb 255 0 0` dann `ct 3000 2000` → erst dunkel, dann weiß (Moduswechsel) -- [ ] `blink 3` → 3× Blinken, danach alter Zustand; `pulse on` / `pulse off` -- [ ] Kein sichtbares Flackern bei konstanten Werten (5 kHz) +- [x] Nach dem Boot blendet warmweiß 100 % in 0,5 s ein +- [x] `rgb 255 0 0` → nur Rot, `rgb 0 255 0` → nur Grün, `rgb 0 0 255` → nur Blau +- [x] `ct 2700` → nur Warmweiß, `ct 6500` → nur Kaltweiß, `ct 4000` → Mischung +- [x] `bri 1` sichtbar sehr dunkel, `bri 100` hell; `bri 1 3000` → gleichmäßig wirkender Fade +- [x] `off 2000` → blendet mit aktueller Farbe aus; `on 2000` → blendet ein +- [x] `rgb 255 0 0` dann `ct 3000 2000` → erst dunkel, dann weiß (Moduswechsel) +- [x] `blink 3` → 3× Blinken, danach alter Zustand; `pulse on` / `pulse off` +- [x] Kein sichtbares Flackern bei konstanten Werten (5 kHz) ## Persistenz und Boot (Plan 1, Task 12) -- [ ] `pob last`: Farbe setzen, 4 s warten, Strom aus/an → gleicher Zustand, mit Fade -- [ ] `pob off`: Strom aus/an → bleibt aus; `on` → letzte Farbe -- [ ] `pob on` bei ausgeschaltetem Licht: Strom aus/an → an -- [ ] `fade 2000 2000` bleibt nach Reboot erhalten (`state`) -- [ ] 5× Strom an/aus mit jeweils < 5 s Laufzeit → 3× Blinken, danach Defaults (`state`) -- [ ] Normaler Boot nach > 5 s Laufzeit → kein Werksreset +- [x] `pob last`: Farbe setzen, 4 s warten, Strom aus/an → gleicher Zustand, mit Fade +- [x] `pob off`: Strom aus/an → bleibt aus; `on` → letzte Farbe +- [x] `pob on` bei ausgeschaltetem Licht: Strom aus/an → an +- [x] `fade 2000 2000` bleibt nach Reboot erhalten (`state`) +- [x] 5× Strom an/aus mit jeweils < 5 s Laufzeit → 3× Blinken, danach Defaults (`state`) +- [x] Normaler Boot nach > 5 s Laufzeit → kein Werksreset - [ ] Watchdog: `reboot` funktioniert; nach einem Hänger (nicht provozierbar) wäre Reset nach 20 s +- [x] Getestet am 2026-09-11 mit Firmware 7502f4f am EVK (MAC 28-6D-CD-5C-68-1F) ## Später (Lampen) - [ ] E27 Color (SM2135EH): RGB und WY getrennt, Ströme plausibel (nicht zu heiß) diff --git a/tools/flash.sh b/tools/flash.sh index 3b58853..13ef62a 100755 --- a/tools/flash.sh +++ b/tools/flash.sh @@ -1,13 +1,21 @@ #!/usr/bin/env bash -# Flashes build//ninlight_.fls over the serial port (runs natively on the Mac). -# Usage: tools/flash.sh +# Flashes app image (ninlight__gz.img) over the serial port (runs natively on the Mac). +# For blank/erased chips only: pass "full" as third argument to flash ninlight_.fls instead. +# Usage: tools/flash.sh [full] set -euo pipefail -DEV=${1:?usage: tools/flash.sh } -PORT=${2:?usage: tools/flash.sh } +DEV=${1:?usage: tools/flash.sh [full]} +PORT=${2:?usage: tools/flash.sh [full]} +MODE=${3:-app} ROOT=$(cd "$(dirname "$0")/.." && pwd) TOOL="$ROOT/build/host-tools/wm_tool" if [ ! -x "$TOOL" ] || [ "$ROOT/sdk/tools/wm_tool.c" -nt "$TOOL" ]; then mkdir -p "$(dirname "$TOOL")" cc -O2 -w -o "$TOOL" "$ROOT/sdk/tools/wm_tool.c" -lpthread fi -"$TOOL" -c "$PORT" -ds 921600 -rs rts -dl "$ROOT/build/$DEV/ninlight_$DEV.fls" +if [ "$MODE" = "full" ]; then + echo "Bitte bei \"please manually reset the device\" die Reset-Taste drücken." + "$TOOL" -c "$PORT" -ds 460800 -rs none -eo secboot -dl "$ROOT/build/$DEV/ninlight_$DEV.fls" +else + echo "Bitte bei \"please manually reset the device\" die Reset-Taste drücken." + "$TOOL" -c "$PORT" -ds 460800 -rs none -dl "$ROOT/build/$DEV/ninlight_${DEV}_gz.img" +fi