Hallo,
ich habe das Entwicklungsboard STM32-Discovery mit dem STM32F100
Mikrocontroller. Dieses Board besitzt eine ST-Link Schnittstelle mit der
man über USB am PC debuggen kann. Ich möchte nun nicht mit einen
Debugger von IAR oer von Segger debuggen. Dazu gibt es einen kostenlose
Möglichkeit via OpenOCD zu debuggen. Ich versuche nun schon seit einer
Weile zunächst den FTDI Treiber für das Entwicklungsboard zu
installieren. Leider ohne Erfolg. Wie müsste ich genau vorgehen ? Genau
Debugging Installationanleitung wäre für mich auch eine Erleichterung.
(http://www.firefly-power.de/ARM/debugging.html)
>Leider ohne Erfolg
Mit Recht. Das Disc Board hat einen STM32 an der USB
hängen und keinen FTDI!
Bei ST gibt's USB-Treiber für W*dows, am besten das "ST-Link
Utility" installieren.
Falls Linux: Google nach "st-link texane"
Falls OpenOCD: Das kommt mit einer brauchbaren Doku.
Lesen!
Nachtrag: Für OpenOCD und W*ndows braucht man mglw. gar keinen
separaten Treiber, der (libusb?) könnte evtl. in OpenOCD-Paket enthalten
sein. Ich benutze kein W.
Und bevor Du die ganze Eclipse-Maschinerie in Gang setzt:
OpenOCD mit den richtigen Optionen in einer "Eingabeaufforderung"
ausprobieren und schauen, ob das mit dem Disc Board sprechen
kann.
Telnet auf Port 4444 geht warsch. auch auf W*.
Dann arm-xxx-eabi-gdb in Betrieb nehmen und schauen, ob
er sich per
(gdb) target remote :3333
mit dem laufenden OOCD verbinden kann.
Dann daran Eclipse anschliessen.
stlink
https://github.com/texane/stlink
kann auch den Baustein programmieren und debuggen, racuht aber deutlich
weniger Konfiguration von Seiten des Benutzers, da stlink nicht so
universell wie openoicd ist.
>weniger Konfiguration von Seiten des Benutzers
Das ist richtig, OOCD kommt aber mit einer
funktionierenden Discovery Cfg.
Wie stabil das ist, besonders im Vergleich zu dem
texane-stlink, kann ich nicht beurteilen. Hab's nur kurz
ausprobiert.
Der Bequemlichkeit halber nehme ich auch den texane-stlink.
im OpenOCD Unterverzeichnis "drivers" gibts ne Textdatei dazu. Einfach
mal durchlesen...
----
libusb-1.0 drivers are required for:
- ST-LINK
- J-Link
- FTx232 adapters when using config files from interface/ftdi/ subfolder
You can install libusb-1.0 (WinUSB) drivers using zadig software from
this link:
https://sourceforge.net/projects/libwdi/files/zadig/
Installation procedure is as easy as:
1. Plug in your interface
2. Start zadig.exe
a. you may be asked by UAC to allow this application to change system
settings - click Yes
3. If you device is visible in drop-down list go to step 5
4. Check Options > List All Devices
5. Select your device in drop-down list
6. From the right (active) selector choose WinUSB (...) driver
7. Click Install Driver or Replace Driver below
a. you may be asked by OS to accept driver installation - click Yes
8. Click Close in the message box that will appear informing you about
success
That's all!
You can also use zadig to install libusb-win32 drivers.
_____________http://www.freddiechopin.info/
document version: 120829
----
Guten Morgen,
vielen Dank für eure Hilfe bzw. Unterstützung. Das mit ST-Link und
OpenOCD ist irgendwie verwirrend. Jeder schreibt was anderes wie man
vorgehen sollte. Gibt es eine genauere Anleitung wie man was
installieren und konfigurieren sollte ?
Es gibt eine weitere Möglichkeit, die ich mit ST LINK 2 unter Windows XP
nutze, könnte auch mit einem STLINK"1" funktionieren (habe kein ST Link
der ersten Generation zum Testen hier):
- Installation des Herstellertreibers von ST Micro (nach ST-Link USB
driver auf st.com suchen)
- Installation OpenOCD von Freddie Chopins Webseiten (link s.o.)
- Installation des LibUSB Filter Treibers von sf.net (
http://sourceforge.net/projects/libusb-win32/files/libusb-win32-releases/
-> libusb-win32-devel-filter-*.exe)
- Gerät einstecken und im Gerätemanager nachschauen, ob der ST-Treiber
aktiv ist
- Filter-Treiber GUI starten und einen Filter an das ST LINK binden
(VID/PID sollte 0x0483 0x3744 sein)
- OpenOCD wie in der Dokumenation beschrieben mit
interface/stlink-v1.cfg nutzen
Vorteil, sofern der Ansatz auch mit dem älteren Adapter funktioniert:
Man kann neben OpenOCD auch Programme verwenden, die nur über den STM
Treiber Kontakt zum Adapter aufnehmen können, z.B. ST-Link Utility, und
ohne Treiberaustausch dennoch ein vorkomiliertes "libusb-OpenOCD"-Paket
nutzen.
Hallo? Nein, das geht nicht. STLINK/V2 und V1 unterscheiden sich
substantiell. STLINK/V1 hat keinen eigenen Treiber, sondern meldet sich
als Mass-Storage-Device an. Die eigentliche Kommunikation geht über
irgendeinen SCSI-Hack.
Ich hab doch oben schon geschrieben, dass in dem Ordner von OpenOCD
bereits die richtige Anleitung drin ist? Das ist die offizielle
Anleitung! Daran hälst du dich und an sonst nix. Damit klappts bei mir
auch.
Wenn du dich hier schon so hilflos anstellst, brauchst du gar nicht
weitermachen mit OpenOCD...
PS: Ich hab "das Ganze" auch vor ein paar Tagen gemacht. Man muss eben
sich mal reinknien und nachdenken und nach Dokumentation schauen (die
bei OpenOCD wirklich vorzüglich ist) und nicht bei jedem Kleinscheiss in
einem Forum nachfragen. Ich habs auch ganz alleine geschafft.
OpenOCD-Developer ML wurde vor nicht allzu langer Zeit der
Filter-Treiber auch im Zusammenhang mit V1 erwähnt. Habe kein V1 um die
Vorgehensweise zu be-/widerlegen. Wie auch immer, Unterstützung aus
erster Hand ist ja da, man ignoriere also einfach meinen Vorschlag.
So ich habe nun folgende Schritte durchgeführt:
1) Installation Treiber :
Treiber installation war erfolgreich. Im Gerätemanager unter Windows7
ist das Device "libusb-win32 devices" zu sehen.
http://sourceforge.net/projects/libusb-win32/files/libusb-win32-releases/
2) Download OpenOCD Version openocd-0.5.0 :
Wenn ich nun folgendes in der Kommandoeingabe eingebe:
openocd-0.5.0.exe target/stm32f1x.cfg
oder openocd-0.5.0.exe target/stlink-v1.cfg
dann erscheint diese Meldung:
>Open On-Chip Debugger 0.5.0 (2011-08-09-23:21)
Du solltest schon die Version 0.6.0 verwenden, denn in der 0.5.0 gibt es
noch keinen funktionierenden ST-Link Support.
Außerdem solltest du anstelle von
>oder openocd-0.5.0.exe target/stlink-v1.cfg
dann openocd-0.6.0.exe interface/stlink-v1.cfg
verwenden.
Sorry, da fehlte noch ein -f in der Kommandozeile. Du kannst Openocd
entweder über die Kommandozeile so aufrufen (Dann wird dein openocd.cfg
ignoriert)
openocd-0.6-0 -f interface/stlink-v1.cfg -f target/stm32f1x_stlink.cfg
Erfolgreiches Beispiel mit einem cortex M4:
Info : stm32f4x.cpu: hardware has 6 breakpoints, 4 watchpoints
Dann must du aber noch in der Doku schauen, wie du den gdbserver/telnet
server aktivierst. Eventuell so:
openocd-0.6-0 -f interface/stlink-v1.cfg -c "telnet_port 4444" -c
"gdb_port 4242" -f target/stm32f1x_stlink.cfg
Oder du änderst dein openocd.cfg etwa so
1
#daemon configuration
2
telnet_port 4444
3
gdb_port 4242
4
5
#interface configuration
6
source [find interface/stlink-v1.cfg]
7
source [find target/stm32f1x_stlink.cfg]
und startest openocd ohne Kommandozeilenparameter. Eventuell müssen aber
noch zusätzliche Befehle in die openocd.cfg zum Reseten oder zum Flashen
des µC.
Auf jedem Fall solltest du "interface jlink" entfernen. Das aktiviert
nämlich ein komplett anderes Debugging interface (Segger J-Link).
Und natürlich die Doku lesen ...
Ich habe das Tool "zadig.exe" gestartet und den St-Link Treiber
installiert. Nachdem Neustart des Rechners habe ich folgendes in der
Kommandobox ausgeführt:
>openocd-0.6.0-rc2.exe -f stlink-v2.cfg -f stm32f4x_stlink.cfg>openocd-0.6.0-rc2.exe -f stlink-v1.cfg -f stm32f4x_stlink.cfg
Meldung:
Nun scheint es zu funktionieren.
>>openocd-x64-0.6.0-rc2.exe -f interface/stlink-v1.cfg -f
target/stm32f1x_stlink.cfg
Wie kann nun das elf File hochgeladen werden ?
Jetzt bin ich dabei unter Eclipse den Debugger zu konfigurieren. Der
Zugriff in Eclipse auf den Debugger gelingt mir nicht richtig. Was muss
da alles beachtet werden ?
Diesen Schritt habe ich ebenfalls durchgeführt.
Nach openocd-x64-0.6.0-rc2.exe -f interface/stlink-v1.cfg -f
target/stm32f1x_stlink.cfg habe ich dann den arm-xxx-eabi-gdb in Betrieb
genommen. Danach target remote :3333. Die Verbindung funktioniert.
Nur in Eclipse funktioniert das ganze nicht. Welche Einstellungen müsste
ich da vornehmen ? Ich bin mir auch nicht sicher, ob das Startup File,
Linkerscript File und Makefile stimmen.
Vielleicht mal da schauen:
http://www.keytosmart.com/setting-eclipse-code-sourcery-lite-stm32-discovery-development/
Evtl das Zylin Eclipse Plugin installieren.
Ausserdem: Lernen, eine Suchmaschine zu bedienen. Besser und schneller
als
jeweils hier auf Antworten zu warten...
>Ich bin mir auch nicht sicher, ob das Startup File,>Linkerscript File und Makefile stimmen.
Makefile stimmt, wenn Du ein .elf bekommst.
Beim Linkerscript und beim Startup kannst Du nichts falsch machen, wenn
Du
Dich an die ST-Beispiele (ich glaube AN3248) für das Discoveryboard
hältst -
dort in den 'Atollic' Dirs schauen, Atollic verwendet ebenfalls die GNU
Tools.
Hallo valuati ,
vielen Dank für deine Antwort. Ich kann leider den C/C++ GCC Cross
Compiler Support nicht installieren. Folgende Meldung erscheint in
Eclipse:
"C/C++ GCC Cross Compiler Support" will be ignored because a newer
version is already installed.
Das Projekt mit dem ich arbeite habe ich so erstellt:
Eclipse->File->New->Makefile Project with Existing Code
In Make Target habe ich dann ein neues Make Target generiert. In Build
Command verwende ich von CodeSourcery die Exe Datei cd-make.exe
(D:\CodesourceryARM\arm-2011.09\bin\cs-make.exe). Ich denke das ist doch
soweit ok. Oder muss ich unbedingt den C/C++ GCC Cross Compiler
verwenden ?
Gibt es im Netz kein fertiges Beispiel Template/Project ?
Also ich gebe jetzt echt auf. Das ist der größte ****.
Ich bekomme eine Verbindung zum ST-Link (V1) Debugger.
>openocd-x64-0.6.0-rc2.exe -f interface/stlink-v1.cfg -f
target/stm32f1x_stlink.cfg
Sobald ich mit Eclipse debuggen möchte läuft irgendwas schief. Keine
Ahnung. Hier die Debug Konfigurationseinstellungen. Vielleicht kann mir
hier jemand helfen.
Nein das ist kein Sche...
Wie schon diverse andere geschrieben haben braucht es aber etws
Konzentration und die Fähigkeit das gelesen zu verstehen....
Also du solltst die aktuelle Version von OpenOCD verwenden und die ist
0.6.0 und nicht 0.6.0-rc2.
Des weiteren gibt es auf der HP von Freddie Bespispiele unter diesem
Link:
http://www.freddiechopin.info/en/download/category/6-examples
Vo dort kannst du dir das F4 beispiel runterladen (zuunterst auf der
Seite) und in dein Eclipse imortieren.
Danach kannst du die Einstellungen von OpenOCD und des Debugers
anschauen.
Dann musst du das halt noch auf dein F1 Board anpassen.
Bei mir lief das mit dem DiscoF4 in 5 Minuten.
Cheers
Vielen Dank. Ich hab nun OpenOCD 0.6.0 heruntergeladen. Jetzt hab ich
noch ein Problem mit der Installation für den ST-Link. Wie bzw. mit
welchem Tool wird der Treiber installiert ? Ich habe ein Wondows 7
Rechner (64Bit).
Keine Ahnung ich arbeite mit einem virtualisiertem XP...
Habe es mit den OpenOCD USB Treiber und dem "Zadig.exe" gemacht.
Den ST-Link habe ich nicht instaliert.
Cheers
>monitor interface swd>monitor speed 1000>monitor endian little>monitor flash device = STM32F100RB
Mit dem "monitor" Präfix versehene Kommandos werden vom gdb
an den darunterliegenden GDBServer geschickt, in Deinem
Fall also wohl OpenOCD.
Den Fehlermeldungen nach sind das aber keine OpenOCD Kommandos.
Sieht mir eher nach JLinkGDBServer aus.
Starte den gdb mal separat (wie oben vorgeschlagen)
und führe diese Kommandos direkt aus.
also
(gdb) target remote :3333
(gdb) interface swd
usw. Da wird's woghl auch krachen...
Wo hast Du das Zeug eigentlich geklaut?
Normalerweise steckt, was Du als "monitor " zu schicken versuchst,
bereits in den OpenOCD Config-Files. Das brauchst Du (wahrsch) gar
nicht.
Wenn ja, kannst Du das alles aus Deinem eclipse Projekt löschen.
Es bleibt dann nur:
target remote localhost:3333
load ./output/main.elf
break main
>(gdb) interface swd
falsch, muss natürlich
(gdb) monitor interface swd
...
heissen.
Die Lektüre der OpenOCD- und GDB Manuals ist dringend zu
empfehlen...
Du solltest wenigstens ansatzweise verstehen, was Du da tust.
>Ja du hast recht es kracht.
Aber aus anderen Gründen...
Gib' mal nach
(gdb) target remote :3333
(localhost kannst Du weglassen) noch ein
(gdb) monitor reset init
Dann geht's bei mir unter Linux, nachdem ich dieselben Fehlermelduungen
wie Du hatte.
Ich gabe folgende Kommandos ein:
arm-none-eabi-gdb.exe
target remote:3333
monitor reset init
load main.elf
continue
(Das elf FIle liegt im oder wo sich auch die exe Datei
arm-none-eabi-gdb.exe befindet.)
Im Anhang befindet sich eine elf Datei die ich erzeugt habe.
Es müsste hier die LED4 blinken.