Seid gegrüßt Freunde,

heute binden wir ein Zephyr Beispielprojekt in Eclipse ein.
Benötigt wird Eclipse CDT mit dem GNU MCU Eclipse Plugin.
Die Makefiles für das Beispielprojekt wurden bereits mit

$ cmake -DBOARD=nrf51_pca10028 ..

erstellt.

Nun können wir dieses Projekt über File-->New-->Makefile Project with Existing Code einbinden.
Image Description

Als nächstes wird der Build Command unter Project Properties-->C/C++ Build geändert. Es wird nicht der default build command von Eclipse verwendet, sondern make.
Image Description

Im Tab Behavior wird der Parameter all unter Build (Incremental build) entfernt.
Image Description

Unter MCU-->ARM Toolchains Paths muss der Pfad zu GCC angegeben werden (...\GCC\bin).
Unter MCU-->Build Tools Path wird der Pfad zu make angegeben (...\msys64\usr\bin).
Image Description

Nun kann das Projekt erfolgreich erzeugt werden. Wenn man sich die Projektstruktur im Project Explorer anschaut, erkennt man, dass keine Source und Header Dateien von Zephyr eingebunden sind.
Image Description

Dies kann über Project Properties-->C/C++General-->Paths and Symbols im Tab Source Locations nachgeholt werden (Link Folder).
Image Description

Nun sind die ausgewählten Source und Header Dateien im Projekt zu sehen. Leider findet Eclipse nicht auf Anhieb die ganzen Definitionen zu Symbolen etc.
Image Description

Da Beispielprojekte sehr viele Verweise haben (zum Kernel, Board-Dateien, Driver, Protocol etc..), ist ein manuelles Einfügen der Pfade sehr mühselig. Deshalb nutzen wir der CDT Output Parser. Das Projekt kann anhand der Makefiles erfolgreich erzeugt werden. Diese Information können genutzt werden, damit Eclipse die Verweise automatischfindet.

Dazu wird aus dem build Command make nun make VERBOSE=1 (Project Properties-->C/C++ Build). Dadurch werden weitere Informationen (wie beispielsweise Pfade) ausgegeben.

Unter Project Properties-->C/C++General-->Preprocessor Include Paths, Macros etc. im Tab Providers-->CDT GCC Build Output Parser muss das Compiler command pattern wie folgt angepasst werden:

(.*gcc)|(.*[gc]\+\+)
Image Description

Wenn nun clean project und anschließend build project ausgeführt wird, erkennt man mehr Ausgaben in der Console und der Eclipse Indexer sollte automatisch alle Symbole und Verweise eingebunden haben.
Image Description

Debuggen

Unter Debug Configurations wird eine neue Konfiguration unter GDB SEGGER J-Link Debugging erstellt. Hier muss die erzeugte .elf-Datei ausgewählt werden.
Image Description

Unter dem Debugger TAB kann der GDB-Server eingerichtet werden. Zur Zeit wird empfohlen den GDB-Server manuell zu starten, daher sollte der Haken bei Start the J-Link GDB server locally entfernt werden. Bei GDB Client Setup muss der Pfad zu arm-none-eabi-gdb.exe angegeben werden (...GCC\bin\arm-none-eabi-gdb.exe).

Image Description

Der GDB Server wird wie folgt gestartet:

JLinkGDBServerCL.exe -device nrf51 -if swd -speed 1000
Image Description

Nun kann der Debug Prozess ausgeührt werden. Es erscheinen weitere Ausgaben im GDB Server und Eclipse öffnet die Debug Perpektive.
Image Description

Viele Grüße
Arthur