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
.zip
ze strony ST: https://www.st.com/en/development-tools/stm32cubeprog.html - Stwórz katalog roboczy, skopiuj tam archiwum i rozpakuj je:
- Pobierz archiwum
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
):
# Ś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:
# Ścieżka może się różnić!
cd /home/USER/STMicroelectronics/STM32Cube/STM32CubeProgrammer/Drivers/rules
- Skopiuj reguły do systemowego katalogu
ude
v:
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#
# 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/stm32mp2
wewną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).
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 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,libusb
i połączenia kablowe. - 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 obrazoptee
na kartę SD:
STM32_Programmer_CLI -c port=usb1 -w flashlayout_st-image-weston/optee/FlashLayout_sdcard_stm32mp257f-dk-optee.tsv
- Uwaga: Jeśli
usb1
nie działa, spróbujusb0
lub sprawdź wynik poleceniaSTM32_Programmer_CLI
-l usb
. Wgrywanie potrwa kilka minut. - 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
). - 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.
- Uruchom terminal szeregowy: Użyj
minicom
,screen
lubputty
na swoim PC, łącząc się z odpowiednim portem szeregowym (zazwyczaj/dev/ttyACMx
, baud rate 115200). - 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:
Dodaj komentarz