Ostatnio pisałem, jak uruchomić projekt na STM32 na Eclipse. Polecałem wtedy używać starszej wersji – Eclipse Mars, ponieważ na Eclipse Neon nie działają poprawnie używane przeze mnie pluginy. Ostatnio udało mi się uruchomić STM32 na nowej wersji Eclipse i w tym artykule opiszę swoje uwagi.

Do uruchomienia projektu na STM32 będziemy potrzebowali pluginów z pakietu GNU ARM Eclipse:

  • OpenOCD – plugin współpracujący z OpenOCD nieco inaczej niż za pomocą External Tools Configuration.
  • Packs – plugin zarządzający konfiguracją dla różnych procesorów. Ten plugin umożliwia podgląd rejestrów peryferiów procesora.
  • QEMU – plugin emulatora. Umożliwia uruchamianie programów bez podłączonego sprzętu. Ten plugin jest opcjonalny.

Instalacja pluginów

Aby zainstalować pluginy wchodzimy do Help->Install New Software… i po kliknięciu przycisku Add… wpisujemy adres repozytorium http://gnuarmeclipse.sourceforge.net/updates. Z listy dostępnych pluginów wybieramy OpenOCD, Packs i jeśli chcemy to także QEMU. Możemy również zainstalować inne pluginy np. z szablonami projektów dla różnych procesorów. Nie używałem tej opcji, ale utworzone w ten sposób projekty prawdopodobnie korzystają z automake.

Nie będę tu się rozpisywał o konfiguracji poszczególnych pluginów, ponieważ zostało to dobrze opisane na stronie projektu:

Praca z pluginami

Przed pierwszym użyciem pluginu Packs trzeba ściągnąć paczki dla procesorów z zewnętrznego serwera. Dokonujemy tego przy pomocy perspektywy Packs i przycisku Refresh, co zostało opisane w podanym przeze mnie wyżej linku. Według opisu proces ten powinien trwać kilka minut. U mnie trwał 3 godziny. Jest to pierwszy z minusów tak skonfigurowanego środowiska. Na starej wersji Eclipse całą konfigurację można było od zera postawić dużo szybciej. Na szczęście ten proces musimy wykonać tylko raz po instalacji.

Jeżeli korzystamy z pluginu OpenOCD, nie musimy wykorzystywać do tego oddzielnie procesu OpenOCD i oddzielne GDB, co opisywałem w poprzednim artykule. Teraz oba uruchamiamy jednym kliknięciem. Ma to jednak pewną wadę. W poprzednim rozwiązaniu raz uruchamialiśmy proces OpenOCD i potem każde uruchomienie GDB łączyło się z już otwartym OpenOCD i zajmowało to niewiele czasu. Teraz włączamy i wyłączamy oba na raz, więc trzeba więcej czekać.

Aby podejrzeć rejestry, należy otworzyć zakładkę Peripherals w Window->Show View->Other… i tam wybieramy Debug->Peripherals. W zakładce Peripherals możemy sobie wybrać rejestry, które chcemy podejrzeć. I tutaj kolejna rzecz, która mi się nie podoba. Wybieramy rejestry w zakładce Peripherals, ale podgląd jest z innej zakładce – Memory. Niby można się do tego przyzwyczaić, ale w poprzednim rozwiązaniu rejestry były obsługiwane w jednej zakładce.

Wtyczka QEMU pozwala uruchamiać program bez podłączonego hardware. Dzięki temu można zrobić jakiś wstępny debug, albo odpalać unit testy. Postępując zgodnie z instrukcją z linka wyżej, udało mi się uruchomić emulator w konfiguracji dla płytki STM32F4 Discovery. Nie udało mi się jednak skonfigurować QEMU bez wybranej płytki. Poza tym QEMU wspiera na razie małą ilość procesorów. Może w przyszłości będzie to przydatne narzędzie, jednak na razie wymaga dopracowania.

Podsumowanie

Dzięki pluginom z serii GNU ARM Eclipse jest możliwe skonfigurowanie Eclipse Neon do pracy z STM32 i w miarę da się na tym pracować. Uciążliwa jest początkowa konfiguracja, a szczególnie odświeżanie plugina Packs. Mi osobiście bardziej pasują stare narzędzia, ale może to kwestia przyzwyczajenia. Projekt GNU ARM Eclipse się rozwija i bardzo możliwe, że w przyszłości to rozwiązanie się jeszcze poprawi.