Atollic TRUEStudio STM32 – jak zacząć? [1]
W artykule przedstawiamy TrueSTUDIO – bezpłatne środowisko programistyczne dla fanów STM32.
Każdy znaczący gracz na rynku mikrokontrolerów ma swojej ofercie środowisko projektowe IDE – Integrated Development Environment. Są to rozbudowane pakiety programowe pozwalające na tworzenie projektów z zaawansowaną edycją plików źródłowych ich kompilacją w języku C lub opcjonalnie C++, sterowaniem programatorem/debugerem i możliwością sprzętowego debugowania programu w docelowym środowisku. Oprócz tego dostarczane są zaawansowane firmowe biblioteki obsługujące układy peryferyjne mikrokontrolerów ale też współpracujące z układami zewnętrznymi typu moduły sterowników graficznych, moduły łączności Wi-Fi, Bluetooth, GPS itp. Standardem stają się programowe konfiguratory układów peryferyjnych z przyjaznym interfejsem użytkownika. Jeszcze do nie dawna takie narzędzia programistyczne dla mikrokontrolerów STM32 były oferowane przez firmy zewnętrzne i ich pełne wersje kosztowały dość sporo. Teraz jest do dyspozycji całkowicie bezpłatny doskonały pakiet Atollic True Studio for STM32.
Atollic TRUEStudio for STM32
IDE Atollic TRUEStudio wykorzystuje otwarty standard framework Eclipse , kompilator GCC (język C/C++), oraz debuger oparty o standard GDB. Eclipse IDE był początkowo przeznaczony dla języka Java, ale stosunkowo łatwo go przystosować do pracy z innymi językami na przykład C/C++, PHP itp. Cechą charakterystyczną jest możliwość uzupełniania IDE tworzonego w oparciu o framework Eclipse o własne wtyczki narzędziowe.
Konsekwencją stosowania Eclipse jest organizowanie pracy w oparciu o przestrzeń roboczą (workspace) i projekty (projects):
- Przestrzeń robocza może zawierać jeden, lub wiele projektów
- Projekty zawierają wszystkie niezbędne pliki potrzebne do pracy
- Każda przestrzeń robocza może pomieścić wiele projektów w dowolnej lokalizacji komputera
- Użytkownik może swobodnie wybierać przestrzenie robocze, ale w danym momencie aktywna może być tylko jedna
- Wybieranie przestrzeni roboczych jest wygodnym i szybkim mechanizmem zarządzania aktywnym projektem, lub zestawem projektów.
W praktyce przestrzenie robocze i projekty są zestawami hierarchicznych katalogów: katalog przestrzeni roboczej zawiera katalogi projektów, a projekty zawierają pliki – rysunek 1.
Rys. 1. Organizacja pracy – przestrzenie robocze i projekty
Atollic TRUEStudio – zaczynamy
Atollic TRUEStudio ma bardzo wiele możliwości pracy nad projektem, od edycji plików źródłowych po ich kompilację i debugowanie. Każde z wykonywanych zadań jest powiązane z określoną liczbą okien, które muszą się znaleźć na ekranie. Jednoczesne otwarcie wielu okien powoduje, że w dużej ilości informacji wyświetlanych na ekranie łatwo się pogubić i znacznie spada przez to komfort pracy. Żeby temu zaradzić można wyświetlane informacje pogrupować tak, żeby odpowiadały wykonywaniu określonego zadania. Takie grupy nazwano perspektywami (Perspectives) – rysunek 2.
Rys. 2. Wybór aktywnej perspektywy z paska narzędziowego
W True Studio zdefiniowano kilka predefiniowanych perspektyw na przykład edytowanie kodu źródłowego C/C++, czy jego debugowanie. Prawidłowo zdefiniowana perspektywa powinna być użyta do wykonania jednego zadania i nie zawiera elementów z innych perspektyw. Zakłada się też, że główną uruchamianą zawsze na początku programu jest ta przeznaczona do edytowania plików źródłowych C/C++,bo przy edycji programista spędza najwięcej czasu.
Perspektywy mona wybierać (przełączać) klikając na przyciski Open Perspective umieszczony w pasku narzędziowym okna programu – rysunek 2. Alternatywnie można do tego użyć przycisków umieszczonych w prawym górnym rogu głównego okna programu – rysunek 3.
Rys. 3. Alternatywny wybór aktywnej perspektywy
Pierwsze kroki
Program instalacyjny Atollic TRUEStudio for STM32 można pobrać ze strony producenta https://atollic.com/truestudio/. Instalacja jest typowa i nie wymaga specjalnego komentarza. Po uruchomieniu programu pojawia się okno wyboru katalogu z przestrzenią roboczą. Można zaakceptować domyślną ścieżkę zaproponowaną przez program lub wybrać sobie własny katalog – rysunek 4.
Rys. 4. Okno z wyborem katalogu przestrzeni roboczej
Przy pierwszym uruchomieniu programu otwiera się okno Information Center. Są tam zebrane w jednym miejscu przydatne informacje (w formie hyperlinków) zarówno dla poczatkujących, jak i dla bardziej zaawansowanych użytkowników programu. W każdej chwili można mieć dostęp do tego okna po kliknięciu na Help->Information Center – rysunek 5.
Rys. 5. Okno Information Center
W czasie uruchamiania programu jest ładowanych szereg wtyczek. Jeżeli części z nich nie zamierzamy nigdy używać to warto je wyłączyć. Redukuje to ilość potrzebnej pamięci, ale tez przyspiesza działanie programu. Można to sobie spersonalizować w oknie Windows->Preferences->Startup and Shutdown – rysunek 6.
Rys. 6. Okno personalizacji ładowanych wtyczek
Tworzenie nowego projektu
Tworzenie nowego projektu można rozpocząć z menu File->New->C Project, lub przez kliknięcie na ikonkę Create New C Project w pasku narzędziowym – zostało to pokazane na rysunku 7.
Rys. 7. Dwie możliwości tworzenia nowego projektu
Pierwsze okno konfiguracji projektu zostało pokazane na rysunku 8. W pierwszej kolejności musimy nadać nazwę tworzonemu projektowi w oknie Project name. Potem wybieramy zestaw narzędzi. Atollic TRUE Studio oferuje dwa rodzaje zestawów narzędzi programowych: Atollic ARM Toolchains i PC Tollchains. Dla pracy z systemami mikroprocesorowymi wybieramy oczywiście ARM Toolchains. I na koniec pozostał do wyboru typ projektu. Tu na początek wybieramy Embedded C Project.
Rys. 8. Okno konfiguracji projektu
Atollic TRUEStudio – konfiguracja sprzętu
Po kliknięciu na przycisk Next konfigurator projektu przechodzi do kolejnego okna konfiguracji sprzętu (hardware configurator). Z głównej listy wybieramy rodzinę mikrokontrolerów STM32F4. Potem z rozwijanej listy można wybrać konkretny typ mikrokontrolera rodziny , lub wspierany moduł ewaluacyjny. Ponieważ w czasie testów będziemy używać modułu NUCLEO-F401 – rysunek 9. Wybranie modułu powoduje automatyczne wypełnienie pól z typem mikrokontrolera (STM32F401RE), miejscem ładowania kodu (pamięć flash mikrokontrolera), zestaw instrukcji (Thumb2) i dosunięcie danych. Ponieważ mikrokontroler użyty w tym module ma sprzętową implementację arytmetyki zmiennoprzecinkowej to została ona wybrana domyślnie (szybsze obliczenia).
Rys. 9. Konfiguracja sprzętowa projektu
Okno z rysunku 10 jest przeznaczone do konfiguracji biblioteki Runtime i ustawień optymalizacji kompilatora. Kiedy zasoby mikrokontrolera są ograniczone wybieramy opcje Newlib-nano i wersje tiny funkcji bibliotecznych printf. Ustawienia optymalizacji powinny zostać domyślne.
Rys. 10. Ustawienia konfiguracji biblioteki runtime i optymalizacji kodu
W ostatnim oknie konfiguratora projektu można wybrać typ programatora/debuggera. Dla modułu Nucleo jedyną opcją jest ST-Link.
Rys. 11. Wybór programatora/debuggera
Po kliknięciu na przycisk Finish kreator projektu tworzy szkielet projektu z niezbędnymi plikami- rysunek 12. Automatycznie ustawia się także perspektywa.
Rys. 12. Utworzony szkielet projektu z plikami źródłowymi
Pliki szkieletu projektu kompilujemy, przy czym przez kompilację należy rozumieć kompilowanie plików przez kompilator języka C, ich łączenie w procesie linkowania i generowanie pliku wykonywalnego w jednej z opcji Debug lub Release . Kompilacja jest uruchamiana po kliknięciu na ikonę Projekt->Build Project. Ikony kompilacji są również dostępne bezpośrednio na pasku narzędziowym – rysunek 13.
Atollic TRUEStudio – kompilacja
Alokację programów pamięci Flash i pamięci RAM mikrokontrolera określa plik skryptu linkera stm32f4_flash.ld. Zaawansowani użytkownicy mogą ten plik edytować i zmieniać działanie linkera.
Opcja Build Project kompiluje tylko pliki, które były zmieniane od dostatniej kompilacji. Wybranie Rebuild Project kompiluje wszystkich plików projektu. Clean Project usuwa wszystkie skompilowane pliki. Opcja Build All powoduje kompilowanie wszystkich projektów z aktywnej przestrzeni roboczej (workspace).
Kompilowanie programu jest kontrolowane przez szereg parametrów zapisywanych w skrypcie. Domyślne ustawienia będą dobre dla większości projektów, a na pewno dla prostych programów testowych. Jeżeli jednak zajdzie potrzeba ich korekty, to wszystkie niezbędne informacje znajdziesz w dokumentacji pakietu Atollic TRUEStudio for STM32.
Rys. 14. Ostrzeżenie kompilatora po skompilowaniu szkieletu utworzonego prze kreator projektu
Co ciekawe po skompilowaniu wygenerowanego szkieletu jest widoczne ostrzeżenie o tym, że jedna z pętli w pliku system_stm32f4xx.c nie jest chroniona przed całkowitym zablokowaniem programu, kiedy coś pójdzie nie tak. Rzeczywiście nie jest to przykład dobrej praktyki programowania.