Aktualizacja i zmiana wersji firmware’u ST-LINK-a

Udostępnij

Podczas uruchamiania sesji debuggera w STM32CubeIDE może pojawić się komunikat informujący, że używany programator ST-LINK wymaga aktualizacji firmware’u. Nie jest to błąd projektu, konfiguracji mikrokontrolera ani sterowników HAL, lecz standardowa procedura dopasowania wersji oprogramowania wbudowanego interfejsu ST-LINK do używanych narzędzi programistycznych.

Aktualizację można wykonać bezpośrednio z poziomu STM32CubeIDE, bez ręcznego pobierania dodatkowych plików. Cała operacja trwa zwykle co najwyżej kilkadziesiąt sekund, ale w jej trakcie nie należy odłączać płytki od USB. Warto też wiedzieć, co oznacza wybór typu firmware’u, ponieważ ST-LINK może pracować nie tylko jako debugger SWD, lecz także jako wirtualny port COM, a nawet jako urządzenie pamięci masowej.

Aktualizacja ST-LINK-a z poziomu STM32CubeIDE

Po podłączeniu płytki Nucleo, Discovery albo samodzielnego programatora ST-LINK, STM32CubeIDE może wyświetlić okno ST-LINK firmware verification z następującym komunikatem:

Komunikat o konieczności aktualizacji firmware’u ST-LINK-a (fot. HardwareDesigner.pl)

W takiej sytuacji należy kliknąć OK. IDE uruchomi narzędzie STLinkUpgrade, czyli aplikację dedykowaną tylko do celu wgrywania nowego firmware’u.

W pierwszym kroku, w polu wyboru urządzenia, powinien być widoczny wykryty programator, np. ST-LINK/V2-1. Jeżeli lista jest pusta albo urządzenie nie zostało poprawnie rozpoznane, warto odłączyć i ponownie podłączyć przewód USB, a następnie kliknąć Refresh device list. Przyczyną problemów bywa również przewód USB przeznaczony wyłącznie do ładowania (tj. pozbawiony linii danych), a czasem po prostu kabel marnej jakości.

Widok okna STLinkUpgrade zaraz po uruchomieniu programu (fot. HardwareDesigner.pl)

Po wykryciu urządzenia narzędzie może początkowo pokazywać wersję firmware’u jako Unknown. W takim przypadku należy kliknąć Open in update mode.

Okno aktualizacji firmware’u po odczytaniu bieżącej konfiguracji (fot. HardwareDesigner.pl)

Po poprawnym przejściu do trybu aktualizacji w oknie pojawią się informacje o typie firmware’u, aktualnej wersji oraz wersji docelowej. W naszym przykładzie, dla programatora ST-LINK/V2-1, można zobaczyć konfigurację STM32 Debug+Mass storage+VCP, aktualną wersję V2J27M15 oraz wersję docelową V2J47M34.

Widok okna programu przy zaznaczonym przełączniku wyboru konfiguracji (fot. HardwareDesigner.pl)

Następnie wystarczy kliknąć Upgrade i poczekać na zakończenie procesu. W trakcie aktualizacji nie należy odłączać USB, resetować płytki ani zamykać okna programu.

Proces aktualizacji (fot. HardwareDesigner.pl)

Po zakończeniu aktualizacji warto odłączyć i ponownie podłączyć ST-LINK-a, a następnie ponownie uruchomić debugowanie projektu w STM32CubeIDE.

Opcja Change Type pozwala zmienić wariant firmware’u ST-LINK-a. W przypadku ST-LINK/V2-1 – spotykanego na większości płytek STM32 Nucleo i STM32 Discovery – typowy wybór sprowadza się do dwóch konfiguracji: STM32 Debug+VCP oraz STM32 Debug+Mass storage+VCP.

Wariant pełny, czyli STM32 Debug+Mass storage+VCP, jest najwygodniejszy w zastosowaniach edukacyjnych i prototypowych. Po podłączeniu płytki do komputera ST-LINK udostępnia wtedy trzy funkcje:

  • debugger SWD (czyli podstawowy tryb pracy ST-LINK-a),
  • wirtualny port COM (umożliwiający komunikację z mikrokontrolerem poprzez UART, bez konieczności stosowania dodatkowego modułu konwertera)
  • urządzenie pamięci masowej (dzięki któremu firmware można wgrać metodą „drag and drop”, kopiując plik wynikowy na wirtualny dysk widoczny w systemie operacyjnym).

Ostatni z wymienionych mechanizmów jest obsługiwany m.in. przez środowiska i narzędzia związane z Mbed/Keil Studio Cloud, gdzie po kompilacji projektu użytkownik może pobrać plik binarny i skopiować go na widoczny w systemie „dysk” reprezentowany przez ST-LINK-a.

Funkcja Mass Storage przydaje się również wtedy, gdy płytka ma być używana przez osoby, które nie instalują pełnego środowiska STM32CubeIDE. Przykładowo podczas szkolenia prowadzący może przygotować gotowy plik .bin, a uczestnicy wgrywają go na płytkę przez zwykłe kopiowanie pliku na wirtualny dysk – dokładnie tak, jak gdyby ST-LINK był zwykłym pendrive’em. Podobny tryb może być użyteczny przy szybkiej demonstracji gotowego firmware’u albo podczas ćwiczeń laboratoryjnych, w których debugowanie nie jest potrzebne.

Wariant STM32 Debug+VCP, czyli bez funkcji Mass Storage, warto wybrać wtedy, gdy programator ma służyć głównie do klasycznego debugowania i programowania z poziomu STM32CubeIDE, STM32CubeProgrammer, OpenOCD albo skryptów konsolowych uruchamianych na stanowisku testowym. Brak wirtualnego dysku ogranicza liczbę interfejsów USB widocznych w systemie, eliminuje automatyczne montowanie nośnika przez system operacyjny i niweluje ryzyko przypadkowego kopiowania plików na urządzenie. Taki wariant bywa też wygodniejszy w firmowych środowiskach, w których automatyczne wykrywanie nowych nośników USB jest blokowane przez polityki bezpieczeństwa.

Jeżeli nie ma konkretnego powodu do zmiany konfiguracji, najlepiej pozostawić typ zaproponowany domyślnie przez narzędzie. W przypadku typowej pracy z płytką Nucleo najczęściej będzie to STM32 Debug+Mass storage+VCP, natomiast przy bardziej kontrolowanym stanowisku projektowym lub produkcyjnym rozsądniejszy może być wariant STM32 Debug+VCP.

STLinkUpgradeTool ręczna instalacja narzędzia w systemie

Firmware ST-LINK-a można zaktualizować także poza STM32CubeIDE, instalując aplikację ręcznie, jako osobne narzędzie. Program ma oznaczenie STSW-LINK007 i można go pobrać bezpośrednio ze strony STMicroelectronics. Dostępne są zarówno wersje Java dla systemów macOS, Linux i Windows, jak i plik wykonywalny skompilowany dla Windowsa.

Link do narzędzia: STSW-LINK007 / STLinkUpgradeTool.

Podsumowanie

Aktualizacja firmware’u ST-LINK-a jest prostą czynnością serwisową, którą STM32CubeIDE potrafi uruchomić automatycznie przy pierwszej próbie użycia programatora z nowszą wersją środowiska. W większości przypadków wystarczy zaakceptować komunikat, przełączyć ST-LINK-a w tryb Open in update mode i kliknąć Upgrade. Dostępny wybór wersji firmware’u warto jednak potraktować świadomie: tryb z Mass Storage jest wygodny do wgrywania gotowych plików binarnych metodą „drag and drop”, natomiast wersja bez Mass Storage lepiej pasuje do kontrolowanych stanowisk produkcyjnych.

Zobacz także:

ST-LINK/V2 i ST-LINK/V2-1 vs. STLINK-V3 – najważniejsze różnice

STM32 Nucleo po liftingu – najważniejsze zmiany w kultowych evalboardach

Źródła

Mateusz
Mateusz
Redaktor technologiczny portalu HardwareDesigner.pl. Doświadczony konstruktor urządzeń elektronicznych i programista mikrokontrolerów, w szczególności STM32 i ESP32.

Czytaj więcej

Wybrane dla Ciebie