Forum: Mikrocontroller und Digitale Elektronik Microchip SAMD JTAG Problem


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Herbert (Gast)


Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich komme beim Schaltplanlayout mit den DB von Microchip nicht so klar.
Ich habe für die JTAG Schnittstelle folgende 3 Pins:

SWCLK/TCK, SWDIO/TMS und SWO/TDO

Bei meinen vorherigen STM µC hatte ich immer noch einen "separaten" JTAG 
RESET Pin + NC/TDI.

Bei Microchip gibt es den NC/TDI Pin wohl gar nicht mehr und ein extra 
JTAG Reset Pin ist ebenfalls nicht vorhanden. Es gibt nur einen Reset.
Was mich ferner wundert, warum beim Connector auf einmal der SWO/TDO gar 
nicht mehr auftaucht.

Gehört der SWO/TDO nicht zum Debugger ????
Wozu ist jetzt der NC/TDI Pin und warum taucht dieser nicht auf ?
Wird für das Flashen jetzt der Haupt- Reset auf LOW gezogen ?

Der SWO Pin taucht allerdings beim TRACE auf.

Über etwas Hilfe würde ich mich sehr freuen.

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Bewertung
0 lesenswert
nicht lesenswert
Herbert schrieb:

> Bei meinen vorherigen STM µC hatte ich immer noch einen "separaten" JTAG
> RESET Pin + NC/TDI.

Reset ist optional. Könnte man auch hier anschließen, wenn du einen 
external Reset durch den Debugger erzwingen können möchtest.

JTAG haben die SAMDs einfach gar nicht, die haben nur SWD.  Dadurch gibt 
es nur SWDCLK und SWDIO sowie ggf. die Trace-Pins, falls man eine 
Trace-Funktionalität haben möchte (dafür braucht man meiner Erinnerung 
nach aber einen anderen Debugger als das einfache AtmelICE).

> Wird für das Flashen jetzt der Haupt- Reset auf LOW gezogen ?

Man kann den Reset auch über SWD auslösen, daher muss man den Pin nicht 
unbedingt rausführen.

: Bearbeitet durch Moderator
von Herbert (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Vielen Dank für die Antwort.

Ich habe bisher den "jLink" Flasher/Debugger genutzt und eben JTAG beim 
STM32. Das aber wohl schon in Verbindung mit TRACE ? Bin mir nicht 
sicher.

Hatte SWDIO, SWCLK, NC/TDI, TDO/TRACESWO und RST angeschlossen.

Jetzt möchte ich mit SWD aber dieselbe Debugging Funktionalität haben.
Z.B Registerinhalte auszulesen und zu manipulieren oder wird dann dafür 
TRACE benötigt ?

Der SWO lief beim STM32 auch unter den Namen TDO_TRACESWO lief. Der 
würde mir dann ja jetzt fehlen.

Dann müsste ich ja eigentlich nur den mit anschliessen?
Was wäre dann mit den Test Data Input ? Der wäre beim SWD ja definitiv 
nicht mehr vorhanden.

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Bewertung
0 lesenswert
nicht lesenswert
Herbert schrieb:

> Hatte SWDIO, SWCLK, NC/TDI, TDO/TRACESWO und RST angeschlossen.

Dann hast du entweder JTAG benutzt oder aber SWD und zwei Pins einfach 
nicht benutzt.

> Jetzt möchte ich mit SWD aber dieselbe Debugging Funktionalität haben.
> Z.B Registerinhalte auszulesen und zu manipulieren oder wird dann dafür
> TRACE benötigt ?

Nein.  Trace ist das Rückverfolgen irgendwelcher bereits abgearbeiteter 
Befehle bzw. Daten. Details kannst du bei ARM nachlesen.

> Der SWO lief beim STM32 auch unter den Namen TDO_TRACESWO lief. Der
> würde mir dann ja jetzt fehlen.

Nein, fehlt dir nicht.

> Dann müsste ich ja eigentlich nur den mit anschliessen?
> Was wäre dann mit den Test Data Input ? Der wäre beim SWD ja definitiv
> nicht mehr vorhanden.

Ja, weil das eine reine JTAG-Funktion war, die man bei SWD nicht 
braucht.

JTAG war ja in erster Linie für den Fertigungstest konzipiert, indem man 
alle "großen" Chips in einer Schieberegisterkette hintereinander 
geschaltet hat. Dass man darüber auch debuggen kann, ist eine 
Erweiterung der JTAG-Idee, die die Hersteller danach draufgesetzt haben. 
Letztlich hast du bezüglich des Debuggens bei SWD die gleiche 
Funktionalität wie bei JTAG, nur die Möglichkeit, mehrere Geräte 
miteinander zu verketten, entfällt, und natürlich die ursprüngliche 
JTAG-Funktionalität ("Joint Test Access Group").

von Jim M. (turboj)


Bewertung
0 lesenswert
nicht lesenswert
Herbert schrieb:
> Wozu ist jetzt der NC/TDI Pin und warum taucht dieser nicht auf ?

NC heist auf Deutsch: Nicht verbunden.

> Wird für das Flashen jetzt der Haupt- Reset auf LOW gezogen ?


DAS kennt man eigentlich nur von den 8-Bit AVR, sonst nicht. Aber lies 
Dir mal das Datenblatt/Referenz Manual durch.

Herbert schrieb:
> Über etwas Hilfe würde ich mich sehr freuen

Die ganze Debug Geschichte hat sich ARM ausgedacht, also findet man 
unter infocenter.arm.com auch alle relevanten Infos über SWD und SWO.

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Bewertung
0 lesenswert
nicht lesenswert
Jim M. schrieb:
>> Wird für das Flashen jetzt der Haupt- Reset auf LOW gezogen ?
>
> DAS kennt man eigentlich nur von den 8-Bit AVR, sonst nicht.

Selbst die kennen einen Reset via JTAG.  Den externen Reset benötigt man 
auch beim AVR nur, wenn man in der Software JTD (JTAG Disable) aktiv zur 
Laufzeit setzt.

von Herbert (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Danke, dann habe ich vermutlich auch damals nur SWD gehabt und 
unnötigerweise Pins blokiert.

Hat mich jetzt schon um einiges weitergebracht!
Den SWO kann ich mir dan auch sparen.!

von Rudolph (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Ah cool, danke, im Datenblatt vom SAMC21 steht nichts davon das der 
Reset optional wäre. :-)

Jetzt habe ich den gekappt und alles funktioniert erstmal wie vorher 
auch.

Nun "fehlt" mir nur noch ein 4pol. Stecker der deutlich kleiner ist als 
der 10pol. IDC.

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Bewertung
0 lesenswert
nicht lesenswert
Rudolph schrieb:
> Nun "fehlt" mir nur noch ein 4pol. Stecker der deutlich kleiner ist als
> der 10pol. IDC.

Wenn dir das zu viel Platz ist, muss du irgendwie Lötpads nehmen.

Der 10polige Stecker mit 1,27 mm Rastermaß selbst ist von ARM so für die 
Cortexe standardisiert worden. Leider sind die Kabel dafür ziemlich 
anfällig, ist eben nur noch sehr wenig Kupfer drin übrig geblieben.

von Rudolph (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Jörg W. schrieb:
> Wenn dir das zu viel Platz ist, muss du irgendwie Lötpads nehmen.

Och, es gibt da schon ein paar schnucklige Lösungen, nur benötigen die 
noch einen Adapter oder eine Adapter-Platine.
Lötpads sind eher größer damit die nicht abreissen, vorzugsweise auch 
noch durchkontaktiert und ein Nadel-Adapter wäre etwas unflexibel.

Aber vielleicht geht es sogar ohne Adapter, die ersten vier Pins von dem 
IDC reichen ja, noch kleiner wird schwierig, so als Stecker. :-)

von W.S. (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Rudolph schrieb:
> Nun "fehlt" mir nur noch ein 4pol. Stecker der deutlich kleiner ist als
> der 10pol. IDC.

Gönne dir lieber einen 6 poligen Stecker, über den du auch VCC des µC 
und /Reset anschließt - egal, ob dein derzeitiger SWD-Adapter das nun 
braucht oder nicht. Ist für den Fall, daß du auch mal nen anderen 
Adapter verwenden willst, der seine Logikpegel an die VCC des Targets 
anpaßt.

Wegen der Stecker mußt du dich mal umsehen und dich zu irgendwas 
durchringen. Da wäre:
- Micromatch, ist aber relativ groß
- MICA+MICS, ist auch so groß
- einige Stecksysteme von JAE und JST mit Pitch von 1.2nochwas bis 2.0
- ein System von JST im 1.0mm Pitch. Die Einzellitzen dafür sind bereits 
fertig konfektioniert. Ist mein Liebling, ich komme bloß grad nicht auf 
den Namen.
- 6 stinknormale Pinheads in 1 Reihe, ist wohl das billigste von allem.

W.S.

von Rudolph (Gast)


Angehängte Dateien:

Bewertung
2 lesenswert
nicht lesenswert
Der 10pol. IDC ist schon sehr klein, natürlich die 1,27mm Version - eben 
wie das an dem Atmel ICE schon dran ist.

Und natürlich ist VCC mit angeschlossen.

1 VCC
2 SWDIO
3 GND
4 SWCLK

Siehe Bild, das funktioniert so, ist aber schwer grenzwertig, weil die 
Steckkraft gegen Null geht.
Wirf man die sechs "überflüssigen" Pads aus dem Design kann man da sogar 
flache Bauteile platzieren.

Der weisse ist ein BMB07 von JST mit 1,0 mm Raster.
Ein BM04B-SRSS-TB hätte 6 mm x 3,6 mm, hmm, gar nicht mal viel größer.
Und steckt dann besser.
Aber braucht eben einen Adapter auf IDC.

von Rudolph (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Okay, ich musste den 10pol Stecker gerade wieder bestücken und auch 
Reset wieder anschliesen.
Ich konnte zwar praktisch alles machen mit dem SAMC21, Fuses setzen, in 
den Debug-Modes gehen, Chip-Erase etc.
Aber beim Versuch das Programm zu flashen gab es eine Fehlermeldung das 
der Controller gelocked wäre, irgendwas mit DeepSleep.
Ja, trotz Chip-Erase.

Sobald ich Reset wieder verbunden hatte war das Problem weg.

Geiz ist eben nur beschränkt hilfreich, dann lieber den 10pol IDC und 
den Atmel-ICE direkt anschliessen können.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.