fix: Flash-Skript an EVK-Befund angepasst, Checkliste abgehakt

- 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
This commit is contained in:
Michael Sauer
2026-09-11 16:45:15 +02:00
parent b986bb10b9
commit 64acc6b1d9
3 changed files with 33 additions and 20 deletions
+5 -1
View File
@@ -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 <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>
+15 -14
View File
@@ -3,23 +3,24 @@
Konsole: `tools/monitor.sh /dev/cu.<port>` (115200 8N1). Flashen: `tools/flash.sh evk <port>`.
## 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ß)
+13 -5
View File
@@ -1,13 +1,21 @@
#!/usr/bin/env bash
# Flashes build/<device>/ninlight_<device>.fls over the serial port (runs natively on the Mac).
# Usage: tools/flash.sh <device> <port-name as listed by `build/host-tools/wm_tool -l`>
# Flashes app image (ninlight_<device>_gz.img) over the serial port (runs natively on the Mac).
# For blank/erased chips only: pass "full" as third argument to flash ninlight_<device>.fls instead.
# Usage: tools/flash.sh <device> <port-name as listed by `build/host-tools/wm_tool -l`> [full]
set -euo pipefail
DEV=${1:?usage: tools/flash.sh <device> <port>}
PORT=${2:?usage: tools/flash.sh <device> <port>}
DEV=${1:?usage: tools/flash.sh <device> <port> [full]}
PORT=${2:?usage: tools/flash.sh <device> <port> [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