OpenOCD für Eclipse mit ARM Cortex-M3

OP #1655929
Lesenswert?

Hallo µC-Freunde,
ich habe ein LM3S6965-Eval-Board neben mir stehen. Zunächst habe ich 
Eclipse mit CodeSourcery zum Spielen gebracht. Es purzeln auch einige 
Dateien aus Eclipse heraus, wenn ich "Build All" wähle.
Mein Problem: Ich weiß leider nicht, wie ich mein FreeRTOS-Demoprojekt 
nun auf dem ARM-Controller zum Laufen bringe. Ein Debugging-Profil habe 
ich bereits angelegt. Wenn ich den Debug-Modus starten will, dann 
erscheint jedoch der Fehler: "Program file not found."
Unter "Run" erscheinen auch nicht die Einträge von OpenOCD, sodass ich 
langsam an mir zweifle... Leider weiß ich auch nicht direkt, wie ich 
OpenOCD ins Eclipse drücken soll...

Bitte helft mir ^^

Jan
Gast #1656044
Lesenswert?

Vieleicht solltest du uns noch verraten mit welchen Tools / Version du 
das machen willst.

Bei mir geht das sehr gut mit OpenOCD 4.0, LibUSB, Eclipse Galileo etc.

Auf der freeRTOS seite findest du acuh Beispiele und Anleitungen mit 
einem kompletten Eclipse Projekt.

Aber das hast du ja sicher schon alles ausprobiert, desshalb ist auch 
deine Fehlerbeschreibung so detailiert.

Cheers
OP #1656095
Lesenswert?

"Vieleicht solltest du uns noch verraten mit welchen Tools / Version du
das machen willst."

Also auf jeden Fall Eclipse Galileo und OpenOCD 0.4.0

"Auf der freeRTOS seite findest du acuh Beispiele und Anleitungen mit
einem kompletten Eclipse Projekt."

Richtig. Ich nutze auch ein ähnliches Projekt. Wie gesagt, Make 
funktioniert. Die Anleitungen gehen leider nie darauf ein, wie man 
OpenOCD richtig einbindet. Das scheint einfach vom Himmel zu fallen und 
da zu sein...

"Aber das hast du ja sicher schon alles ausprobiert, desshalb ist auch
deine Fehlerbeschreibung so detailiert."

Höre ich da jetzt einen Hauch Sarkasmus heraus? ^^
OP #1656372
Lesenswert?

@Markus:
Ja ich habe geguckt. Danke für den Tipp - aber es will einfach nicht :-( 
Wahrscheinlich ist öffnen und direkt starten auch nicht so 100% richtig. 
Was ich sehr gut finde ist, dass immerhin schonmal OpenOCD in den Menüs 
auftaucht. Leider springt jetzt der Make-Prozess ab:

"**** Build of configuration Default for project project ****

cs-make all
COMSPEC detected  C:\WINDOWS\system32\cmd.exe
SHELL is C:/WINDOWS/system32/cmd.exe
process_begin: CreateProcess(NULL, env, ...) failed.
--------  begin, mode: FLASH_RUN  --------
cs-make: *** Zugriff verweigert

.  Stop.
cs-make: *** Waiting for unfinished jobs....

(Command canceled)"

Kommt dir der Fehler bekannt vor?
Gast #1656390
Lesenswert?

Hi,

ich habe eclipse + codesourcery lite g++ + openOCD in Verbindung mit 
einem STM32 am laufen.
Muß allerdings sagen, dass ich auch ganz schön gekämpft habe bis alles 
richtig funktionierte.
So wie ich das verstanden habe möchtest du OpenOCD aus dem makefile 
starten?
Bei mir wird aus eclipse der OCD als "externes tool" gestartet. Zuerst 
wird  geflasht und anschließend der OCD-Server aktiviert. Zum debuggen 
verwende ich anschließend das Zylin CDT plugin.

Kann dir gerne weitere Infomationen geben wenn Interesse besteht.

Gruß Georg
OP #1656403
Lesenswert?

Hey Georg,

Du hast den Nagel auf den Kopf getroffen. Ich will es genauso wie du 
betreiben. Leider weiß ich nicht, wie ich OpenOCD als externes Tool 
einbinde. Zwar benutze ich keinen STM32 sondern ein LM (wo 
JTAG-Interface schon auf dem Board sitzt), aber es sollte ja trotzdem 
irgendwie funktionieren. Hatte schon auf 
http://developers.stf12.net/eclipse-demo geschaut, aber wie gesagt - 
OpenOCD fällt vom Himmel.

Wäre dir für weitere Hilfestellung wirklich dankbar :-)


Jan
Gast #1656408
Lesenswert?

Ok dann werd ich mal versuchen dir zu helfen.

Was für eine Art Debugger verwendest du? Ich nutze den OpenOCD-USB von 
embedded-projects. Der ist auf Basis des FT2232D. Verwendest du etwas 
ähnliches/gleiches?

Für diesen debugger wäre auch eine passende Version des OCD beim 
FreeRTOS (verwende ich übrigens auch) dabei.
(Firma: EleLa - www.elela.de) #1656417
Lesenswert?

Ich habe mal was zusammen geschrieben:
1
Installation für STM32
2
- Eclipse "Galileo" installation:
3
    http://www.eclipse.org/ >> Downloads >> "Eclipse IDE for C/C++ Developers (79 MB)"
4
    http://www.eclipse.org/downloads/download.php?file=/technology/epp/downloads/release/galileo/SR1/eclipse-cpp-galileo-SR1-win32.zip
5
    Entpacken der Datei eclipse-cpp-galileo-SR1-win32.zip nach "C:\WinARM\" (Ordner neu erstellen)
6

7
- Yagarto Tools:
8
    http://www.yagarto.de/ >> "Download (for Windows)" >> "YAGARTO Tools"
9
    http://www.yagarto.de/download/yagarto/yagarto-tools-20091223-setup.exe
10
    Installieren, Auswahl Verzeichnis "C:\WinARM\yagarto-tools"
11

12
- CodeSourcery:
13
    http://www.codesourcery.com/ >> Products>Sourcery G++>Editions>Lite >> Try Now
14
    http://www.codesourcery.com/downloads/public/public/gnu_toolchain/arm-none-eabi/arm-2009q3-68-arm-none-eabi.exe
15
    Installieren, Auswahl Verzeichnis "C:\WinARM\CodeSourcery"
16

17
- ST UM0427 (FW-Lib con st.com):
18
    http://www.st.com >> Auswahl CPU STM32F103xxx >> "Firmware" "STM32F10x_FW_Archive"
19
    http://www.st.com/mcu/devicedocs-STM32F103RC-110.html
20
    In dem ZIP ist ein ZIP mit der Firmware "\Archive\um0427.zip"
21
    Das ZIP "um0427.zip" Entpacken nach "C:\WinARM\examples\stm32_FW2.0.3\
22

23

24
Eclipse:
25
Help >> Install New Software... >> http://download.eclipse.org/tools/cdt/releases/galileo
26
    "Eclipse C/C++ Development Tools" + "Eclipse C/C++ GDB Hardware Debugging" installieren

Alles installiert nach C:\WinARM. Damit ist alles in einem Ordner und 
kann sogar auf einen anderen PC kopiert werden. (Nur noch die 
Path-Entrys anpassen :) )

Also ich nutze das CDT Hardware Deugging. Das Demo von Martin Thomas 
bezieht sich ebenfalls darauf.

In der "External Tools Konfiguration..." wird OpenOCD eingerichtet.
In der "Debug Configurations..." wird der GDB Debugger eingerichtet.

- makefile tut nur kompillieren.
- Dann in Eclipse in "Debug-Ansicht" wechseln.
- Dann das eingerichtete "External Tool" OpenOCD starten
- Im "Debug" Fenster erscheint das OpenOCD, das dann anklicken, so dass 
es blau gefärbt ist
- Dann das Debug Tool "OpenOCD reset load run" ausführen
- Warten
- Dann das Debug Tool "OpenOCD reset Debug"
- jetzt debuggen.
OP #1656607
Lesenswert?

@Georg:
Ich dachte als Debugger nimmt man den GDB. Habe auch eine vermeindliche 
OpenOCD-Version in der eine FTD2XX.dll rumliegt. Leider bekomme ich 
jetzt die Sache mit dem Debugger und OpenOCD überhaupt nicht mehr unter 
einen Hut :-(
Mir fällt es sehr schwer, mich mit der Philosophie der 
Entwicklungsumgebung anzufreunden. Dass man jetzt auf einmal wieder ein 
spezielles OCD für FreeRTOS benötigt irritiert mich. Gibt es vielleicht 
ein Tutorial, das die sehr geholfen hat und vielleicht etwas für mich 
wäre? OpenOCD-USB scheint leider mein LM3S6965 nicht zu unterstützen :-(
OP #1656612
Lesenswert?

@Markus:
Also, dass OpenOCD in dem Projekt eingetragen ist, das habe ich schon 
gesehen. Leider komme ich gar nicht erst bis zur Nutzung, weil sich 
vorher der Make-Prozess aufhängt.
Wo bekommt man raus, was man für den eigenen JTAG-Adapter eintragen 
muss? Bei mir gibt es auch keinen expliziten JTAG-Adapter - der ist auf 
dem Board mit drauf. Ich habe lediglich die Treiber dafür installiert...
Gast #1656674
Lesenswert?

Hi!

Ich wollte wissen welche Hardware du zum debuggen nutzen willst -> Was 
ist am JTAG des Prozessors angeschlossen. Du sagst ein JTAG-Interface 
ist schon auf deinem Board schon integriert. Aber was für eines? Hast du 
vielleicht einen Link zu deinem Board?

Du hast schon Recht damit, dass man den GDB verwendet. Aber der GDB 
verbindet sich mit dem OCD und dieser wiederum mit der Debugg-Hardware. 
Du benötigst kein besonderes OCD für FreeRTOS sondern eines das zu 
deiner Debugg-Hardware passt.

Gruß
Georg
Gast #1656698
Lesenswert?

Upps man sollte vielleicht alles lesen:

Wirklich hilfreiche Tutorien kann ich dir leider nicht nennen. Habe mich 
da Stück für Stück allein durchgekämpft....

So wie ich das sehe sollte der OpenOCD-USB auch deinen Prozessor 
unterstützen. Ist ja ebenfalls ein Cortex M3.
Moderator Persönliche Seite #1656845
Lesenswert?

Jan R. schrieb:
> @Markus:
> Ja ich habe geguckt. Danke für den Tipp - aber es will einfach nicht :-(
> Wahrscheinlich ist öffnen und direkt starten auch nicht so 100% richtig.
> Was ich sehr gut finde ist, dass immerhin schonmal OpenOCD in den Menüs
> auftaucht. Leider springt jetzt der Make-Prozess ab:
>
> "**** Build of configuration Default for project project ****
>
> cs-make all
> COMSPEC detected  C:\WINDOWS\system32\cmd.exe
> SHELL is C:/WINDOWS/system32/cmd.exe
> process_begin: CreateProcess(NULL, env, ...) failed.

Diese "failed" ist erstmal "normal". Ist ein kleiner Fehler in meinem 
Makefile. Inzwischen behoben und korriegierte Fassung wird in der 
kommenden Version hochgeladen.

> --------  begin, mode: FLASH_RUN  --------
> cs-make: *** Zugriff verweigert
>
> .  Stop.
> cs-make: *** Waiting for unfinished jobs....
>
> (Command canceled)"
>
> Kommt dir der Fehler bekannt vor?

Auch wenn ein LMI/TI Cortex-M3 im Spiel ist, muss (cs-)-make all dennoch 
durchlaufen. "Zugriff verweigert" ist nicht gut.

- Sind Cygwin und/oder MinGW tools im System-Suchpfad (%PATH%)

- Sind irgendwelche Leer- und/oder Sonderzeichen im Verzeichnispfad 
(c:\Dokumente und Einstellungen\willi ist z.B. nicht so gut, 
C:\meinuczeugs z.B. besser)

- Ist das Verzeichniss mit den Quellcodes für den Anwender beschreibbar? 
Es werden einige Untervereichnisse angelegt, in die die Ausgaben 
geschrieben werden (Objekt-Dateien, Listings, elf-, map-, hex-Dateien 
usw.) Ohne Schreibzugriff wird das nichts.

- Falls noch nicht ausprobiert: cs-make all von der Kommandozeile 
("Eingabeaufforderung") starten.

- Evtl. auch ein Problem mit den virtuellen Pfaden von Vista/Win7 (ich 
habe beides nicht - da muss jemand anderes einspringen)

Wenn der Maschienencode im Prinzip gebaut wird, d.h. schlussendlich eine 
.bin- und .hex-Datei erzeugt wird, kann man halbwegs sicher sein, dass 
die Toolchain funktioniert. Eclipse/OpenOCD und LM3S-spezifisches etc. 
dann später...
Gast #1656895
Lesenswert?

Gut da sind wir ja schon mal ein Stück weiter. Also auf deinem Board ist 
der FT2232D + Logik schon drauf. Also die Debug-Hardware ist 
mitgeliefert.

Die Config Files sind im FreeRTOS mitgeliefert. Soweit ich das sehe...

Also geh doch mal im eclipse in Debug-Perspektive und öffne die 
"External Tools Configurations" - Ansicht. Dort legst du eine neue 
configuration an.

Hier gibst du unter Location den Ort an an dem bei Dir die 
openocd_ftdi.exe (ist bei FreeRTOS dabei) liegt. Als Argumente sollte 
--file fury_ft2232_flash.cfg passen. Und als Working Directory gibst du 
den Pfad zu eben diesem Config-file an. Sollte so etwas in der Art sein: 
FreeRTOS/Demo/CORTEX_LM3Sxxxx_Eclipse

In der program.script (findest du auch in diesem ordner) muß zudem der 
Pfad zu deiner .bin Datei stimmen.

Wenn du dann Run drückst sollte sich der kleine Mann flashen lassen

Viel Spaß beim probieren...
Angehängte Dateien:
OP #1656982
Lesenswert?

Hey Leute,
erstmal vielen Dank für die vielen Tipps. Ich bin jetzt wieder zu einem 
Projekt von der FreeRTOS-Seite zurückgekehrt. Bisher hatte ich da immer 
Probleme mit dem Make-Vorgang, jetzt scheint es aber zu funktionieren.

@Georg:
In die Debug-Perspektive also... mhmmm - schau mal in meinen Anhang. Wo 
liegt der Fehler? debug_ausfuehrung.jpeg zeigt, was pasiert, wenn ich in 
den Debug-Modus wechseln will.

Danke schonmal,
Jan
Angehängte Dateien:
Gast #1657061
Lesenswert?

Hmm also ohne OpenOCD wird es nichts mit dem debuggen. Und vor dem 
debuggen ist ja eh erst mal flashen angesagt. Also sollten wir erst mal 
das angehen.

Was passiert wenn du in der Ansicht aus debug_3.jpg run drückst?
OP #1657069
Lesenswert?

Da passiert genau das selbe. Habe auch nochmal einen Screenshot der 
Debug-Perspektive angehängt.
Vielleicht noch folgender Hinweis: Ich habe probiert, das .bin-file 
direkt mit dem mitgelieferten Flash Loader hochzuladen. Das funktioniert 
leider auch nicht :-( Er schreibt zwar, aber der Bildschirm bleibt 
schwarz...
Angehängte Dateien:
(Firma: EleLa - www.elela.de) #1657123
Lesenswert?

Also wenn der OpenOCD so verschwindet, dann hat er das JTAG Interface 
nicht gefunden.

Bei mir sieht die Einstellung so aus (Bild).

Ich nutze den Olimex ARM-USB-OCD. Wenn ich den nicht eingesteckt habe, 
dann verschwindet bei mir auch der OpenOCD.

Die Hardware ist eingesteckt?
Der Gerätetreiber richtig installiert?
 >> Siehe Systemsteuerung/Gerätemanager ob kein Gerät mit gelbem 
Ausrufezeichen drin steht!!

Dann kann es nur noch die falsche Parametrierung des OpenOCD sein. Es 
muss ein -f Parameter mit der richtigen Konfig-Datei angegeben werden.
Angehängte Dateien:
Gast #1657169
Lesenswert?

hmm der pfad zur openocd_ftdi.exe stimmt auch wirklich?

Ruf doch die openocd_ftdi.exe mit einem -h mal aus einer Konsole auf. 
Sollte so etwas kommen:

O:\OpenOCD>openocd_ftdi.exe -h
Info:    openocd.c:92 main(): Open On-Chip Debugger (2007-08-17 11:00 
CEST)
Open On-Chip Debugger
(c) 2005 by Dominic Rath

--help       | -h       display this help
--file       | -f       use configuration file <name>
--debug      | -d       set debug level <0-3>
--log_output | -l       redirect log output to file <name>

O:\OpenOCD>
Gast #1657214
Lesenswert?

Ich weiss nicht von welchem Philipp das Dokument ist:

www.mikrocontroller.net/attachment/72616/OpenOCD_LM3S2965.pdf

Aber hier ist für OpenOCD 0.4.0 alles beschrieben.
Das Dokument ist zwar für den LM3S2965 aber auf Seite 6 ist eine 
Bemerkung dass die Config vom LM3S6965 kommt.

Wichtig ist auch noch der Komentar auf Seite 3:
Damit ist gemeint das die FTDI Treiber zu entfernen sind (falls schon 
von der CD des Entwicklungsboard) installiert.

Dies gilt vor allem für die Treiber auf PortA des FDTI2232 and dem der 
JTAG hängt. Bei FTDI gibts ein Tool zum entfernen der Treiber:
FTClean
http://www.ftdichip.com/Resources/Utilities.htm

Cheers
OP #1657220
Lesenswert?

Hmmm... also ich wäre dafür wenn wir nochmal zurück rudern. Mir würde es 
als erstes ausreichen, wenn das .bin-file ausführbar wird. Statt des 
OpenOCD würde ich dann erstmal das mitgelieferte Tool nutzen. Leider 
passiert ja aber einfach nichts, wenn ich das ausgespuckte File 
rüberlade. Und das obwohl mir im Fenster "Probleme" in Eclipse nichts 
angezeigt wird...
OP #1659236
Lesenswert?

Hallo nochmal,
ich wollte ja nicht sang- unf klanglos verschwinden ^^ Vielen Dank 
nochmal für die vielen Tipps. Es hat sich herausgestellt, dass ich im 
Prinzip alles richtig konfiguriert hatte. Lediglich das Root-Dir lag 
knapp daneben. Man könnte es auch als Verkettung ungünstiger Umstände 
bezeichnen, dass das erzeugte File deshalb nichts am Board bewirkte, da 
sich die Version auf ein anderes Display bezog... Also lief es 
eigentlich, ich habe es nur nicht gesehen :-)

Ich finde es sehr schön, dass hier so viele kompetente Leute antworten. 
Wenn ich nochmal Fragen posten sollte, dann werden sie auch sicher etwas 
konkreter als in diesem Fall ;-)

PS: In ein FreeRTOS-Projekt kann ich jetzt auch mit Hilfe der 
mitgelieferten Libs einfach auf die Hardware zugreifen? Oder muss ich 
wegen des Schedulings auf irgendetwas besonderes achten?

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