Forum: Compiler & IDEs Eclipse und SDCC unter Linux


von Robert P. (Firma: Hochschule Hannover) (profrp)


Lesenswert?

Seit einigen Tagen bemühe ich mich, den SDCC 
(https://sourceforge.net/projects/sdcc/) mit Eclipse unter Linux Mint 
(Version 18.3) ans Laufen zu kriegen. Jetzt muss ich erst einmal eine 
Pause einlegen, möchte aber den Zwischenstand hier darstellen um 
eventuell Mitstreiter zu finden.
Ich habe das Forum hier bereits durchwühlt und bin auf eine interessante 
Aussage gestossen (weiß leider nicht mehr in welchem Thread): SDCC 
funktioniert nur bis zur Version MARS von Eclipse.
Aber was ist denn an den neueren Versionen so anders? Oder ist die von 
mir verwendete (3.8) noch älter?

Mein aktueller Stand ist wie folgt:
Ich hatte zunächst Eclipse (Standard) und folgend Eclipse CDT (Version 
3.8, Namen weiß ich nicht) über die Anwendersoftwareverwaltung von Linux 
Mint (entspricht Ubuntu) installiert.
Ebenso den SDCC, der auch über die Anwendersoftwareverwaltung angeboten 
wird.
Nach weiteren Anleitungen (leider habe ich die Links dazu jetzt nicht 
parat) habe ich die Plugin-Dateien (Verzeichnisse plugins und features) 
in die entsprechenden Verzeichnisse von Eclipse kopiert.
Ergebnis: Das Kompilieren als solches (Build über Project-Menü) 
funktioniert einwandfrei, es werden die Ergebnisse im 
Release-Verzeichnis ohne Fehlermeldungen abgelegt.
Aber!!!
Der Indexer funktioniert überhaupt nicht. Obwohl alle Angaben in den 
Einstellungen richtig erscheinen, scheint es so, als ob der Indexer nach 
wie vor den ursprünglichen gcc verwendet. So bekomme ich 
Standardfehlermeldungen (fehlende Include-Dateien, etc.) durch 
ergänzende Einstellungen im Projekt weg, dennoch werden typische 
Konstrukte aus der SDCC-Umgebung (z.B. __sfr __at ...) nicht verarbeitet 
und einfache Zuweisungen wie P1_1 = 1 erzeugen Syntaxfehler.
Ich habe schon Vieles probiert, auch Beschränkung auf gcc cross für die 
Toolchain und ähnliches.
Aber nun komme ich nicht weiter.

Um wenigstens etwas ans Laufen zu bekommen, habe ich MCU 8051 IDE 
(https://sourceforge.net/projects/mcu8051ide/) probiert (wegen SDCC). 
Das klappt ziemlich gut, obwohl der Editor nicht auf Pfeil rechts oder 
Pfeil links reagiert und ich ihn deshalb kaum bedienen kann. Das 
ständige Positionieren mit der Maus ist einfach anstrengend.

Ich werde in den nächsten Tagen/Wochen nochmal einen Anlauf mit 
Eclipse/SDCC versuchen.
Gibt es noch weitere Interessenten außer mir?

von Lothar (Gast)


Lesenswert?

Es liefen Versuche vom Simplicity Studio Team (Eclipse für C8051) und 
vom SDCC Team, ist aber nur halb fertig.

https://www.silabs.com/community/software/simplicity-studio/forum.topic.html/add_the_sdcc_compile-ZMyi

https://sourceforge.net/p/sdcc/mailman/message/33596001/

von pegel (Gast)


Lesenswert?

Zum probieren hatte ich mal MCU 8051 IDE v1.4.10 installiert.
Läuft ohne Probleme.

Das mit eclipse und sdcc finde ich auch Schade, damit hätte ich dem STM8 
eine Chance gegeben.

Das Plugin liegt als Quelltext vor und wer etwas Ahnung von der eclipse 
Plugin Programmierung hat könnte das vielleicht sogar anpassen.

von Robert P. (Firma: Hochschule Hannover) (profrp)


Lesenswert?

Danke für die Links @Lothar, ich werde denen demnächst mal nachgehen.
Ich hatte Simplicity Studio auch schon ins Visier genommen und 
installiert, war aber dann doch sehr durch die weitreichenden 
Ergänzungen von Eclipse verunsichert und habe dann die Finger davon 
gelassen. Zumal anscheinend nur der Keil Compiler nutzbar ist und der 
scheint auch noch als Windows-Software über Wine eingebunden zu sein.

Ich denke, der richtige Weg wird sein, den Plugin-Mechanismus von 
Eclipse zu verstehen und die vorliegenden Plugin-Dateien vom SDCC 
anzupassen. Vielleicht findet man da noch etwas Hilfe bei den 
SDCC-Entwicklern, obwohl da der Bereich Eclipse/SDCC sehr 
stiefmütterlich behandelt scheint.

@pegel
Der STM8 ist mir hier im Forum auch beim Thema SDCC begegnet. Überhaupt 
gibt es noch so einige 8051-Erweiterungen mit interessanten Parametern. 
Obwohl ich nicht davon ausgehe, dass die sich gegen den Trend zu 
preiswerten 32-Bit-Mikrocontrollern behaupten können, hat der 8051 
weiterhin eine große Bedeutung für die Grundlagenausbildung an 
Mikrocontrollern. Da sollte man eine zuverlässige Freeware-Umgebung 
haben, mit denen die Studenten auch daheim herumwerkeln können.

von pegel (Gast)


Lesenswert?

Die Plugin Dateien sind nur ein paar winzige java Dateien und dazu 
einige Konfigurationen.

Da müsste doch was zu machen sein.

von pegel (Gast)


Lesenswert?

Robert P. schrieb:
> Da sollte man eine zuverlässige Freeware-Umgebung
> haben, mit denen die Studenten auch daheim herumwerkeln können.

Wie gesagt, die MCU 8051 IDE funktioniert bei mir.

von Oliver S. (oliverso)


Lesenswert?

Robert P. schrieb:
> Ich hatte zunächst Eclipse (Standard) und folgend Eclipse CDT (Version
> 3.8, Namen weiß ich nicht) über die Anwendersoftwareverwaltung von Linux
> Mint (entspricht Ubuntu) installiert.

Die Version, die Ubuntu über die Anwendersoftwareverwaltung installiert, 
benutzt noch Keilschrift...

Oliver

von Philipp Klaus K. (pkk)


Lesenswert?

Das eclipseSDCC-Plugin ist schon recht alt, und auch schon lange nicht 
mehr maintained. Das müsste sich wohl mal jemand, der Java kann (das 
Plugin selbst ist in Java geschrieben) und Eclipse kennt, ansehen.

Code::Blocks hat auch SDCC-Unterstützung. Die war zwar bis vor ein paar 
Monaten nur mit SDCC bis 2.8.0 kompatibel, aber seit dem Release 17.12 
sollte es auch wieder gut mit aktuellem SDCC funktionieren.

Philipp

P.S.: Siehe auch: 
http://sdcc.sourceforge.net/mediawiki/index.php/IDE_integration

: Bearbeitet durch User
von Philipp Klaus K. (pkk)


Lesenswert?

Robert P. schrieb:
> Ich denke, der richtige Weg wird sein, den Plugin-Mechanismus von
> Eclipse zu verstehen und die vorliegenden Plugin-Dateien vom SDCC
> anzupassen. Vielleicht findet man da noch etwas Hilfe bei den
> SDCC-Entwicklern, obwohl da der Bereich Eclipse/SDCC sehr
> stiefmütterlich behandelt scheint.

SDCC-Entwickler kümmern sich halt erstmal um SDCC selbst, erst in 
zweiter Linie um das drumherum, wie IDEs. Aber in dem im zweiten Post 
verlinkten Thread hat Maarten mehrfach Hilfe bei der SDCC-Unterstützung 
in Simplicity Studio angeboten.

Auch auf sdcc-user gab es vor ein paar Tagen einen Post zum Thema: 
https://sourceforge.net/p/sdcc/mailman/message/36174514/

Wenn sich Leute finden, die das eclipseSDCC-Plugin aktualisieren wollen, 
werden SDCC-Entwickler natürlich helfen, soweit sie können.

Philipp

von Robert P. (Firma: Hochschule Hannover) (profrp)


Lesenswert?

@Alle
Schon mal vielen Dank für die Links und Anregungen. Es hat sich auf 
jeden Fall gelohnt, hier einen Beitrag einzustellen. Ich bin angenehm 
überrascht.

@pegel
Die MCU 8051 IDE habe ich auch schon ausprobiert, funktioniert tadellos 
bis auf den Umstand, dass die Cursortasten (rechts und links) bei meiner 
Installation nicht funktionieren (Linux Mint 18.3, aktuelle Versionen 
von SDCC und MCU 8051 IDE). Und ich bin es gewohnt, mehr mit der 
Tastatur zu arbeiten, als mit der Maus.
Wie ist das denn bei Deiner Installation?

@Philipp
Vielen Dank für die weiteren Links, ich werde dem nachgehen.
Dass es grundsätzlich möglich sein sollte, zeigt mir die Aktivität von 
Jantje mit Sloeber (http://eclipse.baeyens.it/), der immerhin die ganze 
Arduino-Umgebung in Eclipse integriert hat und da funktioniert (bei mir) 
bislang Alles.

@Oliver
Das würde aber dafür sprechen, dass ich eine ältere Version habe und die 
Aussage "SDCC geht nur bis MARS" nicht relevant für mich wäre.

Übrigens: Ich hatte bis vor ca. einem Jahr auch die APP-Entwicklung für 
Android mit Eclipse gemacht und musste dafür extra eine alte Version 
installieren, weil das Android-Plugin mit den neueren Versionen nicht 
geht. Da muss es also irgendwann eine grundsätzliche Änderung bei 
Eclipse gegeben haben, die vielleicht auch das SDCC-Plugin betrifft.

von pegel (Gast)


Lesenswert?

Robert P. schrieb:
> Wie ist das denn bei Deiner Installation?

Wie gesagt, keine Probleme. Funktioniert alles.

ubuntu 16.04 LTS
MCU 8051 IDE v1.4.10

Es gibt aber auch die v1.4.9 zum Download. Welche hast du?

von Robert P. (Firma: Hochschule Hannover) (profrp)


Lesenswert?

@pegel
Da sehe ich später nochmal nach.
Bitte sei so lieb und bestätige (teste) nochmal, ob Du im Editor 
wirklich frei mit den Cursortasten (Pfeil rechts/links) navigieren 
kannst.

Ich habe mich nochmal mit Eclipse näher befasst und muss zu meiner 
Schande gestehen, dass mein Know-how da total veraltet ist (3 Jahre).
Da hat sich in der Zwischenzeit extrem viel getan.
Und es gibt auch Tutorials im Netz, um Eclipse-Plugins zu erstellen.
Leider habe ich die nächsten 10 Tage keine Zeit (heute eigentlich auch 
schon nicht).
Sie haben sogar eine neue Android-Umgebung, sind also nicht mehr vom 
Google-Plugin abhängig. Das MUSS ich ausprobieren.
Und eine Arduino-Umgebung, wo ich dachte, Sloeber wäre die einzige 
Eclipse-Anpassung für Arduino.

von pegel (Gast)


Lesenswert?

Robert P. schrieb:
> ob Du im Editor wirklich frei mit den Cursortasten

Ja, wirklich.

Sofern die Datei nicht Read only ist, wie bei jedem anderen Editor auch.

von Robert P. (Firma: Hochschule Hannover) (profrp)


Lesenswert?

Übrigens:
Da gibt es tatsächlich aktuellere Informationen bei YouTube, ich habe im 
Suchfenster mal Eclipse und SDCC eingegeben und bin sehr erstaunt.

von pegel (Gast)


Lesenswert?

Bei Read only Dateien ist der Cursor nicht sichtbar, aber die 
Line/Column Werte ändern sich.

von Robert P. (Firma: Hochschule Hannover) (profrp)


Lesenswert?

Nein, da hast Du mich falsch verstanden (wegen read-only).
Es ist bei mir tatsächlich so, dass ich Alles machen kann, also tippen, 
speichern, übersetzen, etc.
Nur nicht in der Datei mit Pfeil links/rechts navigieren.
Also wenn ich am Ende einer eingetippten Zeile stehe, dann kann ich 
nicht mit Pfeil links zur Mitte meiner eingetippten Zeile gehen, um da 
etwas zu korrigieren.

von pegel (Gast)


Lesenswert?

Habe ich schon verstanden, deshalb meine Frage nach der Version.
Manchmal ist es nur eine Kleinigkeit die hakt.

von pegel (Gast)


Lesenswert?

Du kannst übrigens auch unter Configure Editor einen anderen Editor 
wählen,
der tut es vielleicht.

von Robert P. (Firma: Hochschule Hannover) (profrp)


Lesenswert?

Danke für den Hinweis.
Ich habe tatsächlich Version 1.4.7 und werde gleich einmal ein Update 
machen.

von Robert P. (Firma: Hochschule Hannover) (profrp)


Lesenswert?

Vielen Dank, das war es tatsächlich.
Ich hatte dem nicht weiter nachgeforscht, weil der Link vom Autor auf 
moravia-microsystems nicht funktionierte.
Jetzt habe ich auch 1.4.9 und die Cursortasten funktionieren.
1.4.10 habe ich nicht gefunden.

Ich bleibe aber an SDCC unter Eclipse dran.
Wenn die Android-Entwicklung gut läuft, dann habe ich alles, was ich so 
brauche, in Eclipse unter Linux (auf einem bootfähigen Stick).
Arduino, Android und einfache Mikrocontroller.

von pegel (Gast)


Lesenswert?

Robert P. schrieb:
> Ich bleibe aber an SDCC unter Eclipse dran.

Das ist gut.

Robert P. schrieb:
> in Eclipse unter Linux (auf einem bootfähigen Stick)

Das ist noch besser ;)

von Carl D. (jcw2)


Lesenswert?

Das im ersten Post genannte Problem mit Eclipse CDT, daß es nämlich die 
(teil Prozessor-spezifischen) SDCC Erweiterungen nicht kennt, besteht 
auch für C++ Version größer 11. Diese ist darin begründet, daß CDT 
versucht die Files selber zu parsen und das wird immer schwieriger. Auch 
gibt es keinen einfachen Extension-Point mit dem man mal schnell für 
Konfiguration x ein paar zusätzliche Schlüsselworte hinzufügen könnte. 
Für die Zunkunft erwägt man llvm als "Parser" zu verwenden, um mit 
zukünftigen Sprachfeatures mithalten zu können. Eclipse will nämlich 
nicht nur farbig rendern, sondern die Source verstehen. Bedeutet aber 
auch, wenn man kein llvm-Frontend mit 8051-SDCC-Syntax-Erweiterungen 
hat, dann geht's nicht. Es gibt aber einen sehr kleinen Hoffnugsschimer, 
denn zwischen llvm soll ein json-basiertes Webinterface benutzt werden.
Theoretisch könnte man also einen anderen "Parser-Service" verwenden. 
Nur ist das Protokoll von MS und damit sicher maximal kompliziert, sorry 
sofisticated.
Mir würde C++17 schon reichen, aber notfalls versteht halt der Editor 
nicht, was dem Compiler gefällt.

von Robert P. (Firma: Hochschule Hannover) (profrp)


Lesenswert?

Hallo Carl,
vielen Dank für diese Info.
Leider ist mein Know-how nicht ausreichend, um das wirklich zu verstehen 
bzw. die Konsequenzen abzuschätzen.
Deshalb ein paar direkte Fragen:
Heißt das, ich kann/sollte mir die weitere Auseinandersetzung mit der 
Gestaltung von Plugins sparen, da es ohnehin keinen Sinn macht, weil ich 
am CDT-Parser nicht vorbeikomme?
Oder sollte ich tatsächlich ein ältere Eclipse-Version (noch älter als 
3.8) bemühen, um mir eine Umgebung für den SDCC zu schaffen?
Oder handle ich mir da wieder neuen Ärger mit eventuellen 
Inkompatibilitäten bei den Java-Umgebungen ein, wenn ich verschiedene 
Eclipse-Versionen verwende?
Zur Zeit habe ich schon 4.6 (mit Sloeber) und 3.8 (aus der 
Paketverwaltung von Linux Mint) gleichzeitig am Laufen und konnte noch 
keine Probleme feststellen.

von Carl D. (jcw2)


Lesenswert?

Robert P. schrieb:
> Hallo Carl,
> vielen Dank für diese Info.
> Leider ist mein Know-how nicht ausreichend, um das wirklich zu verstehen
> bzw. die Konsequenzen abzuschätzen.
> Deshalb ein paar direkte Fragen:
> Heißt das, ich kann/sollte mir die weitere Auseinandersetzung mit der
> Gestaltung von Plugins sparen, da es ohnehin keinen Sinn macht, weil ich
> am CDT-Parser nicht vorbeikomme?
> Oder sollte ich tatsächlich ein ältere Eclipse-Version (noch älter als
> 3.8) bemühen, um mir eine Umgebung für den SDCC zu schaffen?
> Oder handle ich mir da wieder neuen Ärger mit eventuellen
> Inkompatibilitäten bei den Java-Umgebungen ein, wenn ich verschiedene
> Eclipse-Versionen verwende?
> Zur Zeit habe ich schon 4.6 (mit Sloeber) und 3.8 (aus der
> Paketverwaltung von Linux Mint) gleichzeitig am Laufen und konnte noch
> keine Probleme feststellen.

Ich hab ein SDCC-Plugin mit SDCC 3.5 auf einem mindestens Neon-Eclipse 
laufen. Brauch ich zwar nur, weil ich mal sehen wollte, wie man heute 
8051 programmiert im Vergleich zu vor 20..25 Jahren. Die Einbindung 
einer anderen Toolchain in CDT ist ja nicht wirklich ein Problem, nur 
das Syntaxhighlighting, da funktioniert eben nicht für die Spezialfälle. 
Aber ich ab wegen C++ >11 Erfahrung damit, von CDT gefühlte Fehler von 
echten Compilerfehlern zu unterscheiden.
Falls irgendjemand, der hier mit liest, genauere/andere Kenntnisse zu 
dem Thema hat, bitte nicht zurückhalten beim Schreiben ;-)

von Robert P. (Firma: Hochschule Hannover) (profrp)


Lesenswert?

Vielen Dank.
Das Dumme bei meiner Installation ist ja, dass mir der Editor 
Syntaxfehler anzeigt, der Buildvorgang aber einwandfrei läuft und auch 
die gewünschten Ergebnisse liefert.
Und wenn ich nicht über die Projekteinstellungen die Include-Pfade 
einstelle, kann der Editor noch nicht einmal die Include-Dateien sehen.
Obwohl der Buildvorgang davon völlig unberührt ist und einwandfrei 
läuft.
Für heute mache ich Feierabend.
Schönen Abend noch.

von Lothar (Gast)


Lesenswert?

Robert P. schrieb:
> Editor Syntaxfehler anzeigt, der Buildvorgang aber einwandfrei läuft

Das ist bei Simplicity Studio auch noch so z.B. wird

void extint1(void) interrupt 2 using 3

als Fehler angezeigt. Es ist also nicht so einfach möglich, Eclipse die 
Keil C51 Extensions beizubringen. Und bei SDCC wird es dann ähnlich 
sein.

von Philipp Klaus K. (pkk)


Lesenswert?

Zur Aktualisierung des eclipseSDCC-Plugins:

* Linux-Distributionen enthalten üblicherweise Eclipse 3.8.1, was sich 
in absehbarer Zeit wohl auch nicht ändern wird. Es sollte also wohl 
dauerhaft eine Version des Plugins geben, die mit Eclipse 3.8.1 
funktioniert.

* Ideal wäre, wenn die gleiche Version des Plugins auch mit aktuellem 
Eclipse. Die Eclipse-Documentation https://help.eclipse.org/mars/nav/2_3 
sieht aus, als ließe sich das machen.

Philipp

von Oliver S. (oliverso)


Lesenswert?

Robert P. schrieb:
> Das Dumme bei meiner Installation ist ja, dass mir der Editor
> Syntaxfehler anzeigt, der Buildvorgang aber einwandfrei läuft und auch
> die gewünschten Ergebnisse liefert.

Das ist, wie schon geschrieben wurde, ein Eclipse-Standardproblem. Die 
Lösung dazu ist ebenso simpel wie effektiv: Einfach den Syntaxcheck in 
den Eclipse-Settings abschalten. Dann ist Ruhe.

Oliver

von Lothar (Gast)


Lesenswert?

Philipp Klaus K. schrieb:
> Zur Aktualisierung des eclipseSDCC-Plugins

FTDI nutzt für ihre neuen FT51 8051 Eclipse 4.4.0 und SDCC:

http://www.ftdichip.com/Firmware/FT51AToolchain.htm

von Philipp Klaus K. (pkk)


Lesenswert?

Ich habe mir es kurz angeschaut. Da sollte brauchbares dabei sein, dass 
man in eclipseSDCC übernehmen könnte.

Philipp

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.