STM32CubeProgrammer 2.23 to istotne wydanie, w którym zrealizowano 290 zgłoszeń, w tym 52 wnioski o zmiany i 238 poprawek, a także 200 pakietów roboczych. W praktyce oznacza to obsługę nowych funkcji bezpieczeństwa w wielu mikrokontrolerach STM32, unikalny pakiet CLI dla Linuksa oraz usprawnienia komfortu pracy, które przyspieszają codzienne zadania. Uwidoczniliśmy także nasz STM32 Sidekick, aby deweloperzy mogli szybciej znajdować odpowiedzi na najczęstsze problemy oraz uzyskiwać dostęp do dokumentacji i innych informacji technicznych. Krótko mówiąc, za kulisami wykonano mnóstwo pracy, aby społeczność STM32 mogła szybciej i z mniejszą liczbą przeszkód wprowadzać swoje produkty i aplikacje na rynek.
Co nowego w STM32CubeProgrammer 2.23?
Obsługa nowych mikrokontrolerów
To wydanie wprowadza obsługę STM32H5 z 1 MB pamięci flash oraz STM32U3 z 256 KB i 512 KB pamięci flash. Ponadto STM32CubeProgrammer oferuje teraz opakowywanie kluczy (key wrapping) na STM32U3 z 2 MB pamięci flash i STM32H5 z 4 MB pamięci flash, przy czym ten ostatni obsługuje również bezpieczną instalację firmware’u. Nowa wersja dodaje też wiele funkcji bezpieczeństwa w STM32V8, takich jak generowanie i provisioning klucza Option Byte Key (OBKey), wykorzystywanego podczas rozruchu do tworzenia stref zaufania (Trust Zones) i innych izolowanych środowisk. STM32V8 obsługuje teraz również uwierzytelnianie debugowania (debug authentication) i generowanie certyfikatów.
Obsługa Raspberry Pi dzięki nowemu trybowi CLI dla Linuksa
Począwszy od STM32CubeProgrammer 2.23 natywnie obsługujemy Raspberry Pi za pośrednictwem pakietu CLI dla Linuksa na 64-bitową architekturę ARM. W związku z tym pakiet nie zawiera interfejsu graficznego i jest celowo bardzo lekki, biorąc pod uwagę ograniczoną pamięć masową tych platform. Z tego samego powodu nie oferujemy tradycyjnych funkcji debugowania, ale deweloperzy mogą programować wewnętrzną i zewnętrzną pamięć flash, konfigurować bajty opcji (option bytes) i wykonywać inne operacje. Mówiąc wprost, zespoły mogą szybko programować urządzenia przy użyciu niewielkiej maszyny z systemem Debian lub Ubuntu, aby przyspieszyć określone wdrożenia, obsługiwać stanowiska testowe lub prowadzić zdalną konserwację, podłączając komputer z Linuksem do systemu wbudowanego pracującego w terenie.
Podobnie obsługujemy wybrane funkcje bezpieczeństwa, przyjmując przy tym starannie przemyślane podejście. Na przykład ten pakiet CLI dla Linuksa obsługuje starsze modele ochrony przed odczytem (RDP) oraz regresję RDP z użyciem hasła. Nie obsługujemy natomiast na razie uwierzytelniania debugowania, zarządzania cyklem życia produktu ani bezpiecznej instalacji firmware’u. Nasze zespoły analizują obecnie, jak społeczność STM32 korzysta z tego nowego pakietu CLI, aby lepiej dopasować jego zawartość do bieżących potrzeb i próśb. Wyzwaniem przy oferowaniu takiego rozwiązania jest utrzymanie go małym i jednocześnie przydatnym dla jak największej liczby deweloperów. Dlatego utworzyliśmy również dedykowaną stronę tego pakietu w ST Community i zachęcamy użytkowników do dzielenia się opiniami.
• Obsługa Raspberry Pi w STM32CubeProgrammer
Usprawnienia komfortu pracy
Nowa wersja STM32CubeProgrammer przynosi także szereg usprawnień komfortu pracy, w tym między innymi bardziej widoczny link do STM32 Sidekick. Narzędzie to wykorzystuje dostosowany duży model językowy, aby pomagać inżynierom w wyszukiwaniu informacji technicznych, precyzyjnej dokumentacji i innych zasobów, dzięki którym szybciej tworzą swoje aplikacje. Podobnie nowa wersja oferuje czytelniejsze ścieżki plików, które ułatwiają zrozumienie, gdzie znajdują się wszystkie pliki projektu. Firma ST opublikowała również [nowy zasób dokumentacji online poświęcony specjalnie STM32CubeProgrammer]. Pomaga on użytkownikom szybciej rozpocząć pracę, znaleźć odpowiedzi i opanować narzędzie, a tym samym pogłębić wiedzę o naszym ekosystemie.
• Dokumentacja STM32CubeProgrammer
Czym jest STM32CubeProgrammer? Narzędzie do programowania i debugowania STM32
W swej istocie STM32CubeProgrammer pomaga debugować i programować mikrokontrolery STM32. W związku z tym zawiera funkcje optymalizujące te dwa procesy. Na przykład wersja 2.6 wprowadziła możliwość zrzutu całej mapy rejestrów i edycji dowolnego rejestru w locie. Wcześniej zmiana wartości rejestru oznaczała modyfikację kodu źródłowego, ponowną kompilację i wgranie firmware’u. Dziś testowanie nowych parametrów lub sprawdzanie, czy dana wartość powoduje błąd, jest znacznie prostsze. Podobnie inżynierowie mogą używać STM32CubeProgrammer do jednoczesnego programowania wszystkich pamięci zewnętrznych. Tradycyjnie programowanie zewnętrznej pamięci wbudowanej i karty SD wymagało od deweloperów uruchamiania każdego procesu osobno. STM32CubeProgrammer robi to w jednym kroku.
Kolejnym wyzwaniem dla deweloperów jest analiza ogromnej ilości informacji przepływających przez STM32CubeProgrammer. Każdy, kto wgrywa firmware, wie, jak trudno śledzić wszystkie logi. Dlatego wprowadziliśmy niestandardowe ślady (custom traces), które pozwalają deweloperom przypisać kolor do konkretnej funkcji. Dzięki temu deweloperzy mogą szybko odróżnić określone dane wyjściowe od reszty logu. Debugowanie staje się więc o wiele prostsze i bardziej intuicyjne. Ponadto pozwala to deweloperom ujednolicić schemat kolorów ze STM32CubeIDE, kolejnym członkiem naszego unikalnego ekosystemu stworzonego, by wspierać twórców.

Jakie są jego kluczowe funkcje?
Obsługa nowych mikrokontrolerów

Większość nowych wersji STM32CubeProgrammer wprowadza obsługę wielu nowych mikrokontrolerów. Na przykład wersja 2.16 przyniosła zgodność z wersją STM32U0 z 256 KB pamięci. Układ ten był nowym flagowym modelem o ultraniskim poborze mocy dla aplikacji podstawowych, dzięki statycznemu poborowi mocy wynoszącemu zaledwie 16 nA w trybie standby. STM32CubeProgrammer 2.16 wprowadził również obsługę STM32H5 z 512 KB pamięci flash oraz układów STM32H7R i STM32H7S, które mają mniej pamięci flash, dzięki czemu integratorzy, którzy i tak muszą korzystać z pamięci zewnętrznej, mogą obniżyć koszty. Mówiąc wprost, ST stara się aktualizować STM32CubeProgrammer tak szybko, jak to możliwe, aby nasza społeczność mogła szybko i efektywnie korzystać z naszych najnowszych platform.
Wersja 2.22 dodała obsługę STM32H5 z 4 MB pamięci flash, STM32WBA2, STM32C5 z 1 MB, 512 KB i 256 KB oraz STM32U3 z 2 MB. Dodatkowo funkcja programowania przyrostowego obsługuje teraz STM32H7 z 2 MB i STM32L0 z 16 KB, co potwierdza ciągłe ulepszenia i rozszerzaną zgodność, jakie wnosimy do tej funkcjonalności. Ponieważ część naszej społeczności podzieliła się informacją, że programowanie przyrostowe znacząco usprawnia ich pracę, staramy się udostępniać je na coraz większej liczbie urządzeń z każdym wydaniem STM32CubeProgrammer.
Eksport mapy pamięci MCU

STM32CubeProgrammer 2.22 wyróżnił się nowym narzędziem graficznym, które wizualnie odwzorowuje pamięć mikrokontrolera. Wiemy, że ustawianie adresów szesnastkowych, definiowanie rozmiarów czy wskazywanie regionów specjalnych bywa czasem mylące. Nowe narzędzie graficzne pomaga w tym, pokazując bieżące parametry przed ich wyeksportowaniem do pliku .HEX. Na przykład za pomocą kilku menu rozwijanych, okna dialogowego i paru kliknięć deweloperzy mogą podzielić pamięć na segmenty, zdefiniować adresy początkowe każdego segmentu, określić, czy jest to pamięć jednokrotnie programowalna czy segment bajtów opcji, a nawet czy segment będzie przechowywał typowe dane, czy też posłuży jako pamięć wzorca (pattern memory) dla określonych informacji.
Gdy użytkownicy zakończą pracę, narzędzie walidacji pomoże im ustalić, czy wybrana konfiguracja zawiera poważne błędy. To kolejny sposób ochrony deweloperów przed literówkami lub pomyłkami, które mogłyby prowadzić do nakładających się segmentów lub brakujących informacji. Jeśli wszystko jest w porządku, interfejs graficzny może wyeksportować osobny plik dla każdego segmentu bajtów opcji. Wygenerowane pliki są następnie odczytywane przez STM32CubeProgrammer, który wyświetla wykres. Możliwe jest również wyodrębnienie pliku .bin dla każdego ciągłego regionu pamięci. Funkcja eksportu mapy pamięci MCU jest wciąż w fazie beta i może zawierać drobne błędy. Jesteśmy jednak przekonani o jej niezawodności i zachęcamy społeczność STM32 do rozpoczęcia korzystania z niej.
Obsługa sondy SEGGER J-Link
Aby pomóc deweloperom zoptymalizować pracę, we współpracy z firmą SEGGER wprowadziliśmy pełną obsługę sondy J-Link. Oznacza to, że ten sprzętowy programator ma dostęp do funkcji, które wcześniej były dostępne wyłącznie z modułem ST-LINK. Na przykład system SEGGER może programować pamięć wewnętrzną i zewnętrzną lub zmieniać poziom ochrony przed odczytem (RDP). Co więcej, korzystanie z J-Link w STM32CubeProgrammer pozwala deweloperom przeglądać i modyfikować rejestry. A od wersji 2.17 dodaliśmy możliwość generowania numerów seryjnych i ich automatycznej inkrementacji w STM32CubeProgrammer, co przyspiesza programowanie wielu układów STM32 w jednej partii.
Wiemy, że wielu klientów STM32 korzysta z sondy SEGGER, ponieważ pozwala im pracować z większą liczbą mikrokontrolerów, jest szybka lub dlatego, że przyjęli oprogramowanie firmy SEGGER. Dlatego STM32CubeProgrammer uczynił J-Link znacznie bardziej użytecznym, aby deweloperzy mogli zrobić więcej bez opuszczania oprogramowania ST. W rzeczywistości wersja 2.18 dodała możliwość bezpiecznej instalacji stosu Bluetooth na STM32WB za pośrednictwem sondy J-Link. Dzięki temu deweloperzy mogą używać narzędzia SEGGER w większej liczbie zastosowań, co upowszechnia te funkcje.
Natywna obsługa układów Apple silicon
Nowa wersja STM32CubeProgrammer jest ważna dla użytkowników komputerów Mac, ponieważ wprowadza natywną obsługę układów Apple silicon. Wielu członków naszych społeczności pracuje na starszych systemach, aby chronić swoją pracę przed niestabilnymi środowiskami, dlatego my również czekaliśmy z obsługą nowej architektury procesora. Jednak Apple ogłosiło niedawno, że macOS Tahoe będzie ostatnim systemem obsługującym komputery Mac z procesorami Intel, a macOS 27 będzie ostatnią wersją oferującą Rosettę, czyli mechanizm translacji, który pozwala urządzeniom z Apple silicon uruchamiać aplikacje przeznaczone dla procesorów Intel. Dlatego tak ważne było wprowadzenie natywnej obsługi Apple silicon już teraz, aby użytkownicy planujący migrację mogli przez lata korzystać z najlepszego doświadczenia STM32CubeProgrammer w systemie macOS.
Usprawnienia programowania przyrostowego
Wersja 2.20 STM32CubeProgrammer przyniosła istotne aktualizacje funkcji programowania przyrostowego, które ST wprowadziło w wersji 2.19 (więcej informacji poniżej), dodając obsługę nowych mikrokontrolerów i poprawiając wydajność. Pod względem zgodności deweloperzy mogą teraz wykonywać programowanie przyrostowe na urządzeniach STM32WB5 i STM32WB35, a także na mikrokontrolerach STM32G0B0, STM32G0B1 i STM32G0C1. Ponadto, oprócz poprawek błędów, aktualizacja 2.20 zwiększa wydajność. W naszych testach wewnętrznych wgranie firmware’u o rozmiarze 1 MB na STM32H7 zajmuje około 23 sekund, natomiast przy aktualizacji przyrostowej zapis dwóch sektorów pamięci trwa zaledwie 5 sekund, nawet jeśli nie są one ciągłe. Gdy deweloperzy powtarzają tę operację wielokrotnie podczas pisania aplikacji, oszczędności stają się znaczące.
Automatyzacja pracy dewelopera
STM32CubeProgrammer 2.19 wprowadził serię automatyzacji upraszczających operacje. Na przykład narzędzie automatycznie pobiera teraz plik X-CUBE-RSSe, który zawiera najnowszą wersję binariów rozszerzeń RSS, szablony bajtów opcji oraz pliki danych personalizacyjnych dla sprzętowego modułu bezpieczeństwa STM32HSM-V2. Użytkownicy zobaczą w zakładce SFI/SFIx w sekcji bezpiecznego programowania STM32CubeProgrammer komunikat informujący, że nowa wersja jest dostępna do pobrania, oraz zakładkę opisującą główne zmiany. Z uwagi na wysoce wrażliwy charakter tych bibliotek i funkcji bezpieczeństwa gwarantuje to, że deweloperzy utrzymują swoje oprogramowanie zaktualizowane i wolne od znanych problemów.
Ta najnowsza rewizja oprogramowania usprawnia również numerację seryjną, umożliwiając użytkownikom wybór formatu big-endian lub little-endian. Kolejność big-endian odzwierciedla podejście od lewej do prawej, typowe dla większości języków używających alfabetu, i jest najczęściej stosowana w adresach sieciowych. Natomiast kolejność little-endian jest bardzo rozpowszechniona w systemach wbudowanych, ponieważ przechowywanie najmniej znaczącego bajtu (LSB) pod najniższym adresem pamięci sprawia, że odczyt adresu jest bardziej efektywny w systemach o ograniczonych zasobach. Na przykład operacja, która potrzebuje tylko LSB, uzyska szybszy dostęp do tej informacji. Dlatego większość mikrokontrolerów domyślnie używa little-endian, ale STM32CubeProgrammer daje możliwość korzystania z obu formatów.
Podobnie STM32CubeProgrammer 2.19 wprowadził programowanie przyrostowe w interfejsie wiersza poleceń, automatycznie aktualizując tylko te sektory pamięci flash, w których dokonano zmian. Zamiast wgrywać firmware do całej pamięci flash, narzędzie ustala, które sektory pamięci zawierają aktualizacje, i zmienia tylko te fragmenty. Większość urządzeń STM32 już to obsługuje, a my będziemy z czasem dodawać zgodność z kolejnymi seriami mikrokontrolerów i konfiguracjami pamięci. Wreszcie ST wprowadza uwierzytelnianie debugowania z wieloma płytkami docelowymi. Mówiąc wprost, użytkownicy mogą wybrać jedną płytkę docelową i płynnie przełączać się między kilkoma.
SWD Multidrop

Jedną z najważniejszych nowych funkcji STM32CubeProgrammer 2.21 był Serial Wire Debug Multidrop (SWD Multidrop). Oparty na klasycznym protokole SWD, umożliwia połączenie jednym przewodem z wieloma układami docelowymi. Weźmy przykład aplikacji, która wykorzystuje STM32U5 jako główny mikrokontroler i STM32WBA5 do obsługi łączności bezprzewodowej. Oba znajdują się na tej samej płytce. Dziś, dzięki SWD Multidrop, mogą współdzielić ten sam port debugowania. Wystarczy zmienić wartość `TargetSel` w STM32CubeProgrammer, aby przełączyć się między urządzeniami STM32. Ponieważ jednak ST-LINK rozróżnia mikrokontrolery STM32 według rodziny, nie odróżni dwóch układów z tej samej serii (np. dwóch STM32C0 współdzielących ten sam port SWD).
Opcje eksportu
Inne usprawnienia komfortu pracy mają na celu uczynienie STM32CubeProgrammer bardziej intuicyjnym. Na przykład możliwe jest teraz eksportowanie bajtów opcji układu STM32. Mówiąc najprościej, są one sposobem przechowywania opcji konfiguracyjnych, takich jak poziomy ochrony przed odczytem, ustawienia watchdoga, tryby zasilania i inne. Mikrokontroler wczytuje je na wczesnym etapie rozruchu, a przechowywane są w specjalnej części pamięci dostępnej wyłącznie dla narzędzi debugujących lub bootloadera.
Oferując możliwość eksportu i importu bajtów opcji, STM32CubeProgrammer pozwala deweloperom znacznie łatwiej konfigurować mikrokontrolery. Od wersji 2.17 deweloperzy mogą edytować pola pamięci w formacie ASCII, co czyni niektóre sekcje o wiele bardziej czytelnymi. A wersja 2.18 wprowadziła syntetyczny widok bajtów opcji, pozwalający przeglądać i edytować wiele bajtów opcji w jednym wierszu zamiast przewijać szczegółowe listy. Dla zaawansowanych użytkowników, którzy dokładnie wiedzą, co chcą zrobić, ten syntetyczny widok znacznie przyspiesza zmianę bajtu opcji.
Wprowadziliśmy również usprawnienia doświadczenia użytkownika, takie jak tryb projektu, który pozwala zapisywać i przywracać ustawienia konfiguracji i połączenia, wartości bajtów opcji, listy firmware’u, zewnętrzne loadery flash, aktualizacje firmware’u bezpieczeństwa (binaria rozszerzeń root security system), ustawienia instalacji stosu dla STM32WB oraz parametry trybu automatycznego. Krótko mówiąc, chcemy, aby deweloperzy współpracowali efektywniej, importując i eksportując główne elementy projektu, tak by mogli skupić się na kodzie, a nie na zaznaczaniu pól i wielokrotnym stosowaniu tych samych ustawień.
Lokalizacja japońska i chińska
Aby uczynić STM32CubeProgrammer bardziej inkluzywnym, wprowadziliśmy lokalizację chińską i japońską. Odzwierciedla to nasze dążenie, by cały ekosystem STM32Cube był bardziej dostępny dla deweloperów z tych regionów. Zdecydowana większość użytkowników, dla których japoński i chiński są językami ojczystymi, biegle posługuje się również angielskim i bez problemu korzystałaby z naszego narzędzia po angielsku. Jednak biorąc pod uwagę naszą obecność i zaangażowanie na tych rynkach, wiemy też, że tłumaczenie naszych rozwiązań otwiera drzwi studentom, pasjonatom i ekspertom, którzy wolą pracować w swoim języku ojczystym. Dlatego zlokalizowaliśmy strefę STM32 MCU and MPU Developer Zone w języku chińskim i japońskim i dlatego z takim samym zaangażowaniem podchodzimy teraz do STM32CubeProgrammer.
Brama do bezpieczeństwa na STM32
Czytelnicy bloga ST znają STM32CubeProgrammer jako centralny element rozwiązań bezpieczeństwa obecnych w ekosystemie STM32Cube. Narzędzie jest dostarczane z Trusted Package Creator, który pozwala deweloperom przesłać klucz OEM do sprzętowego modułu bezpieczeństwa i zaszyfrować firmware tym samym kluczem. Producenci OEM używają następnie STM32CubeProgrammer, aby bezpiecznie zainstalować firmware na mikrokontrolerze STM32 z obsługą SFI. Deweloperzy mogą nawet korzystać z interfejsu I2C lub SPI, co daje im większą elastyczność. Ponadto układy STM32H73x, STM32H7Bx, STM32L5, STM32U5 i STM32H5 obsługują również zewnętrzną bezpieczną instalację firmware’u (SFIx), co oznacza, że producenci OEM mogą wgrać zaszyfrowany plik binarny do modułów pamięci poza mikrokontrolerem.
X-CUBE-RSSE
Aby ułatwić aktualizację binariów RSSe (Root Security System binaries extensions), plików personalizacyjnych STM32HSM-V2 oraz szablonów bajtów opcji, elementy te są teraz dostarczane osobno w pakiecie rozszerzeń X-CUBE-RSSe, obsługiwanym zarówno przez STM32CubeProgrammer, jak i Trusted Package Creator. W konsekwencji elementy te nie są już częścią najnowszej wersji CubeProgrammer i należy je pobrać osobno.
Secure Manager
Secure Manager jest oficjalnie obsługiwany od STM32CubeProgrammer 2.14 i STM32CubeMX 1.13. Obecnie funkcja ta jest dostępna wyłącznie dla naszego nowego wysokowydajnego mikrokontrolera STM32H573, który obsługuje bezpieczną instalację firmware’u ST (SSFI) bez konieczności użycia sprzętowego modułu bezpieczeństwa (HSM). Krótko mówiąc, zapewnia on prosty sposób zarządzania całym ekosystemem bezpieczeństwa na mikrokontrolerze STM32 dzięki binariom, bibliotekom, implementacjom kodu, dokumentacji i nie tylko. Dzięki temu deweloperzy korzystają z gotowych rozwiązań w STM32CubeMX, a programują i debugują je za pomocą STM32CubeProgrammer. To przykład tego, jak sprzęt STM32H5 i oprogramowanie Secure Manager łączą się, tworząc coś więcej niż sumę części.
Inne funkcje bezpieczeństwa dla STM32H5
STM32CubeProgrammer udostępnia wiele innych funkcji bezpieczeństwa w STM32H5. Na przykład mikrokontroler obsługuje teraz bezpieczną instalację firmware’u w pamięci wewnętrznej (SFI) i w zewnętrznym module pamięci (SFIx), co pozwala producentom OEM wgrywać zaszyfrowany firmware z pomocą sprzętowego modułu bezpieczeństwa (HSM). Podobnie obsługuje generowanie certyfikatów na nowym mikrokontrolerze przy użyciu Trusted Package Creator i HSM. Wreszcie narzędzie dodaje obsługę SFI i SFIx w układach STM32U5 z 2 MB i 4 MB pamięci flash.
Aktualizacje STM32TrustedPackageCreator
STM32TrustedPackageCreator dostarczany począwszy od STM32CubeProgrammer 2.22 obsługuje nowe algorytmy szyfrowania. Dokładniej, użytkownicy mogą wybrać SHA-384 i ECDSA-P384. Co ciekawe, SHA-384 jest szybszy niż SHA-256 na architekturach 64-bitowych, takich jak ta zastosowana w STM32MP2, ponieważ używa słów 64-bitowych zamiast 32-bitowych. Oba są również standardem w certyfikatach TLS i innych wymaganiach rządowych, co pozwala deweloperom ze społeczności ST lepiej spełniać rygorystyczne normy i wymagania klientów. STM32CubeProgrammer 2.22 obsługuje także Debug Authentication w 32-bitowej wersji systemu Windows, aby ułatwić pracę deweloperom wciąż korzystającym ze starszych systemów.
Większa dostępność SFI

Od wersji 2.11 STM32CubeProgrammer otrzymał znaczące usprawnienia funkcji bezpiecznej instalacji firmware’u (SFI). Na przykład w wersji 2.15 firma ST dodała obsługę STM32WBA5. Ponadto dodaliśmy graficzny interfejs użytkownika wyróżniający adresy i informacje o HSM. Interfejs graficzny Trusted Package Creator otrzymał również nowy układ w zakładkach SFI i SFIx, prezentujący informacje potrzebne podczas konfigurowania bezpiecznej instalacji firmware’u. Trusted Package Creator zyskał także graficzną reprezentację różnych bajtów opcji, ułatwiającą ich konfigurację.
Bezpieczny provisioning sekretów dla STM32MPx
Od wersji 2.12 STM32CubeProgrammer ma nowy graficzny interfejs użytkownika, który pomaga deweloperom ustawiać parametry bezpiecznego provisioningu sekretów (secure secret provisioning) dostępnego w mikroprocesorach STM32MPx. STM32CubeProgrammer 2.21 wprowadził bezpieczny provisioning sekretów dla STM32MP21. Mechanizm ten przypomina bezpieczną instalację firmware’u dostępną w mikrokontrolerach STM32. Wykorzystuje sprzętowy moduł bezpieczeństwa do przechowywania kluczy szyfrujących oraz bezpieczną komunikację między programatorem a urządzeniem. Jednak natura mikroprocesora oznacza więcej parametrów do skonfigurowania. Interfejs graficzny STM32CubeProgrammer udostępnia teraz te ustawienia, wcześniej dostępne tylko w wersji CLI narzędzia, aby przyspieszyć pracę.
Podwójne uwierzytelnianie
Od wersji 2.9 STM32CubeProgrammer obsługuje system podwójnego uwierzytelniania podczas provisioningu kluczy szyfrujących przez JTAG lub bootloader dla stosu Bluetooth w STM32WB. Mówiąc wprost, funkcja ta pozwala producentom chronić stos Bluetooth przed aktualizacjami ze strony użytkowników końcowych. Deweloperzy mogą wprawdzie aktualizować stos Bluetooth za pomocą bezpiecznego firmware’u ST, jeśli wiedzą, co robią. Jednak producent może oferować określone środowisko i w związku z tym chcieć je chronić. W efekcie system podwójnego uwierzytelniania uniemożliwia użytkownikowi końcowemu dostęp do mechanizmu aktualizacji. Firma ST opublikowała notę aplikacyjną AN5185 zawierającą więcej szczegółów.
Obsługa PKCS#11
Od wersji 2.9 STM32CubeProgrammer obsługuje PKCS#11 przy szyfrowaniu firmware’u dla STM32MP1. Public-Key Cryptography Standards (PKCS) 11, zwany także Cryptoki, to standard regulujący procesy kryptograficzne na niskim poziomie. Zyskuje on na popularności, ponieważ interfejsy API pomagają deweloperom systemów wbudowanych wykorzystywać jego mechanizmy. W STM32MP1 PKCS#11 pozwala inżynierom rozdzielić przechowywanie klucza prywatnego od procesu szyfrowania na potrzeby bezpiecznego provisioningu sekretów (SSP).
SSP to odpowiednik bezpiecznej instalacji firmware’u (Secure Firmware Install) dla mikroprocesorów. Przed wysłaniem kodu do producentów OEM deweloperzy szyfrują firmware za pomocą STM32CubeProgrammer, korzystając z systemu klucza prywatnego i publicznego. Własność intelektualna pozostaje więc nieczytelna dla osób trzecich. Podczas montażu producenci OEM używają dostarczonego sprzętowego modułu bezpieczeństwa (HSM) zawierającego chroniony klucz szyfrujący, aby wgrać firmware, który mikroprocesor odszyfruje wewnętrznie. Jednak do tej pory deweloperzy szyfrujący kod mikroprocesora mieli dostęp do klucza prywatnego. Problem w tym, że niektóre organizacje muszą ograniczać dostęp do tak krytycznych informacji. Dzięki nowemu STM32CubeProgrammer i PKCS#11 klucz prywatny pozostaje ukryty w HSM, nawet podczas procesu szyfrowania wykonywanego przez deweloperów.
Obsługa nowych mikrokontrolerów STM32
Obsługa STM32MP21
Jak zwykle nowe wydanie STM32CubeProgrammer jest równoznaczne z obsługą nowych urządzeń STM32 i wersja 2.20 nie była wyjątkiem. W tym przypadku dodaliśmy zgodność z nowym STM32MP21, który zawiera jednordzeniowy Cortex-A35 taktowany zegarem 1,5 GHz oraz Cortex-M33. Mikroprocesor ma również interfejs kamery, umożliwiający aplikacje wizji komputerowej w bardziej ekonomicznych systemach, które nie uruchamiają złożonego interfejsu graficznego wymagającego GPU. Konkretnie STM32CubeProgrammer obsługuje teraz programowanie partycji jednokrotnie programowalnej STM32MP21, użycie PKCS#11 przy szyfrowaniu jego firmware’u oraz zapewnia zgodność z układem zarządzania zasilaniem ST. Mówiąc wprost, stawia to nowe urządzenie na równi z innymi mikroprocesorami w naszej ofercie.
Obsługa MCE dla STM32N6
Chociaż STM32CubeProgrammer oficjalnie obsługuje STM32N6 od wersji 2.18, wersja 2.20 wprowadziła obsługę szyfrowania pamięci zewnętrznej. Ten mikrokontroler to nasz najpotężniejszy STM32 i pierwszy wyposażony w jednostkę przetwarzania neuronowego. W związku z tym, choć ma największą w historii ilość wbudowanej pamięci RAM w mikrokontrolerze (4,2 MB), nie zawiera pamięci flash, ponieważ inżynierowie będą potrzebować znacznie więcej pamięci, niż zmieściłoby się na krzemie. Oznacza to jednak, że operacje szyfrowania i deszyfrowania są trudniejsze. STM32CubeProgrammer może wykorzystać silnik Memory Cipher Engine (MCE) w STM32N6 do szyfrowania i deszyfrowania w locie informacji przesyłanych do i z pamięci flash oraz SRAM.
Rozszerzenie zestawu funkcji dla STM32H5
STM32CubeProgrammer umożliwia korzystanie z Secure Manager w zewnętrznej pamięci flash STM32H573. STM32H5 to nowy mikrokontroler STM32 głównego nurtu dzięki najpotężniejszej implementacji Cortex-M33. STM32CubeProgrammer obsługuje już wcześniejsze wersje tego urządzenia. Mówiąc wprost, ST nadal udostępnia wszystkie swoje funkcje bezpieczeństwa w naszych najnowszych urządzeniach i w różnych konfiguracjach, aby inżynierowie mogli z nich korzystać jak najszybciej. Ponadto wersja 2.20 dodała opcję przywracania bajtów opcji do ustawień fabrycznych w urządzeniach STM32H5, a wersja 2.21 wprowadziła ją w urządzeniach STM32WBA5 i STM32U3. Mówiąc wprost, przywrócenie urządzenia STM32 do ustawień fabrycznych wymaga tylko kilku kliknięć, opisanych w naszej społeczności, co znacznie ułatwia współdzielenie mikrokontrolera z innymi zespołami.

STM32WL3, STM32WL3R, STM32N6, STM32C0, STM32H7R3/7S3/7R7/7S7
Chociaż niemal każda wersja STM32CubeProgrammer wprowadza obsługę nowych mikrokontrolerów, wersja 2.18 była szczególnie godna uwagi ze względu na liczbę dodanych urządzeń. Użytkownicy mogą teraz pracować z STM32WL3, ogłoszonym zaledwie kilka tygodni temu, STM32N6, wprowadzonym na rynek kilka dni temu, oraz nowymi urządzeniami STM32C0 z 64 KB i 256 KB pamięci flash.
STM32CubeProgrammer wprowadza również obsługę dodatkowych funkcji dla STM32H7R3/7S3/7R7/7S7, wszystkich mikroprocesorów STM32 oraz STM32U5. Na przykład mikrokontrolery STM32H7R/S mogą teraz wykonywać bezpieczną instalację firmware’u (Secure Firmware Installation), a STM32MP25 zyskuje interfejs graficzny do zarządzania rejestrami PMIC i eksportu ustawień do pliku binarnego, co niezwykle ułatwia przenoszenie ich do innego projektu. A STM32U5 może teraz przywrócić konfigurację bajtów opcji do ustawień fabrycznych, jeśli deweloperzy popełnią błąd, który ich zablokuje.
STM32C0, STM32MP25 i STM32WB05/6/7
Od wersji 2.17 STM32CubeProgrammer obsługuje układy STM32C0 ze 128 KB pamięci flash. Rozpoznaje również STM32MP25, który zawiera NPU o mocy 1,35 TOPS, oraz wszystkie układy STM32WB0, w tym STM32WB05, STM32WB05xN, STM32WB06 i STM32WB07. W tym ostatnim przypadku wprowadziliśmy obsługę zaledwie kilka tygodni po ich premierze, pokazując tym samym, że STM32CubeProgrammer nadąża za najnowszymi wydaniami, aby deweloperzy mogli jak najszybciej programować i debugować swój kod na najnowszych układach STM32.
Dostęp do trybu bare metal w STM32MP13
Mikrokontrolery wymagają systemów operacyjnych czasu rzeczywistego ze względu na ograniczone zasoby, a paradygmaty sterowane zdarzeniami często wymagają wysokiego poziomu determinizmu podczas wykonywania zadań. Z kolei mikroprocesory mają znacznie więcej zasobów i lepiej radzą sobie z zadaniami równoległymi, dlatego używają wielozadaniowego systemu operacyjnego, takiego jak OpenSTLinux, nasza dystrybucja Embedded Linux. Jednak wielu klientów zaznajomionych ze światem mikrokontrolerów STM32 prosiło o możliwość uruchamiania RTOS na naszych mikroprocesorach jako alternatywy. Krótko mówiąc, chcą korzystać ze znajomego ekosystemu RTOS i optymalizacji wynikających z uruchamiania kodu bare metal, mając jednocześnie do dyspozycji zasoby mikroprocesora.
W związku z tym wydajemy dziś STM32CubeMP13, który zawiera narzędzia do uruchamiania systemu operacyjnego czasu rzeczywistego na naszym mikroprocesorze. Więcej szczegółów o zawartości pakietu podajemy w naszym wpisie na blogu o STM32MP13. Ponadto, aby umożliwić tę inicjatywę, firma ST zaktualizowała swoje narzędzia STM32Cube, takie jak STM32CubeProgrammer. Na przykład musieliśmy zadbać o to, aby deweloperzy mogli programować pamięć NOR. Podobnie STM32CubeProgrammer umożliwia użycie RTOS na STM32MP13 dzięki obsłudze partycji jednokrotnie programowalnej (OTP).
Tradycyjnie mikroprocesory mogą używać bootloadera, takiego jak U-Boot, aby bezpiecznie i wydajnie wczytać jądro Linuksa. Stanowi on zatem kluczowy pierwszy krok procesu rozruchu, który zaczyna się od odczytu partycji OTP. Dlatego gdy deweloperzy przechodzą z wielozadaniowego systemu operacyjnego na RTOS, niezbędne było, aby STM32CubeProgrammer umożliwił im programowanie partycji OTP, tak by mogli wczytać swój system operacyjny. Nowa wersja STM32CubeProgrammer pokazuje również, jak ekosystem ST współdziała, by wydawać nowe funkcje.
Obsługa STM32WB i STM32WBA
Od wersji 2.12 STM32CubeProgrammer wprowadził liczne usprawnienia dla serii STM32WB, coraz popularniejszej w aplikacjach uczenia maszynowego, co widzieliśmy na targach electronica 2022. W szczególności oprogramowanie ST wnosi nowe narzędzia graficzne i zaktualizowany stos bezprzewodowy, aby wspierać deweloperów. Na przykład narzędzie wyświetla bardziej jednoznaczne wskazówki w przypadku błędów, choćby gdy deweloperzy próbują zaktualizować stos bezprzewodowy przy aktywnym mechanizmie anti-rollback, ale zapomną wczytać poprzedni stos. Podobnie nowe komunikaty poinformują użytkowników, jeśli wersja stosu jest niezgodna z aktualizacją firmware’u. Wreszcie STM32CubeProgrammer udostępnia nowe linki do pobierania poprawek STM32WB oraz nowych porad i wskazówek, aby deweloperzy nie musieli ich szukać.
Podobnie STM32CubeProgrammer obsługuje nowy STM32WBA, pierwszy bezprzewodowy Cortex-M33. Oficjalnie zaprezentowany kilka miesięcy temu mikrokontroler otwiera drogę do Bluetooth Low Energy 5.3 i certyfikacji SESIP Level 3. Ma również mocniejszy tor radiowy o mocy wyjściowej do +10 dBm, zapewniający bardziej niezawodny sygnał.
STM32H5 i STM32U5
Obsługa STM32H5 rozpoczęła się od STM32CubeProgrammer 2.13, który dodał zgodność z mikrokontrolerami wyposażonymi w od 128 KB do 2 MB pamięci flash. Początkowo narzędzie wprowadziło funkcje bezpieczeństwa, takie jak uwierzytelnianie debugowania i provisioning kluczy uwierzytelniających, kluczowe przy korzystaniu z nowego systemu zarządzania cyklem życia. Narzędzie obsługiwało także generowanie kluczy i certyfikatów, szyfrowanie firmware’u oraz podpisywanie. Z czasem firma ST dodała obsługę nowych STM32U535 i STM32U545 z 512 KB i 4 MB pamięci flash. Mikrokontrolery te korzystają z regresji RDP z hasłem, co ułatwia prace rozwojowe, oraz z bezpiecznego programowania SFI.
Dodatkowo STM32CubeProgrammer zawiera interfejs do regresji ochrony przed odczytem (RDP) z hasłem dla STM32U5xx. Deweloperzy mogą zdefiniować hasło i przejść z poziomu 2, który wyłącza wszystkie funkcje debugowania, do poziomu 1, który chroni pamięć flash przed niektórymi operacjami odczytu lub zrzutu, lub do poziomu 0, który nie ma żadnych zabezpieczeń. Znacznie uprości to prototypowanie.
STM32WL3R
Zaledwie kilka dni po oficjalnej premierze STM32WL3R STM32CubeProgrammer oficjalnie obsługiwał nowe urządzenie, potwierdzając tym samym nasze zobowiązanie, by deweloperzy mogli jak najszybciej pracować na najnowszych mikrokontrolerach STM32. STM32WL3R to wersja STM32WL3 przeznaczona do zastosowań w pilotach zdalnego sterowania. Ma więcej pinów wybudzania, co pozwala większej liczbie przycisków pilota uruchamiać aplikację. Jest również wyposażony w radio o ultraniskim poborze mocy (zaledwie 10 mA przy 10 dB), zgodne z pasmem 315 MHz, często używanym w takich zastosowaniach, oprócz pozostałych pasm bezprzewodowych obsługiwanych przez STM32WL3.
STLINK-V3PWR
W wielu przypadkach deweloperzy używają sondy STLINK ze STM32CubeProgrammer, aby programować lub debugować swoje urządzenie. Dlatego szybko dodaliśmy obsługę naszej najnowszej sondy STLINK-PWR, najbardziej rozbudowanej jednostki źródłowo-pomiarowej i programatora/debuggera dla urządzeń STM32. Jeśli użytkownicy chcą zobaczyć profile energetyczne i zwizualizować pobór prądu, muszą użyć STM32CubeMonitor-Power. Jednak STM32CubeProgrammer będzie służył jako interfejs dla wszystkich funkcji debugowania. Może również współpracować ze wszystkimi interfejsami sondy, takimi jak SPI, UART, I2C i CAN.
Tryb skryptowy
Oprogramowanie zawiera interfejs wiersza poleceń (CLI) umożliwiający tworzenie skryptów. Ponieważ menedżer skryptów jest częścią aplikacji, nie zależy od systemu operacyjnego ani jego środowiska powłoki. W rezultacie skrypty można łatwo udostępniać. Kolejną zaletą jest to, że menedżer skryptów może utrzymywać połączenia z układem docelowym. Dzięki temu STM32CubeProgrammer CLI może utrzymywać aktywne połączenie przez całą sesję bez ponownego łączenia po każdym poleceniu. Obsługuje również zmienne lokalne, a nawet operacje arytmetyczne i logiczne na tych zmiennych. Deweloperzy mogą więc tworzyć zaawansowane makra automatyzujące złożone procesy. Aby STM32CubeProgrammer CLI był jeszcze potężniejszy, menedżer skryptów obsługuje również pętle i instrukcje warunkowe.
Ujednolicone doświadczenie
STM32CubeProgrammer ma na celu ujednolicenie doświadczenia użytkownika. Firma ST przeniosła wszystkie funkcje narzędzi takich jak ST-LINK Utility, DFU i innych do STM32CubeProgrammer, który stał się kompleksowym narzędziem dla deweloperów pracujących nad systemami wbudowanymi. Zaprojektowaliśmy go również tak, aby działał na wszystkich głównych systemach operacyjnych, a nawet wbudowaliśmy OpenJDK8-Liberica, aby ułatwić instalację. Dzięki temu użytkownicy nie muszą samodzielnie instalować Javy i zmagać się z problemami ze zgodnością, zanim wypróbują STM32CubeProgrammer.
• MOOC – Programowanie mikrokontrolerów STM32 za pomocą STM32CubeProgrammer
