Entwicklungsumgebung

Eclipse benötiget für das Erstellen der Binärdateien einen Compiler für die jeweilige Plattform. Siehe Toolchain

Installation von Eclipse

Als nächstes erfolgt die Installation von Eclipse (CDT):

# On Ubuntu and other Debian-based operating systems
$ sudo apt install eclipse eclipse-cdt

# On ArchLinux
$ sudo pacman -S eclipse eclipse-cdt

Nun fügen wir CDT eine neue Perspektive hinzu, dazu wählen wir am oberen rechten Bildschirmrand Open Perspective. Alternativ ist dieser Punkt über das Menü unter Window -> Open Perspective -> Other… erreicht werden. Anschließend wird C/C++ gewählt.

_images/eclipse-perspective.png

Zudem ist es ratsam gleich eine Debug-Perspektive hinzufügen.

Plugins für Remote Debugging

Nun benötigen wir noch einige Plugins, dazu öffnen wir den Menüpunkt Help -> Install New Software. Unter Work with wird in der Auswahlbox All Available Site ausgewählt.

Klappen Sie nun unten den Punkt Mobile and Device Development auf, hier werden folgende Pakete zur Installation ausgewählt:

  • C/C++ GCC Cross Compiler Support

  • C/C++ GDB Hardware Debugging

  • c/C++ Memory View Enhancements

  • C/C++ Remote (over TCF/TE) Run/Debug Launcher

  • C/C++ Remote Launch

  • Remote System Explorer End User Runtime

  • Remote System Explorer User Actions

  • Target Management Terminal (Core SDK)

_images/eclipse-install-software.png

Nach dem Bestätigen der benötigten Lizenzen werden die Pakete heruntergeladen und installiert, das kann ein paar Minuten dauern. Danach sollte Eclipse neu gestartet werden.

Projekte verwalten

Als nächstes brauchen wir ein Projekt an dem wir arbeiten können. Dazu erstellen Sie entweder ein neues Projkt oder importieren eines aus ihrem bestehenden Workspace.

_images/eclipse-import.png

Nun kümmern wir um die Build Configuration, Dazu öffnen wir die Projekteigenschaften unter Project -> Properties. Falls ein Cross-Compiler Marke Eigenbau verwendet wird muss der benötigte Pfad unter Environment eingetragen werden, wird der Compiler aus den Paketquellen verwendet entfällt dieser Arbeitsschritt.

_images/eclipse-environment.png

Unter Settings -> Cross-Settings wird nun das prefix des Compilers eingetragen, in unserem Fall arm-linux-gnueabi-.

_images/eclipse-prefix.png

In der Auswahlbox Dialect -> Language Standard kann der verwendete C-Standard eingestellt werden. Eclipse bietet uns hier die Auswahl zwischen

  • ISO C90

  • ISO C99

  • ISO C11

Wenn sie sich nicht sicher sind was sie auswählen sollen, lassen sie das Feld einfach leer und nehmen keine Auswahl vor. Verwenden Sie in Ihrem Project externe Header, können diese unter dem Punkt Includes hinzugefügt werden. Diese Pfadangaben werden dem Kompiler später über das Flag -I bereitgestellt.

Die Punkte Optimization bzw. Debugging bieten weiterführende Optionen an um den Optimierungsgrad und das Debugging-Level einzustellen. Denkbar wäre, das hier für Debug- oder Release - Konfigurationen unterschiedliche Werte verwendet werden.

_images/eclipse-debug.png

Unter dem Punkt Warnings legen Sie All Warnings (-Wall) fest.

Kommen wir nun zum Linker, hier sollte gcc eingetragen werden. Unter Libraries können Sie festlegen, gegen welche Bibliotheken ihr Programm gelinkt werden soll, Beispiele hierfür sind pthread, crypto, oder auch sqlite3. Beachten Sie das diese Bibliotheken in der Regel vorher mit dem Cross-Compiler übersetzt werden müssen um Sie verwenden zu können.

Target - Feste IP-Adresse

Um die Arbeit mit dem Target-System zu vereinfachen sollte dieses eine feste IP-Adresse bekommen.

$ ifconfig eth0 192.168.2.10 netmask 255.255.255.0 up

Hosts Eintrag für das Target-System

Um das Target-System später per Namen (und nicht umständlich per IP-Adresse) aufrufen zu können wird ein Eintrag in /etc/hosts erstellt. Möglich macht dies die Vergabe einer festen IP-Adresse aus dem vorherigen Abschnitt.

$ 192.168.2.10    target-maschine

SSH Key generieren und übertragen

Um die wiederkehrende Eingabe des Pass zu vermeiden, generieren und übertragen wir einen SSH Key mit dem wir uns auf dem Target-System identifizieren können.

# on the build system, generate a key
$ ssh-keygen -t rsa -b 4096 -C "my@email.com"

# copy the public key to the target
$ ssh-copy-id root@target-maschine

Debug Configurations

Um nun erfolgreich Remote-Debuggen zu können sind nun ein paar Konfigurationschritte notwendig. Beginnen wir mit dem Erstellen einer neuen Debug Configuration. Dazu wählen wir im Menu Run -> Debug Configurations:

_images/eclipse-menu_debug_config.png

Nun erstellen Sie mit einem Doppelklick auf C/C++ Remote Application eine neue Konfiguration.

_images/eclipse-new_debug.png

Danach empfiehlt es sich der Konfiguration unter Name einen eindeutigen Namen zu geben. Desweiteren wählen wir im Reiter Main das zugeteilte Project aus.

Nun wird im Feld C/C++ Application die ausführbare Datei ausgewählt die später auf dem Target ausgeführt werden soll.

Als nächstes müssen wir eine neue Verbindung einrichten (falls noch nicht geschehen), dazu wählen wir den Button New rechts neben Connection. Es erscheint eine Auswahlbox in der Linux ausgewählt wird.

_images/eclipse-conn1.png

Im nächsten Fenster gibt man den Hostnamen oder die IP des Host-Systems an. Da wird bereits in einem vorherigen Punkt den Hostnamen explizit vergeben haben, können wir diesen hier einsetzen.

Nach dem Klick auf Next wählen wir unter Files ssh.files aus:

_images/eclipse-conn2.png

Dann processes.shell.linux:

_images/eclipse-conn3.png

Als nächstes ssh.shells:

_images/eclipse-conn4.png

und als Letztes ssh.terminals:

_images/eclipse-conn5.png

Jetzt kann unter dem Punkt Connection die konfigurierte Verbindung ausgewählt werden:

_images/eclipse-conn6.png

Kümmern wir uns um die nächste Einstellung, wird der Remote Debugger gestartet versucht Eclipse über SFTP die ausführbare Datei an einen bestimmten Ort auf dem Target-System zu übertragen. Diesen Ort müssen wir jetzt festlegen:

_images/eclipse-remote.png

Zuletzt müssen wir noch den richtigen Debugger auswählen, dazu öffnen Sie die Registerkarte Debugger. Unter GDB debugger wählen Sie nun die GDB-Version die für Ihre Remote-Architektur passt:

_images/eclipse-gdb.png

Mit Debug oder unter dem Debug-Icon in der Symbolleiste können Sie nun ihre Debug-Konfiguration starten und eine neue Session beginnen.