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.
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?
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
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
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
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)
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.
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
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.
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.
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.
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
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
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.
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.
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
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.
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.
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?
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.
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
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
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?
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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.