TT#6 STM32CubeProgrammer CLI – programowanie STM32 z konsoli

Jednym z narzędzi niezbędnych do obsługi mikrokontrolerów STM32 jest aplikacja dedykowana do programowania układów i ich konfiguracji, czyli STM32CubeProgrammer. Ma wygodny i dość intuicyjny interfejs użytkownika, ale przede wszystkim pozwala wykonać wszystkie niezbędne operacje na mikrokontrolerach na etapie rozwoju projektu – zaprogramować układ, odczytać z niego pamięć, czy skonfigurować Option Bytes.

Materiał jest częścią Tips and Tricks – serii artykułów dotyczących ciekawostek o STM32

czyli przydatnych, choć rzadko opisywanych elementów z ekosystemu STM32.

Zdarzają się jednak sytuacje, kiedy chcielibyśmy w specyficzny dla naszego projektu sposób wykonać operacje na pamięci mikrokontrolera – zaprogramować konkretne obszary pamięci, wykorzystać External Loader, a dodatkowo te operacje zautomatyzować.

Do tego typu zastosowań firma ST udostępnia dwie możliwości. Jedną z nich jest wykorzystanie STM32CubeProgrammer C++ API, czyli biblioteki do obsługi programatora oraz implementacji programu ładującego dla trybów bootloader-a. Jest to rozwiązanie bardziej elastyczne, jednak wymaga od programisty więcej pracy przy tworzeniu aplikacji dedykowanej na PC.

Drugim rozwiązaniem jest wykorzystanie STM32CubeProgrammer CLI, czyli zestawu poleceń obsługujących programowanie STM32 wywoływanych z poziomu konsoli. Daje mniejsze możliwości niż API, ale jest dużo prostsze w użyciu – wystarczy, że zainstalujemy STM32CubeProgrammer i wywołamy w konsoli odpowiednie komendy.

Podstawowe pytanie brzmi – jakie to komendy i jak je poprawnie wywołać? Odpowiedź znajdziemy oczywiście w dokumentacji do STM32CubeProgrammer w rozdziale „3. STM32CubeProgrammer command line interface (CLI) for MCUs„. Znajdziemy w niej listę wszystkich dostępnych poleceń oraz przykłady użycia. Podstawowe informacje dotyczące obsługi STM32CubeProgrammer CLI znajdziemy również poprzez wywołanie polecenia STM32_Programmer_CLI.exe w konsoli.

Uwaga! Przykłady obsługi STM32CubeProgrammer CLI będą przedstawione dla systemu Windows.

Na początku warto wspomnieć o tym, w jaki sposób poprawnie wywołać aplikację konsolową STM32CubeProgrammer CLI. Aby z niej skorzystać, z poziomu konsoli musimy przejść do folderu z zainstalowaną aplikacją.

cd C:\Program Files\STMicroelectronics\STM32Cube\STM32CubeProgrammer\bin

Teraz wywołując polecenie STM32_Programmer_CLI.exe powinien pokazać się nam spis poleceń z opisem. W przypadku, gdy z STM32CubeProgrammer CLI będziemy korzystali częściej, warto dodać ścieżkę do zmiennych środowiskowych systemu, aby wywoływać komendy z dowolnego miejsca.

Jeżeli poprawnie wywołaliśmy aplikację, możemy wykonać np. komendę connect.

STM32_Programmer_CLI.exe -c port=swd

Mając podłączony programator (np. zestaw Nucleo), otrzymamy informację o jego parametrach.

Aplikacja CLI daje nam naprawdę duże możliwości. Możemy łączyć się z konkretnym programatorem (za pomocą numeru seryjnego), w różnych trybach reset-u, prędkościach transmisji czy protokołach komunikacyjnych. W zasadzie możemy wykonać za jej pomocą wszystko to, co oferuje STM32CubeProgrammer, a nawet sporo więcej.

Przykładowa komenda służąca do programowania mikrokontrolera będzie wyglądała następująco.

STM32_Programmer_CLI.exe -c port=swd -w D:\STM32L476RG_Software.bin 0x08000000

Wyczyścić pamięć mikrokontrolera możemy za pomocą polecenia erase.

STM32_Programmer_CLI.exe -c port=swd -e all

Odczyt pamięci realizujemy natomiast poleceniem read (przykład to odczytanie 16 bajtów z adresu 0x08000000 i zapisanie do pliku).

STM32_Programmer_CLI.exe -c port=swd -r 0x08000000 16 D:\STM32L476RG_Software_Read.bin

Jak możemy zauważyć, obsługa STM32CubeProgrammer z poziomu konsoli jest stosunkowo prosta. Wymaga zachowania odpowiedniej struktury poleceń, ale umożliwia w prosty sposób wywołanie procesu programowania i konfiguracji STM32 z własnej aplikacji. Jest to przydatne narzędzie, o którym warto pamiętać np. przy automatyzacji procesu produkcji.

Komentarz

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *