Kampis Elektroecke

VisualGDB zum Entwickeln von Anwendungen für den Raspberry Pi unter Windows

Mittlerweile programmiere ich schon seit fast 10 Jahren und in dieser Zeit habe ich eine ganze Menge Entwicklungsumgebungen verwenden müssen bzw. dürfen (AVR-Studio, Bascom IDE, Arduino IDE, Eclipse in allen Formen und Farben, etc.) und keine Entwicklungsumgebung hat mir (bisher) so gut gefallen wie Visual Studio von Microsoft. Viele Leute nennen die Entwicklungsumgebung überladen und langsam, was stimmen mag, allerdings bringt die Entwicklungsumgebung auch eine Menge Werkzeuge mit. Nichts desto trotz ist Visual Studio meine Lieblingsumgebung, einfach weil die Codevervollständigung, der Debugger und das ganze Handling sehr gut sind. Gut, mittlerweile gibt es auch Visual Studio Code, das eine entschlackte Version von Visual Studio darstellt, aber das soll mal ignoriert werden…

Umsomehr hat mich der Hinweis eines externen Ingenieurs in der Firma erfreut, dass es für Visual Studio ein Plugin gibt, mit denen man Anwendungen für den Raspberry Pi (also ARM-Prozessoren) und andere Systeme erstellen kann: VisualGDB.

Also habe ich mir die Erweiterung mal angeschaut und ich muss sagen, ich bin richtig begeistert. Der normale Komfort von Visual Studio, gepaart mit einem gut zu bedienenden Cross Compiler und Remote-Debugger. Einziges “Manko” ist der Preis von mind. 80 €, welcher aber auf Grund der Qualität des Produktes durchaus angemessen ist.

Schauen wir es uns mal genauer an…

Ein kurzer Einblick in VisualGDB:

Wie bereits erwähnt, handelt es sich bei VisualGDB um ein Plugin, welches die Entwicklung von Software für andere Prozessorarchitekturen und deren Remote-Debugging (oder auch Targets genannt) auf einem Windows-PC, dem sogenannten Host, ermöglicht. Nach dem Erwerb dieses Plugins wird es ganz normal installiert und sobald ein neues Projekt angelegt werden soll, offenbart sich eine neue Kategorie von Templates:

Der Linux Project Wizard ist genau das was man benötigt um Anwendungen für den Raspberry Pi zu entwicklen. Wird dieses Template ausgewählt, gelangt man zu einem weiteren Fenster, wo diverse Projekteinstellungen ausgewählt werden können:

In meinem Beispiel möchte ich eine einfache C++11 Anwendung mit dem CMake Buildsystem bauen (wichtig ist den Haken in dem Kästchen zu entfernen…). Auch Qt Anwendungen sind ohne Probleme machbar und sehr leicht zu erstellen (mache ich noch einen weiteren Bericht drüber).

Wenn die Auswahl bestätigt wird, gelangt man zu den Target-Einstellungen. Hier wird die SSH-Verbindung zu dem Target-System konfiguriert. Als Ziel wird hier mein Raspberry Pi gewählt:

Wenn man vermeiden möchte, dass Bibliotheken etc. auf dem Target installiert werden sollen, so kann auch ein dritter PC als Build-System angegeben werden. Dann wird der Code auf dem Windows-Rechner entwickelt, auf dem zweiten Rechner kompiliert und auf dem Target ausgeführt. Dadurch kann es vermieden werden, große und viele Bibliotheken auf dem Target abzulegen.

Die Auswahl kann mit Finish bestätigt werden. Nun beginnt VisualGDB damit die Verbindung zu überprüfen und alle notwendigen Dateien vom Target zu downloaden.

VisualGDB lädt Kernelsources, Header-Files und Bibliotheken vom Target und verwendet diese zum Kompilieren. Das kompilierte Programm wird anschließend auf das Target geladen und ausgeführt. Nun ist das Projekt fertig konfiguriert und kann für die Entwicklung verwendet werden.

OpenCV als Beispiel für den Einsatz von VisualGDB

Das ganze habe ich mal mit OpenCV auf meinem Raspberry Pi getestet. Dafür habe ich auf dem Raspberry Pi OpenCV installiert:

In dem fertigen Projekt wird dann die CMakeList.txt Datei geöffnet und wie folgt angepasst:

Über Projekt → VisualGDB Project Properties wird nun unter IntelliSense Directories mittels Edit Remote Cache… der Cache, also der Speicherort für die, vom Target heruntergeladenen, Dateien angepasst und die angezeigten Verzeichnisse hinzugefügt:

Die Verzeichnisse werden direkt nach dem Anlegen heruntergeladen, weshalb der ganze Vorgang etwas dauern kann. Unter Debug settings wird dann noch der Pfad der X11 Ausgabe eingestellt:

Anschließend wird das Fenster mittels OK geschlossen.

Ein weiterer Vorteil von VisualGDB ist, dass Bildschirminhalte vom Target direkt auf dem Entwicklungssystem angezeigt werden können. Alles was dafür benötigt wird, ist die Software XMing. Nach dem Download und der Installation der Software, wird der Speicherort der XMing.exe unter Extras → Optionen → VisualGDB → General → Tools eingetragen:

Nun wird nur noch etwas Code benötigt:

Der Code kann nun ganz normal kompiliert und mittels Debugger gestartet werden. Wenn alles korrekt eingerichtet ist, erhält man die Ausgabe des Raspberry Pi auf seinen Windows-Rechner, aber das Programm läuft auf dem Raspberry Pi:

That´s all. Mit den entsprechenden Cross Compilern etc. kann VisualGDB auch für andere Plattformen eingesetzt werden. Alles was dafür benötigt wird ist ein Target mit einem GDB-Server und der entsprechende Cross Compiler. Ich finde die Lösung definitiv sehr gelungen (geht übrigens ähnlich gut mit Python) und es ist für mich eine brauchbare Alternative um Code für andere Plattformen zu entwickeln. 

Das komplette Beispielprojekt gibt es in meinem Raspberry Pi Repository zum Download.

Viele Grüße
Daniel

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.