Forum: Mikrocontroller und Digitale Elektronik OpenOCD für Eclipse mit ARM Cortex-M3


von Jan R. (superjany)


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

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


Lesenswert?


von LM3SB96 (Gast)


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

von Jan R. (superjany)


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? ^^

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


Lesenswert?

Hast Du geguckt?

von Jan R. (superjany)


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?

von Georg (Gast)


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

von Jan R. (superjany)


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

von Georg (Gast)


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.

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


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.

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


Lesenswert?

PS: Ich dachte es geht nur noch um die Debug-Konfigparameter von OpenOCD 
und GDB, das ist sehr gut aus dem Projekt von Martin-Thomas ersichtlich.

(Bei der OpenOCD Konfiguration musst du noch Deinen JTAG Adapter 
eintragen und ev. die Pfade anpassen...)

von Jan R. (superjany)


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 :-(

von Jan R. (superjany)


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...

von Georg (Gast)


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

von Georg (Gast)


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.

von Jan R. (superjany)


Lesenswert?

Das Board kannst du dir unter 
http://www.luminarymicro.com/products/lm3s6965_ethernet_evaluation_kit.html 
anschauen. Habe über Google leider auch nichts direktes gefunden, ob 
OpenOCD-USB mein Board unterstützt. Zum Thema OpenOCD-USB scheint es 
auch nicht viel sinnvolles zu geben ^^

von Andreas W. (andreasw) Benutzerseite


Lesenswert?

OpenOCD unterstützt direkt das LMI EK-LM3S6965 von Haus aus. Das 
Interface heißt "luminary" und für den Controller (target) gibt es auch 
eine Config.

Gruß
Andreas

PS: Aktuelle OpenOCD Windows Builds gibt es hier: 
http://www.freddiechopin.info

von Martin T. (mthomas) (Moderator) Benutzerseite


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...

von Georg (Gast)


Angehängte Dateien:

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...

von Jan R. (superjany)


Angehängte Dateien:

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

von Jan R. (superjany)


Lesenswert?

...also statt OpenOCD, lass erstmal den Debug klären. Habe das Bild vom 
OpenOCD nur der Vollständigkeit wegen eingefügt ;-)

von Jan R. (superjany)


Angehängte Dateien:

Lesenswert?

Nochmal ich: Falls es von Interesse ist - der Fehler, der beim Aufruf 
von OpenOCD aufrtitt, ist im Bild dargestellt.

von Georg (Gast)


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?

von Jan R. (superjany)


Angehängte Dateien:

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...

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


Angehängte Dateien:

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.

von Georg (Gast)


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>

von LM3SB96 (Gast)


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

von Jan R. (superjany)


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...

von Jan R. (superjany)


Lesenswert?

@LM3SB96:

Ich habe das gerade erst gesehen. Werde mal schauen, ob ich OpenOCD 
damit zum Laufen bringen kann. Danke.

von Jan R. (superjany)


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?

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.