Zurück zur Startseite

UART CLI für Mikrocontroller: Debug-Befehle

Das Material beschreibt die Implementierung von UART CLI zum Debuggen von Mikrocontroller-Firmware. Umfasst Befehle zur Diagnose von Hardware-Ressourcen, Peripheriegeräten, Leistung und integrierten Rechnern. Beispiele für Middle-/Senior-Entwickler.

CLI in MCU: von GPIO bis CAN und PLL-Rechner
Advertisement 728x90

Implementierung einer UART CLI zum Debuggen von Mikrocontroller-Firmware

Die UART CLI bietet eine Kommandozeilen-Schnittstelle über UART zum Debuggen von Mikrocontroller-Firmware. Die Syntax ist ähnlich wie bei Assembler: Befehlsname gefolgt von positionsbasierten Argumenten, getrennt durch Leerzeichen. Ein Befehl – eine Zeile.

command_name arg1 arg2 arg3 ...

Um vom PC aus zu verbinden, verwenden Sie TeraTerm mit Einstellungen für Zwischenbyte-Verzögerungen, um ein Überlaufen des Firmware-Puffers zu vermeiden. Das Erste, was in der Konsole erscheint, ist das grüne Protokoll der Systeminitialisierung, ähnlich wie bei einem Flugschreiber-Blackbox. Nach der Initialisierung erscheint der Prompt --> , manchmal mit Uptime zur Überprüfung der Taktgeber.

Befehlsstruktur: Getter und Setter

Befehle werden in Getter (Zustände anzeigen) und Setter (Parameter ändern) unterteilt. Getter sind sicher für die Firmware-Analyse.

Google AdInline article slot
  • h oder help [substring] — Liste der Befehle, gefiltert nach Teilstring.
  • TAB — Befehlsautovervollständigung.
  • vi — Firmware-Version, Compiler, git SHA256.

Der Befehl ll [module] zeigt Logging-Level für Module an und unterstützt printf-ähnliches Debugging.

h
gpio

Diagnose von Hardware-Ressourcen

Die CLI gibt Zugriff auf den Zustand wichtiger Teilsysteme:

  • freq — Kernfrequenz.
  • clk — Aktivierte Takte für Teilsysteme.
  • gl — GPIO-Pin-Zustände.
  • rm [addr] [bytes] — Speicherlesen nach Adresse.
  • wm [addr] [data] — Speicherschreiben.

Für Register:

Google AdInline article slot
rr timer5 0x10
nrm  # Lesen von NAU8814-Registern über I2C

Liste der Diagnosebefehle:

| Command | Description |

|---------|----------|

Google AdInline article slot

| fd | Flash-Diagnose |

| pwd | PWM-Einstellungen |

| lmd | LED-Status |

| intd | Interrupts |

| cdf | CAN-Filter |

| trd | Timer |

| cd | Stapelfüllstände pro Kern |

Netzwerk- und Peripherieschnittstellen

  • i2cs — Scannen des I2C-Busses, zeigt Geräteadressen an (DS3231, EEPROM).
  • cs [can_num] [id] [hex_data] — CAN-Paket senden.
  • ll can debug — Protokoll empfangener CAN-Pakete.

Der Befehl repeat [cmd] N P wiederholt einen Befehl N-mal mit Periode P ms – nützlich für Stresstests.

Leistungs- und Task-Überwachung

  • scd — Super-Loop-Diagnose: while(1)-Iterationen/Sekunde, durchschnittliche Dauer.
  • Task-Planer: Anzeigen und Deaktivieren nach ID ohne Neukompilierung.
  • nvram — Lesen/Schreiben von NVRAM für Rekonfiguration.

Beispiel Super-Loop auf MCU und PC:

![scd on MCU]

reboot — Kern-Neustart.

Integrierte Rechner und Hilfsprogramme

Die CLI verwandelt das Gerät in ein Rechengerät:

  • Base64-, RLE-, AES256-Decodierung.
  • SHA256-, CRC16-Hashing.
  • GNSS-Entfernungen, Vektorwinkel.
  • Lineare Gleichungen, PLL-Koeffizienten (clock_pll_calc 220000000).
  • bd val1 val2 — Bit-Differenz in 32-Bit-Registern.
  • Kondensatorwert nach Markierung.
  • cfim — Tatsächliche CAN-IDs nach Maske.

Spannungsteiler-Beispiel:

calc_vdiv R1=1000 R2=1000 Vin=3.3

Unit-Tests nach Teilstring: test i2c.

Wichtige Punkte

  • UART CLI ist in Debug-Builds essenziell für Inbetriebnahme und Fehlersuche.
  • Hält nicht bei Stromverbindung, im Gegensatz zu SWD/JTAG.
  • Unterstützt UART, stdin/stdout, andere Protokolle.
  • Firmware-Updates und Kalibrierung über CLI.
  • Anzahl der Befehle passt sich an Flash-Größe an.

Implementierungsdetails

Die CLI ist eine hierarchische Struktur von Firmware-Modulen. Sie parst Befehle und leitet sie an Komponenten weiter. Unter Windows ist es eine Konsolenanwendung wie BusyBox für Debugging unter kontrollierten Bedingungen. Automatischer Ausstieg nach 60 Sekunden Timeout oder Esc.

— Editorial Team

Advertisement 728x90

Weiterlesen