Na rynku dostępne są różnorodne narzędzia dla programistów przygotowujących aplikacje na mikrokontrolerowy ARM, z których najczęściej są stosowane zintegrowane środowiska programistyczne składające się z IDE, kompilatorów, debuggerów, w niektórych przypadkach także programowych symulatorów oraz narzędzi pomocniczych. Od takich właśnie pakietów zaczniemy nasz przegląd.
Keil/ARM MDK-ARM z IDE mVision i DS-5
Nadal najpopularniejszym pakietem narzędziowym wśród programistów piszących aplikacje dla mikrokontrolerów wyposażonych w rdzenie ARM w naszym kraju jest MDK-ARM firmy ARM (dawniej Keil). Napisałem „nadal”, bowiem producent tego narzędzia nie rozpieszcza swoich fanów, którzy są zmuszeni do kupowania stosunkowo drogich wersji komercyjnych tego narzędzia, producent – niestety – nie oferuje rozwiązań „budżetowych”, co jest to usprawiedliwione wysoką jakością tego narzędzia. W pewnym stopniu sytuację ratują dedykowane wersje oprogramowania – dzięki współpracy z producentami mikrokontrolerów – udostępniane bezpłatnie, ale ograniczone do wybranej rodziny mikrokontrolerów. Dla prostych aplikacji alternatywą jest także dostępna bezpłatnie wersja Lite, która umożliwia kompilowanie programów o objętości kodu wynikowego do 32 kB.
Pakiet ARM-MDK jest kompletnym systemem integrującym w jednym, łatwym w obsłudze środowisku wszystkie narzędzia programistyczne (rysunek 1): kompilatory języków C/C++ oraz asemblera, linker, programowy symulator, debugger oraz „opakowujące” te narzędzia w interfejs graficzny IDE (Integrated Development Environment) o nazwie mVision (rysunek 2) lub DS-5 (bazujący na Eclipse).
Standardowym wyposażeniem wszystkich wersji MDK są biblioteki CMSIS (tabela 1), system operacyjny CMSIS-RTOS RTX, wersja najdroższa – MDK-Professional – jest dostarczana także z kompletem bibliotek obsługujących interfejsy komunikacyjne, w tym TCP/IP, USB Device i Host, interfejs CAN, system plików FAT oraz interfejsy graficzne. Nowe wersje pakietu MDK-Professional będą obsługiwać także architektury ARMv8-M oraz dwurdzeniowe Cortex-A/Cortex-M.
Pakiet MDK-ARM jest przystosowany do współpracy z większością popularnych interfejsów programująco-debugujących (m.in. J-Link firmy Segger, ST-Link firmy STMicroelectronics, OpenSDA, Nuvoton Nu-Link), jest także przystosowany do łatwego upgarde’owania (poprzez dodanie odpowiednich bibliotek DLL) obsługi nowych interfejsów. Producent pakietu oferuje jego użytkownikom własne interfejsy – serię urządzeń o nazwie ULink – których rodzina składa się obecnie z trzech modeli:
- ULINK2 – model podstawowy, obsługujący mikrokontrolery ARM7/ARM9, Cortex-M, starsze mikrokontrolery z rdzeniem 8051: XC800/mPSD/LPC950 oraz 16-bitowe XC166. Obsługuje interfejs SWO z prędkością do 1 Mb/s, nie jest obsługiwany przez IDE DS-5,
- ULINKproD (fotografia 3) – interfejs przystosowany do współpracy z interfejsami zasilanymi napięciem od 1,2 V, obsługą SWO do 100 Mb/s, obsługiwany przez obydwa IDE,
- ULINKpro – interfejs przystosowany do współpracy z interfejsami zasilanymi napięciem od 1,2 V, obsługą SWO do 100 Mb/s, ETM do 800 Mb/s, obsługiwany przez obydwa IDE.
Pakiet MDK-ARM jest oferowany w czterech podstawowych wersjach, których najważniejsze cechy zestawiono w tabeli 1.
Dużą elastycznością oraz zaawansowanymi możliwościami funkcjonalnymi charakteryzuje się także pakiet Embedded Workbench firmy IAR. Jest on w naszym kraju nieco mniej popularny niż MDK, ale oferuje nie mniejsze możliwości, zwłaszcza podczas projektowania i optymalizacji systemów energooszczędnych. Firma IAR wyposażyła pakiet Workbench w pluginy umożliwiające współpracę ze wszystkimi liczącymi się systemami na rynku (m.in. AVIX, CMX-RTX, e-Force µC3/Compact, FreeRTOS, OpenRTOS, SafeRTOS, Freescale MQX, Micrium µC/OS-III, Quadros RTXC, Segger embOS). IAR Workbench używa własnego IDE (rysunek 4), o nieco innym sposobie obsługi niż wcześniej prezentowany MDK, ale rozwiązanie proponowane przez firmę IAR ma także wielu zwolenników, dostępne są także narzędzia integrujące środowisko Workbench pod „skrzydłami” Eclipse.
Pakiet Embedded Workbench jest przystosowany do współpracy z wieloma standardowymi interfejsami do debugowania i programowania (jak na przykład rodzina interfejsów J-Link firmy Segger), producent pakietu oferuje także kilka typów własnych interfejsów, jak na przykład I-jet (fotografia 5, taktowanie JTAG do 48 MHz) lub I-jet Trace (fotografia 6, taktowanie JTAG do 100 MHz). Mocną stroną pakietu Embedded Workbench jest zaimplementowana obsługa najpopularniejszych interfejsów komercyjnych (m.in. Segger J-Link, ST-Link, XDS100) oraz open-source jak na przykład Stellaris FTDI/ICDI, Macraigor OCDemon, OpenSDA itp.
Atollic TrueSTUDIO
Firma Atollic opracowując pakiet TrueSTUDIO wybrała inną drogę niż firmy, których narzędzia przedstawiliśmy dotychczas: zamiast budować własne oprogramowanie od podstaw, jej inżynierowie wykorzystali oprogramowanie open-source (IDE Eclipse, kompilator ARM-GCC, serwer debuggera gdbsever), które charakteryzuje się – w wersjach natywnych – trudną instalacją, koniecznością wykonywania wielu ręcznych modyfikacji i poprawek, a także monitorowania zmian wprowadzanych przez zespoły freelancerów rozwijających oprogramowanie.
Pakiet TrueSTUDIO (rysunek 7) – pomimo tego, że składa się z elementów open-source’owych – jest wygodny w instalacji i nie wymaga podczas eksploatacji przesadnej troski ze strony użytkowników. Nie dzieje się to oczywiście za darmo: wersja TrueSTUDIO Pro wymaga zakupu licencji, ale jej koszt jest konkurencyjny w stosunku do innych narzędzi dostępnych na rynku. Pakiet TrueSTUDIO Pro jest dostępny w 30-dniowej wersji trial.
Wersja komercyjna TrueSTUDIO Pro jest wyposażona w zaawansowane narzędzia profilujące, debugujące i optymalizujące projekty, które odróżniają je od bezpłatnej wersji TrueSTUDIO, wśród nich m.in.: CPU Fault Analyzer, Statistic Profiler, Exception and Interrupt Tracing, Instruction Tracing, Real-Time Data Access Tracing, a także możliwość debugowania pracy systemów wielordzeniowych.
Pakiet TrueSTUDIO nie został przez producenta wyposażony w zintegrowany system operacyjny, ale może współpracować z kilkoma systemami komercyjnymi (m.in. HCC-Embedded eTaskSync, Micrium uC/OS, CMX-RTX/CMX-TINY+, Express Logic ThreadX, FreeRTOS, Segger embOS, HighIntegritySystems/Wittenstein OpenRTOS/SafeRTOS, Code Time Technologies Abassi, Quadros RTXC).
Opracowując komercyjną wersję TrueSTUDIO producent założył, że obsługiwane będą przede wszystkim interfejsy programująco-debugujące zgodne z gdbserver, ale dość szybko zintegrowano w nim także obsługę interfejsów J-Link firmy Segger, Atmel SAM-ICE oraz interfejsów zgodnych z ST-LINK oraz ST-LINK/V2 firmy STMicroelectronics.
Podsumowanie
W tej części artykułu przedstawiliśmy trzy najpopularniejsze w naszym kraju, komercyjne pakiety narzędziowe dla mikrokontrolerów z rdzeniami firmy ARM. Oferowane przez niektórych producentów mikrokontrolerów pakiety bezpłatne oraz dodatkowe narzędzia programowe dla programistów przedstawimy w kolejnych wydaniach EP.
Tomasz Starak, EP