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>
This commit is contained in:
co-authored by
Claude Opus 5
parent
6588085679
commit
d56f1d25d2
@@ -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:
|
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
|
`nRetCode = ret` (ein lwIP-`err_t` in einer sonst `HTTP_CLIENT_*`-Codes tragenden Variable) durch
|
||||||
`HTTP_CLIENT_ERROR_BAD_STATE` ersetzt.
|
`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.
|
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
|
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):
|
`sdk/Platform/Sys/wm_main.c` als `extern`-Hooks erwartet, aber nur von der App bereitgestellt):
|
||||||
|
|||||||
+1036
-1032
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user