Forum: Mikrocontroller und Digitale Elektronik arm und eclipse


von Chris B. (chris_b)


Lesenswert?

Hallo Leute,
Ich bin einer von vielen avr entwicklern mit eclipse programmieren und 
auch mit der IDE zufrieden sind.
In letzter Zeit dachte Ich nach mir einen ARM zu holen, egal von welchen 
Hersteller.
Ich habe im Internet recherchiert wie man eclipse für einen arm 
aufsetzt, und bekam eine hülle und fülle an Anleitungen, wovon ich nicht 
schlauer wurde sondern noch mehr fragen hatte als vorher.
Meine Frage an die arm-Experten da draußen, gibt es die Möglichkeit 
unter eclipse zu entwickeln wo alle ARMs (von allen gängigen 
Herstellern) auswählbar sind?

Vielen dank im voraus.

von Alex E. (tecnologic) Benutzerseite


Lesenswert?

Moin

Schau dich mal bei IAR nach dem Eclipse Plugin um. Atollic ist auch eine 
Möglichkeit, oder CooCox.

MfG

Tec

von Phantomix (Gast)


Lesenswert?

Zum Einstieg kannst du auch Atollic lite nehmen, allerdings haben die 
seit Version 3.0 ein Code Size Limit von 32 KB, unterstützen dafür aber 
alle möglichen Plattformen

Funktioniert bei mir zusammen mit STM32 problemlos (als Programmiertool 
kommt der ST-Link v2 zum Einsatz, gibts für ~20EUR bei Digikey)

von Oliver (Gast)


Lesenswert?

Chris B. schrieb:
> gibt es die Möglichkeit
> unter eclipse zu entwickeln wo alle ARMs (von allen gängigen
> Herstellern) auswählbar sind?

Das Gnu ARM Eclipse plugin kommt dem AVR Eclipse plugin wohl am 
nächsten. Dazu brauchst du einen ARM-toolchain, das plugin unterstüzt 
fast alle gängigen. Ob die toolchains dann allerdings alle am Markt 
verfügbaren ARMs unterstützen, bezweifele ich. Da musst du im 
Zweifelsfall selber nach den passenden headern suchen.

Allerdings ist die ARM-Programmierung einen Schritt komplexer, als die 
für AVR. Du musst dich schon ernsthaft in das Thema Linkerscripte und 
Startup-Code einarbeiten.

Oliver

von Chris B. (chris_b)


Lesenswert?

Auf coocox bin ich schon gestossen, und so stelle ich mir die endlösung 
auch vor. Will aber mein bestehendes avr-eclipse erweitern so dass alles 
aus einer IDE kommt.

IAR und Co werde ich mir trotzdem anschauen.


@Oliver - die ARMs die ich meine sind die gängigen (Wie NXP,stm32, 
atmel, oder sogar von Samsung, bei watterott erhältlich...) die auf dem 
Markt Wie reichen, Conrad und bei den Profis Wie farnell oder digikey. 
Mehr nicht.

Ein weiteres Thema was unweigerlich dazu gehört, ist der 
programmieradapter.
Ich bin gestern bei reichen.de auf ein isp-programmer gestossen der 
angeblich stm32, avr, NXP, und lpc unterstützt, Damen Prog-S.
Man sagt, habe aber die Vorzüge von JTAG nie kennen gelernt,  JTAG ist 
besser!
Von olimex gibt es JTAG Adapter für ARM weiß aber nicht worauf man 
achten soll damit ich mir nicht einen besorge der auf einen arm 
ausgelegt ist.

Vielen dank im voraus.

von g. b. (gunb)


Lesenswert?

Chris B. schrieb:
> Auf coocox bin ich schon gestossen, und so stelle ich mir die endlösung
> auch vor. Will aber mein bestehendes avr-eclipse erweitern so dass alles
> aus einer IDE kommt

Also ich habe meinen ARM mit Eclipse nach YAGARTO konfiguiert, klappt.

IAR - bääh, habe ich für den AVR lange genutzt. Heute lieber WinAVR, GNU 
is everywhere.

Chris B. schrieb:
> Ein weiteres Thema was unweigerlich dazu gehört, ist der
> programmieradapter.

Stimmt. Nach Olimex-Rumbasteln bin ich vor Jahren dann auf den Segger 
JLink für den privaten Gebrauch übergegangen. Damals so um die 100,-€ 
für nichtkommerzielle Nutzung. Die ATMEL-Teile werden wohl auch von 
Segger in Lizenz an ATMEL geliefert, laufen dann aber wahrscheinlich nur 
mit deren Controllern, da ist der Segger JLINK offener. Mit deren 
PC-Anbindung hat's überall immer gut geklappt, auch aus VMware heraus.

Chris B. schrieb:
> Man sagt, habe aber die Vorzüge von JTAG nie kennen gelernt,  JTAG ist
> besser!

Klarer Fall, denn dann kannst du aus der IDE deinen Controller debuggen 
und Register-/Speicherwerte zurücklesen, während du entwickelst. Mit 
einem ISP kannst du nur die Firmware flashen. Rate dir auf jeden Fall 
zum JTAG.

Chris B. schrieb:
> Von olimex gibt es JTAG Adapter für ARM weiß aber nicht worauf man
> achten soll damit ich mir nicht einen besorge der auf einen arm
> ausgelegt ist.

Da bleibt die Frage, wieviel du bereit bist in die Konfiguration zu 
stecken. Mit der Ansteuerung über OpenOCD muss man eventuell schon ein 
Wenig basteln, bis der Kontakt hergestellt ist. Mit dem J-Link geht's 
i.d.R. einfacher.

Meine Meinung, Alternativen gerne zugelassen.

von Oliver (Gast)


Lesenswert?

Chris B. schrieb:
> Wie reichen, Conrad und bei den Profis Wie farnell oder digikey.
> Mehr nicht

Da es "den" ARM-Prozessor nicht gibt, sondern nur verschiedene 
ARM-Kerne, die dann von den Hertsellern mit Zusatzperipherie zu 
Mikrocontrollern gebacken werden, ist das auch bei den 
arm-gcc-toolchains so gelöst.

arm-gcc kann Code für (vermutlich) alle existierenden Kerne erzeugen. 
Den passenden Kern kannst und musst du, wie beim AVR-plugin auch, in den 
Prokejt-Settings auswählen. Der Compiler erzuegt damit dann den 
passenden Code für den entsprechenden Kern.

Genau wie bei den AVR's brauchst du dann aber auch noch die passenden 
header-Dateien, die die Register-Adressen der herstellerspezifischen 
Peripherie enthalten. Diese header sind nicht Bestandteil der 
toolchains, die musst du dir selber besorgen. Selbiges gilt für 
linker-scripts, und den dazu passenden startup-code. Qullen dafür sind 
natürlich die Hersteller-download-Seiten, oder auch unzähige im Internet 
verfügbaren Beispielprogramme.

Bei den kommeziellen Produkten (IAR, ...) ist dagegen alles dabei. Das 
sollt dich aber nicht davon abhalten, es mit den freien toolchains zu 
versuchen. Im Netz findet man eigentlich alles, was man braucht.

Oliver

von Chris B. (chris_b)


Lesenswert?

@gunb - Yartago ist auch ein Name auf den ich immer wieder gestossen 
bin, konnte es aber nicht zuordnen wegen der informationsflut :)
Vielleicht könntest du was über YAGARTO kurz erzählen. (Bitte mich nicht 
wegen der frage erschlagen) Ist es ein toolchain Wie winavr?
Dann gibts noch "Sourcery CodeBench" was für die Entwicklung mit 
freeRTOS genutzt wird, was der eigentliche Grund dieses threads 
ist."Hatte mit einem atmega644 und freerots mächtig spass gehabt und 
will es auf ARM ausweiten"

Wegen der bastelei mit dem olimex Adapter, hast du einen link, damit man 
sich ein Bild machen kann was der Aufwand ist?


Vielen Dank im voraus.

von Klaus K. (klkl)


Lesenswert?

Hallo

Yagarto ist eine freie toolchain, die Ich auch verwende.
Schau mal hier http://www.mikrocontroller.net/articles/ARM

Gruß Klaus

von g. b. (gunb)


Lesenswert?

Chris B. schrieb:
> Vielleicht könntest du was über YAGARTO kurz erzählen. (Bitte mich nicht
> wegen der frage erschlagen) Ist es ein toolchain Wie winavr?

Hallo,

1. ich erschlage niemanden ;-)

2. Du benötigtst ja eine Toolchain, bestehend aus GCC, GDB, 
Bilbliotheken. Ferner "make" zum Abarbeiten des makefiles. Du könntest 
dir das alles selbst zusammenstellen, was Erfahrung und den Willen dazu 
voraussetzt, oder du nimmst was Fertiges. YAGARTO stellt dir eine solche 
Toolchain zur einfachen Installation bereit.

3. Du brauchst eine IDE, also eine Oberfläche, mit der du deine 
Quelltexte schreibst und per Knopfdruck den Compiler anwerden kannst. 
Dazu nutzen viele Programmierer inzwischen Eclipse, aber auch die 
kommerziellen IDE-Hersteller bauen ihre Umgebung um Eclipse. YAGARTO 
gibt dir ebenfalls eine Anweisung an die Hand, wie du die unter 2. 
installierte Toolchain an Eclipse koppelst.

4. Wenn ein JTAG-Adapter zum Einsatz kommt, dann brauchst du ferner eine 
Anbindung des Adapters an deine IDE, damit du Online-Debugging betreiben 
kannst. Dazu wird zwischen IDE und Adapter(-Hardware) ein Server auf 
deinem Entwicklungsrechner geschaltet, den Ecplipse über GDB dann 
anspricht und so die Kommunikation zum Adapter und letztendlich 
Controller ermöglicht.

4a. Beim Olimex-Adapter kommt hier meist der OpenOCD von D. Rath zum 
Einsatz,

4b. beim Segger JLINK gibt es dazu einen von Segger leicht zu 
installierenden GDB-Server, der einfach gestartet wird und dann vom 
GNU-GDB angesprochen werden kann.

Zu 4a/b gibt es auf der YAGARTO-Seite Anleitungen, ob diese immer direkt 
zum Ziel führen, hängt wohl immer noch vom Einzelfall ab. Beim Olimex 
hatte ich damals mit OpenOCD etwas Schwierigkeiten, da hatte ich die 
sehr umfangreichen Unterlagen zu OpenOCD hinzuziehen müssen. Diese waren 
sehr gut beschrieben, hatte aber zu wenig Zeit und bin dann recht 
schnell auf den JLINK gewechselt. Dieser war lange nur für über 1000,-€ 
zur allg. Verwendung erhältlich, irgendwann kam dann die Version zur 
rein privaten Nutzung für ca. 100,-€ raus, wo dann nur der 
GDB-Server/Breakpoints freigeschaltet war, andere Funktionen zum 
Produktivbetrieb nicht. War aber egal, da man damit alles machen konnte, 
was man als Entwickler braucht.

Was du letztendlich benutzt, musst du selbst wissen, will hier den 
JLINK-Adapter nicht allgemeingültig als besser bezeichnen, ich kam damit 
aber schneller zum Ziel.
In kommerziellen IDEs ist dieser ebenfalls meist schon zur Auswahl 
integriert.

Gruß
Gunb

von Chris B. (chris_b)


Lesenswert?

@Oliver - vielen danke für die Aufklärung, ich vermute dass Du mit 
diesen
          Aspekt zu tun hattest. Was du meinst ist doch z.B. die 
Register
          Summary (so im Datenblatt von Atmel) vernünfig in 
Headerdateien zu
          stricken.

@gunb - verstehe, mit anderen Worden sind die Anpassungen so 
erschwerlich
        wie der Jacobsweg.
        Unter folgenden Link http://embdev.net/topic/129986#new sind 
setzt
        verschiedene GCC toolchains aufgelistet, wo ich wieder nicht
        verstehen kann wer welchen arm unterstützt oder nicht.
        Vielleicht kannst du diese 8 Kandidaten (inklusive OpenOCD) mal
        vorstellen.


Vielen Dank im voraus.

von g. b. (gunb)


Lesenswert?

Chris B. schrieb:
> @gunb - verstehe, mit anderen Worden sind die Anpassungen so
> erschwerlich
>         wie der Jacobsweg.

Wie schwer? Da ist gar nichts schwer, dir wird doch eigentlich eine 
komplette Toolchain geliefert. Ein wenig Handarbeit musst du schon 
aufbringen, wenn du mit AMR und freien Umgebungen starten willst, sonst 
muss du eben etwas Kommerzielles kaufen.

Also ich sehe da kein Problem.

Chris B. schrieb:
> Vielleicht kannst du diese 8 Kandidaten (inklusive OpenOCD) mal
>         vorstellen.

Du solltest einfach mal selbst anfangen eine freie Toolchain wie YAGARTO 
aufbauen. Welche Controller von GCC unterstützt werden, findest du in 
der Dokumentation, und wie schon einmal angemerkt, ich nutze kein 
OpenOCD für den ARM.
Du solltest unterscheiden zischen dem, was GCC unterstützt, und dem, was 
du mit OpenOCD ansteuern kannst, das sind zwei paar Schuh. Und die 
Arbeit muss du dir schon selbst machen, besonders wenn du 8 versch. 
Controller ansteuern willst, was ein Anfänger selten macht.

Welchen ARM willst du überhaupt programmieren, wohl kaum 8 verschiedene 
auf einmal? ARM7, ARM9, Cortex ...??
Darüber musst du dir erst einmal klar werden, dann suchst du, ob dein 
Typ unterstützt wird und dann fängst du an, die Toolchain aufzubauen. 
Alles andere ist meiner Meinung nach unrealistisch. Die Einfacheit des 
AVR ist bei ARM nicht mehr gegeben, das sollte dir klar sein.

Gruß
Gunb

von Chris B. (chris_b)


Lesenswert?

@gunb - ich habe vor einen cortex-M3 zu nehmen. Entweder NXP oder stm32, 
bin mir darin nicht sicher. Aber während meiner Recherchen hat sich 
immer die Erkenntnis aufgehängt dass ich bei einem erst mal anfangen 
soll, um generell die ARM Architektur kennen zu lernen, wo ich jetzt die 
Bestätigung bekommen habe.

Vielen Dank an alle für die Aufklärung.

von g. b. (gunb)


Lesenswert?

Chris B. schrieb:
> Aber während meiner Recherchen hat sich
> immer die Erkenntnis aufgehängt dass ich bei einem erst mal anfangen
> soll,

Nun ja, du wirst dich auf einen Controller konzentrieren müssen, sonst 
kommst du am Ende vollends durcheinander. Ich hatte dazu den ARM7 
gewählt, für den ARM9 baue ich per Buildroot ein Linux, also kein 
direktes anprogrammieren der Controller-Hardware auf Low-Level.

Auf jeden Fall einen ARM raussuchen und dann dabei erst einmal bleiben, 
eher Beispiele anderer ARM-Derivate dann auf diesen übertragen, als hin- 
und her zu springen.


Gruß
Gunb

von Chris B. (chris_b)


Lesenswert?

Guten Morgen,
Ich hoffe Ihr hättet ein bastelreiches Wochenende. :)
Da man es mit der Architektur und toolchain geklärt ist, hätte ich noch 
eine Frage wegen die auf dem Markt erhältlichen dev-boards.
Es gibt welche die arduinokompatibel sind und es gibt welche von olimex. 
Dann bietet eBay noch boards an die mit Touch lcd, und verschiedenen 
spielereien die sich ein Entwickler wünschen könnte, aber da es aus 
China kommt weiß ich nicht ob es was richtiges ist oder nicht.
Hat jemand schon mal sowas aus China bestellt?

von Oliver J. (skriptkiddy)


Lesenswert?

Chris B. schrieb:
> Hat jemand schon mal sowas aus China bestellt?

Ja und auch aus Thailand. Bestimmt 20 mal insgesamt. War immer 
zufrieden. Außer als ich einige usbasp bestellt habe. Einmal haben die 
3.6V Z-Dioden gefehlt und ein anderes mal war keine aktuelle Firmware 
drauf.

An Dev-Boards/Tools hab ich aus China:
- Cypress EZUSB FX2
- Mini2440 mit 3,5" LCD
- MSP430F149-Stamp (+Wiggler)
- Ulink-clone (mittlerweile arbeite ich mit JLink-EDU - den hab ich
               allerdings von hier)

Und aus Thailand:
- STM32 Board
- NXP LPC2368-Board
- 8051-Testboard
- PIC18-Board

Der Zoll hat mich bis jetzt einmal genervt und da war auch noch alles im 
grünen Bereich. Soll heißen, dass ich da nichts blechen musste.

Gruß Oliver

von Chris B. (chris_b)


Lesenswert?

@ Oliver - hast du einen link vom Verkäufer?

Danke.

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.