Powrót do strony głównej

UART CLI dla mikrokontrolerów: polecenia debugowania

Materiał opisuje implementację UART CLI do debugowania firmware'ów mikrokontrolerów. Omówiono polecenia diagnostyki zasobów sprzętowych, peryferii, wydajności i wbudowane kalkulatory. Przykłady dla deweloperów middle/senior.

CLI w MCU: od GPIO do CAN i kalkulatorów PLL
Advertisement 728x90

# Implementacja UART CLI do debugowania firmware mikrokontrolerów

UART CLI zapewnia interfejs wiersza poleceń przez UART do debugowania firmware mikrokontrolerów. Składnia jest podobna do assemblera: nazwa polecenia, po której następują pozycyjne argumenty oddzielone spacjami. Jedna komenda — jedna linia.

command_name arg1 arg2 arg3 ...

Do podłączenia z PC użyj TeraTerm z ustawieniem pauzy między bajtami, aby uniknąć przepełnienia bufora firmware. Pierwsze, co wyświetla się w konsoli — log inicjalizacji systemu w kolorze zielonym, podobny do taśmy czarnej skrzynki. Po inicjalizacji pojawia się prompt --> , czasem z up_time do sprawdzenia taktowania.

Struktura poleceń: gettery i settery

Polecenia dzielą się na gettery (przeglądanie stanów) i settery (zmiana parametrów). Gettery są bezpieczne do analizy firmware.

Google AdInline article slot
  • h lub help [podciąg] — lista poleceń, filtr po podciągu.
  • TAB — autouzupełnianie poleceń.
  • vi — wersja firmware, kompilatora, git SHA256.

Polecenie ll [module] wyświetla poziomy logowania dla modułów, obsługuje debugowanie printf.

h
gpio

Diagnostyka zasobów sprzętowych

CLI zapewnia dostęp do stanu kluczowych podsystemów:

  • freq — częstotliwość rdzenia.
  • clk — włączone sygnały zegarowe podsystemów.
  • gl — stan pinów GPIO.
  • rm [addr] [bytes] — odczyt pamięci pod adresem.
  • wm [addr] [data] — zapis do pamięci.

Dla rejestrów:

Google AdInline article slot
rr timer5 0x10
nrm  # odczyt rejestrów NAU8814 przez I2C

Lista poleceń diagnostycznych:

| Komenda | Opis |

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

Google AdInline article slot

| fd | Diagnostyka flash |

| pwd | Ustawienia PWM |

| lmd | Stan LED |

| intd | Przerwania |

| cdf | Filtry CAN |

| trd | Timery |

| cd | Wypełnienie stosów na rdzeniach |

Interfejsy sieciowe i peryferyjne

  • i2cs — skanowanie magistrali I2C, wyświetla adresy urządzeń (DS3231, EEPROM).
  • cs [can_num] [id] [hex_data] — wysyłanie pakietu CAN.
  • ll can debug — log odebranych pakietów CAN.

Polecenie repeat [cmd] N P powtarza polecenie N razy z okresem P ms — przydatne do testów stresowych.

Monitorowanie wydajności i zadań

  • scd — diagnostyka superpętli: iteracje while(1)/s, średnia długość.
  • Dispatcher zadań: przegląd, wyłączanie po ID bez rekompilacji.
  • nvram — odczyt/zapis NVRAM do rekonfiguracji.

Przykład superpętli na MCU i PC:

![scd na MCU]

reboot — restart rdzenia.

Wbudowane kalkulatory i narzędzia

CLI zamienia urządzenie w narzędzie obliczeniowe:

  • Dekodowanie Base64, RLE, AES256.
  • Haszowanie SHA256, CRC16.
  • Odległości GNSS, kąty wektorów.
  • Równania liniowe, współczynniki PLL (clock_pll_calc 220000000).
  • bd val1 val2 — różnica bitów w 32-bitowych rejestrach.
  • Kondensator po oznaczeniu.
  • cfim — rzeczywiste CAN ID po masce.

Przykład dzielników napięcia:

calc_vdiv R1=1000 R2=1000 Vin=3.3

Testy modułowe uruchamiane po podciągu: test i2c.

Co ważne

  • UART CLI jest obowiązkowa w buildach debug do bring-up i debugowania.
  • Nie zawiesza się przy ponownym podłączeniu zasilania, w przeciwieństwie do SWD/JTAG.
  • Obsługa przez UART, stdin/stdout, inne protokoły.
  • Aktualizacja firmware, kalibracja przez CLI.
  • Liczba poleceń dostosowana do flash.

Fakty implementacji

CLI to hierarchiczna struktura modułów firmware. Parsuje polecenia, routinguje do komponentów. W Windows — aplikacja konsolowa jak BusyBox do debugowania w rafinowanych warunkach. Automatyczne wyjście po timeout 60 s lub Esc.

— Editorial Team

Advertisement 728x90

Czytaj dalej