Skip to content

F4.5: consola UART interactiva de operador#83

Merged
guillo93 merged 1 commit into
mainfrom
f4.5-consola-uart
Jun 3, 2026
Merged

F4.5: consola UART interactiva de operador#83
guillo93 merged 1 commit into
mainfrom
f4.5-consola-uart

Conversation

@guillo93
Copy link
Copy Markdown
Owner

@guillo93 guillo93 commented Jun 3, 2026

Resumen

  • Consola de operador por UART real sobre rugus-kernel, desacoplada del HW por el trait ConsoleOut (patrón StatusLeds/FaultObserver). Sin alloc ni defmt, sin bloquear al supervisor.
  • Comandos: help, ps (tareas: idx/pri/modo/estado/stack), mem (heap), faults (telemetría persistente + safe-mode), respawn <n>, reboot.
  • Anillo SPSC RxRing sin bloqueo (ISR productor / supervisor consumidor); RX por IRQ vía enable_rx_irq()/isr_read_byte() en HAL F4 y F7.
  • Ejemplos F407/F769 cableados: #[interrupt] fn USART2RxRing, ConsoleOut sobre Usart2, drenado en el supervisor, NVIC unmask + greet.

Test plan

  • cargo fmt --all + host-tests fmt
  • clippy thumbv7em-none-eabihf y thumbv7m-none-eabi (-D warnings) limpio
  • cargo doc --workspace limpio
  • tests host: 6 core + 29 host
  • F407 (RTT): loopback PASS, "UART console ready", selftests PASS, supervisor vivo, SAFE-MODE OK
  • F769 (RTT): loopback PASS, "UART console ready", selftests PASS, kernel arranca

🤖 Generated with Claude Code

…oot)

Añade una consola de operador por UART real sobre la capa rugus-kernel,
desacoplada del hardware por el trait `ConsoleOut` (mismo patrón que
`StatusLeds`/`FaultObserver`). El kernel acumula la línea byte a byte, hace
eco y parsea comandos que inspeccionan (`ps`/`mem`/`faults`) y actúan
(`respawn`/`reboot`) sobre el estado vivo, sin `alloc` ni `defmt` y sin
bloquear al supervisor.

- rugus-kernel/console.rs: `Console` (parser de línea + comandos + NumBuf),
  trait `ConsoleOut` y anillo SPSC `RxRing` sin bloqueo (ISR productor /
  supervisor consumidor) reutilizable entre placas.
- rugus-kernel/lib.rs: wrappers de introspección (task_state_name, is_user_task,
  task_priority, stack_*, heap_* cfg-gated por `alloc`) y `reboot()`.
- rugus-core: `sched::task_state_name`/`is_user_task` y `heap::used/free/size`.
- HAL F4/F7: `enable_rx_irq()` (RXNEIE) + `isr_read_byte()` para drenar RX
  desde el `#[interrupt] fn USART2`.
- Ejemplos F407/F769: handler USART2 → RxRing, ConsoleOut sobre Usart2, drenado
  en el supervisor, NVIC unmask + greet. Validado por RTT en ambas placas
  (loopback PASS, "UART console ready", selftests PASS, supervisor vivo).

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
@guillo93 guillo93 merged commit 3b7c783 into main Jun 3, 2026
9 checks passed
@guillo93 guillo93 deleted the f4.5-consola-uart branch June 3, 2026 10:09
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