Differences

This shows you the differences between two versions of the page.


Previous revision
eclipse [2022/08/04 15:02] (current) – external edit 127.0.0.1
Line 1: Line 1:
 +====== Eclipse IDE ======
  
 +In dieser Seite wird beschrieben wie die Eclipse IDE installiert und für die Softwareentwicklung auf den TQ-Modulen konfiguriert wird.
 +
 +Verwendete Versionen:
 +  * Ubuntu 10.04
 +  * Ubuntu 11.04
 +  * Eclipse Indigo
 +  * CDT 8.0
 +  * TQMa28 mit i.MX28 (ARM9)
 +  * TQMa35 mit i.MX35 (ARM11)
 +  * LTIB 9.1.1
 +  * ELDK 4.2
 +
 +===== Installation =====
 +==== Download Komplettpaket ====
 +Ubuntu 10.04 liefert in den Repositories Eclipse Galileo mit. Die Version von CDT für Eclipse Galileo ist 6.0.2, diese unterstützt die Features für das Cross-Compilieren noch nicht. Für Ubuntu 10.04 holen wir uns die gepackte Version von Eclipse Indigo mit CDT 8.0. Diese und evtl. neuere sind auf folgender Downloadseite verfügbar:
 +
 +http://www.eclipse.org/cdt/downloads.php
 +
 +Wenn man auf dieser Seite dem Link zum gewünschten Eclipse package folgt (CDT 8.0 for Eclipse Indigo), hat man in der rechten Spalte einen Downloadlink für die verschiedenen Architekturen.
 +
 +Alternativ kann man auch direkt auf http://www.eclipse.org/downloads/ gehen und findet dort dieselbe Übersicht an verfügbaren Packages. Nach Auswahl von "Linux" oben rechts, kann man sich das Package
 +
 +''Eclipse IDE for C/C++ Linux Developers (includes Incubating components)''
 +
 +herunterladen. In dem entpackten Ordner ist das direkt ausführbare Eclipse. Es müssen keine Plugins mehr installiert werden. Mitunter kann es jedoch vorkommen, dass für die Ausführung von Eclipse noch eine Java Runtime Umgebung benötigt wird. Diese wird mit folgendem Befehl installiert.
 +<code bash>user@ubuntu:~$ sudo apt-get install default-jre</code>
 +==== Installation per apt-get ====
 +Mit apt-get wird die eclipse Plattform installiert:
 +
 +<code bash>user@ubuntu:~$ sudo apt-get install eclipse-platform</code>
 +
 +<WRAP round alert>
 +Ubuntu 10.04 liefert das sehr alte Eclipse Galileo mit. Es wird empfohlen ein neueres Paket direkt herunterzuladen. Siehe [[eclipse#download_komplettpaket]]
 +</WRAP>
 +
 +<WRAP round tip>
 +Das Paket eclipse-platform enthält nur die Platform und keine Sprachspezifischen plugins. Diese müssen noch mit dem Plugin Manager nachinstalliert werden. Es kann auch eine schon vorhandene Installation von eclipse genutzt werden.
 +</WRAP>
 +
 +
 +===== Konfiguration =====
 +**Workspace**: Nach dem Start von eclipse muss ein Workspace angelegt werden. Der Workspace ist in einem Ordner im Dateisystem. Innerhalb des Workspaces können sehr einfach Projekte referenziert werden. Verschiedene Workspaces sind vor allem für verschiedene Programme oder für verschiedene Zwecke (z.B. ein Workspace für embedded Projekte, ein Workspace für Webdevelopment, ein Workspace für Javaprojekte) sinnvoll.
 +
 +**Environment**:
 +<WRAP round important>
 +Starten von Eclipse per Doppelklick im File-Explorer übernimmt nicht die gesetzten Umgebungsvariablen der Shell.
 +</WRAP>
 +
 +
 +Die erste Möglichkeit um eclipse mit den gesetzten Umgebnungsvariablen zu benutzen ist, eclipse aus einer Konsole heraus zu starten.
 +
 +Eine andere Möglichkeit ist, die relevanten Umgebungsvariablen in eine Datei zu schreiben, z.B.
 +<code bash>user@ubuntu:~$ echo 'PATH=$PATH:/opt/eldk/usr/bin:/opt/eldk/bin
 +export CROSS_COMPILE=arm-linux-' > setup_tqma28</code>
 +
 +Und dann ein Shell-Skript zu schreiben das zuerst die Umgebungsvariablen setzt und dann eclipse startet:
 +
 +<code bash>echo '#!/usr/bin/env sh
 +source ~/setup_tqma28
 +cd ~/eclipse
 +./eclipse&' > eclipse_tqma28.sh && chmod u+x eclipse_tqma28.sh</code>
 +
 +Man kann dann auch einen "Launcher" per Rechtsklick und ''Add to Panel...'', dort im Auswahlfenster ''Custom Application Launcher'', in eine Fensterleiste hinzufügen:
 +{{ :eclipse:eclipse_launcher_with_environment.png?nolink&200|}}
 +===== Erstellen eines neuen Cross Compiler Projektes =====
 +  * Menü ''File-->New-->C Project''
 +  * Projektnamen eingeben und als ''Project type'' das ''Cross-Compile Project'' mit dem ''Cross GCC'' wählen
 +  * Im nächsten Fenster über ''Browse..'' den Pfad zum Cross Compiler wählen und das Prefix der Toolchain eingeben 
 +<code>(bspw. 
 +Prefix: arm-none-linux-gnueabi-
 +Path: /opt/freescale/usr/local/gcc-4.3.3-glibc-2.8-cs2009q1-203/arm-none-linux-gnueabi/bin
 +</code>
 +  * Im nächsten Fenster ''Finish'' drücken.
 +
 +===== Erstellen eines Projektes aus bestehenden Sourcen =====
 +Vorraussetzungen:
 +  * Quelltext vorhanden
 +  * Makefile vorhanden
 +  * Projekt kann "per Hand" auf der Konsole gebaut werden
 +
 +  - Eclipse starten: ''user@ubuntu:~/Downloads/eclipse$ ./eclipse&''
 +  - Neues Projekt erstellen: im Menü mit ''File > New > C Project''
 +  - Im Assistenten einen Projektnamen vergeben (z.B. Hello World) und das Häkchen bei ''use default location'' entfernen. Daraufhin die Location des existierenden Projekts angeben z.B. ''/home/user/src/hello_world/''.
 +  - Als Project type ''Cross-Compile Project'' und als Toolchain ''Cross GCC'' auswählen.
 +  - Den Assistenten mit ''Finish'' beenden.
 +  - Im Project Explorer links sollte jetzt das Projekt mit den bestehenden Quelltexten auftauchen. Jetzt muss noch in den Projekteigenschaften das automatische Makefile deaktiviert werden.
 +  - Dazu per Rechtsklick auf den Projektnamen im Kontextmenü ''Properties'' auswählen. In dem Einstelldialog den Menüpunkt ''C/C++ Build'' auswählen. Dort die Option ''Generate Makefiles automatically'' deaktivieren.{{ :eclipse:screenshot-properties_for_hello_world.png?200 |}}
 +  - Das Projekt mit einem Klick auf den Hammer bauen.
 +  - Nach einem erfolgreichen Build ist im Project Explorer das Binary mit der Zusatzinfo der Architektur, in unserem Fall arm. {{ :eclipse:screenshot-project_explorer.png?200 |}}
 +<WRAP round info>
 +Wenn statt arm als Architektur die Hostarchitektur steht (z.B. x86), dann wurde der falsche Compiler gewählt. Siehe auch: [[eclipse#konfiguration|Eclipse Konfiguration]]
 +</WRAP>
 +
 +
 +===== Cross Compilen mit Eclipse =====
 +Ein Projekt kann auch in Eclipse für eine andere Plattform kompiliert werden. Es ist dafür ein Aufruf des targetspezifischen Compilers nötig. Hier sollen die dazu vorzunehmenden Einstellungen in Eclipse anhand des C Compilers verdeutlicht werden, der durch das LTIB-Paket mitgeliefert wird. Für dieses Beispiel ist dies der GCC 4.3.3.
 +
 +\\ 1. Pfad zum Compiler notieren: <code>/opt/freescale/usr/local/gcc-4.3.3-glibc-2.8-cs2009q1-203/arm-none-linux-gnueabi/bin/arm-none-linux-gnueabi-gcc</code>
 +\\ 2. Eigenschaften eines Eclipse-Projektes öffnen (Rechtsklick auf das Projekt im Project Explorer -> Properties) und die oben angezeigte Configuration achten.
 +\\ 3. Unter ''C/C++ Build'' auf ''Settings'' klicken und bei ''Tool Settings'' den ''GCC C Compiler'' markieren.
 +\\ 4. Das Command ''gcc'' ändern in <code>/opt/freescale/usr/local/gcc-4.3.3-glibc-2.8-cs2009q1-203/arm-none-linux-gnueabi/bin/arm-none-linux-gnueabi-gcc</code>
 +\\ 5. Jetzt muss Eclipse zum Kompilieren das Include-Verzeichnis des Target-Linux gegeben werden. Dazu ''GCC C Compiler'' aufklappen und den Eintrag ''Includes'' wählen. 
 +\\ 6. ''/opt/ltib/src/kernel/linux-2.6-denx/include'' hinzufügen.
 +\\ 7. Schritt 4 für den ''GCC Linker'' wiederholen.
 +\\ 8. Unter dem ''GCC Linker'' auf Libraries klicken.
 +\\ 9. Zum ''Library search path(-L)'' das  Verzeichnis ''/opt/ltib/rootfs/lib'' und ''/opt/ltib/rootfs/usr/lib'' hinzufügen.
 +\\ 10. Schritt 4 für den ''GCC Assembler'' wiederholen, allerdings mit dem Command <code>/opt/freescale/usr/local/gcc-4.3.3-glibc-2.8-cs2009q1-203/arm-none-linux-gnueabi/bin/arm-none-linux-gnueabi-as</code>
 +\\ 11. Das ''Binary Parsers''-Tab öffnen und den Elf Parser abwählen, dafür den GNU Elf Parser anwählen.
 +\\ 12. Dessen ''addr2line Command'' ändern zu <code>/opt/freescale/usr/local/gcc-4.3.3-glibc-2.8-cs2009q1-203/arm-none-linux-gnueabi/bin/arm-none-linux-gnueabi-addr2line</code>
 +\\ 13. Dessen ''c++filt Command'' ändern zu <code>/opt/freescale/usr/local/gcc-4.3.3-glibc-2.8-cs2009q1-203/arm-none-linux-gnueabi/bin/arm-none-linux-gnueabi-c++filt</code>
 +\\ 14. Die Änderungen mit Apply und OK übernehmen.
 +
 +Jetzt wird in der gewählten Configuration das Projekt für die Zielhardware gebaut. Zum Kopieren der gebauten Binärdatei in das RootFS ist noch Folgendes zu erledigen:
 +
 +In den Projekteigenschaften unter ''C/C++ Build -> Settings'' auf ''Build Steps'' klicken und bei den ''Post-build steps'' das Command <code>cp /<workspace>/<project>/<Configuration>/<output binary> /opt/ltib/rootfs/home/<user>/</code> eintragen. <wrap round info>
 +Das Kopieren direkt ins LTIB-RootFS funktioniert nur, wenn die Benutzerrechte von Eclipse das Schreiben an diese Stelle erlauben. Notfalls sind vorher die Rechte des Zielverzeichnisses entsprechend anzupassen.
 +</wrap>
 +
 +
 +
 +===== Demo-Projekt =====
 +
 +{{:eclipse:hello_world.zip|}}
 +
 +Ein Hello World Demoprojekt wurde erstellt. Dieses Projekt sollte bei korrekt installiertem und konfiguriertem ELDK mit Eclipse und CDT kompilieren.
 +Zum Importieren des Projekts einfach im Menü ''File > Import...'' auswählen. Im Assistenten ''Existing Projects into Workspace'' auswählen. 
 +{{ :eclipse:screenshot-import.png?200 |}}
 +Im nächsten Formular muss nur noch das heruntergeladene ZIP-Archiv ausgewählt werden und mit ''Finish'' der Import abgeschlossen werden. 
 +{{ :eclipse:screenshot-import-1.png?200 |}}
 +<WRAP round tip>
 +Sollte es beim Kompilieren probleme geben, kann man zuerst das Bauen per direktem Aufruf von ''make'' auf der Konsole ausführen. Es wird dann ein ausführbares Programm erstellt.
 +</WRAP>
 +
 +===== Debuggen =====
 +  * [[eclipse:debuggen|Debuggen mit Eclipse, RSE und gdb]]
 +  * [[eclipse:debuggen_ohne_rse|Debuggen mit Eclipse ohne RSE, aber mit gdb]]
 +
 +
 +
 +===== Quellen =====
 +  * http://lists.denx.de/pipermail/eldk/2008-February/000079.html
 +  * http://cache.freescale.com/files/dsp/doc/app_note/AN3870.pdf
 +  * http://lwn.net/images/conf/rtlws11/papers/proc/p09.pdf
 +  * http://comments.gmane.org/gmane.comp.embedded.eldk/1
 +  * http://wiki.eclipse.org/CDT/User/FAQ