Forum: Mikrocontroller und Digitale Elektronik Eclipse und Keil


von Matthias L. (mcl024)


Lesenswert?

Hallo zusammen,

wie kann ich den Keil - Compiler in Eclipse integrieren? So das 
Schlüsselwörter erkannt werden und ich in Eclipse Compilieren kann.

Danke für eure antworten.

von Matthias L. (mcl024)


Lesenswert?

Mhh keine ne Idee oder falsches Forum?

von Oliver J. (skriptkiddy)


Lesenswert?

Matthias Laubnitz schrieb:
> ....oder falsches Forum?
Nein du bist hier voll richtig.

Mir stellt sich jedoch die Frage warum man die Keil IDE gegen Eclipse 
austauschen sollte?

von Marcus H. (mharnisch) Benutzerseite


Lesenswert?

Skript Kiddy schrieb:
> Mir stellt sich jedoch die Frage warum man die Keil IDE gegen Eclipse
> austauschen sollte?

Es gibt einen wichtigen Grund: Der µVision Editor ist grausam.

Die Knöpfchen in Eclipse nachzubilden erfordert allerdings etwas mehr 
Aufwand. ARM hat das in der auf Eclipse basierenden "ARM Workbench IDE" 
ganz gut hinbekommen, aber die ist erstens nicht frei erhältlich und 
zweitens untescheidet sich der MDK Compiler in der Aufrufsyntax leicht 
vom RVDS Compiler.

Man könnte allerdings Eclipse zur Projektverwaltung und als Editor 
verwenden und das Übersetzen per Makefile erledigen. Dieses kann man 
m.W. auch in µVision integrieren, so dass beides funktioniert.

Gruß
Marcus

von Oliver J. (skriptkiddy)


Lesenswert?

Marcus Harnisch schrieb:
> Es gibt einen wichtigen Grund: Der µVision Editor ist grausam.

Ich finde die IDE sehr gelungen und arbeite gerne damit, sofern man mein 
Programmieren denn als Arbeit bezeichnen kann. ;)

Gruß Skriptkiddy

von Marcus H. (mharnisch) Benutzerseite


Lesenswert?

Skript Kiddy schrieb:
> Ich finde die IDE sehr gelungen

Wichtigster Fehler: Man kann keinen externen Editor einbinden. 
Programmierer reagieren auf sowas äußerst empfindlich. Vor allem die 
Emacs/vi Fraktion.

Weiteres in unspezifischer Reihenfolge: Wenn ich ein Projekt erzeuge, 
dann werden per default erstmal alle Dateien in das Projektverzeichnis 
geknallt, anstatt ein nach dem Target benanntes Unterverzeichnis zu 
nutzen. Nachdem man das gemerkt hat, geht man logischerweise auf 
Project->Clean und stellt fest, dass man mitnichten den alten Zustand 
wiederhergestellt hat.

Mittlerweile kenne ich die Macken sodass ich mir da für kleine Projekte 
keinen Stress mehr mache und durchaus µVision verwende.

Viel Spaß
Marcus

von 123 (Gast)


Lesenswert?

he he,

auch einer, der die IDEs der Namhaftften Hersteller grausam findet.

bei uns wars zwar nicht Keil. sondern EDGE bzw. IAR,
Keil hab ich mal in nem seminar benutzen "dürfen", ich fands als IAR 
anwender damals grausam. weiter hat mich das "gebietssichernde" gehabe 
nicht gefallen. ULink läuft nur mit Keil und sonst mit gar nix.

Die IDEs sind technisch fast alle auf dem Stand vor 5 oder 10 Jahren. Da 
kann ja  MSVC6 noch mehr. Den vergleich mit der Aktuellen VS2008 / 
VS2010 darf man da garnicht erst stellen. Auch der Vergleich mit einer 
aktuellen CDT wird erneuchternd ausfallen. Entwicler die aus JAVA oder 
.Net kommen fülen sich in die Steinzeit zurückversetzt.

Wir haben für ARM mitlerweile auch auf den CDT mit GCC umgestellt.

Ein problem bei grössenren Projekten war bei uns, das der von uns 
eingesetzte kompiler keine Dependencie dateien erzeugen konnte, bzw die 
nicht mit make compatibel waren. War bis zur umstellung auf GCC ein 
etwas grösseres rumgeeiere das so hinzubekommen, das nur die geänderten 
dateien neu übersetzt werden. (alles hat immer ewigkeiten gedauert)

von Matthias L. (mcl024)


Lesenswert?

Wir nutzen Eclipse unter anderem auch für die Projektverwaltung auf 
einem CVS Server. Daher wäre es schön wenn ich den Keil Compiler im 
Eclipse irgendwie integrieren kann. Denn Schlüsselwörter wie bdata 
werden nicht erkannt und die ? am Rand und das unterstrichene nervt. 
Außerdem wäre es nett wenn ich nicht extra zum compilieren die IDE 
öffnen müsste.

von Marcus H. (mharnisch) Benutzerseite


Lesenswert?

Matthias Laubnitz schrieb:
> Denn Schlüsselwörter wie bdata werden nicht erkannt und die ? am Rand und
> das unterstrichene nervt.

??? Wovon redest Du?

> Außerdem wäre es nett wenn ich nicht extra zum compilieren die IDE
> öffnen müsste.

Wie gesagt, dass kann man alles mit einem Makefile machen. Oder Du rufst 
aus Eclipse heraus µVision im Kommandozeilenmodus auf :-)

--
Marcus

von 123 (Gast)


Lesenswert?

Frage 1: welche CDT version?

Make file sollte prinzipiell immer gehen. wenn ggf auch nur mit der 
einschränkung das nur ein build all funktioniert und der incrementelle 
aufgrund der fehlenden dep files nicht möglich ist. Oder die Dep Files 
durch externe tools erst zu erzeugen sind.

Errorparser für jeden bilibigen compiler kannst du dir selber striken. 
Die CDT parst dabei die ausgabe der Make File / des Kompilers. Seit CDT 
7 kann mann die dafür notwendigen regeln selber definieren. Vorher war 
glaubich ein externes plugin notwendig.

von 123 (Gast)


Lesenswert?

so mal etwas mit helios gespielt.

bdata sind schlüsselwürte die für, ich vermute mal, 8051 oder c166 oder 
ähnlich in c mit eingebaut wurden, damit man den passenenden speicher 
angeben kann.

der C compiler ist damit nicht norm kompatibel, und das mekkert die CDT 
an. Wo her sollte die CDT auch sowas kennen.

eine möglichkeit währe, für die CDT eine entsprechende h file zu 
definieren, in der genau diese hässlichen Schlüsselwörter durch nichts 
ersetzt werden, oder etwas was dem standard entspricht. die dann 
Includieren bzw in den Projektsettings als default Includefile 
definieren. ggf dann so mit ifdef ndef umgeben, das sie beim Komiler 
nicht zum zug kommen

alternative, könnte man die sachen auch unter Project Properties / C/C++ 
General  Path and Symbals  #Symbols die Symbole definiereun

letsteres hab ich gerade ausprobiert und hat funktioniert. mein test for 
einer variablenteklaration, was vorher angemeckert worde wurde ist 
verschwunden.

Ursache scheint der Indexer zu sein. zumindest hab ich irgendwo den 
Verweis gesehen, das so ein Fragezeichen vom C/C++ Indexer Markers 
stammen soll. Steht zumindest unter Einstellungen  General  Editors / 
Text Editors / Anotations so drinn.

von Matthias L. (mcl024)


Lesenswert?

Ja genau es geht um Schlüsselwörter für einen 8051 Kern.

Wie genau hast du die Variablendeklaration definiert? Welchen Wert hast 
du angegeben.

Bei meiner Variable x die folgendermaßen deklariert ist:

unsigned char bdata x;

bekomme ich weiterhin den Hinweis von Eclipse "syntax error".
Wenn ich wie 123 (Gast) bdata unter #Symbols eintrage.

von 123 (Gast)


Lesenswert?

Ok

ich hab das wie folgt getestet. war wohl die falsche schreibweise.
1
bdata unsigned char x;


Bringt eine deklaration wie unten abhilfe ?
1
#define bdata 
2
unsigned char bdata x;


noch mal kurz getestet.
bei mir funktioniert das auch in der umgestellten schreibweise.

- Project Properties / c/C++ General / Path and Symbols

- dort das tab Symbols auswählen,

- dann den für den Dateityp passende sprache auswählen.
   *.c ist c
   *.C ist C++

- dort dann add
- und für den namen bdata eintragen, auf ok und fertig. Value muss 
lehrbleiben.

- Danach auf Applay / ok, die reindizierung bestätigen und warten bis 
die durchgelaufen ist.

dass sollte es dann gewesen sein.

gruss

von Marcus H. (mharnisch) Benutzerseite


Lesenswert?

123 schrieb:
> auch einer, der die IDEs der Namhaften Hersteller grausam findet.

Bei Eclipse gibt's natürlich auch einiges zu meckern. Dieses 
Workspace-zentrierte Arbeiten liegt mir nicht. Und vor allem das Fehlen 
der Möglichkeit projektrelative Pfade anzugeben. Letzteres könnte 
allerdings mit der neuesten Version behoben sein (nicht getestet).

--
Marcus

von Matthias L. (mcl024)


Lesenswert?

Ok vielen Dank für die schnelle Antwort.
Das mit bdata hat jetzt funktioniert. Allerdings ist das alles noch 
nicht so richtig schön. Da z.B. bdata ein Schlüsselwort soll es auch 
hervorgehoben werden. Des Weiteren habe ich das Problem das eine ISR 
beim 8051 folgendermaßen beginnt.

void NamederISR (void) interrupt 5
{
...
}

Hierbei ist entscheident das interrupt 5 auch ein Schlüsselwort ist, 
aber von Eclipse nicht als solches erkannt wird und somit wird meine 
ganze ISR mit Fehlermeldungen übersäht was sehr unschön ist.

Wenn es nicht möglich den Keil Compiler einzubinden, was ist mit SDCC. 
Habe ich mal gehört das man diesen Compiler auch für 8051 Prozessoren 
einsetzt.

von 123 (Gast)


Lesenswert?

kanst du dir nicht ein passendes Macro dafür basteln?
und für die CDT dan so schalten, das der kruscht mit Interrupt wegfällt

z.B. so?
[c]
#ifdef keil
  #define ISR8051(name,irq) name(void) interrupt irq
#else
  #define ISR8051(name,irq) name(void)
#endif

void ISR8051(NamederISR,5)
{
}
[\c]

oder so
[c]

#ifdef keil
  #define IRQ8051(irq) interrupt irq
#else
  #define IRQ8051(irq)
#endif

void NamederISR (void) IRQ8051(5)
{
}
[\c]

der Code müsste dafür aber umgeschrieben werden. Was anderes fällt mir 
metzt nicht ein.

und als schlüsselweürter markieren zu können und ohne triks als gültiges 
C zu interpretieren, sind anpassungen an der CDT selber notwendig. 
warscheilich im indexter. macht aber sicher keinen spass.


@ Marcus Harnisch

Mit projektrelative Pfaden hatte ich mit Eclipse eigentlich nie 
probleme.
Kommt immer darauf an wie du die eingibst. Von hand oder über die 
Dialoge.

Kommt immer darauf an wie die einzubindenden pfade zum Projekt path 
selber stehen.

Wenn der pfad auserhalb liegt, muss man den von hand eingeben. 
../../foo/abc

Über den Dateisystem dialog eingegeben wird ist der Absolut eingetragen.

Liegt der pfad hingegen inerhalb des Projektes. dann über workspace 
paht.

alternative kann man ja auch in dem path ein workspace anlegen. (sicher 
nicht immer sinnvoll)

bzw hab ich gerade gesehen. den haken is workspace path setzten. ggf 
bringt das abhilfe.

gruss
und wenn, kann man die immer noch in der XML datei von hand ändern. ok 
sicher nicht das schönste. aber geht.

von Marcus H. (mharnisch) Benutzerseite


Lesenswert?

123 schrieb:
> Mit projektrelative Pfaden hatte ich mit Eclipse eigentlich nie
> probleme.  Kommt immer darauf an wie du die eingibst. Von hand oder
> über die Dialoge.
>
> Kommt immer darauf an wie die einzubindenden pfade zum Projekt path
> selber stehen.
>
> Wenn der pfad auserhalb liegt, muss man den von hand eingeben.
> ../../foo/abc

Und auf welches Verzeichnis bezieht sich das?

> Liegt der pfad hingegen inerhalb des Projektes. dann über workspace
> paht.

Klar, workspace-relativ geht einfach. Will ich aber nicht, da ich
meine Projekte außerhalb des WS verwalten möchte. Ziel ist es, mein
Projekt an beliebiger Stelle ins Dateisystem zu hängen (revision
control) und dort zu übersetzen.

> alternative kann man ja auch in dem path ein workspace
> anlegen. (sicher nicht immer sinnvoll)

Nun man könnte für jedes Projekt einen eigenen workspace anlegen. Auch
nicht ideal.

Eine weitere Methode sind sogenannte linked resources (so eine Art
Symbolic Link, der nur innerhalb von Eclipse existiert). Deren
Zielpfad kann wiederum Eclipse-interne Variablen beinhalten. Man kann
sich also eine Variable TOPDIR im Projekt anlegen und die Linktargets
als ${TOPDIR}../../foo/abc definieren. Der Variablen-Dialog befindet
sich aber im x-ten Untermenü von irgendwas. Einfacher wäre es, wenn
eine solche Variable automatisch erzeugt werden würde, wie es ja am
für das Workspace Verzeichnis ja auch gemacht wird.

Das eigentlich schmerzhafte ist ja, dass die Mechanismen alle
vorhanden sind, aber diese elementare Eigenschaft nicht implementiert
wurde.

> und wenn, kann man die immer noch in der XML datei von hand ändern. ok
> sicher nicht das schönste.

Da kannst Du den Pfad aber auch nur relativ angeben (s.o.) ohne dass
sofort klar ist, zu welchem Verzeichnis. Ich meine, es ist das Objekt
Verzeichnis.

Genug gemeckert, ich wollte auch nur andeuten, dass man in jeder
Umgebung so seine Schwachstellen findet.

Gruß
Marcus

von 123 (Gast)


Lesenswert?

Ups

ich hab vorher nicht gemeint für jeden path ein neuen Workspace 
anzulegen, sondern ein Projekt.

auserdem ist ja die linked recource PROJECT_LOC ja eigentlich ja schon 
definiert. (das verzeichniss in dem die .project liegt) Ok immer noch 
unschön, da man hier den pfad dann immernoch von hand eingeben muss.

mir zumindest gefällt die CDT in verbindung mit dem GCC besser. die 
anderen hersteller im Embeded bereich haben so ein vereinnamendes 
Verhalten. Keinen der einmal in deren Tool welt eingetreten ist wieder 
weg lassen. Kompiler kann nicht weiter verwendet werden, Debug tools wie 
z.B. ULink kann man als elektronikschrott entsorgen, Objectfiles von 
anderen Compilern kann / will man nicht debuggen, libs die mit anderen 
compilern erstellt wurden erst recht nicht mit ein linken,  Bisher 
unterstützte debug schnittstellen werden abgekündigt und nicht weiter 
supported, der Verteter erzählt einem man solle doch deren eigenen 
Compiler für deren OS und SW componenten verwenden, erzählt aber im 
gleichen gespräch, das der kostenpflichtige angeprisene compiler nicht 
mehr weiter entwickelt wird. ( wozu auf ein bereits für tot erklärtes 
pferd setzen? )

Mit dem Debugen hab ich auch noch meine probleme. hier hakt es auch noch 
an einigen ecken. GDB Server bleibt einfach hängen. kein Kernel Awernes, 
Speicherzugriffe auf register erfolgen aus dem Memory view nicht mit 
32bit zugriffen (endet mit datensalt im register).

CDT hat ihre macken. aber man hat den vorteil, das sich hier recht 
schnell was bewegt. und man ggf selber eingreifen könnte, wenn man 
wollte.

CDT 7.0.0 14.06.2010
CDT 7.0.1 angekündigt für Oktober 2010
CDT 8.0.0 angekündigt für Juni 2010

Ok genug gemekert.

IDEs sind geschmakdssache. von einem einmal erlenrten tool, selbst wenn 
es noch so vile macken hat, bekommt man jemanden nicht so schnell weg.

von Matthias L. (mcl024)


Lesenswert?

Also vielen Dank für euere Antworten. Nur die Diskussion welche IDE 
besser ist und warum Eclipse und nicht irgendetwas anderes, war nicht 
das Problem was ich geschildert habe und gehört somit auch nicht hier 
her.

Das Problem ist immer noch das ich den Keil Compiler irgendwie ins 
Eclipse bekommen möchte.

Ich habe den SDCC Compiler ausprobiert, da dieser auch 8051er 
unterstützt. Es hat auch funktionert ihn ins Eclipse zu bekommen, da er 
von Eclipse unterstützt wird. Ich kann meinen Sourcecode auch 
kompilieren, wenn ich keine bdata variblendeklaration benutze.

Daher fällt der SDCC als alternative auch raus. Ich muss also den Keil 
compiler mindestens so intergrieren das die nervigen Warnungen aus 
Eclipse raus sind und am besten noch zum kompilieren nutzen können.

Vielleicht fällt jemanden noch etwas ein. Aber bitte keine Codebeispiele 
wie ich bdata umgehen kann.

von Matthias L. (mcl024)


Lesenswert?

Mein Problem besteht leider immer noch. Hat denn keiner das selbe das 
Problem?

von Harald (Gast)


Lesenswert?

Hallo,

Ich habe mir die selbe Aufgabe gestellt, welche ich auch noch nicht 
optimal lösen konnte.

Ich ziehe Eclipse der Keil IDE vor, weil:
a) Plugin-Unterstützung möglich ist. ECUT Doxygen Tool für 
Dokumentationserstellung. Testframework
b) Autocomplete von Eingaben (erspart pro Stunde garantiert 3 Minuten 
Arbeit)
c) Versionskontrolle besser unterstützt wird.
d) der Editor noch weitere Vorteile bietet.


Meine "Lösung" sieht zur Zeit so aus.

Eclipse Projekt und Keil Projekt im selben Verzeichnis mit  selber 
Dateibasis.
Dabei wird Eclipse als Editor verwendet und Keil zum Compilieren.
zum Programmieren dann noch Atmel Flip oder batchisp hinter.

Funktioniert ist aber etwas umständlich.

Ich würde gerne alles in einer Umgebung erledigen können.

Die angesprochenen Makefiles sind da sicher eine gute Möglichkeit.

Hier http://www.keil.com/forum/9966/ ist angesprochen wie man den Keil 
Compiler mit Visual Studio benutzt.

Hier ist aber der Schönheitsfehler das man die Obj Files per Hand 
eintragen muss und zudem Ahnung von Makefiles besitzen sollte.



Meine Frage:

Kennt jemand eine Möglichkeit den Keil Compiler in der Eclipse IDE zu 
benutzen oder ein entsprechendes Makefile aussehen müsste?

von Marks (Gast)


Lesenswert?

Ich habe hier die Version 4.23 von MDK-ARM. Dort gibt es ein Plug-in für 
Eclipse Indigo. Kompilieren, Flashen und Debuggen, wobei Letzteres ultra 
langsam ist.
In der lokalen Hilfe ist die Installation beschrieben.
Vielleicht hilft das?
Seltsamer Weise findet man dazu kaum/keine Info von Keil im Internet.

Und ja, ich stimme voll zu - ein Editor wie der von Keil ist eher in der 
Steinzeit anzusiedeln.

von Rainer (Gast)


Lesenswert?

Ich bin schon lange auf der suche nach einen µVision Plugin für Eclipse, 
kannst Du mir sagen wo ich dieses finde? Wird der ULINK II oder der 
ULINK pro unterstüzt?

Gruß
Rainer

von Marks (Gast)


Lesenswert?

Hallo Reiner,

du findest es hier auf der Seite von Keil:

https://www.keil.com/download/product/

Wie gesagt, ab Version 4.23 von MDK-ARM integriert.

In der lokalen Hilfe nach dem Begriff "plug-in for eclipse" suchen.

Ich arbeite mit ULINK2, das geht. Es wird "nur" die Keil-Umgebung 
ferngesteuert, dadurch sollten alle Adapter gehen, die bei Keil 
unterstützt werden.

Gruß
  Marks

von Lutz (Gast)


Lesenswert?

Aber beschränkt sich das nicht nur auf den Debugger? Und ist es nicht 
eher anders rum? Also Eclipse bekommt das plug-in; ich kann also keinen 
anderen Editor in Keil einbinden?

von Daniel H. (dustbox)


Lesenswert?

Hallo,

möchte das Thema nochmal aufrollen!
Eclipse ist ein segen gegen die Steinzeit IDE von Keil.
Hat jemand mitlerweile eine lösung gefunden um den Keil Compiler 
einzubinden?
Das Eclipse adon von Keil finde ich sinlos da das Compilieren nicht 
unterstützt wird.

Gruß,
Daniel

von Oliver J. (skriptkiddy)


Lesenswert?

Daniel H. schrieb:
> Hat jemand mitlerweile eine lösung gefunden um den Keil Compiler
> einzubinden?

Makefile...

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.