STM32Cube: pakiet bibliotek z HAL/GUI/FatFS/FreeRTOS, stosami komunikacyjnymi dla STM32
STM32Cube to pracowicie rozwijany przez STMicroelectronics system bibliotek dla mikrokontrolerów STM32, które ułatwiają nie tylko pisanie aplikacji – także zintegrowanej z systemem operacyjnym, ale także konfigurację bloków peryferyjnych mikrokontrolerów ze wszystkich produkowanych obecnie rodzin – od STM32F0/L0 do STM32F4.
Prace nad pakietem trwają od kilku lat, dopiero kilka tygodni temu producent uzupełnił zestaw bibliotek portowanych na mikrokontrolery STM32F1. W skład pakietu o nazwie STM32Cube wchodzą dwie grupy oprogramowania:
- graficzny konfigurator mikrokontrolerów STM32 i wbudowanych w nie bloków peryferyjnych – jest to program o nazwie STM32CubeMX,
- osobne dla każdej rodziny mikrokontrolerów STM32 zestawy bibliotek z interfejsem HAL, które zapewniają obsługę bloków peryferyjnych wbudowanych w mikrokontrolery (w tym USB oraz sensorów pojemnościowych do implementacji bezstykowych nastawników i klawiatur STMTouch), a także wygodną integrację z systemem operacyjnym FreeRTOS, systemem plików FatFS, stosem TCP/IP, wspomaganiem wyświetlania grafiki (m.in. dzięki integracji z pakietem bezpłatnych bibliotek STemWIN firmy Segger i bezpłatnym kompresorem-dekompresorem obrazów LibJPEG).
Pakiet narzędzi STM32Cube jest bezpłatny! Czytelników zainteresowanych prezentowanym oprogramowaniem kierujemy na stronę producenta pod adres www.st.com/stm32cube. |
O ile STM32CubeMX jest narzędziem uniwersalnym, umożliwiającym konfigurację aplikacji dla wszystkich modeli mikrokontrolerów STM32, to każda podrodzina (STM32L1, STM32F1, STM32F2…) wymaga zainstalowania osobnego pakietu bibliotek STM32Cube. Przypisanie indywidulanych zestawów bibliotek poszczególnym podrodzinom jest związane z ich odmiennym wyposażeniem i pozwala dobrze dopasować funkcjonalności bibliotek do budowy i wymogów obsługiwanych bloków peryferyjnych, pozwala także zoptymalizować ich działanie, ograniczając jednocześnie zajmowane zasoby. Kolejną ważną przyczyną dedykowania bibliotek są różne możliwości funkcjonalne i wydajność docelowych mikrokontrolerów: nie bowiem ma sensu implementacja obsługi stosu TCP/IP czy protokołu SSL w mikrokontrolerze pozbawionym MAC-a ethernetowego, podobnie jak nie ma sensu ograniczanie liczby obsługiwanych klas urządzeń USB do zestawu podstawowego urządzeń device gdy mikrokontroler oferuje zasoby umożliwiające implementację także hosta. Różnice związane z możliwościami mikrokontrolerów występują także w dołączonych do bibliotek pakietach sterowników wyświetlaczy: aktualna wersja STM32Cube dla STM32F4 zawiera procedury obsługi 16 różnych sterowników (LCD i touch-paneli), a wersję dla STM32L0 wyposażono w dwa takie zestawy. Domyślnym urządzeniem wyjściowym w STM32Cube, jakie jest dostępne dla wszystkich podrodzin mikrokontrolerów, jest moduł LCD ze sprzętowym sterownikiem ST7735, standardowym wyposażeniem bibliotek jest także zestaw skalowalnych czcionek.
STM32CubeMX jako plug-in w Eclipse Firma STMicroelectronics przygotowała i udostępniła bezpłatny plug-in dla IDE Eclipse dostępney pod adresem www.st.com/stm32cube. |
Rys. 1. Budowa pakietu bibliotek STM32CubeF4
Każdy dedykowany pakiet bibliotek zawiera także zestawy BSP (Board Support Package) dla zestawów startowych, ewaluacyjnych i uruchomieniowych z oferty STMicroelectronics, dzięki czemu rozpoczęcie pracy z którymś z zestawów z oferty producenta nie wymaga żmudnego poznawania jego szczegółów sprzętowych.
Rys. 2. Architektura pakietu STM32CubeF4 z podziałem na warstwy
Na rysunku 1 pokazano uproszczony schemat blokowy ilustrujący budowę funkcjonalną pakietu bibliotek STM32CubeF4, a na rysunku 2 pokazano architekturę tego pakietu z podziałem na warstwy funkcjonowania aplikacji.
Warstwa Layer0 zawiera m.in. interfejs HAL (Hardware Abstraction Layer), która uniwersalizuje dostęp wyższych warstw do sprzętu, do czego służy dobrze udokumentowane API. W warstwie Layer1 ulokowane są m.in. biblioteki ze stosami komunikacyjnymi (USB Host/Device Libraries, PolarSSL, LwIP), bibliotekami graficznymi STemWin, LibJPEG, a także systemem operacyjnym FreeRTOS i systemem obsługi plików FatFS. Najwyższa warstwa – Layer2 – jest warstwą dla aplikacji użytkownika, które korzystają z możliwości udostępnianych przez warstwy leżące poniżej.
Jakość pakietów STM32Cube jest przez producenta weryfikowana za pomocą narzędzia CodeSonar firmy Grammatech, dzięki czemu – przy skomplikowanej strukturze całego zestawu – minimalizowane są niepotrzebne rekurencje oraz zależności pomiędzy fragmentami kodu bibliotek mogące zmniejszać wydajność całego systemu lub wręcz – na przykład z powodu konfliktów w obsłudze przerwań -uniemożliwiać jego pracę.
Rys. 3. Okno interaktywnego selektora zasobów