Forum: Mikrocontroller und Digitale Elektronik Probleme mit MSP430 JTAG Programmierung


von Heinz M. (heinz-m)


Lesenswert?

Hallo zusammen,

ich habe ein altes Roboterprojekt mit MSP430 aus der Bastelkiste 
befreit, das ich vor vielen Jahren angefangen habe, weil ich jetzt gene 
mit meinem Sohn daran weiterbauen würde. Es basiert auf einem 
MSP430F149, der auf einem Header Board sitzt (von olimex).

Das Programm was ich zuletzt aufgespielt hatte läuft noch, aber ich 
würde den Chip nun gerne neu programmieren. Das hatte ich damals mit 
einm parallelen JTAG Adapter von OLIMEX gemacht und da beginnt nun mein 
Problem:

Habe das Header Board aus der Schaltung ausgesteckt und den Jumper auf 
P_IN gesteckt, damit der Chip über den JTAG Adapter versorgt wird. Dann 
habe ich das Kabel mit dem Header Board (rote Markierung Richtung 
Jumper) und den Adapter mit LPT1 verbunden und das OLIMEX Programm 
gestartet. Leider meldet dieses immer, dass er Adapter nicht gefunden 
werden kann (LPT1 und den Chiptyp hatte ich natürlich ausgewählt). Auch 
mit msp430-gdbproxy hatte ich kein Glück.

Leider erinnere ich mich nicht mehr so genau, wie ich das früher gemacht 
habe.

- Ist an dem o.g. Verfahren etwas falsch?
- Brauche ich für einen parallelen JTAG Adapter ggf. noch einen 
zusätzlichen Treiber?
- Müsste der Adapter auch ohne angeschlossenen Prozessor gefunden 
werden? Wenn nein: Wie kann ich den Adapter am besten einzeln testen?

Für jede Hilfe dankbar
Heinz

von Jörg S. (joerg-s)


Lesenswert?

Heinz Müller schrieb:
> - Brauche ich für einen parallelen JTAG Adapter ggf. noch einen
> zusätzlichen Treiber?
Einen Hardware Treiber sicher nicht. Parallelport ist ohne. Aber 
vielleicht kannst du mal schauen wie der LPT im BIOS vom Rechner 
eingestellt ist. Vielleicht bringt eine andere Einstellung (EPP/ECP etc) 
was.

> - Müsste der Adapter auch ohne angeschlossenen Prozessor gefunden
> werden? Wenn nein: Wie kann ich den Adapter am besten einzeln testen?
Ich kenne das Programm nicht, aber ich glaube nicht das er die 
Möglichkeit hat den Programmer zu identifizieren.
Um zu schauen ob überhaupt was passiert würde ich mal ein Oszi an die 
JTAG Pins hängen und schauen ob da was los ist.

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Heinz Müller schrieb:
> Habe das Header Board aus der Schaltung ausgesteckt und den Jumper auf
> P_IN gesteckt, damit der Chip über den JTAG Adapter versorgt wird. Dann
> habe ich das Kabel mit dem Header Board (rote Markierung Richtung
> Jumper) und den Adapter mit LPT1 verbunden und das OLIMEX Programm
> gestartet.

Du glaubst, daß der Parallelportadapter in der Lage ist, das Headerboard 
mit Spannung zu versorgen?

von heinz-m (Gast)


Lesenswert?

Ja, schon, denn das Ding enthält gemäß Schaltplan einen Spannungsregler 
(TPS77030), der 3V an JTAG Pin 2 zur Verfügung stellt.

Habe leider kein Oszi, werde aber zumindest mal nachmessen, ob an dem 
Pin Spannung anliegt.

Werde auch mal checken, ob es mit einer externen Spannungsversorgung 
klappt.

von Heinz M. (heinz-m)


Lesenswert?

So, habe jetzt nochmal etwas nachgemessen - mangels Oszi mit dem 
Multimeter:

An den Pins 2 und 4 (VCC IN und OUT) liegen jeweils 3V an.

Die Pins TCK (7) und TEST/VPP (8) liegen jeweis auf 2,5V. Der Rest liegt 
im Ruhezustand auf 0V. Ist das gut?

Wenn ich das Programmierprogramm anwerfe, kann ich keine "Zuckungen" 
erkennen. Mag natürlich sein, dass mein Multimeter dafür zu lahm ist.

Habe dann mal vergleichsweise direkt am Parallelport gemessen. Dort 
liegen die Datenleitungen im Ruhezustand auf 1V oder -3,3V gemessen 
gegen Pin 25. Ist das normal? Hatte 0V oder 5V erwartet... Zuckungen 
sind aber auch nicht zu beobachten, wenn das Programm läuft.

Habe dann versucht mit externer Stromversorgung auf den Chip 
zuzugreifen. Leider erfolglos ;(

Also es gibt jetzt drei Möglichkeiten:
1.) Mit der Software / dem PC stimmt was nicht
2.) Der Programmieradapter ist hin
3.) der MSP430 mag nicht mehr über JTAG kommunizieren

Zu 2.): Könnte ja mal "manuell" 0V und 5V an die Datenleitungen legen 
und schauen was hinten raus kommt....

Hat noch jemand andere Vorschläge?
Habe es auch schon erfolglos mit anderen Rechnern probiert, also denke 
ich mal es liegt nicht am PC.

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

heinz-m schrieb:
> Ja, schon, denn das Ding enthält gemäß Schaltplan einen Spannungsregler
> (TPS77030), der 3V an JTAG Pin 2 zur Verfügung stellt.

Und wo soll die Spannung herkommen, die diesem Spannungsregler zugeführt 
wird?

Ein Parallelport liefert die nicht.

Heinz Müller schrieb:
> Habe dann mal vergleichsweise direkt am Parallelport gemessen. Dort
> liegen die Datenleitungen im Ruhezustand auf 1V oder -3,3V gemessen
> gegen Pin 25.

Ohne Dir zu nahe treten zu wollen, aber Du misst Mist.

Versorge Deinen µC mit einem richtigen Netzteil.

von Heinz M. (heinz-m)


Lesenswert?

Rufus Τ. Firefly schrieb:
> Und wo soll die Spannung herkommen, die diesem Spannungsregler zugeführt
> wird?

Gemäß Schaltplan des Adapters (siehe 
http://www.olimex.com/dev/images/msp430-jtag-d-sch.gif) wird die 
Spannung von Pin 1, Pin 6 und Pin 9 bezogen - so verstehe ich das 
zumindest.

>Ohne Dir zu nahe treten zu wollen, aber Du misst Mist.

Glaube ich Dir unbesehen ;)
Vielleicht nicht sinnvoll Ports völlig unbelastet zu messen!? Muss 
gestehen ich bin Anfänger.

>Versorge Deinen µC mit einem richtigen Netzteil.

Habe ich schon probiert (s.o.) - leider ohne Erfolg.

von Jörg S. (joerg-s)


Lesenswert?

Rufus Τ. Firefly schrieb:
> Und wo soll die Spannung herkommen, die diesem Spannungsregler zugeführt
> wird?
> Ein Parallelport liefert die nicht.
Augenscheinlich schon, da ich auch schon jahrelang so MSPs programmiert 
habe.


>Die Pins TCK (7) und TEST/VPP (8) liegen jeweis auf 2,5V. Der Rest liegt
>im Ruhezustand auf 0V. Ist das gut?
Reset müsste im Ruhezustand auf high liegen, glaub ich.

Was hast du für einen Compiler? Bei IAR könntest du probieren ob du den 
MSP direkt mit IAR porgrammiert bekommst.

von heinz-m (Gast)


Lesenswert?

Jörg S. schrieb:
> Was hast du für einen Compiler? Bei IAR könntest du probieren ob du den
>
> MSP direkt mit IAR porgrammiert bekommst.

Hatte damals eine eclipse Umgebung mit mspgcc verwendet und bin gerade 
dabei diese wieder einzurichten. Kann mich nicht mehr genau erinnern wie 
der Programmiervorgang damit lief (hatte damals ein makefile, das dann 
irgendein flash  Tool aufgerufen hat). Bislang habe ich im Netz nur 
Beispiele mit msp430-gdbproxy gefunden, aber dieses Tool dient ja 
eigentlich mehr zum debuggen.

Wie auch immer: Kann mir ja IAR mal testweise installieren.

Außerdem wollte ich mal ein Tool installieren, mit dem man einzelne Pins 
des Parallelports an und ausschalten kann und dann mal den Pegel am 
Parallelport und den am JTAG Adapter messen. Damit sollte sich ja 
feststellen lassen, ob der Port anspricht und ob der Adapter generell ok 
ist.

von Heinz M. (heinz-m)


Lesenswert?

IAR meldet mir leider auch, dass es keinen Kontakt zum Programmer 
aufbauen kann (hatte testweise beide in der Konfiguration angebotenen 
parallelen Adapter ausprobiert).

Habe dann auch mal mit einem Testprogramm die Datenleitungen auf High 
und Low gelegt und die Ausgangsspannungen nachgemessen.

Gemäß Schaltplan müsste nach meinem Verständnis ja folgende Koppelung 
gelten:

D0->TDI
D1->TMS
D2->TCK
D3->TCLK
/CE->RST

Die Ausgänge schwanken dann zwar um ca. 0,3V in Abhängigkeit vom Pegel 
des Parallelports, aber auf 0 gehen sie nicht. Oder müsste ich da einen 
Pulldown Widerstand ergänzen um "richtige" Werte zu messen? Wenn ja was 
für einen Wert sollte der haben?

Nehme an, dass die Programme das Vorhandensein des Adapters vom Pegel 
des Pins 12 (PERROR) abhängig machen, der in Abhängigkeit vom JTAG pin 
TD0 gesetzt wird - den könnte ich vielleicht auch nochmal nachmessen...

Tja, scheint die einfachste Variante den Fehler einzukreisen wäre wohl 
der Austausch einer Komponente (JTAG Adapter oder Chip). Was denkt Ihr 
in welcher Komponente am wahrscheinlichsten der Fehler liegt?

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Den Frickelportadapter solltest Du in der Schublade verschwinden lassen, 
und statt dessen eine USB-Variante verwenden.
Da Du wegen des recht alten 'F149 auf 4-Draht-JTAG angewiesen bist, ist 
das recht teuer (entweder das Original von TI, MSP-FET430UIF, oder 
dessen Olimex-Nachbau), bei neueren MSP430-Varianten, die SBW verstehen, 
ist der Adapter hingegen spottbillig (in Form des Launchpad).

Wenn Du unbedingt den Frickelportadapter nutzen willst: Kümmere dich um 
die Versorgungsspannung! Miss an den im Frickelportadapter verbauten 
Treiberbausteinen deren Versorgungsspannung, und vergiss die Idee, den 
Frickelport zur Versorgung zu nutzen. Speise Deine Schaltung und den 
Frickelportadapter mit einem Netzteil.

von Heinz M. (heinz-m)


Lesenswert?

Danke für die Tipps! Den "Frickelportadapter" kann ich leider nicht mit 
einem Netzteil speisen, weil der sich die Versorgungsspannung aus dem 
Parallelport holt.

Den MSP kann ich schon mit Netzteil speisen, aber das hat leider auch 
nicht funktioniert (siehe oben).

Insgesamt wollte ich sowieso mittelfristig auf einen USB Adapter 
umsteigen - dann wohl auch gleich auf einen anderen Chip nach Deiner 
Beschreibung.
Gibt es einen MSP neuerer Bauart auf einem Header Board? Wäre blöd, wenn 
ich die ganze Platine umbauen müsste, denn da hängt schon einiges drauf 
(Schrittmotoradapter, LCD Display, LEDS und Regler, Spannungsversorgung 
etc.).

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Heinz Müller schrieb:
> Gibt es einen MSP neuerer Bauart auf einem Header Board?

Etliche:
https://www.olimex.com/dev/

Von denen unterstützen 2274, 5438 und 2618 SBW. Und der dort 
fälschlicherweise FG2231 genannte 'G2231.

Allerdings lässt sich auch das Launchpad selbst als so eine Art 
"Headerboard" nutzen, wenn man mit der Menge an Anschlüssen und 
Peripherie auskommt, die die damit direkt nutzbaren Controller zur 
Verfügung stellen. In der Version 1.5 wird das Launchpad auch mit 
interessanteren Controllern ausgeliefert, wie z.B. der 'G2553.

Was hast du denn genaueres vor?

von Heinz M. (heinz-m)


Lesenswert?

Rufus Τ. Firefly schrieb:
> Was hast du denn genaueres vor?

Wird vielleicht etwas off topic ;)

Ich wollte mit meinem Sohnemann ein Roboterprojekt weiterbauen, das ich 
vor Jahren mal begonnen hatte, um ihn in das Thema Elektronik und 
Mikrocontroller etwas einzuführen. Ich hatte damals schon einiges an 
"Peripherie" angebaut, die ich gerne wieder nutzen möchte. Ich brauche 
recht viele IOs, weil schon durch das große LCD Display, die beiden 
Schrittmotoren die als Antrieb dienen und diverse LEDS und Taster knapp 
30 IO Leitungen belegt sind und noch ein paar Abstandssensoren und ein 
Bluetooth Modul angebaut werden sollen.

Von den von Dir genannten Prozessoren sieht das Header Board 
MSP430-H2618 recht interessant aus - sowohl vom Prozessor als auch von 
der Bauform, da identisch zu meinem jetzigen Board. Werde mir mal die 
Pinbelegung genauer ansehen - Vielleicht passt die ja...

Bekommt man einen SWB Programmer mit USB Anschluss irgenwo fertig?

von ./. (Gast)


Lesenswert?

Heinz Müller schrieb:
> Bekommt man einen SWB Programmer mit USB Anschluss irgenwo fertig?

TI Launchpad

von Jörg S. (joerg-s)


Lesenswert?

Rufus Τ. Firefly schrieb:
> ...und vergiss die Idee, den Frickelport zur Versorgung zu nutzen.
Weil?


Aber alles komplett auszutauschen ist natürlich auch eine Art der 
Problemlösung... lol

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Jörg S. schrieb:
>> ...und vergiss die Idee, den Frickelport zur Versorgung zu nutzen.
> Weil?

Weil der Frickelport eben keine Versorgungsspannung zur Verfügung 
stellt, und obendrein bei neueren PCs auch nur noch mit 3V-Pegeln 
arbeitet (immerhin bleibt er eingangsseitig 5V-tolerant, sonst wär's ja 
noch schlimmer).

Wenn Du einen PC hast, bei dem der Frickelport ohne Probleme 
funktioniert, dann hast Du schlichtweg Glück, aber das ist halt die 
Ausnahme.

> Aber alles komplett auszutauschen ist natürlich auch eine Art der
> Problemlösung... lol

Eine seit 10 Jahren als tot anzusehende Schnittstelle nicht mehr zu 
nutzen ist in der Tat eine Problemlösung.

von Jörg S. (joerg-s)


Lesenswert?

Rufus Τ. Firefly schrieb:
> Wenn Du einen PC hast, bei dem der Frickelport ohne Probleme
> funktioniert, dann hast Du schlichtweg Glück, aber das ist halt die
> Ausnahme.
Glaub ich weniger, weil das ja so von TI und den anderen LPT 
Programmer-Herstellern vorgesehen ist.
Zudem habe ich noch keinen einzigen PC gesehen bei dem das nicht 
funktioniert hätte.


>> Aber alles komplett auszutauschen ist natürlich auch eine Art der
>> Problemlösung... lol
> Eine seit 10 Jahren als tot anzusehende Schnittstelle nicht mehr zu
> nutzen ist in der Tat eine Problemlösung.
Wenn sie vorhanden ist und man zufällig auch noch einen Programmer für 
selbige Schnittstelle besitzt, ist es wohl eine eher zweifelhafte Lösung 
einen neuen Programmer zu kaufen nur weil mal beschlossen wurde das LPT 
"out" ist.
Wenn der LPT Programmer defekt sein sollte ist das ne andere Sache. 
Wobei sich die Reparatur eines LPT Programmers in Cent Bereich bewegen 
sollte, also finanziell immer noch wesentlich günstiger als ein USB 
Programmer.

von heinz-m (Gast)


Lesenswert?

Danke für Eure Hilfe!
Bin jetzt erstmal ein paar Wochen in Urlaub und werde es danach mit 
einem anderen parallelen Programmer versuchen, den ich zum Testen 
organisiert habe. Wenn das auch nicht klappt tausche ich den 
Microcontroller aus. Ansonsten vergleiche ich die Messwerte beider 
Adapter oder tausche gleich alle ICs aus.

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Jörg S. schrieb:
> Glaub ich weniger, weil das ja so von TI und den anderen LPT
> Programmer-Herstellern vorgesehen ist.

Von denen ist nicht vorgesehen, daß das Target vom Frickelport versorgt 
wird. Das Target hat seine eigene Versorgungsspannung zu haben, und das 
Target versorgt die Treiberbausteine im Frickelportadapter. Dann 
funktioniert die Chose.

von Christian R. (supachris)


Lesenswert?

Wobei man allerdings dazu sagen muss, dass es beim MSP430 sehr wohl aus 
dem Parallelport auch klappt, wenn der noch mit 5V läuft. Da der MSP430 
nur µA Stromaufnahme hat, war das beim LPT Programmer durchaus 
vorgesehen. Hab ich lange mit dem olimex Programmer auch so gemacht.

von Jörg S. (joerg-s)


Lesenswert?

Rufus Τ. Firefly schrieb:
> Von denen ist nicht vorgesehen, daß das Target vom Frickelport versorgt
> wird. Das Target hat seine eigene Versorgungsspannung zu haben, und das
> Target versorgt die Treiberbausteine im Frickelportadapter.
Warum gibt der Programmer dann überhaupt am VccOut Pin vom JTAG eine 
Spannung aus wenn das überhaupt nicht vorgesehen ist?

>/Dann/ funktioniert die Chose.
Die funktioniert auch so. Denn wenn der LPT Port genung Saft hat den 
nicht gerade stromsparenden Programmer zu versorgen (und die 
entsprechend bestückten Dioden zeigen das es so vorgesehen ist), 
reicht's für den MSP allemal.

von Jörg S. (joerg-s)


Angehängte Dateien:

Lesenswert?

Christian R. schrieb:
> Wobei man allerdings dazu sagen muss, dass es beim MSP430 sehr wohl aus
> dem Parallelport auch klappt, wenn der noch mit 5V läuft.
Gerade mal nachgemessen. Mein Laptop hat 3,3V LPT. Über die Diode D2 
wird der Programmer versorgt. Nach der Diode liegen dann also ~3,0V an. 
Die gehen nahezu 1:1 durch den Spannungsregler (U3) auf den Ausgang. Die 
Treiber-ICs bekommen ein paar Millivolt weniger ab, da sie noch über den 
OP (U1) gepuffert sind.
Man mag es kaum glauben, das funktioniert. Als ob TI es so geplant hätte 
;)

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.