Skip to content

F4.6: gestión de energía + causa de reset (fix bucle IWDG F769)#84

Merged
guillo93 merged 1 commit into
mainfrom
f4.6-power-mgmt-reset-cause
Jun 3, 2026
Merged

F4.6: gestión de energía + causa de reset (fix bucle IWDG F769)#84
guillo93 merged 1 commit into
mainfrom
f4.6-power-mgmt-reset-cause

Conversation

@guillo93
Copy link
Copy Markdown
Owner

@guillo93 guillo93 commented Jun 3, 2026

Resumen

  • Causa de reset: nuevo módulo reset (HAL F4 y F7, gemelos) que lee/limpia RCC_CSR y publica la causa del último reset (power-on, brownout, pin, software, IWDG, WWDG, low-power). El kernel la almacena y la consola la muestra en faults.
  • Fix bucle de reset IWDG en F769: la init de modo windowed perdía los writes de PR/RLR (corría con defaults /4 + 0xFFF → timeout ~1 s) y reseteaba antes del primer kick (~1.5 s). Se aplica la secuencia canónica RM0410/RM0090: KEY_START primero (enciende LSI), luego habilitar escritura y programar PR/RLR/WINR esperando a que cada flag SR.PVU/RVU/WVU se limpie (espera acotada).

Validación

  • F769: ya NO entra en bucle de reset; supervisor vivo a 1/2/3/4/5 s en safe-mode.
  • F407: estable en safe-mode (sin regresión).
  • Host tests: 29 OK. fmt/clippy/doc limpios.

Test plan

  • Flash + RTT F769 (no reset loop en safe-mode)
  • Flash + RTT F407 (estable)
  • cargo fmt --all + host-tests fmt
  • clippy thumbv7em (F4/F7/kernel)
  • cargo doc -D warnings
  • host tests

🤖 Generated with Claude Code

…WDG en F769

- Nuevo módulo `reset` (HAL F4 y F7, gemelos): lee y limpia RCC_CSR para
  distinguir la causa del último reset (power-on, brownout, pin, software,
  IWDG, WWDG, low-power) y la publica como `&'static str`.
- El kernel almacena la causa de reset (`set_reset_cause`/`reset_cause`) y la
  consola la muestra en el comando `faults`. Los ejemplos la leen al arrancar.
- Fix del bucle de reset IWDG en F769: la init de modo windowed perdía
  silenciosamente los writes de PR/RLR (corría con defaults /4 + 0xFFF → ~1 s),
  reseteando antes del primer kick. Se aplica la secuencia canónica (RM0410/
  RM0090): arrancar el IWDG primero (KEY_START enciende el LSI), luego habilitar
  escritura y programar PR/RLR/WINR esperando a que cada flag SR.PVU/RVU/WVU se
  limpie. Espera acotada para no colgar el arranque si el LSI fallara.

Validado en F407 (estable en safe-mode) y F769 (ya no entra en bucle de reset:
supervisor vivo a 1/2/3/4/5 s en safe-mode). CI host: 29 tests OK.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
@guillo93 guillo93 merged commit f8a7c03 into main Jun 3, 2026
9 checks passed
@guillo93 guillo93 deleted the f4.6-power-mgmt-reset-cause branch June 3, 2026 10:33
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant