2 Commits
Author SHA1 Message Date
Michael SauerandClaude Opus 5 d56f1d25d2 fix: SHA256-Kontext pro Image initialisieren statt einmal beim Task-Start
Der fwup-Task überlebt jede Update-Sitzung. Weil nl_sha256_init() am
Taskanfang stand, benutzte ab dem zweiten Update-Versuch pro Boot ein
bereits finalisierter Kontext weiter - der Trailer-Hash konnte dann gar
nicht mehr passen und jedes weitere Update scheiterte mit
last_ota_error=hash. Am EVK gefunden: nach einer Ablehnung war ein
Reboot nötig, bevor überhaupt wieder ein Update gelingen konnte.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-12 10:38:01 +02:00
Michael SauerandClaude Opus 5 6588085679 fix: flash.sh akzeptiert den Port auch mit /dev/-Praefix
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-12 10:23:54 +02:00
3 changed files with 1045 additions and 1032 deletions
+7
View File
@@ -70,6 +70,13 @@ Lib/GNU, Bin/secboot.img, Tools/GNU/link_w600_2m.ld (→ ld/) und wm_tool.c (→
exportierte) `session_id`, wäre also ein größerer Eingriff für denselben Effekt. Nebenbei:
`nRetCode = ret` (ein lwIP-`err_t` in einer sonst `HTTP_CLIENT_*`-Codes tragenden Variable) durch
`HTTP_CLIENT_ERROR_BAD_STATE` ersetzt.
**Fix vom 2026-09-12 (am EVK gefunden):** `nl_sha256_init()` stand am Anfang von `fwup_scheduler()`,
also einmal beim Task-Start. Der Task überlebt aber jede Update-Sitzung, sodass ab dem zweiten Versuch
pro Boot ein bereits finalisierter Kontext weiterbenutzt wurde und der Trailer-Hash zwangsläufig nicht
mehr passte (`last_ota_error=hash`). Der Init sitzt jetzt dort, wo der `T_BOOTER`-Header eintrifft, also
genau einmal pro Image. Ohne diesen Fix war nach jeder Ablehnung ein Reboot nötig, bevor ein Update
überhaupt wieder gelingen konnte.
2. `Src/OS/RTOS/include/FreeRTOSConfig.h`: `configGENERATE_RUN_TIME_STATS 0`, QConnex-Debug-Hooks entfernt.
3. `undefined reference` beim Linken auf `EarlyInit` und `pre_gpio_config` (von
`sdk/Platform/Sys/wm_main.c` als `extern`-Hooks erwartet, aber nur von der App bereitgestellt):
File diff suppressed because it is too large Load Diff
+2
View File
@@ -6,6 +6,8 @@ set -euo pipefail
DEV=${1:?usage: tools/flash.sh <device> <port> [full]}
PORT=${2:?usage: tools/flash.sh <device> <port> [full]}
MODE=${3:-app}
# wm_tool prepends /dev/ itself - accept either spelling.
PORT=${PORT#/dev/}
ROOT=$(cd "$(dirname "$0")/.." && pwd)
TOOL="$ROOT/build/host-tools/wm_tool"
if [ ! -x "$TOOL" ] || [ "$ROOT/sdk/tools/wm_tool.c" -nt "$TOOL" ]; then