Hallo zusammen,
Ich habe mir einen USBprog4 gekauft und versuche gerade diesen in
Betrieb zu nehmen. Folgende Komponenten werden eingesetzt:
- Linux Mint 17 x64
- OpenOCD 0.7.0 (aus den Mint Repos)
- USBprog4
- STM32F103
Nach über 7 Stunden Frust musste ich leider feststellen, dass es an
allen Ecken und Kanten klemmt. Vor allem der USBprog Programmer will
einfach nicht so wie ich mir das vorstelle:
1)
Der im USBprog eingebaute CP2102 funktioniert absolut überhaupt nicht,
der syslog bringt nur alle paar Sekunden die Meldung
1
kernel: [ 8819.819660] hub 2-1:1.0: connect-debounce failed, port 6 disabled
Aber lassen wir das mal, brauche im Moment nur den JTAG Debugger...
2)
Wenn ich den DIP-Switch für den Pegelwandler auf 3,3V stelle, macht der
USBprog keinen Wank mehr. Das USB Device meldet sich beim PC ab ("USB
disconnect" im syslog). Erneutes Einstecken bringt nichts, kein Eintrag
im syslog, auch "lsusb" zeigt das Gerät nicht an. Steht der DIP-Switch
auf 5V, funktioniert die USB Kommunikation einwandfrei. Ist mein USBprog
defekt oder übersehe ich was? Den Lötjumper für die Versorgung der
Zielschaltung habe ich testweise mal gebrückt, macht aber auch keinen
Unterschied.
3)
Ich verwende folgenden Befehl um mit dem STM32 zu verbinden:
Wenn ich dabei mit dem Oszilloskop die Signale an den JTAG Pins
anschaue, sehe ich dass sich auf TCK und TMS "was tut", die anderen
Signale machen keinen Wank. Ich kenne mich mit JTAG noch nicht wirklich
aus, aber müsste SRST nicht auch auf Low wechseln damit überhaupt eine
Kommunikation stattfinden kann?
Übrigens, als Firmware habe ich sowohl die "originale, alte, langsame"
(openocd.bin), wie auch die "neuere, schnelle" (usbprog-jtag-0.1.bin)
Version ausprobiert. Irgendwie erscheint mir das ganze Projekt
allerdings etwas ausgestorben, das letzte Update für die Firmware ist
von April 2010 und der automatische Download aus dem USBProg-GUI heraus
funktioniert auch nicht (error 404).
Meine konkreten Fragen wären:
- Was mache ich falsch dass der USBprog mit 3,3V nicht funktioniert?
Oder ist er defekt?
- Warum bewegt sich SRST nicht bei einem Verbindungsaufbau?
- Welche Firmware soll ich verwenden, und funktioniert die mit OpenOCD
0.7.0? Die Geschwindigkeit ist mir vorerst mal egal...
Vielen Dank und Grüsse
Urban
> Der im USBprog eingebaute CP2102 funktioniert absolut überhaupt nicht,> der syslog bringt nur alle paar Sekunden die Meldung> kernel: [ 8819.819660] hub 2-1:1.0: connect-debounce failed, port 6> disabled
Klingt nach schlecht verlötet oder schlimmerem. Auch die anderen
Probleme riechen nach Hardware.
Urban B. schrieb:> müsste SRST nicht auch auf Low wechseln damit überhaupt eine> Kommunikation stattfinden kann?
Nein. Das ist JTAG und nicht Atmel ISP. Bei Cortex M kann man das im
laufenden Betrieb benutzen.
Urban B. schrieb:> - OpenOCD 0.7.0 (aus den Mint Repos)> - USBprog4> - STM32F103
IMO eine schlechte Kombination, von den USBProgs liesst man hier öfter
Problemberichte. Ein FT2232 basierter Adapter wäre die bessere
Alternative - außerdem ein Update auf die OpenOCD 0.8.0 Version.
Einen STM32 würde ich nicht an 5 Volt JTAG hängen, das könnte zuviel
sein. Man möchte für diese µCs einen vom Target versorgten Pegelwandler
haben, der auch bis 2.0 Volt noch tut. Das bietet der USBProg offenbar
nicht.
Jim Meba schrieb:> Klingt nach schlecht verlötet oder schlimmerem. Auch die anderen> Probleme riechen nach Hardware.
Das wäre aber doch sehr merkwürdig...Der USBprog ist nagelneu und ich
musste nur die Stiftleisten einlöten, der Rest wurde maschinell verlötet
nehme ich an.
Jim Meba schrieb:> Nein. Das ist JTAG und nicht Atmel ISP. Bei Cortex M kann man das im> laufenden Betrieb benutzen.
Das heisst man muss den Reset gar nicht verbinden? Nur GND, TCK, TMS,
TDI und TDO?
Jim Meba schrieb:> IMO eine schlechte Kombination, von den USBProgs liesst man hier öfter> Problemberichte. Ein FT2232 basierter Adapter wäre die bessere> Alternative - außerdem ein Update auf die OpenOCD 0.8.0 Version.
OK ich werden dann mal versuchen OpenOCD 0.8.0 zu kompillieren, mal
schauen was das bringt.
Jim Meba schrieb:> Einen STM32 würde ich nicht an 5 Volt JTAG hängen, das könnte zuviel> sein. Man möchte für diese µCs einen vom Target versorgten Pegelwandler> haben, der auch bis 2.0 Volt noch tut. Das bietet der USBProg offenbar> nicht.
Ja das gefällt mir eben auch nicht so. Bis auf den Reset sollen aber
laut Datenblatt alle JTAG Pins 5V-Tolerant zu sein, weshalb ich meine
Versuche nun halt mit 5V durchgeführt habe (Zielschaltung hat 3,3V).
Übrigens weiss ich leider auch nicht ob meine Zielschaltung in Ordnung
ist, diese habe ich selbst entworfen. Um fehlerhafte Lötstellen mehr
oder weniger ausschliessen zu können, habe ich extra noch eine zweite
Platine gelötet. Aber auch diese will nicht mit OpenOCD kommunizieren...
Ich könnte vielleicht höchstens mal versuchen ein STM32F1 Discovery mit
USBprog zu verbinden, ich weiss allerdings nicht ob dann nicht der
On-Board Debugger die Kommunikation stört...
Naja einen Fehler hab ich schonmal gefunden: Nach einem Tausch von TDI
und TDO kommuniziert OpenOCD 0.8.0 nun mit meinem STM32. Das ist soweit
schonmal sehr gut.
Doch interessanterweise funktioniert die Verbindung nur bei jedem
zweiten Mal. Gebe ich den oben genannten OpenOCD Befehl in der Konsole
ein, sehe ich auf dem Oszilloskop nur eine ganz kurze Sequenz auf den
JTAG Signalen und der Verbindungsaufbau scheitert. Gebe ich den exakt
gleichen Befehl nochmal ein, ist die Sequenz auf dem Oszilloskop
wesentlich länger und OpenOCD kann (nach einigen Warnungen und Errors)
erfolgreich verbinden.
Allerdings funktioniert das alles nach wie vor nur in der 5V Einstellung
und nur mit der alten, langsamen Firmware. Unter Windows 7 musste ich
nach über einer Stunde die Installation des Treibers erfolglos aufgeben.
Und die JTAG Pinbelegungen sind auch eine Katastrophe, wenn ich das
richtig sehe funktioniert die 20-polige Stiftleiste weder mit der alten,
noch mit der neuen Firmware?! Das kanns doch nicht sein...
Dieser USBprog macht mich irgendwie so gar nicht glücklich. Ich frage
mich ob ich wohl besser gleich einen anderen Programmer kaufen soll,
z.B. ARM-USB-TINY-H (taugt der was?).
mfg
> Unter Windows 7 musste ich> nach über einer Stunde die Installation des Treibers erfolglos aufgeben.
Einfach Zadig (http://zadig.akeo.ie/) herunterladen und damit einen
Treiber installieren. Man kann zwischen WinuSB, LibUSB-win32 und LibusbK
entscheiden, es müsste mit der default WinUSB Einstellung tun IIRC.
Jim Meba schrieb:>> Unter Windows 7 musste ich>> nach über einer Stunde die Installation des Treibers erfolglos aufgeben.>> Einfach Zadig (http://zadig.akeo.ie/) herunterladen und damit einen> Treiber installieren. Man kann zwischen WinuSB, LibUSB-win32 und LibusbK> entscheiden, es müsste mit der default WinUSB Einstellung tun IIRC.
Habe ich versucht, bei der Installation des Treibers kam aber immer eine
Fehlermeldung "Installation fehlgeschlagen" oder so ähnlich. Irgendwann
habe ich es dann aufgegeben, ob das Ding mit Windows läuft ist mir
schlussendlich auch egal weil ich nur mit Linux arbeite. Da es aber
unter Linux nicht wollte, versuchte ich es mal mit Windows...
Insgesamt lässt aber auch die Dokumentation von USBprog zu wünschen
übrig, was mich eben auch ein bisschen sauer macht. z.B. dass Zadig
benötigt wird ist in der offiziellen Doku anscheinend nirgends erwähnt.
Die Pinbelegungen muss man sich mühsam zusammenkratzen, wobei sogar
Widersprüche auftauchen (irgendwo steht die beiden OpenOCD Firmwares
haben die selbe Pinbelegung, woanders steht dass diese unterschiedlich
sei).
Ich habe jetzt schon zwei Tage mit dem Ding gekämpft und es funktioniert
immernoch nicht zufriedenstellend, so langsam sind meine Nerven wirklich
am Ende. Ich glaube ich kaufe mir ein STM32F4 Discovery und nutze den
darauf enthaltenen ST-Link v2 (naja, vorausgesetzt dieser funktioniert
besser als USBprog...)
So, das Problem ist gelöst (bzw. umgangen). Habe ein STM32F4 Discovery
gekauft und dessen ST-Link v2 über SWD mit meiner Platine verbunden.
Kann nun problemlos mit OpenOCD 0.7.0 aus den Mint Repos flashen und
debuggen.
Schade, hätte gerne das USBprog Projekt unterstützt...
Vielen Dank übrigens noch für deine Hilfe, Jim Meba.
mfg