[1] Kinetis Design Studio: nowe środowisko programistyczne dla fanów mikrokontrolerów KINETIS
Uwaga: jest pierwsza część artykułu, drugą opublikowalismy pod adresem.
Rynek mikrokontrolerów 32-bitowych zdominowany jest przez układy z rdzeniem Cortex-M. Jednym z liderów wśród producentów układów tego typu jest firma Freescale. W ofercie tej firmy można znaleźć rodzinę mikrokontrolerów Kinetis z rdzeniem ARM Cortex-M0+ oraz ARM Cortex-M4. Aplikacje dla tych układów do niedawna programiści mogli tworzyć przy użyciu jednego z pięciu środowisk programistycznych (IDE – Integrated Development Environment): CodeWarrior (firmy Freescale), TrueSTUDIO (Atollic), MULTI (Green Hills Software), Embedded Workbench for ARM (IAR Systems) oraz Microcontroller Development Kit (ARM Keil). W kwietniu firma Freescale zapowiedziała kolejny pakiet narzędziowy dla mikrokontrolerów Kinetis – Kinetis Design Studio.
W pierwszej częsci artykułu przedstawiamy cechy i budowę Kinetis Design Studio oraz opisujemy narzędzia udostępniane przez środowisko programistyczne.
Konkurenci: CodeWarrior vs Kinetis Design Studio
Z pewnością zastanawiać może czemu firma Freescale – dysponując autorskim środowiskiem programistycznym dla mikrokontrolerów Kinetis, jakim jest Code Warrior – zdecydowała się opracować kolejny pakiet narzędzi programistycznych. Producent wyjaśnia, że chciał stworzyć IDE, które będzie „skrojone” na miarę potrzeb mikrokontrolerów Kinetis. Dzięki temu Kinetis Design Studio jest bardziej praktyczne w użyciu i zajmuje mniej miejsca na dysku twardym komputera niż Code Warrior, który przeznaczony jest dla wielu rodzin mikrokontrolerów z oferty produktowej firmy Freescale. Drugim powodem powstania Kinetis Design Studio jest aspekt licencyjny. Code Warrior jest udostępniany bezpłatnie tylko w wersji z ograniczeniem wielkości kodu. Pełna, pozbawiona ograniczeń wersja jest natomiast płatna. Z kolei Kinetis Design Studio oferowany jest bezpłatnie w pełnej wersji.
Pomimo wymienionych powyżej różnić między Code Warriorem i Kinetis Design Studio nie sposób odnieść wrażenia, że są to środowiska bardzo do siebie podobne. Podobieństwo występuje między innymi na poziomie interfejsu graficznego użytkownika. Wynika to z zastosowania w obu rozwiązaniach Eclipse – zarówno Code Warrior jak i Kinetis Design Studio zostały stworzone w oparciu o tą platformę. To co łączy oba produkty to również zbliżona funkcjonalność. Jest tak, gdyż w sporej części te same narzędzia, które wykorzystano w Code Warriorze można też znaleźć w Kinetis Design Studio. W szczególności należy tu wymienić generator kodu o nazwie Processor Expert.
Według zapowiedzi producenta opracowanie Kinetis Design Studio nie oznacza wycofania wsparcia dla Code Warriora. Środowisko to dalej będzie rozwijane, jednak od teraz ma być postrzegane przede wszystkim nie jako pakiet narzędziowy do tworzenia aplikacji dla mikrokontrolerów Kinetis, a dla innych rodzin układów firmy Freescale: RS08, S08, ColdFire, ColdFire+ i S12Z. Rozwój CodeWarriora dla mikrokontrolerów Kinetis zostanie „zamrożony” na obecnym etapie.
Budowa Kinetis Design Studio
Podstawę Kinetis Design Studio stanowi Eclipse (wersja Kepler 4.3). Jest to napisana w języku Java otwarta (open-source) platforma, w oparciu o którą można tworzyć środowiska programistyczne. Eclipse samo w sobie nie dostarcza żadnych narzędzi programistycznych, oferuje jednak obsługę tak zwanych wtyczek (plug-ins). Wtyczki to narzędzia, które mogą by integrowane z Eclipse.
Chcąc pozostać w zgodzie z kolejnością czynności procesu tworzenia oprogramowania, jako pierwsze z narzędzi Kinetis Design Studio należy wymienić Processor Experta. Jest to generator kodu konfiguracyjnego dla mikrokontrolera. Narzędzie to pozwala za pomocą graficznego interfejsu użytkownika wygenerować pliki z kodem źródłowym, w których zaimplementowany jest interfejs programistyczny (API – Application Programming Interface) do zasobów wewnętrznych mikrokontrolera.
Kolejnym używanym przez programistę narzędziem Kinetis Design Studio jest edytor. Jak łatwo jest się domyślić pozwala on na pisanie kodu źródłowego aplikacji. Edytor Kinetis Design Studio pozwala pisać kod źródłowy w języku Assembler, C oraz C++.
Kod źródłowy nie jest interpretowalny dla układów elektronicznych, które operują na wartościach binarnych, zatem potrzebne jest narzędzie, które odpowiednio przetworzy kod z jednej postaci do drugiej. Tym narzędziem jest kompilator. Tłumaczy on pliki zawierające kod źródłowy na pliki z kodem maszynowym. W przypadku Kinetis Design Studio zastosowano kompilator GCC (GNU Compiler Collection).
Jeśli podczas kompilacji błędy nie wystąpią, dalej pliki z kodem maszynowym są konsolidowane w jeden plik wykonywalny. Za realizację tego zadania odpowiada linker. Plik wykonywalny w zapisywany jest do pamięci mikrokontrolera. Za poprawne wykonanie tej czynności odpowiada programator.
Ostatnim z narzędzi jest debuger. Debugowanie, tłumaczone czasem jako odrobaczanie lub odpluskowanie, to proces systematycznego redukowania liczby błędów w oprogramowaniu. Zasada działania debugera jest prosta. Pozwala on wykonywać kod stopniowa, a nawet krok po kroku, jednocześnie pozwalając na podgląd stanu systemu, w tym np. rejestrów mikrokontrolera i zmiennych. Dzięki temu programista może szczegółowo analizować zachowanie aplikacji, co bardzo pomaga w wychwyceniu różnego rodzaju nieprawidłowości, a w konsekwencji ich usunięciu. Kinetis Design Studio wykorzystuje debuger GDB (GNU Project debugger). Obsługiwane przez debuger interfejsy sprzętowe to: Segger J-Link, P&E Multilink oraz CMSIS-DAP.
Ponadto elementem, który można doinstalować w formie wtyczki do środowiska Kinetis Design Studio jest system operacyjny czasu rzeczywistego (RTOS – Real Time Operating System). Może to być produkt wspierany od dawna przez firmę Freescale o nazwie MQX lub popularnie stosowany w różnych systemach wbudowanych FreeRTOS.
Ostatnim nieomówionym dotąd komponentem składającym się na Kinetis Design Studio jest newlib/newlib-nano. Jest to biblioteka implementująca standard języka C.
Pakiet Kinetis Design Studio został dostosowany do pracy na dwóch obecnie najpopularniejszych systemach operacyjnych: Windows (wersje 7 i 8, zarówno 32- jak też 64-bitowe) oraz Linux (Ubuntu, Redhat, Centos).
Schemat blokowy przedstawiający budowę Kinetis Design Studio przedstawiono na rysunku 1.
Rys. 1. Schemat budowy środowiska Kinetis Design Studio
Tworzenie aplikacji dla mikrokontrolera
Proces tworzenia aplikacji w programie Kinetis Design Studio można zasadniczo podzielić na trzy etapy. W pierwszym etapie programista korzystając z narzędzia Processor Expert tworzy interfejs programistyczny do peryferiów mikrokontrolera, których użycia wymaga aplikacja. W drugim etapie programista pisze kod źródłowy aplikacji w oparciu o wcześniej wygenerowany interfejs do peryferiów. W trzecim etapie programista sprawdza poprawność działania aplikacji poprzez uruchomienie jej i debugowanie na platformie sprzętowej.
W tym miejscu należy wprowadzić pojęcie perspektywy. Perspektywa to mechanizm Eclipse określający jakie okna narzędziowe są w danej chwili widoczne. Można zatem powiedzieć, że perspektywa dostosowuje środowisko programistyczne do rodzaju czynności wykonywanej przez programistę. Srodowisko Kinetis Design Studio udostępnia osobną perspektywę dla każdego z wcześniej opisanych etapów tworzenia aplikacji. Są to perspektywy Hardware, C/C++ oraz Debug odpowiednio dla pierwszego, drugiego i trzeciego etapu tworzenia aplikacji. Wybranie perspektywy odbywa się przez naciśnięcie na odpowiadającą jej ikonę w panelu wyboru perspektywy, który znajduje się w prawym górnym roku okna programu Kinetis Design Studio (rysunek 2). W dalszej części artykułu opisano każdą z tych perspektyw.
Rys. 2. Panel zmiany perspektywy w środowisku Kinetis Design Studio
Zacznijmy od perspektywy Hardware (rysunek 3). Dzięki niej programista może korzystać z Processor Experta i tworzyć przy jego pomocy interfejs programistyczny dla mikrokontrolera. Perspektywa Hardware udostępnia następujące okna:
- okno Configuration Registers służące do podglądu zawartości rejestrów mikrokontrolera na etapie inicjalizacji jego peryferiów,
- okno Processor przedstawiające w sposób graficzny model mikrokontrolera (lista peryferiów oraz układ wyprowadzeń),
- okno Component Inspector pozwalające skonfigurować peryferia i dedykowany im interfejs programistyczny ,
- okno Problems z listą błędów i ostrzeżeń będących wynikiem .
Rys. 3. Widok perspektywy Hardware środowiska Kinetis Design Studio