Zestaw rozwojowy dla mikroprocesorów STM32MP1
Artykuł prezentuje zestawy rozwojowe z mikroprocesorami STM32MP1. Opisuje skład zestawu oraz przedstawia narzędzia rozwojowe do programowania mikroprocesora.
Od jakiegoś czasu na rynku dostępne są mikroprocesory STM32MP1. Produkowane są przez STMicroelectronics, firmę do tej pory najbardziej znaną z szerokiej oferty mikrokontrolerów z serii STM32 z rdzeniami ARM Cortex-M. Układy STM32MP1 to w pewnym sensie rozszerzenie tej rodziny, ale dzięki wbudowanym rdzeniom Cortex-A, są to kompletne mikroprocesory, które mają bardzo duże możliwości aplikacyjne.
O samych mikroprocesorach STM32MP1 opublikowaliśmy już osobny artykuł: STM32MP: przełomowa nowość w ofercie STMicroelectronics, ale przypomnę tu krótko najważniejsze właściwości układów. Procesory dysponują jednym lub dwoma rdzeniami ARM Cortex-A7 o taktowaniu do 650 MHz lub do 800 MHz, a także rdzeniem Cortex-M4 o taktowaniu do 209 MHz. Część modeli zawiera także koprocesor graficzny 3D. Procesory dysponują bogatą funkcjonalnością dotyczącą bezpieczeństwa, w tym technologią TrustZone, akceleratorami kryptograficznymi, generatorem TRNG oraz izolacją zasobów rdzenia Cortex-M. Układ zapewnia też bogaty zestaw interfejsów, m.in. SPI, I2C, USB, HDMI, CAN, Ethernet 1Gb/s, a także Quad-SPI.Rysunek 1. Elementy wyposażenia mikroprocesorów z serii STM32MP1
Opis zestawów
Aby użytkownicy łatwo i szybko mogli zapoznać się z procesorem, producent przygotował dwa zestawy należące do znanej już serii DISCOVERY. Pierwszy, STM32MP157A-DK1, to płytka z mikroprocesorem STM32MP157A i dołączonymi wszystkimi niezbędnymi elementami oraz wyprowadzonymi interfejsami. Natomiast w zestawie STM32MP157C-DK2 zamontowano mikroprocesor STM32MP157C. Znajdziemy w nim także nakładkę z wyświetlaczem dotykowym TFT o przekątnej 4” i rozdzielczości 800 x 400.
Rysunek 2. Zestaw rozwojowy STM32MP157A-DK1
Płytka główna zestawu może troszeczkę przypominać komputer Raspberry Pi. Rzeczywiście zestaw złącz, które można znaleźć na płytce jest bardzo podobny do tego znanego z malinki. Na płytce zamontowano interfejs Ethernet, 4 złącza USB typu A, HDMI, MIPI DSI do podłączenia wyświetlacza, stereofoniczne złącze audio Jack 3,5 mm, slot na kartę microSD, a także 40-pinowe złącze rozszerzeniowe zgodne ze standardem Raspberry Pi. Do podłączenia zasilania zastosowano interfejs USB-C. Urządzenie posiada także złącze rozszerzeniowe w standardzie Arduino, złącze USB OTG typu C oraz złącze Micro USB połączone z wbudowanym debugerem ST-LINK/V2.
Rysunek 3. Rozłożenie złączy płytki STM32MP157A-DK1
Jednym z elementów zestawu jest układ zarządzania zasilaniem STPMIC1. Został on specjalne zaprojektowany i przeznaczony do systemów z mikroprocesorem STM32MP1. Dysponuje aż 14 liniami zasilania, które oprócz procesora mogą zasilać także pamięci DDR, interfejsy USB, HDMI i wiele innych komponentów. Dodatkowo układ charakteryzuje się dużą sprawnością energetyczną i znakomitymi parametrami czasowymi.
Rysunek 4. Schemat blokowy układu STPMIC
W bardziej rozbudowanym zestawie STM32MP157C-DK2 zastosowano procesor STM32MP157C. Wraz z opisaną wyżej płytką bazową producent dostarcza także moduł z wyświetlaczem TFT o przekątnej 4”. Ekran ma rozdzielczość 480 x 800 pikseli i dysponuje podświetleniem LED. Komunikuje się z płytą główną za pomocą interfejsu MIPI DSI.
Rysunek 5. Zestaw STM32MP157C-DK2 z nakładką z ekranem TFT
Program demonstracyjny
Wraz z zestawem producent dostarcza kartę pamięci z zainstalowanym systemem OpenSTLinux w wersji Starter Package oraz programem demonstracyjnym. Istnieje również możliwość samodzielnego przygotowania takiej karty.
Aby uruchomić zestaw rozwojowy, oprócz samego zestawu niezbędne są następujące elementy:
- Zasilacz USB-C o napięciu 5 V i wydajności co najmniej 3 A,
- Przewód USB-C na USB typu A,
- Przewód Micro USB na USB typu A,
Do komputera należy podłączyć przewód USB OTG typu C (CN7) oraz USB z programatora ST-LINK/V2-1 (CN11). Zasilacz należy podłączyć do złącza USB-C z oznaczeniem PWR (CN6). Opcjonalnie można dołączyć zestaw do sieci Ethernet. Schemat połączenia przewodów można obejrzeć na rysunku poniżej.
Rysunek 6. Podłączenie zestawu do zasilania i komputera
Przygotowanie karty demonstracyjnej za pomocą STM32CubeProgrammer
Aby przygotować kartę demonstracyjną należy pobrać oprogramowanie STM32CubeProgrammer. Jest ono dostępne na stronie: https://www.st.com/en/development-tools/stm32cubeprog.html.
Rysunek 7. Oprogramowanie STM32CubeProgrammer
Obraz systemu można pobrać ze strony: https://www.st.com/content/ccc/resource/technical/software/firmware/group0/21/4c/cd/61/9e/dd/45/5e/STM32MP15_OpenSTLinux_Starter_Package/files/FLASH-stm32mp1-openstlinux-20-02-19.tar.xz/jcr:content/translations/en.FLASH-stm32mp1-openstlinux-20-02-19.tar.xz
Aby wprowadzić zestaw w tryb wgrywania systemu, należy przestawić przełączniki w następującą pozycję:
Rysunek 8. Pozycje przełączników w trybie wgrywania systemu
Następnie należy podłączyć zestaw do komputera za pomocą przewodu USB-C, a także podłączyć zasilanie i zresetować płytkę przyciskiem reset. Aby połączyć oprogramowanie STM32CubeProgrammer z płytką, odśwież konfigurację USB po prawej stronie okna, a następnie naciśnij Connect przy wybranym interfejsie USB.
Rysunek 9. Widok programu po połączeniu z płytką
Aby wgrać system, należy wejść w zakładkę Open file i odszukać (dla zestawu STM32MP157C-DK2) plik FlashLayout_sdcard_stm32mp157c-dk2-trusted.tsv z podfolderu /images/stm32mp1/flashlayout_st-image-weston w folderze, do którego zostało wypakowane archiwum z systemem. W pole Binaries path należy wprowadzić podfolder /images/stm32mp1. Aby rozpocząć wgrywanie systemu, naciśnij Download.
Rysunek 10. Widok programu po wybraniu plików, przed wgraniem systemu na zestaw STM32MP157C-DK2
Wgranie systemu może porwać kilka minut. Po wgraniu systemu należy odłączyć zestaw od komputera i zasilania, a następnie przełączyć zworki do trybu startu systemu.
Rysunek 11. Ustawienie zworek w tryb startu systemu.
Po ponownym podłączeniu zasilania uruchomi się system Linux oraz program demonstracyjny. Umożliwia on przetestowanie możliwości zestawu, m.in. renderowania grafiki 3D, odtwarzania audio, wideo, możliwości algorytmów AI, łączenia z siecią oraz z głośnikiem Bluetooth. System umożliwia także dostęp do terminala i sterowanie systemem za pomocą komend znanych z systemów Linux, a także łączenie za pomocą portu szeregowego wbudowanego w ST-LINK oraz za pośrednictwem protokołu ssh.
Rysunek 12. Program demonstracyjny na płytce STM32MP157C-DK2
Programowanie mikroprocesora
Producent dostarcza szeroki zakres narzędzi do rozwoju oprogramowania na systemy z układami STM32MP1. Jednym z nich jest dystrybucja OpenSTLinux, którą można uruchomić na mikroprocesorze. Umożliwia projektowanie własnych programów na ten system oraz kompilację skrośną, wgranie i uruchomienie programu na procesorze. Dostępna jest w wersjach:
- Starter package – pozwala na poznanie możliwości systemu Linux na platformie STM32MP1 – jest to właściwie kod demonstracyjny, który opisałem w poprzedniej części artykułu.
- Developer package – to zestaw narzędzi umożliwiający dodanie własnego programu, który można uruchomić w systemie Linux,
- Distribution package – umożliwia zaprojektowanie własnej dystrybucji Linuxa, a także własnych wersji pakietów Starter i Developer.
Więcej informacji na temat pakietu narzędzi można znaleźć na stronie: https://www.st.com/en/embedded-software/stm32-mpu-openstlinux-distribution.html
Platforma STM32MP1 jest również obsługiwana przez narzędzie Yocto, pozwalające na stworzenie własnej dystrybucji systemu Linux. Więcej informacji na stronie projektu: https://www.yoctoproject.org/
STMicroelectronics zaimplementował obsługę układów STM32MP1 również w swoich narzędziach, dobrze znanych programistom kodu na mikrokontrolery STM32. Mowa tu zwłaszcza o STM32CubeMX oraz STM32CubeIDE.
STM32CubeMX umożliwia przypisanie funkcji do odpowiednich wyprowadzeń, a także prostą konfigurację peryferiów oraz generację kodu, który potem można edytować w środowisku programistycznym takim jak STM32CubeIDE lub Keil µVision.
Rysunek 13. Wsparcie dla STM32MP1 w konfiguratorze STM32CubeMX
Także flagowe środowisko do projektowania kodu na STM32 – STM32CubeIDE – doczekało się pakietu umożliwiającego programowanie na procesory STM32MP1. Pakiet zawiera biblioteki CMSIS, pakiety BSP dla płytek rozwojowych z STM32MP1, a także przykłady dla każdej z płytek. Dzięki temu zestawowi tworzenie kodu na procesor jest znacznie prostsze, natomiast przykłady umożliwiają poznanie praktyk programowania polecanych przez producenta.
Rysunek 14. Przykładowy kod dla mikroprocesora STM32MP1 otwarty w środowisku STM32CubeIDE
Podsumowanie
W związku z ciągłym wzrostem wymagań stawianym systemom wbudowanym, coraz więcej projektów realizowanych jest za pomocą mikroprocesorów. STMicroelectronics, wydając swój procesor STM32MP1, stara się podążać za tym trendem. Procesory charakteryzują się duża mocą obliczeniową, bogatym zestawem peryferiów oraz wbudowanymi układami zapewniającymi bezpieczeństwo systemu. Tradycyjnie, producent udostępnił szeroki zakres narzędzi rozwojowych. Zaliczają się do nich zarówno narzędzia programistyczne znane z projektowania dla mikrokontrolerów STM32, jak i dystrybucje systemu Linux oraz płytki rozwojowe. Dzięki tak dużemu wsparciu, projektanci doświadczeniem z mikrokontrolerami STM32 mogą łatwo wdrożyć się w programowanie układów STM32MP1.
Płytki STM32MP157A-DK1 oraz STM32MP157C-DK2 są dostępne w sklepie Kamami.pl, który jest autoryzowanym partnerem firmy STMicroelectronics.