# 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.
- 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:
rr timer5 0x10
nrm # odczyt rejestrów NAU8814 przez I2C
Lista poleceń diagnostycznych:
| Komenda | Opis |
|---------|------|
| 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
Brak komentarzy.