Wśród większości pasjonatów elektroniki niezwykle popularne są minikomputery jednopłytkowe (SBC) z rodziny Raspberry Pi. Wynika to z doskonałej dostępności licznych poradników, jak i programów pozwalających użytkownikowi szybko rozpocząć swoją przygodę z systemami operacyjnymi w systemach embedded. Niestety często pojawia się potrzeba zastosowania dodatkowego mikrokontrolera, który musi zostać podłączony do naszej płytki Raspberry Pi – czy to za pośrednictwem USB, czy też UART-a, a to samo w sobie powoduje rozbudowanie całego projektu, na co nie zawsze jest miejsce w obudowie. Warto zwrócić wówczas uwagę na rozwiązania oferowane przez procesory aplikacyjne STM32MP.
Czym jest STM32MP?
Mikroprocesory z rodziny STM32MP znajdują swoje zastosowanie m.in. w systemach wbudowanych opartych na Linuksie, przemysłowych urządzeniach sterujących, IoT, aparaturze medycznej, telekomunikacji i wielu innych. Ogólnie rzecz ujmując: wszędzie tam, gdzie wymagana jest wysoka wydajność, połączona nierzadko z koniecznością implementacji jednego z systemów czasu rzeczywistego (RTOS), opracowanych na mikrokontrolery.
Seria STM32MP13x bazuje na pojedynczym rdzeniu ARM Cortex-A7, zaś rodzina STM32MP151 to również pojedynczy rdzeń ARM, ale z dodatkowym koprocesorem Cortex-M4, zintegrowanym w samym układzie. STM32MP153 i STM32MP157 mają już po dwa rdzenie Cortex-A7 i pojedynczy mikrokontroler Cortex-M4.
Jeszcze wyżej w rankingach wydajności plasują się rodziny STM32MP251 (pojedynczy rdzeń ARM Cortex-A35 ze zintegrowanym rdzeniem Cortex-M33), STM32MP253 (2 rdzenie ARM Cortex-A35 wraz z rdzeniem Cortex-M33), STM32MP255 i STM32MP257 (z dodatkową jednostką AI NPU, pozwalająca na brzegowe przetwarzanie danych z użyciem algorytmów sztucznej inteligencji).
Jak widać, rodzina mikroprocesorów STM32MP jest bogata w wiele różnych wersji, różniących się liczbą i architekturą rdzeni oraz oferowanymi możliwościami peryferyjnymi. Pomimo tak wielu istotnych różnic, rozpoczęcie przygody z tymi procesorami aplikacyjnymi zaczyna się w dość podobny sposób. W dalszej części artykułu zaprezentuję sposób instalacji systemu Linux Yocto.
W moim przypadku korzystam z komputera z systemem Linux Manjaro. Opisywanej procedury nie testowałem na żadnym innym systemie operacyjnym, jednak osoby zaznajomione ze środowiskiem linuksowym powinny bez problemu dostosować poszczególne operacje do posiadanej dystrybucji.
Przygotowanie środowiska
Przed wgraniem systemu do pamięci znajdującej się na płytce ewaluacyjnej, należy zainstalować oprogramowanie STM32CubeProgrammer z oficjalnej strony ST Microelectronics. Oprogramowanie jest darmowe i dostępne na dowolny system operacyjny. Procedura instalacji zależy od używanego OS.
W przypadku systemów Linux należy zainstalować dodatkowy pakiet bibliotek USB-DFU (ang. Device Firmware Update). W przypadku systemów opartych na poszczególnych dystrybucjach polecenie instalacyjne różni się, tj:
- Debian: sudo apt-get install libusb-1.0-0
- Arch: sudo pacman -S libusb
W następnej kolejności należy nadać uprawnienia do obsługi portu USB programowi STM32CubeProgrammer. Do tego celu służy komenda:
po wykonaniu której trzeba jeszcze skopiować pliki do odpowiedniego katalogu systemowego:
Ostatnimi dwiema komendami restartujemy uprawnienia obsługi USB i tym samym nasz program jest w pełni skonfigurowany do pracy:
sudo udevadm trigger
Po poprawnej instalacji wpisanie polecenia:
spowoduje wyświetlenia pomocy programu (rysunek 1). W przypadku błędnej instalacji należy samodzielnie załadować plik bin do zmiennych systemowych PATH, przy czym procedura różni się w zależności zarówno od posiadanego systemu operacyjnego, jak i samej konfiguracji, tak więc należy wykonać ją samodzielnie.
Wgranie systemu operacyjnego
W tym momencie pozostaje nam już tylko pobranie i wgranie systemu operacyjnego z strony https://st.com. Na rysunkach 2...5 zaprezentowano ścieżkę poruszania się po stronie st.com w celu zlokalizowania interesującego nas pliku. W przypadku chęci wgrania systemu operacyjnego na płytkę STM32MP2 należy wybrać odpowiedni dla niej pakiet instalacyjny. Dalsze kroki pozostają już takie same jak dla STM32MP1. Pobrany plik należy rozpakować do dowolnego folderu – ważne, by przed wykonaniem operacji był on pusty.
Procedura instalacji systemu Linux na płytce STM32MP157F-DK2 rozpoczyna się od ustawienia przełączników SW1 (sekcje BOOT0 i BOOT2) w pozycji OFF – patrz fotografia 1.
W następnej kolejności instalujemy kartę pamięci micro SD w slocie kart i podłączamy zasilanie (gniazdo USB C PWR). Drugi port USB C OTG podłączmy do komputera – zostanie on użyty do instalacji systemu na karcie pamięci.
Interesuje nas numer portu, pod którym identyfikuje się podłączone urządzenie – w terminalu wpisujemy więc polecenie:
zaś potrzebny nam indeks portu odczytujemy w pierwszej linii wyświetlonej listy parametrów (rysunek 6).
Następnym poleceniem jest:
(patrz rysunek 7). Warto zaznaczyć, że w tym momencie powinniśmy znajdować się w folderze zawierającym nasz wcześniej wypakowany plik.
W przypadku źle sformatowanej karty pamięci otrzymamy komunikat widoczny na rysunku 8. Należy wówczas ponownie wykonać formatowanie – zalecany system plików to FAT-32.
Prawidłowa instalacja jest procesem powolnym i może trwać nawet do 20 minut, tak więc należy uzbroić się w cierpliwość na tym etapie pracy (rysunek 9).
Po zakończeniu instalacji odłączamy zasilanie płytki, przełączamy przełączniki SW1 (BOOT0 i BOOT2) w pozycję ON, a następnie ponownie podłączamy zasilanie. W tym momencie również należy uzbroić się w cierpliwość, pierwsze uruchomienie systemu wymaga bowiem dodatkowego czasu – każde kolejne będzie już znacznie szybsze.
Rysunek 10 prezentuje widok ekranu poprawnie uruchomionej płytki.
inż. Wiktor Hubaj