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:
@@ -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
@@ -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
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user