# Implementación de CLI UART para depuración de firmware de microcontroladores
CLI UART proporciona una interfaz de línea de comandos sobre UART para depurar firmware de microcontroladores. La sintaxis es similar al ensamblador: nombre del comando seguido de argumentos posicionales separados por espacios. Un comando — una línea.
command_name arg1 arg2 arg3 ...
Para conectar desde un PC, usa TeraTerm con configuraciones de retraso entre bytes para evitar desbordar el búfer del firmware. Lo primero que aparece en la consola es el registro de inicialización del sistema en verde, similar a una caja negra de registradora de vuelo. Después de la inicialización, aparece el prompt --> , a veces con el tiempo de actividad para verificar el reloj.
Estructura de comandos: Getters y Setters
Los comandos se dividen en getters (visualización de estados) y setters (cambio de parámetros). Los getters son seguros para el análisis del firmware.
- h o help [substring] — lista de comandos, filtrada por subcadena.
- TAB — autocompletado de comandos.
- vi — versión del firmware, compilador, git SHA256.
El comando ll [module] muestra los niveles de logging para módulos y soporta depuración estilo printf.
h
h gpio
Diagnósticos de recursos de hardware
CLI proporciona acceso al estado de subsistemas clave:
- freq — frecuencia del núcleo.
- clk — relojes habilitados para subsistemas.
- gl — estados de pines GPIO.
- rm [addr] [bytes] — lectura de memoria por dirección.
- wm [addr] [data] — escritura en memoria.
Para registros:
rr timer5 0x10
nrm # lectura de registros NAU8814 sobre I2C
Lista de comandos de diagnóstico:
| Comando | Descripción |
|---------|-------------|
| fd | Diagnósticos de Flash |
| pwd | Configuraciones PWM |
| lmd | Estado LED |
| intd | Interrupciones |
| cdf | Filtros CAN |
| trd | Temporizadores |
| cd | Niveles de llenado de pila por núcleo |
Interfaces de red y periféricos
- i2cs — escaneo de bus I2C, muestra direcciones de dispositivos (DS3231, EEPROM).
- cs [can_num] [id] [hex_data] — envío de paquete CAN.
- ll can debug — registro de paquetes CAN recibidos.
El comando repeat [cmd] N P repite un comando N veces con período P ms — útil para pruebas de estrés.
Monitoreo de rendimiento y tareas
- scd — diagnósticos de super loop: iteraciones/seg de while(1), duración promedio.
- Programador de tareas: visualización y desactivación por ID sin recompilar.
- nvram — lectura/escritura NVRAM para reconfiguración.
Ejemplo de super loop en MCU y PC:
![scd on MCU]
reboot — reinicio del núcleo.
Calculadoras y utilidades integradas
CLI convierte el dispositivo en una herramienta de cómputo:
- Decodificación Base64, RLE, AES256.
- Hashing SHA256, CRC16.
- Distancias GNSS, ángulos de vectores.
- Ecuaciones lineales, coeficientes PLL (clock_pll_calc 220000000).
- bd val1 val2 — diferencia de bits en registros de 32 bits.
- Valor de capacitor por marcado.
- cfim — IDs CAN reales por máscara.
Ejemplo de divisor de voltaje:
calc_vdiv R1=1000 R2=1000 Vin=3.3
Pruebas unitarias por subcadena: test i2c.
Puntos clave
- CLI UART es esencial en builds de depuración para puesta en marcha y depuración.
- No se cuelga al reconectar alimentación, a diferencia de SWD/JTAG.
- Soporta UART, stdin/stdout, otros protocolos.
- Actualizaciones de firmware y calibración vía CLI.
- Número de comandos se adapta al tamaño de flash.
Datos de implementación
CLI es una estructura jerárquica de módulos de firmware. Parsea comandos y los enruta a componentes. En Windows, es una aplicación de consola como BusyBox para depuración en condiciones controladas. Salida automática después de 60 s de timeout o Esc.
— Editorial Team
Aún no hay comentarios.