=====Integration einer PTXdist-Toolchain in die Eclipse IDE===== \\ \\ ====Ziele==== * Integration einer PTXdist-Toolchain. PTXdist in ein grafisches IDE basierend auf Eclipse. * Erstellen und Zusammenstellen eines kleinen Projekts * Debuggen einer Anwendung auf dem Modul \\ ====Vorraussetzungen==== * Toolchain für Cross-Compiling * Eclipse-Umgebung \\ ====Zusätzliche Hinweise==== * Im Tutorial wurde das TQMa53 als Referenzmodul verwendet \\ ====Anmerkungen zum Tutorial==== Dieses Tutorial wurde auf einem PC mit Ubuntu 12.04 durchgeführt. \\ Es wird eine installierte PTXdist Toolchain benötigt. Die Installation dieser Toolchain wird auf der Seite: XXXXXXX beschrieben \\ \\ Es wurde Eclipse „Indigo“ verwendet, da die Cross-Kompilierung hier standardmäßig unterstützt wird. Bei einer Installation von Eclipse in Ubuntu 12.04 über die Shell mit dem Befehl sudo apt-get install eclipse-plattform fehlt die Unterstützung für Cross-Kompilierung. Daher empfiehlt es sich, das komplette Paket direkt vom folgenden Link herunterzuladen: http://www.Eclipse.org/cdt/downloads.php \\ \\ ====Konfigurieren des Host Systems:==== \\ Für die ordnungsgemäße Ausführung von Eclipse mit der OSELAS Toolchain müssen zwei Dateien angelegt werden: - Environment Konfigurationsdatei: **setup_tqma53** PATH=$PATH= :/opt/OSELAS.Toolchain-2011.11.1/arm-cortexa8-linux-gnueabi/gcc-4.6.2--glibc-2.14.1-binutils-2.21.1a-kernel-2.6.39-sanitized/bin:$PATH export CROSS_COMPILE=arm-cortexa8-linux-gnueabi- - Konfigurationsdatei für Eclipse: **eclipse_tqma53** #!/bin/bash source ~/setup_tqma53 cd ~/eclipse ./eclipse& Die Datei **eclipse_tqma53** muss ausführbar gemacht werden. Nun kann Eclipse mit dem Befehl ./eclipse_tqma53 über das Terminal gestartet werden. In diesem Tutorial wurden die beiden Dateien im Benutzerordner erstellt. Eclipse wird ebenfalls direkt im Benutzerordner installiert. Wenn Eclipse in ein anderes Verzeichnis installiert worden ist, müssen die Pfade entsprechend angepasst werden. ====Erstellen eines Projekts:==== Um ein neues Projekt zu erstellen, aus dem Menü **File-> New> C-Project** auswählen Bild 1 Im C Project Fenster vergeben Sie einen Namen für das neue Projekt (in diesem Fall: Beispiel_1). Als Projekttyp **Empty Project** auswählen und im Abschnitt **Toolchains >Cross GCC** markieren. Bild 2 Durch klicken auf **Finish** wird die Umgebung für unser neues Projekt erzeugt. Bild 3 Zunächst muss ein Source File für das neue Projekt angelegt werden. Bild 4 Dazu im Menü **File-> New> Source File** auswählen. Bild 5 In dem Popup-Fenster einen Namen für das Source file vergeben (einschließlich Erweiterung). In diesem Fall heißt das Source File „hello.c“. Bild 6 Sobald das Source File generiert wurde, kann dieses mit Code befüllt werden. Im Fall dieses Tutorials ist es eine einfache „Hello World“ Anwendung. Bild 7 Als letzten Schritt vor dem Kompilieren setzen wir zwei Variablen innerhalb des Projekts. Dazu muss **Beispiel_1** mit der rechten Maustaste angeklickt und im Kontext Menü Properties ausgewählt werden. In dem Popup-Fenster den Menüpunkt **C/C ++ Build** erweitern und **Settings** auswählen. Bild 8 Die Variablen **Präfix** und **Path** im Abschnitt **Cross Settings** müssen wie folgt gesetzt sein. * Präfix: **arm-cortexa8-linux-gnueabi-** * Path:**/opt/OSELAS.Toolchain-2011.11.1/arm-cortexa8-linux- gnueabi/gcc-4.6.2-glibc-2.14.1-binutils-2.21.1a-kernel-2.6.39-sanitized/bin** Die Variablen müssen zwei mal gesetzt werden; einmal für die Konfiguration **Release** und einmal für die Konfiguration **Debug**. Die Konfiguration kann im Dropdown Menü im oberen Teil des Fensters ausgewählt werden. Nachdem die Variablen für beide Konfigurationen gesetzt wurden, die Schaltfläche OK anklicken. Um das Projekt zu kompilieren, wählen Sie die Schaltfläche **Build Project**. In der Registerkarte **Console** kann man im unteren mittleren Teil den Fortschritt des Kompiliervorgangs beobachten. Bild 9 ====Kompilieren einschließlich Kernel-Quellen:==== Um Quellcode, der auf den Kernel-Header verweist, zu kompilieren, muss eine Variable im Projekt hinzufügt werden, so dass der Compiler weiß, wo diese Ressourcen zu finden sind. \\ \\ Um die Variable anzupassen, müssen die Projekteigenschaften geöffnet werden (Rechtsklick auf das Projekt-> **Properties**). Als nächstes den Abschnitt **C/C++ General** öffnen, **Path and Symbols** öffnen, den Reiter **Includes** anwählen und bei **Languages ->GNU C auswählen**. Bild 10 Um auf den entsprechenden Kernel zu verweisen, muss bei **Include directories** ein Eintrag hinzugefügt werden. Dazu auf **Add** klicken. In dem sich öffnenden Popup Fenster den Pfad, der auf den Kernel verweist, eintragen. Für dieses Tutorial gilt: **/opt/project/OSELAS.BSP-TQ TQMa53 / Plattform-MBa53 / sysroot-target / kernel-headers / include** Bei der Option **Add to all configurations** einen Haken setzen damit dieser Pfad nur einmal gesetzt werden muss. Danach kann das Fenster geschlossen werden. \\ \\ Es können auch weitere Pfade angegeben werden, damit die zugehörigen Paket-Header und/oder Bibliotheken eingebunden werden. Für das Tutorial lauten die Pfade wie folgt: * **/opt/Project/OSELAS.BSP-TQ-TQMA53/platform-MBa53/sysroot-target/usr/include** * **/opt/Project/OSELAS.BSP--TQ-TQMA53/platform-MBa53/sysroot-target/include** ====Remoteverbindung zum Target einrichten:==== Zunächst muss eine Verbindung mit dem Target hergestellt werden. Im Fall des Tutorials ist dies das TQMa53 Modul. Dazu wird RSE (Remote System CSR-Tool Explorer)1 verwendet. Auf dem Target System müssen zusätzlich die gdb-Server und openssh Pakete (Inklusive SFTP-Server-Option) installiert werden, damit das Debugging auf dem Target durchführt werden kann. Um das Fenster für RSE hinzuzufügen, unter **Window > Show view> Other ...>**auswählen. Dann den Menüpunkt **Remote Systems** öffnen und **Remote Systems** auswählen. Bild 11 Um eine neue Verbindung zu erstellen, das Verbindungssymbol anklicken: Bild 12 Ein neues Fenster wird eingeblendet; dort muss der Remote Typ eingestellt werden. In unserem Fall ist dies Linux, anschließend auf **Next** klicken. Bild 13 Im nächsten Fenster werden die Verbindungsdaten eingegeben: * **Host name:** Hostname oder IP des Targets hier eintragen1 * **Connection name:** Der Verbindungsname ist frei wählbar * **Description:** Hier kann die Verbindung kurz beschrieben werden Der zugeordnete Standard Hostname ist **TQM**. Ist das Target während der Konfiguration nicht mit dem Netzwerk verbunden, muss die Option Vertify host name deaktiviert werden. Alternativ kann die IP Adresse des Targets eingegeben werden. Bild 14 Mit **Finish** beenden. Im nächsten Fenster **ssh.files** auswählen; dann auf **Next** klicken. Bild 15 Im folgenden Fenster vor **processes.shell.linux** einen Haken setzen und auf **Next** klicken. Bild 16 Im darauf folgenden Fenster **ssh.terminals** auswählen und die Schaltfläche **Finish** anklicken. Bild 17 Sobald die neue Verbindung konfiguriert ist, kann man sich darüber zum Target verbinden. (Bei der Initialisierung der Verbindung sind Benutzername und Passwort erforderlich.) Auf dem Target muss ein Passwort für den Root-Benutzer vergeben werden. Dazu in der Konsole des Starterkits folgenden Befehl ausführen: TQM root @: ~ passwd root Danach das gewünschte Passwort vergeben. ====Debuggen einer Anwendung starten:====