Moduł mikrokontrolera o bardzo niskim poborze mocy otwiera nowe możliwości dla inżynierów – część 1: Konfiguracja projektu Eclipse
W niniejszym artykule przedstawiono moduł mikrokontrolera o bardzo niskim poborze mocy i bogatym zestawie funkcji. Wyjaśniono też, jak go programować i debugować za pomocą popularnych, bezpłatnych narzędzi. W przeciwieństwie do wielu innych modułów mikrokontrolerów z wyższej półki, ten moduł jest dostępny w obudowie DIP (Dual Inline Package), co ułatwia tworzenie prototypów zarówno profesjonalnym inżynierom, jak i hobbystom. W części 1 (poniżej) opisano, jak utworzyć projekt w Eclipse, a w części 2 (w kolejnej publikacji) omówiona zostanie konfiguracja Eclipse do współpracy z modułem mikrokontrolera.
Wprowadzenie
Chociaż ciągłe dążenie do miniaturyzacji poszerza granice elektroniki, może sprawiać, że inżynierowie i hobbyści mają trudności z tworzeniem prototypów przy użyciu coraz mniejszych obudów. Chociaż nie ma wątpliwości, że włączenie mikrokontrolera do projektu dodaje nowy wymiar do możliwości obwodu, wielu inżynierów nadal tęskni za czasami, kiedy więcej komponentów było dostępnych w obudowach DIP. Bardziej zaawansowane mikrokontrolery są dostępne tylko w obudowach, które uniemożliwiają tworzenie prototypów lub są dostarczane wyłącznie z ogromnym zestawem ewaluacyjnym zawierającym wiele niepotrzebnych komponentów.
W niniejszym artykule przedstawiono przyjazny dla prototypów moduł mikrokontrolera MAX32625PICO, który jest niezwykle mały, ale nadal ma rozmiar DIP, dzięki czemu można go bardzo łatwo zintegrować zarówno z eksperymentalnymi, jak i produkcyjnymi płytkami drukowanymi. Artykuł informuje również czytelników, jak programować i debugować za pomocą Eclipse, niezwykle popularnego, bezpłatnego zintegrowanego środowiska programistycznego (IDE). Delikatnie zachęca inżynierów do porzucenia świata 8-bitowych procesorów, jednocześnie pozwalając im pozostać w świecie obudów DIP. Pełny przewodnik dotyczący rozpoczęcia pracy znajduje się w poniższych instrukcjach.
Poznaj MAX32625PICO
Rysunek 1 przedstawia MAX32625PICO, znany również jako PICO. Zawiera on mikrokontroler MAX32625, który jest ultra niskonapięciowym, 32-bitowym procesorem Arm® Cortex®-M4 z 512 kB pamięci Flash i 160 kB pamięci SRAM, pracującym z częstotliwością do 96 MHz. Najbardziej przydatne urządzenia peryferyjne mikrokontrolera zostały udostępnione na pinach PICO, w tym główny SPI, podrzędny SPI, port I2C, dwa wejścia do 10-bitowego przetwornika ADC, interfejs 1-Wire i dwa UART. PICO integruje również układ zarządzania zasilaniem MAX1 4750, diodę LED RGB, przycisk, złącze USB Micro B oraz 10-pinowe złącze debugowania Cortex i może być zasilane bezpośrednio z portu USB lub zewnętrznego źródła 5 V. Ponadto posiada złącza 0,1 cala po obu stronach płytki drukowanej, dzięki czemu piny można przylutować do PICO, co umożliwia montaż w płytce prototypowej. Jeśli wymagane jest rozwiązanie do montażu powierzchniowego, złącza mają miedziane końcówki sięgające do krawędzi płytki, dzięki czemu PICO może być również używane jako komponent do montażu powierzchniowego. PICO jest wystarczająco małe, aby zmieścić się w każdym projekcie, a jednocześnie wystarczająco duże, aby umożliwić łatwe prototypowanie.

Rysunek 1. MAX32625PICO
Poniżej przedstawiono komponenty potrzebne do programowania i debugowania urządzenia PICO:
- Dwa urządzenia PICO
- Dwa kable USB typu Micro B (zwykle dostarczane wraz z urządzeniami PICO)
- Kabel programujący o numerze seryjnym TC2050-IDC-NL-050
Kabel TC2050 ma 10-pinowe złącze na jednym końcu i sprężynowe piny pogo na drugim końcu. Kabel ten jest używany tylko podczas debugowania lub przeprogramowywania PICO, jeśli bootloader zostanie nadpisany. Normalne programowanie polega po prostu na przeciągnięciu i upuszczeniu.
Tworzenie projektu w Eclipse IDE
PICO zostało pierwotnie zaprojektowane do użytku z internetową platformą kompilatora Mbed, ale platforma ta została obecnie wycofana. Otwarte oprogramowanie Eclipse IDE jest platformą programistyczną, która cieszy się ogromną popularnością zarówno wśród profesjonalistów, jak i hobbystów i stanowi bezpłatną alternatywę dla Mbed. W tym artykule programista dowie się, jak skonfigurować Eclipse, aby wygenerować plik binarny, który można przeciągnąć do docelowego sprzętu za pomocą Eksploratora Windows. Pliki konfiguracyjne można pobrać w postaci pliku zip, do którego link znajduje się na końcu tego artykułu.
Środowisko Eclipse IDE można pobrać ze strony głównej mikrokontrolera MAX32625. Przejdź do sekcji Tools and Simulations i kliknij link pobierania Low Power ARM Micro SDK (Win). Stąd można pobrać i zainstalować środowisko Arm Cortex Toolchain IDE. Użyj domyślnej konfiguracji instalacji.
Po zainstalowaniu wybierz:
File -> New -> Maxim Mikrokontrolers
jak pokazano na rysunku 2:

Rysunek 2. Tworzenie pierwszego projektu
Po wyświetleniu okna Create project upewnij się, że nazwa projektu nie zawiera spacji.
Wypełnij okno Select Project Configuration, jak pokazano na rysunku 3:

Rysunek 3. Konfiguracja projektu
W jaki sposób IDE komunikuje się z docelowym sprzętem?
Warto opisać, co dzieje się wewnątrz Eclipse, aby pomóc wyjaśnić wszelkie komunikaty o błędach, które mogą pojawić się w procesie debugowania. IDE komunikuje się z docelowym mikrokontrolerem (w tym przypadku PICO) za pomocą dwóch programów: debuggera GNU (GDB) i otwartego debuggera wbudowanego (OCD). GDB to narzędzie do debugowania wysokiego poziomu, które pozwala użytkownikowi przechodzić przez kod, wykonywać punkty przerwania i sprawdzać wartości rejestrów. GDB komunikuje się z OpenOCD, narzędziem, które tłumaczy polecenia wysokiego poziomu na coś bliższego temu, co rozumie docelowy mikrokontroler. Zarówno GDB, jak i OpenOCD działają na komputerze PC, w środowisku Eclipse. Pomiędzy komputerem PC a ostatecznym sprzętem podłączony jest adapter debugowania, który tłumaczy polecenia na sygnały elektryczne zrozumiałe dla portu debugowania mikrokontrolera. Port debugowania może mieć jedną z dwóch form: port debugowania JTAG lub wersję JTAG o mniejszej liczbie pinów, zwaną portem debugowania pojedynczego przewodu (SWD). Wszystkie powyższe elementy pozwalają programiście na wykonywanie kodu linia po linii na rzeczywistym sprzęcie docelowym, obserwując zmiany wartości rejestrów, zamiast na symulatorze.
Środowisko Eclipse IDE komunikuje się z GDB, GDB komunikuje się z OpenOCD, a OpenOCD komunikuje się poprzez adapter debugowania z portem debugowania w docelowym PICO. GDB i OpenOCD znajdują się w zestawie narzędzi programistycznych (SDK), są instalowane automatycznie wraz z SDK i wywoływane przez Eclipse. Po podłączeniu adaptera debugowania między komputerem a sprzętem docelowym komunikacja między Eclipse a PICO przebiega płynnie.
Konfiguracja projektu, pokazana na rysunku 3 zakłada, że środowisko Eclipse IDE zostanie podłączone do zestawu MAX32625EVKIT, który wykorzystuje port JTAG. Jednak PICO wykorzystuje port SWD o mniejszej liczbie pinów zamiast debuggera JTAG. Aby połączyć Eclipse IDE z PICO, można podłączyć drugie PICO między komputerem hosta a docelowym PICO, zamiast debuggera JTAG. To drugie PICO będzie nazywane programatorem PICO, aby odróżnić je od docelowego PICO, na którym będzie działał ostateczny kod. Programator PICO musi zostać załadowany programem o nazwie DAPLink, który tłumaczy sygnały USB z komputera na sygnały zrozumiałe dla PICO. Jest to prosta procedura, opisana w sekcji Ładowanie pliku binarnego w części 2 tego artykułu.
Ponieważ zamiast debuggera JTAG używany jest programator PICO, w sekcji Select adapter type wybierz MAX32625_PICO. Patrz rysunek 4:

Rysunek 4. Wybierz typ adaptera
Modyfikacja programu Eclipse w celu współpracy z PICO
Pobierz plik zip z linku podanego na końcu tego artykułu i rozpakuj jego zawartość w dogodnej lokalizacji. Znajdź plik o nazwie
MAX32625PICO.cfg
i skopiuj go do następującego katalogu:
C:\Maxim\Toolchain\share\openocd\scripts\target
Jest to modyfikacja oryginalnego pliku (MAX32625.cfg), która umożliwia użycie drugiego PICO zamiast debuggera JTAG. Plik ten zastępuje polecenie resetowania zazwyczaj wydawane przez debugger JTAG i resetuje niektóre rejestry procesora docelowego, a także licznik programu i wskaźnik stosu.
Po utworzeniu nowego projektu w zakładce Project Explorer programu Eclipse (w lewym górnym rogu) kliknij prawym przyciskiem myszy nazwę projektu i wybierz:
Debug As -> Debug Configurations…
Przejdź do GDB OpenOCD Debugging w menu po lewej stronie i wybierz bieżący projekt.
W zakładce Debugger zmień plik CFG z MAX32625.cfg na MAX32625pico.cfg, jak pokazano na rysunku 5:

Rysunek 5. Wskazanie nowego pliku konfiguracyjnego
Kliknij przycisk Apply, a następnie Close.
W oknie Project Explorer ponownie kliknij prawym przyciskiem myszy nazwę projektu i wybierz opcję Properties. Kliknij lewym przyciskiem myszy nagłówek C/C++ Bulid i w zakładce Bulider Settings upewnij się, że polecenie kompilacji brzmi:
make ECLIPSE=1 release
jak pokazano na rysunku 6. Spowoduje to wygenerowanie przez Eclipse pliku binarnego (programu wykonywalnego), który można załadować do PICO.

Rysunek 6. Generowanie pliku binarnego
Kliknij przycisk Apply i OK.
Konfiguracja programu Eclipse w celu uwzględnienia innych plików
Aby ułatwić programowanie procesorów Arm, dostawca mikrokontrolerów udostępnia sterowniki niskiego poziomu, które umożliwiają komunikację kodu programisty z wieloma rejestrami i urządzeniami peryferyjnymi wewnątrz mikrokontrolera. Dzięki temu programista nie musi martwić się o kontrolę na poziomie rejestrów i może skoncentrować się na funkcjonalności wyższego poziomu końcowej aplikacji. Sterowniki te noszą nazwę Common Microcontroller Software Interface Standard (CMSIS) i są po prostu hierarchią plików potrzebnych do programowania układu MAX32625. Sercem tego mikrokontrolera jest rdzeń Arm, który jest wspólny dla każdej rodziny mikrokontrolerów opartych na architekturze Arm. Posiada on zestaw plików potrzebnych do jego konfiguracji. Wokół rdzenia Arm zbudowany jest zestaw urządzeń peryferyjnych (przetworniki ADC, porty GPIO, timery, liczniki, porty SPI itp.), które odróżniają to urządzenie od innych urządzeń opartych na architekturze Arm. Urządzenia peryferyjne wymagają zestawu plików do ich konfiguracji. Rdzeń Arm i jego urządzenia peryferyjne tworzą mikrokontroler. Urządzenie jest następnie montowane na płytce i podłączane np. do wyświetlacza, złączy portów, przełączników, diod LED i nadajników-odbiorników Bluetooth®. Istnieje zestaw plików opisujących sposób podłączenia urządzenia do otaczających je komponentów na płytce.
Począwszy od serca MAX32625 (rdzenia Arm) i kierując się na zewnątrz, istnieje zestaw plików do konfiguracji samego rdzenia Arm, następnie zestaw plików do konfiguracji urządzeń peryferyjnych otaczających rdzeń Arm, a na końcu zestaw do konfiguracji komponentów zestawu ewaluacyjnego otaczających procesor. Eclipse musi zostać skonfigurowane, aby mogło znaleźć te pliki podczas kompilacji programu.
W Eclipse, w oknie Project Explorer, kliknij prawym przyciskiem myszy nazwę projektu i wybierz Properties, następnie rozwiń menu C/C++ General i przejdź do sekcji Paths and Symbols. W zakładce Includes wybierz GNU C. Dodaj katalogi pokazane na rysunku 7, używając przycisków Add i File system.

Rysunek 7. Dodawanie plików zewnętrznych
Po dodaniu powyższych elementów kliknij przycisk Apply i OK.
Poniżej znajduje się opis funkcji poszczególnych katalogów.
C:\Maxim\Firmware\MAX32625\Libraries\CMSIS\Include – ten katalog zawiera pliki używane przez rdzeń Arm procesora MAX32625.
C:\Maxim\Firmware\MAX32625\Libraries\CMSIS\Device\Maxim\MAX32625\Include – ten katalog zawiera definicje urządzeń peryferyjnych/rejestrów układu MAX32625.
C:\Maxim\Firmware\MAX32625\Libraries\MAX32625PeriphDriver\Include – ten katalog zawiera pliki umożliwiające korzystanie z urządzeń peryferyjnych układu MAX32625.
Wnioski
W części 1 tego artykułu (powyżej) opisano sposób tworzenia projektu w środowisku Eclipse oraz oprogramowanie potrzebne do programowania mikrokontrolera. W części 2 (w kolejnym artykule) zostanie omówiony sposób konfiguracji środowiska Eclipse do współpracy z układem PICO.
Pliki oprogramowania można pobrać tutaj.

Analog Devices wprowadza na rynek ADI Power Studio i nowe narzędzia internetowe
Analog Devices wprowadza rozszerzenie CodeFusion Studio™ o AutoML dla systemów wbudowanych
Zachowanie dokładności i zwiększenie niezawodności w procesie pozyskiwania danych dzięki izolowanym precyzyjnym łańcuchom sygnałowym 



