Jak zacząć z STM32MP2? STM32MP257 Discovery Kit
Jak zacząć z STM32MP2? STM32MP257 Discovery Kit
Wstęp
Nowa płytka od STMicroelectronics, STM32MP257F-DK, trafiła na moje biurko. To mocna jednostka z dwurdzeniowym Cortex-A35 i dodatkowym Cortex-M33, oferująca sporo możliwości.
W tym krótkim wpisie pokażę, jak wgrać na nią oficjalny obraz systemu OpenSTLinux Starter Package, aby szybko zacząć pracę.
Więcej znajdziesz w materiale na YT:
Przygotowanie środowiska
Zanim podłączymy płytkę, potrzebujemy kilku narzędzi na naszym komputerze z Linuxem.
-
- STM32CubeProgrammer: To oficjalne narzędzie ST do wgrywania oprogramowania.
-
- Pobierz archiwum
.zipze strony ST: https://www.st.com/en/development-tools/stm32cubeprog.html
- Pobierz archiwum
-
- Stwórz katalog roboczy, skopiuj tam archiwum i rozpakuj je:
-
- STM32CubeProgrammer: To oficjalne narzędzie ST do wgrywania oprogramowania.
mkdir stm32mp25 && cd stm32mp25 cp ~/Downloads/en.stm32cubeprg-lin-v2-18-0.zip . unzip en.stm32cubeprg-lin-v2-18-0.zip
-
- Uruchom instalator:
./SetupSTM32CubeProgrammer-2.18.0.linux
-
- Aby łatwo używać narzędzia z linii komend, dodajmy je do
PATH. Najprościej stworzyć link symboliczny w/usr/bin(może wymagaćsudo):
- Aby łatwo używać narzędzia z linii komend, dodajmy je do
# Ścieżka może się różnić w zależności od Twojej instalacji! # Sprawdź, gdzie zainstalował się CubeProgrammer. ln -s /home/USER/STMicroelectronics/STM32Cube/STM32CubeProgrammer/bin/STM32_Programmer_CLI /usr/bin/STM32_Programmer_CLI
-
- libusb: Potrzebne do komunikacji z płytką przez USB w trybie DFU (Device Firmware Upgrade).
apt-get update sudo apt-get install libusb-1.0-0
-
- Reguły udev: Aby system poprawnie rozpoznawał podłączoną płytkę.
-
- Przejdź do katalogu z regułami w zainstalowanym CubeProgrammer:
-
- Reguły udev: Aby system poprawnie rozpoznawał podłączoną płytkę.
# Ścieżka może się różnić! cd /home/USER/STMicroelectronics/STM32Cube/STM32CubeProgrammer/Drivers/rules
-
- Skopiuj reguły do systemowego katalogu
udev:
- Skopiuj reguły do systemowego katalogu
cp *.* /etc/udev/rules.d/
Pobieranie i przygotowanie obrazu systemu
-
- Udaj się na stronę STMicroelectronics i pobierz najnowszy STM32MP2 Starter Package: https://www.st.com/en/embedded-software/stm32mp2starter.html#get-software
-
- Stwórz nowy katalog roboczy na pliki systemowe, skopiuj tam pobrane archiwum (
.tar.gz) i rozpakuj je: Bash#
- Stwórz nowy katalog roboczy na pliki systemowe, skopiuj tam pobrane archiwum (
# Przejdź do swojego głównego katalogu roboczego cd ~/prv/stm32mp25 mkdir starter && cd starter cp ~/Downloads/en.FLASH-stm32mp2-openstlinux-6.6-yocto-scarthgap-mpu-v24.12.05.tar.gz . # Rozpakuj archiwum (nazwa pliku będzie zależeć od wersji) gunzip en.FLASH-stm32mp2-openstlinux-6.6-yocto-scarthgap-mpu-v24.12.05.tar.gz tar -xvf en.FLASH-stm32mp2-openstlinux-6.6-yocto-scarthgap-mpu-v24.12.05.tar
-
- Po rozpakowaniu powstanie struktura katalogów. Najważniejszy dla nas będzie podkatalog
images/stm32mp2wewnątrz rozpakowanego folderu (np.stm32mp2-openstlinux-6.6-yocto-scarthgap-mpu-v24.12.05/images/stm32mp2). Znajdują się tam m.in.:-
- Pliki związane z procesem bootowania (TF-A, U-Boot, OP-TEE)
-
- Obraz jądra Linux
-
- Obraz systemu plików rootfs
-
- Pliki
FlashLayout(.tsv) – kluczowe dla procesu wgrywania, opisują układ partycji dla różnych konfiguracji i nośników (np. SD card, eMMC).
- Pliki
-
- Po rozpakowaniu powstanie struktura katalogów. Najważniejszy dla nas będzie podkatalog
Przygotowanie sprzętu i wgrywanie obrazu
-
- Ustaw tryb bootowania: Na płytce STM32MP257F-DK znajdź przełączniki DIP (SW1). Aby wymusić tryb DFU (wgrywanie przez USB), ustaw wszystkie przełączniki w pozycję OFF. Szczegóły znajdziesz w dokumentacji ST Wiki dla tej płytki (link w rozdziale Referencje)
-
- Podłącz zasilanie: Użyj portu USB-C oznaczonego jako
PWR. Zasilacz od Raspberry Pi 4B działa bez problemu.
- Podłącz zasilanie: Użyj portu USB-C oznaczonego jako
-
- Podłącz dane USB: Użyj drugiego portu USB-C i podłącz go do komputera kablem USB-C -> USB-A/C.
-
- Sprawdź połączenie: Otwórz terminal i wpisz:
STM32_Programmer_CLI -l usb
-
- Powinieneś zobaczyć wykryte urządzenie USB (np.
usb1). Jeśli nie, sprawdź reguły udev,libusbi połączenia kablowe.
- Powinieneś zobaczyć wykryte urządzenie USB (np.
-
- Wgraj obraz: Przejdź do katalogu z obrazami i plikami dystrybucji:
# Ścieżka zależy od wersji i miejsca rozpakowania! cd ~/prv/stm32mp25/starter/stm32mp2-openstlinux-*/images/stm32mp2
-
- Uruchom proces wgrywania, używając odpowiedniego pliku
.tsv. Poniższy przykład wgrywa obrazopteena kartę SD:
- Uruchom proces wgrywania, używając odpowiedniego pliku
STM32_Programmer_CLI -c port=usb1 -w flashlayout_st-image-weston/optee/FlashLayout_sdcard_stm32mp257f-dk-optee.tsv
-
- Uwaga: Jeśli
usb1nie działa, spróbujusb0lub sprawdź wynik poleceniaSTM32_Programmer_CLI-l usb. Wgrywanie potrwa kilka minut.
- Uwaga: Jeśli
-
- Zakończenie: Po pomyślnym wgraniu zobaczysz komunikat typu:
Start operation done successfully at partition 0x13 Flashing service completed successfully
Pierwsze uruchomienie
-
- Odłącz zasilanie i kabel USB-C danych.
-
- Zmień tryb bootowania: Ustaw przełączniki DIP (SW1) z powrotem na domyślną konfigurację bootowania z nośnika, na który wgrałeś system (np. z karty SD – sprawdź w dokumentacji ST Wiki, często jest to
ON OFF OFF OFF).
- Zmień tryb bootowania: Ustaw przełączniki DIP (SW1) z powrotem na domyślną konfigurację bootowania z nośnika, na który wgrałeś system (np. z karty SD – sprawdź w dokumentacji ST Wiki, często jest to
-
- Podłącz UART: Aby zobaczyć konsolę szeregową podczas startu systemu, podłącz kabel USB-C z komputera do portu PWR/STLINK. Ten port zasili płytkę oraz zapewni połączenie UART przez wbudowany konwerter ST-LINK.
-
- Uwaga: Korzystanie z zasilania przez port ST-LINK może powodować świecenie diod LED wskazujących na problem z zasilaniem (np. pomarańczowa LED). Wydaje się to normalne w tej konfiguracji. Jeśli potrzebujesz pełnej mocy, użyj zasilacza sieciowego.
-
- Podłącz UART: Aby zobaczyć konsolę szeregową podczas startu systemu, podłącz kabel USB-C z komputera do portu PWR/STLINK. Ten port zasili płytkę oraz zapewni połączenie UART przez wbudowany konwerter ST-LINK.
-
- Uruchom terminal szeregowy: Użyj
minicom,screenlubputtyna swoim PC, łącząc się z odpowiednim portem szeregowym (zazwyczaj/dev/ttyACMx, baud rate 115200).
- Uruchom terminal szeregowy: Użyj
-
- Po podłączeniu zasilania powinieneś zobaczyć logi startowe U-Boota i Linuksa.
Podsumowanie i porównanie z Raspberry Pi
Start z STM32MP257 jest trochę trudniejszy niż z popularnym Raspberry Pi. Wymaga instalacji dedykowanych narzędzi, ręcznej konfiguracji trybu bootowania i wgrywania obrazu przez USB DFU. Dokumentacja ST, choć obszerna, czasami zawiera drobne nieścisłości lub niedopowiedzenia (np. który port USB-C służy do czego po flashowaniu, potencjalne problemy z rozpakowaniem archiwum tar jeśli użyje się złej komendy).
Jednak STM32MP2 oferuje sporo zalet:
-
- Secure Boot
-
- Koprocesor Cortex-M, przyda się do zastosowań real-time
-
- Przycisk Reset: Przydatny :)
-
- Pamięć eMMC: Wbudowana, szybsza i trwalsza niż typowa karta SD
-
- Elastyczny bootflow: Większa kontrola nad bootem, możemy wybierać i eksperymentować
-
- Bogate peryferia: WiFi, Bluetooth, Ethernet, HDMI, liczne GPIO (to ma też Raspberry)
Mimo początkowych trudności, STM32MP257 wydaje się bardzo obiecującą platformą dla bardziej zaawansowanych projektów wykorzystujących Embedded Linuxa.
Referencje
Oficjalna dokumentacja flashowania:
https://wiki.st.com/stm32mpu/wiki/STM32MP25_Discovery_kits_-_Starter_Package
Opis HW:
https://wiki.st.com/stm32mpu/wiki/STM32MP257x-DKx_-hardware_description#USB_Power-_ST-LINK_TypeC
Karta produktu:
Wdrażasz Embedded Linuxa?
Jeżeli potrzebujesz profesjonalnego szkolenia lub konsultacji z Embedded Linuxa – napisz.


Będzie film na YouTube?
Tak, dzisiaj po południu będzie wrzucony. Potem zaktualizuję treść posta.