Forum: Mikrocontroller und Digitale Elektronik Einrichten einer Entwicklungsumgebung für ARM Cortex M3


von Klaus B. (bergi84)


Lesenswert?

Hallo,

ich möchte ein wenig in die ARM Welt hineinschnuppern und habe mir 
hierzu von TI das Entwicklungskit EK-LM3S811 geholt. Auf diesem befindet 
sich ein FTDI FT2232 als JTAG, SWD und Virtualcomport zum Computer. Als 
Mikrocontroller ist ein Stellaris Cortex M3 mit der Bezeichnung LM3S811 
verbaut.

Nun möchte ich um dieses Board ohne Einschränkungen programmieren zu 
können mir eine Opensource Programmierumgebung einrichten. Wenn das was 
ich so im Internet gelesen habe stimmt dann müsste das mit Openocd, 
Yagarto und Eclipse gehen. Das ganze soll unter Windows 7 x64 laufen.

Ich habe mir zunächst die aktuellen D2xx (nicht die beta) von FTDI 
heruntergeladen und die inf-Dateien modifiziert damit der Treiber auch 
das Board erkennt. Mit diesen Treibern habe ich anschließen 
Openocd-0.5.0 kompiliert. Als Konfigurationsfile für Openocd verwende 
ich das File ek-lm3s811.cfg im Ordner Board von Openocd. Die Ausgabe in 
CMD sieht dann wie folgt aus:
1
E:\Eigene Dateien\Eigene Dokumente\LM3S811\Eclipse\openocd-bin>openocd.exe -f board/ek-lm3s811.cfg
2
Open On-Chip Debugger 0.5.0 (2011-10-28-23:03)
3
Licensed under GNU GPL v2
4
For bug reports, read
5
        http://openocd.berlios.de/doc/doxygen/bugs.html
6
Info : only one transport option; autoselect 'jtag'
7
500 kHz
8
Info : device: 4 "2232C"
9
Info : deviceID: 67353817
10
Info : SerialNumber: TI000001A
11
Info : Description: Stellaris Evaluation Board A
12
Info : clock speed 500 kHz
13
Info : JTAG tap: lm3s811.cpu tap/device found: 0x2ba00477 (mfg: 0x23b, part: 0xb
14
a00, ver: 0x2)
15
Info : lm3s811.cpu: hardware has 6 breakpoints, 4 watchpoints

Ist das soweit alles richtig?

Yagarto und Eclipse habe ich nach den Anleitungen auf der Yagartoseite 
installiert. Nun ist es so dass es für mein Board keine Examples gibt 
mit dem ich testen könnte ob das ganze jetzt funktioniert wie es soll 
und  von dem ich die nötigen Header, Memorymap usw. kopieren könnte 
damit das was raus kommt dann bei mir auch funktioniert. Genau hier 
brauch hilfe und weis nicht weiter.

von Albert .. (albert-k)


Lesenswert?

Hi
Also die Ausgabe von openOCD sieht schonmal gut aus

Wegen beispielprojekten würde ich mal nach ähnlichen controllern suchen 
(Varianten mit mehr oder weniger Flash z.b.) zumindest das lm3s811 Board 
ist ja sehr beliebt. Habe aber nur bin files zum flashen gefundenen...

von Martin T. (mthomas) (Moderator) Benutzerseite


Lesenswert?


von J. W. (jowa)


Lesenswert?

Ich habe gerade coocox
http://www.coocox.org/CooCox_CoIDE.htm
ausprobiert. Unterstützt ftdi-devices als Programmer und auch den 
lm3s811. Heißt, du kannst dir nach Auswahl des Chips ein Projekt 
'zusammenklicken'. Das dann noch anpassen (bspw. beschaltete Ausgänge) 
flashen fertig. Willst du z.B. für den Anfang eine LED ensteuern, in der 
Projekterstellung 'GPIO' anklicken. Von Coocox werden dann die nötigen 
Header mit ausgewählt. Kann man dadurch auch recht gut nachvolllziehen.
Mir ist bewusst, das dies nicht wirklich eine Antwort auf deine Frage 
war, aber es könnte auf eine gewisse Art weiterhelfen.

von Klaus B. (bergi84)


Lesenswert?

Danke, aber den schönen link kenn ich. Das Problem ist das die Files von 
Ti ziemlich sicher nicht kompatibel sind. Ich bin einfach auf der Suche 
nach einem Beispiel an dem ich sehe was ich alles unter Eclpise benötige 
damit ich korrekt kompilieren kann.

von Markus M. (Firma: EleLa - www.elela.de) (mmvisual)


Lesenswert?

In diesem Artikel STM32 Eclipse Installation
Gibt es ein Eclipse-Demo "Blink-LED, komplettes Eclipse-Workspace von 
MmVisual"

(für den STM32)

von Klaus B. (bergi84)


Lesenswert?

So hab jetzt mal die das Exampleprojekt von Yagarto und das von STM32 
Eclipse Installation probiert zu kompilieren aber ich bekomme bei beiden 
den selben error und zwar:
1
make: *** No rule to make target `all'.  Stop.

Ich hab jetzt mal kurz gegoogelt aber mir ist jetzt nicht ganz klar 
wieso ich diesen Fehler bekomme. Hab ja 1:1 den Workspace importiert und 
trotzdem hab ich diesen Fehler.

von Klaus B. (bergi84)


Lesenswert?

So hab noch mal den ganzen Workspace von der Eclipse-Demo Blink-LED 
entpackt und neu geöffnet. Danach die Includepfade zu yagarto im 
makefile bei den Bildbibliotheken und den Includfiles angepasst. Der 
Fehler von eben ist nun weg jedoch hab ich jetzt einen anderen und der 
sagt mir garnichts
1
gmake all 
2
gmake: Interrupt/Exception caught (code = 0xc00000fd, addr = 0x41a0c5)

was bedeutet das?

von Klaus B. (bergi84)


Lesenswert?

Durch Zufall bin ich eben über die Lösung dieses Problemes gestoßen. 
Vielleicht kann es der eine oder andere gebrauchen.

Das Problem bestand darin das meine make.exe in einem Pfad lag der 
Klammern enthielt. Also was der erste Schritt es wo anders hin zu 
installieren. Nun ist es jedoch so Eclips den Befehl über die 
Umgebungsvariable path findet und da stehen noch viele andere Sachen 
drinnen und diese werden von vorn nach hinten durchsucht. Stolpert 
Eclipse dabei über klammern bricht es ab. Deshalb muss man den Pfad zu 
yagarto-tools an die erste Stelle schieben dann geht es.

von Klaus B. (bergi84)


Lesenswert?

Hallo Leute,

Ich hab endlich wieder mal Zeit gefunden wein wenig mehr mit meinem 
EK-LM3S811 herum zu spielen und wollt eben versuchen ihn per OpenOCD zu 
flashen und da tauchten ein paar Unklarheiten auf. Ich möchte eine 
Entwicklungsumgebung wie im Beispiel STM32 Eclipse Installation haben. 
Deshalb habe ich die einzelnen Debug Configurations ziemlich genau 
übernommen jedoch kann ich den Teil zum Flashen nicht übernehmen da ich 
ja einen anderen Prozessor habe.

Hier mal die Initialisierungscommands wie sie im Beispiel sind:
1
monitor reset halt
2
set mem inaccessible-by-default off
3
monitor soft_reset_halt
4
monitor stm32x unlock 0
5
monitor stm32x mass_erase 0
6
monitor reset halt
7
monitor flash write_image Test2.elf 0x08000000 elf
8
tbreak main

Meines erachten müssten die ersten zeilen so bei mir aussehen:
1
monitor reset halt
2
set mem inaccessible-by-default off
3
monitor soft_reset_halt
4
monitor reset halt

Bei der Zeile
1
monitor flash write_image Test2.elf 0x08000000 elf
bin ich mir jedoch unsicher. Brauch ich auch einen Offset? Für was ist 
der überhaupt? Ansich habe ich dem Linker ja eh gesagt wo er es in den 
Speicher spielen soll.

Übrigens Pausieren und Fortsetzen funktioniert schon :-) und das TI 
Beispiel Blinky konnte ich auch ohne Fehler kompilieren.

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.