Forum: Mikrocontroller und Digitale Elektronik JTAG mit FT2232H


von anfänger (Gast)


Lesenswert?

Hallo,

es gibt diese Thematik hier zwar schon zum gefühlten 1000mal... nur ist 
die ganze Informationsflut auch recht verwirrend...
Daher hätte ich ein paar Fragen.
Ich hab vor mit dem FT2232H eine JTAG Schnittstelle mit dem ELV-Board:

http://www.elv.de/controller.aspx?cid=726&detail=35146

zu realisieren.
Das ganze soll dann mit xc3sprog, openocd ... zusammenarbeiten.

Nun meine Frage.
Soweit ich herausgefunden hab, wird der FT2232H vom PC sozusagen passend 
"konfiguriert".
Hier hab ich einige Schaltpläne im Netz gefunden, wie z.B. der hier:

www.ftdichip.com/Support/Documents/AppNotes/AN_129_FTDI_Hi_Speed_USB_To_ 
JTAG_Example.pdf

Hierbei wurde:
ADBUS0 auf TCK
ADBUS1 auf TDI
ADBUS2 auf TDO
ADBUS3 auf TMS
verdrahtet.

Muss das generell so sein, damit das mit den obengenannten Tools 
zusammenarbeiten kann?
Kann ich dann die Signale einfach wie hier beschrieben:

http://www.mikrocontroller.net/articles/JTAG

auf Wannenstecker verdrahten (also immer wieder zum jeweiligen Pin 
abzweigen) ?

Ich bin Anfänger auf diesem Gebiet und bitte um Nachsicht ;)
Besten Danke für eure Geduld und eure Antworten!

Viele Grüße

von Erik (Gast)


Lesenswert?

anfänger schrieb:
> Soweit ich herausgefunden hab, wird der FT2232H vom PC sozusagen passend
> "konfiguriert".
Konfiguriert ist vlt. etwas übertrieben. Der Chip kann ja UART, I2C, 
SPI, JTAG und anderes (allerdings nicht alles gleichzeitig). Der 
Betriebsmodus wird vom Host-PC aus eingestellt.

> www.ftdichip.com/Support/Documents/AppNotes/AN_129_FTDI_Hi_Speed_USB_To_
> JTAG_Example.pdf
>
> Hierbei wurde:
> ADBUS0 auf TCK
> ADBUS1 auf TDI
> ADBUS2 auf TDO
> ADBUS3 auf TMS
> verdrahtet.
>
> Muss das generell so sein, damit das mit den obengenannten Tools
> zusammenarbeiten kann?
Ja, aber ich würde mich da einfach ans Datenblatt halten:
http://www.ftdichip.com/Support/Documents/DataSheets/ICs/DS_FT2232H.pdf
Auf Seite 9 stehen die entsprechenden Pinbelegungen.

> Kann ich dann die Signale einfach wie hier beschrieben:
>
> http://www.mikrocontroller.net/articles/JTAG
>
> auf Wannenstecker verdrahten (also immer wieder zum jeweiligen Pin
> abzweigen) ?
Ja.

Gruß,
Erik

von Frank K. (fchk)


Lesenswert?

anfänger schrieb:

> Hierbei wurde:
> ADBUS0 auf TCK
> ADBUS1 auf TDI
> ADBUS2 auf TDO
> ADBUS3 auf TMS
> verdrahtet.
>
> Muss das generell so sein, damit das mit den obengenannten Tools
> zusammenarbeiten kann?

Ja. Der Chip hat einen JTAG-Modus, und da sind die Signale intern so 
verdrahtet. Viele JTAG-Imlementationen haben aber noch mehr Signale,
zB TRST (JTAG Engine Reset) oder SRST (Prozessor Reset). Zudem gibt es 
oft noch einen Output Enable für die JTAG Signale. Das alles ist nicht 
standardisiert, jeder Hersteller machst das anders, auch wenn alle den 
gleichen Chip benutzen.

> Kann ich dann die Signale einfach wie hier beschrieben:
>
> http://www.mikrocontroller.net/articles/JTAG
>
> auf Wannenstecker verdrahten (also immer wieder zum jeweiligen Pin
> abzweigen) ?

Im Allgemeinen: nein. Was die jeweilige Prozessor- oder FPGA-Architektur 
braucht, ist von Fall zu Fall unterschiedlich. Außerdem kann es sein, 
dass Du Pegelwandler brauchst, weil beispielsweise Spartan 3 2.5V-Pegel 
am JTAG erwartet, oder einige ARMs intern mit 1.8V Pegeln arbeiten.

fchk

von anfänger (Gast)


Lesenswert?

Danke für die Antworten!

Erik schrieb:
> Ja, aber ich würde mich da einfach ans Datenblatt halten:
> http://www.ftdichip.com/Support/Documents/DataSheets/ICs/DS_FT2232H.pdf
> Auf Seite 9 stehen die entsprechenden Pinbelegungen.

Oh jaa...
Hab da wohl vor lauter Informationen einfach nicht ins Datenblatt 
geschaut...
Wenns im Datenblatt steht isses dann wohl klare Sache :)

Frank K. schrieb:
> Im Allgemeinen: nein. Was die jeweilige Prozessor- oder FPGA-Architektur
> braucht, ist von Fall zu Fall unterschiedlich. Außerdem kann es sein,
> dass Du Pegelwandler brauchst, weil beispielsweise Spartan 3 2.5V-Pegel
> am JTAG erwartet, oder einige ARMs intern mit 1.8V Pegeln arbeiten.

Ok, danke für die Info!

von anfänger (Gast)


Lesenswert?

Endlich hab ich mal wieder Zeit damit was zu machen...

Es sind ein paar Fragen aufgetaucht, die ihr mir evtl. beantworten 
könnt....

Viele JTAG-Schnittstellen wollen einen TRST und einen nSRST.
Wie schließt man diese am besten an den FT2232H an?
Im Datenblatt werden nur TDI, DMS, TCK und TDO beschrieben, bzw. werden 
fest verdrahtet.
Die anderen werden mit irgendeinen GPIO verbunden oder?
Sollte man sich da an irgendwas halten, damit das auch mit den 
Standard-Programmen funktioniert (wie xc3sprog, openocd) ?

Hab hier auch einen Bauplan gefunden:

https://code.google.com/p/opendous/wiki/JTAG

Ist die Verdrahtung wie hier "Standard" ?

Schonmal Danke!

von anfänger (Gast)


Lesenswert?

Hab gerade einen interessanten Thread dazu gefunden:

Beitrag "JTAG-Adapter für ARM/Cortex-M3 (STM32) mit UART"

Dann wäre das Problem geklärt.

von anfänger (Gast)


Lesenswert?

Hmm... so ganz klar ist es mir doch noch nicht...

Legt man dann den TRST und den SRST auch auf nen Level-Shifter?
Hab davon gelesen, dass zumindest der SRST nur gegen Masse schalten 
soll.
Würde hier dann nur ein Transistor reichen der gegen Masse schaltet??

In vielen Schaltplänen die man so findet, wurde am FT2232H einige GPIO 
über Widerstände gegen Masse geschaltet oder auch miteinander gebrückt. 
Wo liegt da der Sinn darin?? (siehe auch: 
Beitrag "JTAG-Adapter für ARM/Cortex-M3 (STM32) mit UART" ). Warum wird auch der Reset 
wieder zurück auf einen GPIO geführt??

von anfänger (Gast)


Lesenswert?

Weiß wirklich keiner eine Antwort?

von anfänger (Gast)


Lesenswert?

Hab nun noch was gutes gefunden, für alle die auch vorhaben einen 
JTAG-Adapter auf Basis des FT2232H zu bauen:

http://dangerousprototypes.com/docs/Bus_Blaster_v1_design

Werde das nun so bauen.

von anfänger (Gast)


Lesenswert?

Weiß jemand einen Pegelwandler, aufgebaut wie der SN74AVC4T245, nur 5V 
kompatibel??
Einen SN74 LVC 4T245 gibt es scheinbar leider nicht...
Ist es eigentlich nötig die Enable Eingänge der Pegelwandler mit dem 
FT2232H zu verbinden? Was für einen Sinn hat das genau?

(Siehe den Link im letzten Beitrag)

von Thomas T. (knibbel)


Lesenswert?

Die SN74AVC4T245 gibt es noch. Such mal bei Mouser danach. Du hast 
wahrscheinlich nur die Buchstaben nach dem SN74 falsch übernommen...

Gruß,
Thomas

von anfänger (Gast)


Lesenswert?

Thomas T. schrieb:
> Die SN74AVC4T245 gibt es noch. Such mal bei Mouser danach. Du hast
> wahrscheinlich nur die Buchstaben nach dem SN74 falsch übernommen...

Ja den gibt es noch, nur leider ist der für einen Spannungsbereich von 
1.2-3.6V ausgelegt.
Ich bräuchte aber einen (eigentlich genau denselben Chip, mit sovielen 
Enables) der bis 5V geht.

In der SN74 LVC-Reihe gibt es leider nur 1,2,8,16 Bit (gehn bis 5V).

Weiß da jemand einen Chip?

von anfänger (Gast)


Lesenswert?

Hab nun nach langem suchen auch keinen Chip in der Richtung gefunden...

Aber ich hab mir was anderes überlegt:

TRST bzw. SRST sind ja beide low-active, also bei Masse-Potential gibts 
einen Reset.

Also genügt als Ausgang (verbunden mit dem JTAG-Connector) eigentlich 
nur ein Transistor der gegen Masse schaltet (Open-Kollektor).
Als Ansteuerschaltung für den Transistor reicht ja nun, die Signale ^OE 
und den TRST/SRST Ausgang des FT2232H mit einem NOR zu verknüpfen und 
das Ausgangssignal des NORs mit dem Transistor zu verbinden. Lieg ich da 
richtig? Kann das nochmal jemand überprüfen?

Schonmal besten Dank!

von anfänger (Gast)


Lesenswert?

Weiß über das Thema wirklich niemand Bescheid?

von anfänger (Gast)


Lesenswert?

Wie schnell muss TRST schalten können?

Ich nehm mal an, dass es bei TSRST nicht um Geschwindigkeit geht, da 
dieser während der Kommunikationsphase mit JTAG permanent auf Masse 
liegt?

Weiß jemand dazu ein paar Informationen? Im Netz finde ich nichts 
brauchbares...

von Uwe Bonnes (Gast)


Lesenswert?

anfänger schrieb:
> In der SN74 LVC-Reihe gibt es leider nur 1,2,8,16 Bit (gehn bis 5V).

Als Single Gate Typen, z.B. SN74LVC1G45 koennen die Teile auch mit 5 
Volt versorgt werden.

von anfänger (Gast)


Lesenswert?

Das Problem ist, dass ich bei denen noch einen Enable-Eingang bräuchte, 
damit ich den Ausgang auf Z schalten kann.

Ich könnte es auch so machen, dass ich dann quasi zuerst die Signale mit 
den SN74LVCxxx auf einen anderen Pegel bringe und danach einfach einen 
74HC125 schalte, das müsste dann gehn...

von anfänger (Gast)


Lesenswert?

Hab noch eine andere Möglichkeit gefunden.
Ich kann auch den TXB0101 nehmen.
Weiß da jemand was von hohen Eingangsströmen, da ja im Artikel 
http://www.mikrocontroller.net/articles/Pegelwandler
darauf hingewiesen wird, da dieser ja keinen DIR Eingang besitzt.

Dafür müsste ich das EN-Signal invertieren, damit dies wieder mit den 
Standards läuft.

Ich fasse nochmal zusammen...
Also entweder Lösung mit SN74LVC1T45 + nachgeschaltetem 74HC125
oder:
TXB0101 + Inverter

von Calvin (Gast)


Lesenswert?

@anfänger:

Welche Chips willst Du denn mit dem fertigen Gerät programmieren bzw. 
debuggen?

Die JTAG-Implementierungen, die ich bisher gesehen habe, verwenden TRST 
und nSRST gar nicht. Dort wird der Reset über '11111' an TMS gemacht.

Und Chips mit JTAG und 5V only, sind mir auch noch nicht begegnet.
(Wenn ich JTAG bei AVR's gebraucht habe, liefen die mit 3,3V.)

Grüße, Calvin

von anfänger (Gast)


Lesenswert?

Hallo,
danke für die Infos!
Ich hätte da an CPLDs+FPGAs, ARMs und Mikrocontroller gedacht.
Ich wollte den Adapter möglichst universell gestalten.

Viele Grüße

von Calvin (Gast)


Lesenswert?

anfänger schrieb:
> Ich hätte da an CPLDs+FPGAs, ARMs und Mikrocontroller gedacht.
> Ich wollte den Adapter möglichst universell gestalten.
Da hast Du das Problem der Softwareunterstützung.
openocd und xc3sprog können mit dem FTDI-Chip umgehen. Damit kann man 
die Chips programmieren. Die jeweilige Toolchain muß die entsprechenden 
Programmierfiles ausgeben. Debugging wird damit aber eher schwierig, 
weil die Hersteller ihre Software auf ihre eigene Programmierhardware 
abstimmen.

Um einfach mal anzufangen würde ich den FTDI-Chip mit 3,3V IO-Spannung 
betreiben und 200 Ohm in die Ausgangsleitungen (TMS, TCK, TDI) machen, 
als Strombegrenzung für 2,5V-Devices.

Am Ende kostet das Ding ja nicht die Welt, auch wenn es für einen 
Controller doch nicht passen sollte.

Grüße, Calvin

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.