Cortex-M3: narzędzia Open Source dla Windows
Programiści zamierzający pisać programy dla mikrokontrolerów STM32 nie muszą korzystać z narzędzi komercyjnych. Zintegrowane środowisko programistyczne złożone z bezpłatnych elementów umożliwia zupełnie wygodne i niczym nie ograniczone pisanie oraz uruchamianie dowolnych aplikacji. Po krótkim przygotowaniu dostajemy kompletne środowisko programistyczne, które – w przeciwieństwie do pakietów komercyjnych – może pracować także w Linuksie.
Bezpłatny kompilator GNU-GCC (Gnu Compiler Collection) umożliwia obsługę wielu języków programowania np. C, C++, Ada, Fortran, Java. GCC przewyższył jakościowo większość komercyjnych kompilatorów, zapewnia on pełną zgodność ze standardem ISO C/C++ i trudno dziś znaleźć architekturę sprzętową, na którą by on nie był dostępny.
Na rynku istnieje doskonałe otwarte środowisko IDE, umożliwiające przygotowanie niewielkim nakładem środków dowolnego środowiska programistycznego. W artykule pokażemy w jaki sposób bazując na Eclipse i innych narzędziach Open Source przygotować kompletne środowisko dla mikrokontrolerów STM32, w niczym nie ustępujące komercyjnym IDE, pozbawionym ograniczeń, a dodatkową jego zaletą jest to, że możemy je uruchomić nie tylko pod Windows, ale także pod Linuksem.
Do przygotowywania aplikacji dla mikrokontrolerów wykorzystywać będziemy zintegrowane środowisko programistyczne (IDE) Eclipse. Do kompilacji programów posłużymy się kompilatorem języka C/C++ gcc, natomiast do programowania mikrokontrolerów STM32 oraz debugowania programów posłuży openocd/gdb. Najtańszym rozwiązaniem sprzętowym umożliwiającym obsługę mikrokontrolerów STM32 z wykorzystaniem programu OpenOCD jest popularny interfejs zgodny z Wigglerem np. ZL14PRG firmy Kamami. Jego wadą jest niewielka prędkość działania oraz konieczność posiadania w komputerze portu równoległego LPT. Zdecydowanie lepszym rozwiązaniem jest wykorzystanie interfejsu ocdlink (schemat elektryczny jednej z jego wersji pokazano na rys. 1), dołączanego do portu USB, którego przykładem jest interfejs BF-30.
Kompilator, programator oraz debugger dają się zintegrować ze środowiskiem Eclipse, dzięki czemu dostajemy kompletne środowisko.
STM32 i Linux? Jeżeli jesteś zainteresowany, zajrzyj tu. |
Rys. 1. Schemat elektryczny jednej z wersji ocdlink
Mikrokontrolery rodziny STM32, jak większość współczesnych mikrokontrolerów, są programowane w systemie (In System Programming). Mikrokontrolery STM32 wyposażono w pamięć ROM, w której zapisano bootloader umożliwiający programowanie pamięci Flash za pomocą portu szeregowego, umożliwiając programowanie bez żadnych specjalistycznych narzędzi. Inną możliwością programowania mikrokontrolera, jest wykorzystanie interfejsu JTAG, który umożliwia również debugowanie programu bezpośrednio w systemie. |
Przed rozpoczęciem instalacji programu Eclipse w Windows musimy upewnić się, że na komputerze jest zainstalowana maszyna wirtualna Javy (JRE – Java Runtime Environment), która jest niezbędna do działania środowiska. Obecność JRE możemy sprawdzić w Panelu Sterowania w zakładce Add/Remove programs. W przypadku braku zainstalowanego JRE należy pobrać jego najnowszą wersję oraz dokonać jej instalacji w sposób typowy dla aplikacji systemu Windows (rys. 2).
Rys. 2. Okno z informacją o poprawnym zainstalowaniu JRE
Po upewnieniu się że mamy zainstalowaną Javę, pobieramy najnowszą wersję środowiska IDE Eclipse dla programistów C++ (Eclipse for C/C++ developers).
Program Eclipse jest dostarczany w postaci archiwum ZIP, które należy rozpakować wybrane miejsce np. do katalogu C:\Program Files (rys. 3).
Rys. 3. Okno wyboru docelowego katalogu dla plików z archiwum Eclipse
Po rozpakowaniu archiwum, w zależności od preferencji, należy utworzyć skrót do programu eclipse.exe (znajduje się w podkatalogu Eclipse) na pulpicie lub w menu start. Edytor Eclipse jest gotowy do pracy, możemy zatem wstępnie przetestować jego działanie klikając w ikonę skrótu. Po uruchomieniu powinno pojawić się okno (rys. 4), w którym należy wprowadzić katalog przeznaczony do przechowywania projektów. Jeżeli chcemy aby pytanie nie było ponawiane przy każdym uruchomieniu edytora, zaznaczamy opcję Use this as the default and do not ask again, następnie wybór zatwierdzamy przyciskiem OK.
Rys. 4. Okno selekcji domyślnego katalogu dla projektów przygotowywanych w Eclipse
Po zainstalowaniu środowiska Eclipse przystępujemy do instalacji kompilatora GCC dla architektury ARM. Kompletne skompilowane pliki binarne dla systemu Windows możemy pobrać ze strony Codesoucery. Po uruchomieniu instalatora, należy odpowiedzieć twierdząco na chęć kontynuacji, oraz zaakceptować warunki umowy licencyjnej. Następnie zostaniemy zapytani o wybór rodzaju instalacji, gdzie należy wybrać opcję Typical (rys. 5).
Rys. 5. Okno wyboru rodzaju instalacji kompilatora GCC
W oknie wyboru miejsca instalacji zostawiamy lokalizację domyślną, a w oknie zapytania o dodatnie kompilatora do zmiennej PATH, wybieramy opcję Modify PATH for ALL users.
Prezentowane przykłady do prawidłowej pracy wymagają obecności podstawowych komend Linuksa, takch jak np. rm, sed, make. Emulację podstawowych komend możemy zapewnić za pomocą pakietu MINGW. Kompletny pakiet zawierający wymagany zestaw poleceń, oraz oprogramowanie do obsługi jtaga BF-30 (OpenOCD) w postaci gotowego instalatora można pobrać ze strony domowej autora.
Po zakończeniu instalacji zestawu mingw+openocd mamy kompletne środowisko dla mikrokontrolerów STM32, pozostała jeszcze instalacja sterowników dla interfejsu USB<->JTAG. Rozpoczynamy ją od instalacji sterowników, które można pobrać ze strony firmy FTDI.
Po ściągnięciu archiwum należy je rozpakować katalogu za pomocą dowolnego programu obsługującego pliki ZIP (np. Total Commandera). Następnie podłączyć interfejs zgodny z ocdlink do gniazda USB komputera. System powinien wykryć urządzenie oraz zażądać instalacji sterowników. W przypadku Windows7 system twierdzi że nie może znaleźć odpowiedniego sterownika, aby zainstalować go poprawnie należy wejść do Menedżera Urządzeń, następnie kliknąć prawym klawiszem na urządzeniu ocdlink i wybrać opcję Install Hardware Driver, w dalszej kolejności Browse my computer for driver software, a jako ścieżkę podać lokalizację wcześniej rozpakowanych sterowników (rys. 6).
Rys. 6. Poprawne zainstalowanie sterowników USB dla interfejsu ocdlink zapewnia ich widoczność w systemie Windows