# Implémentation d'une CLI UART pour le débogage du firmware de microcontrôleur
La CLI UART fournit une interface en ligne de commande via UART pour le débogage du firmware de microcontrôleur. La syntaxe est similaire à celle de l'assembleur : nom de la commande suivi d'arguments positionnels séparés par des espaces. Une commande — une ligne.
command_name arg1 arg2 arg3 ...
Pour se connecter depuis un PC, utilisez TeraTerm avec des réglages de délai inter-octet afin d'éviter de déborder le tampon du firmware. La première chose qui apparaît dans la console est le journal d'initialisation du système en vert, semblable à un enregistreur de vol de type boîte noire. Après l'initialisation, l'invite --> apparaît, parfois accompagnée du temps de fonctionnement pour vérifier l'horlogerie.
Structure des commandes : getters et setters
Les commandes sont divisées en getters (visualisation des états) et setters (modification des paramètres). Les getters sont sans risque pour l'analyse du firmware.
- h ou help [substring] — liste des commandes, filtrée par sous-chaîne.
- TAB — autocomplétion des commandes.
- vi — version du firmware, compilateur, git SHA256.
La commande ll [module] affiche les niveaux de journalisation pour les modules et prend en charge le débogage de style printf.
h
gpio
Diagnostics des ressources matérielles
La CLI donne accès à l'état des sous-systèmes clés :
- freq — fréquence du cœur.
- clk — horloges activées pour les sous-systèmes.
- gl — états des broches GPIO.
- rm [addr] [bytes] — lecture mémoire par adresse.
- wm [addr] [data] — écriture en mémoire.
Pour les registres :
rr timer5 0x10
nrm # lecture des registres NAU8814 via I2C
Liste des commandes de diagnostic :
| Command | Description |
|---------|-------------|
| fd | Diagnostics flash |
| pwd | Paramètres PWM |
| lmd | État LED |
| intd | Interrupts |
| cdf | Filtres CAN |
| trd | Timers |
| cd | Niveaux de remplissage pile par cœur |
Interfaces réseau et périphériques
- i2cs — scan du bus I2C, affiche les adresses des périphériques (DS3231, EEPROM).
- cs [can_num] [id] [hex_data] — envoi de paquet CAN.
- ll can debug — journal des paquets CAN reçus.
La commande repeat [cmd] N P répète une commande N fois avec une période P ms — utile pour les tests de stress.
Surveillance des performances et des tâches
- scd — diagnostics de la super-boucle : itérations/sec de while(1), durée moyenne.
- Planificateur de tâches : visualisation et désactivation par ID sans recompilation.
- nvram — lecture/écriture NVRAM pour reconfiguration.
Exemple de super-boucle sur MCU et PC :
![scd on MCU]
reboot — redémarrage du cœur.
Calculateurs et utilitaires intégrés
La CLI transforme l'appareil en outil de calcul :
- Décodage Base64, RLE, AES256.
- Hachage SHA256, CRC16.
- Distances GNSS, angles vectoriels.
- Équations linéaires, coefficients PLL (clock_pll_calc 220000000).
- bd val1 val2 — différence de bits dans les registres 32 bits.
- Valeur de condensateur par marquage.
- cfim — ID CAN réels par masque.
Exemple de diviseur de tension :
calc_vdiv R1=1000 R2=1000 Vin=3.3
Tests unitaires lancés par sous-chaîne : test i2c.
Points clés
- La CLI UART est essentielle dans les builds de débogage pour la mise en route et le débogage.
- Ne se bloque pas lors d'une reconnexion d'alimentation, contrairement à SWD/JTAG.
- Prend en charge UART, stdin/stdout, autres protocoles.
- Mises à jour du firmware et calibration via CLI.
- Nombre de commandes adapté à la taille de la flash.
Faits d'implémentation
La CLI est une structure hiérarchique de modules firmware. Elle analyse les commandes et les route vers les composants. Sur Windows, c'est une application console semblable à BusyBox pour le débogage en conditions contrôlées. Sortie automatique après 60 s de délai d'attente ou Échap.
— Editorial Team
Aucun commentaire pour le moment.