Einrichten einer Entwicklungsumgebung für ARM Cortex M3

OP #2400241
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.
#2400298
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.
OP #2400443
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.
OP #2400521
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?
OP #2400571
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.
OP #2502349
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.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren