Forum: Mikrocontroller und Digitale Elektronik OpenOCD-USB ARM Debugger aus dem Shop in Betrieb nehmen


von Kjartan F. (kjartan)


Lesenswert?

Hallo,

ich verzweifle momentan ein wenig an dem OpenOCD-USB Debugger aus dem 
Shop.
Ich habe schon verschiedenes probiert (Linux, WinXP, Win7) und bekomme 
das Ding einfach nicht zum laufen.

Mein aktueller Standpunkt:
* Win7 Ultimate 64Bit
* OpenOCD-USB: http://www.embedded-projects.net/index.php?page_id=256
* YAGARTO Tools installiert
* YAGARTO GNU ARM Toolchain installiert
* OpenOCD Server 0.4.0 installiert: 
http://www.freddiechopin.info/index.php/en/download/category/4-openocd

Die Treiber habe ich Windows7 selbst installieren lassen (Windows Driver 
Database), daraus ergeben sich folgende neue Devices:
* USB Serial Converter A
* USB Serial Converter B
* USB Serial Port (COM7)
* USB Serial Port (COM8)

Mit dem OpenOCD Server wurden auch bereits ein .cfg Datei Namens: 
"openocd-usb.cfg" mitgeliefert:
1
#
2
# Hubert Hoegl's USB to JTAG
3
#
4
# http://www.hs-augsburg.de/~hhoegl/proj/usbjtag/usbjtag.html
5
#
6
7
interface ft2232
8
ft2232_vid_pid 0x0403 0x6010
9
ft2232_device_desc "Dual RS232"
10
ft2232_layout "oocdlink"
11
ft2232_latency 2
vid und pid Stimmen auch mit dem Windows Hardware-Manager überein

cmd.exe:
1
C:\Users\Kjartan>openocd --file interface\openocd-usb.cfg
2
Open On-Chip Debugger 0.4.0 (2010-02-22-19:05)
3
Licensed under GNU GPL v2
4
For bug reports, read
5
        http://openocd.berlios.de/doc/doxygen/bugs.html
6
Error: unable to open ftdi device: device not found
7
Command handler execution failed

der Versuch mit einer geänderten Config:
1
ft2232_device_desc "USB Serial Converter A"
leider auch erfolglos.

Bitte helfen ;)

Gruß,
Kjartan

von Martin T. (mthomas) (Moderator) Benutzerseite


Lesenswert?

Kjartan Ferstl schrieb:

>[...]
> * OpenOCD Server 0.4.0 installiert:
> http://www.freddiechopin.info/index.php/en/download/category/4-openocd
>[...]
Dort steht: "[...] Due to alleged GPLv2 license incompatibility of using 
ftd2xx.dll libraries[...]". Weitere Hinweise und Gründe dafür ebenda.

>[...]
> Die Treiber habe ich Windows7 selbst installieren lassen (Windows Driver
> Database), daraus ergeben sich folgende neue Devices:
>[...]

Das dürften die Treiber von FTDI sein, die über genannte "ftd2xx.dll" 
angesteuert werden. Für eben diese ist in der kompilierten 
OpenOCD-Fassung von F.C. keine Unterstützung enthalten.

Entweder OpenOCD mit eingebautem Support for FTDI-Treiber verwenden 
(dazu muss man "dank" Lizenz OpenOCD selbst kompilieren), dann kann man 
die bereits installierten Treiber von FTDI verwenden, oder die FTDI 
Treiber durch libftdi/libusb ersetzten, damit funktioniert dann auch 
"openocd.exe" von F.C.s Seite.

von Kjartan F. (kjartan)


Lesenswert?

Danke, werde gleich mal probieren das selbst zu kompilieren

von Kjartan F. (kjartan)


Lesenswert?

Teil 1 geschafft, für Leute mit den gleichen Problem gibts hier was 
ich gemacht habe: Verbindung zum Board funktioniert:
1
C:\Users\Kjartan\Desktop>openocd --file interface/openocd-usb.cfg --file board/olimex_stm32_h103.cfg
2
Open On-Chip Debugger 0.4.0 (2010-02-22-19:05)
3
Licensed under GNU GPL v2
4
For bug reports, read
5
        http://openocd.berlios.de/doc/doxygen/bugs.html
6
1000 kHz
7
jtag_nsrst_delay: 100
8
jtag_ntrst_delay: 100
9
Info : clock speed 1000 kHz
10
Info : JTAG tap: stm32.cpu tap/device found: 0x3ba00477 (mfg: 0x23b, part: 0xba0
11
0, ver: 0x3)
12
Info : JTAG tap: stm32.bs tap/device found: 0x16410041 (mfg: 0x020, part: 0x6410
13
, ver: 0x1)
14
Info : stm32.cpu: hardware has 6 breakpoints, 4 watchpoints
habe Dank dem Tipp von Martin Thomas gelößt, indem ich die von Windows 
automatisch installierten Treiber mit denen von 
http://sourceforge.net/apps/trac/libusb-win32/wiki überschrieben habe 
(beim Download liegen praktische Installer bei, auch für 64Bit).
Als .cfg für das Board habe ich die board/olimex_stm32_h103.cfg 
genommen, hat den gleichen Cortex-M3 Chip drauf und scheint zu 
funktionieren (außer dem Controller steht in der Config ja nichts).

Teil 2 (bitte helfen):
Wie bekomme ich jetzt ein .hex File auf den Controller (würde das am 
liebsten mit einem Klick in Eclipse machen ;)

Teil 3 (bitte helfen):
Ein kleines Hallo World Programm Compilieren, habe installiert (alles 
aktuell):
* Eclipse 3.6.0 + CDT 7.0.1
* GNU ARM Eclipse Plug-in 0.5.3.201010131144
* Code Sourcery G++ Toolchain installiert
Ein Projekt mit G++ Toolchain erstellt und ein fertiges (irgendwo 
runtergeladen für nen STM32 103..), bei "built project" bekomme ich 
immer:
1
**** Build of configuration Release for project stm32test ****
2
3
cs-make all 
4
C:\Program: C:\Program: No such file or directory
5
cs-make: *** [main.o] Error 127

Wäre toll wenn mir bei Teil2 und 3 helfen könnte ;)

Wenn ich das Ding irgendwann zum laufen bekomme werde ich mal EINE 
Anleitung schreiben (für eine funktionierende Version). Bei meinen 
Suchen im INet lese ich sehr oft, dass es keine vollständige Anleitung 
gibt und daher sehr viele daran scheitern. Hoffentlich packe ich es 
eines Tages ;)

von Thomas R. (tinman) Benutzerseite


Lesenswert?

das hier :


> **** Build of configuration Release for project stm32test ****
>
> cs-make all
> C:\Program: C:\Program: No such file or directory
> cs-make: *** [main.o] Error 127

das ist garantiert "Program Files" verzeichniss. Am besten kurze namen 
und ohne blanks verwenden (sowas wie C:\DevKit\xxxx\yyyy\)

Das ist developer krankheit (und keine Windows krankheit wie oft 
behauptet wird), manche haben immer noch nicht gelernt das man beim 
WinAPI32 andere aufrufe machen sollte als WinAPI, diese 8.3 verblebsel 
nerven manchmal.

von Kjartan F. (kjartan)


Lesenswert?

Danke für deine Hilfreiche Antwort Thomas, ich hatte die Toolchain in
1
C:\Program Files (x86)\Code Sourcery\
 installiert, jetzt liegt sie in
1
C:\CodeSourcery\
 und das compilieren funktioniert wunderbar.

Wie bekomme ich mein .hex file jetzt den Controller?
Geht das irgendwie mit OpenOCD und Eclipse oder brauche ich da noch 
etwas?

Gruß,
Kjartan

von Kjartan F. (kjartan)


Lesenswert?

Nach etwas mehr Recherche habe ich rausgefunden wie ich die .elf Datei 
auf den Controller bringe.
Momentan scheitere ich an den Flash-Adressen, kann man die irgendwo 
umstellen (finde nichts dazu)?
1
C:\Users\Kjartan\Desktop>openocd -d0 -f interface/openocd-usb.cfg -f target/stm32.cfg -c init -c targets -c "halt" -c "flash write_image erase test.elf" -c "verify_image test.elf" -c "reset run" -c shutdown
2
3
Open On-Chip Debugger 0.4.0 (2010-02-22-19:05)
4
Licensed under GNU GPL v2
5
For bug reports, read
6
        http://openocd.berlios.de/doc/doxygen/bugs.html
7
debug_level: 0
8
1000 kHz
9
jtag_nsrst_delay: 100
10
jtag_ntrst_delay: 100
11
    TargetName         Type       Endian TapName            State
12
--  ------------------ ---------- ------ ------------------ ------------
13
 0* stm32.cpu          cortex_m3  little stm32.cpu          running
14
target state: halted
15
target halted due to debug-request, current mode: Thread
16
xPSR: 0x21000000 pc: 0x080009ac msp: 0x20000a10
17
auto erase enabled
18
Error: No flash at address 0x00008000
19
20
Error: No flash at address 0x00010968
21
22
wrote 0 bytes from file test.elf in 0.021001s (0.000 kb/s)
23
checksum mismatch - attempting binary compare
24
Verify operation failed address 0x00008000. Was 0xff instead of 0xf8
25
26
Command handler execution failed
test.elf habe ich solange einfach in das openocd Verzeichnis kopiert

Wäre toll wenn mir wer dabei helfen könnte - so kurz vor dem Finish ;)

von Kjartan F. (kjartan)


Lesenswert?

Wie kann ich die Topic als gelößt markieren? Ich habe es hin bekommen, 
ein kleines anderes Problem bekommt eine neue Topic.

DANKE an alle Helfer ;)

von Markus O. (Gast)


Lesenswert?

dürfte man auch erfahren, wie du dein problem mit der flashadresse 
gelöst hast? sitze nämlich gerade vor dem gleichen Problem :-/

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.