Forum: Mikrocontroller und Digitale Elektronik TMS320F28xxx über JTAG durch FT2232H


von Christian I. (christianillig)


Lesenswert?

Hiho Forengemeinde,

zunächst eins, ja ich habe die anderen Posts gelesen zu dem Thema aber 
trotzdem bleiben diverse Fragen für mich übrig.

Was habe ich vor:

Verwendung des FT2232H zum direkten programmieren für einen TMS320F28069 
unter Verwendung des JTAG's durch CCS.

Probleme:
Alle Leitungen sind mir soweit klar die ich anschließen muss. TDI / TDO 
 TMS  TCK sind bereits verbunden, aaaaaber was mache ich mit dem Reset 
?!?!

In diversen schematics von evaluations boards habe ich gefunden das 
Reset direkt auf den Pin danach gelegt wird ( also bei dem FT2232H auf 
die 20 ).

Nur steht weder im Datenblatt noch sonst wo was vom Reset was wohl von 
den unterschiedlichen JTAG Standarts einfach der Fall ist.

Der Chip hat ja in der JTAG Konfiguration noch diverse GPIO's die noch 
ein H und L tragen, heißt das das diese während der Programmierung auf 
High und Low gezogen sind ? Denn das steht auch nicht im Datenblatt oder 
ich bin blind.

Nun dachte ich mir das ich durch das aufzuspielende EEPROM diese Frage 
lösen kann und habe das FTProg geladen, aber witziger Weise gibts da 
drin gar kein JTAG als Auswahlmöglichkeit, was mir das ganze noch 
undurchsichtiger macht.


Ich hoffe ich konnte mein Problem konkret genug schildern.

Mfg Christian

von Frank K. (fchk)


Lesenswert?

Das TI-Teil dafür ist der XDS100. Für den gibt es auch einen Schaltplan.

Siehe processors.wiki.ti.com/index.php/XDS100

Der FTDI-Chip wird vom Treiber in den JTAG-Modus geschaltet. Die nicht 
direkt für JTAG benötigten Pins sind GPIOs, die durch den Treiber 
gesetzt werden. Je nach Prozessor ist eine unterschiedliche Beschaltung 
weiterer Signale erforderlich, was Du daran siehst, dass es den XDS100 
in mehreren Revisionen gibt, wobei nur die neueren alle 
Prozessorarchitekturen unterstützt. Der XDS100v1 kann zB kein ARM.

fchk

von Christian I. (christianillig)


Lesenswert?

Naja anhand des Schaltplanes sitzt da ein Xilinx dazwischen wo ich nicht 
weis welche Funktion der erfüllt, denn in der Referenzschaltung vom 
FT2232H wird sowas gar nicht benötigt.

Und TDI  TDO  TMS / TCK kann man ja direkt verbinden, es fehlt ja wie 
gesagt nur der Reset, der bedient wird.

Ich besitze so nen XDS100 aber ich würde gern einfach das USB Kabel 
nehmen und mit der Platine verbinden und alles ist gut.

Wenn du sagst der Treiber setzt den Chip in JTAG, warum brauch ich dann 
den EEPROM ?

Danke im Voraus

von Joerg W. (joergwolfram)


Lesenswert?

Soweit ich weiß, muß die Flash-Programmierung des TMS extern getimt 
werden. Das wird dann wohl der FPGA (beim Olimex XDS100v3 ein Actel) 
erledigen. Aus diesem Grund gibt es auch keine Programmier-Spezifikation 
(Register etc.) sondern nur einen Binär-Blob, der als C-Library 
angesprochen wird. Von daher benutze ich den SCI-A Boot. Damit wird ein 
kleines Assembler-Programm in das M0-SARAM geladen und gestartet. Das 
schaltet dann ggf. die Security aus und lädt dann den zweiten Teil 
(C-Programm) in das L0-SARAM. Dieses nutzt dann letztendlich die 
TI-Bibliothek um den Flash zu programmieren. Das ist zwar etwas 
unständlich, braucht aber keine spezielle Hardware.

von Falk B. (falk)


Lesenswert?

Mein Gott, bei DEN Preisen für so einen popeligen XDS100 
Programmieradapter ist doch jegliches Nachdenken über selbstgebaute 
Adapter oder gar Software reinste Zeitverschwendung!

von Christian I. (christianillig)


Lesenswert?

Es geht mir doch nicht um den Preis!

Aber wenn so ein Chip auf dem Markt ist der angeblich relativ einfach 
JTAG kann, dann ist für mich die Auffassung : Chip nach Referenz auf die 
Leiterplatte, das FTProg angeschürt bzw Treiber auf den Rechner und dann 
einfach mit CCS das Ding programmieren.

Das was Joerg beschrieben hat ist für mich für das was ich damit 
erreichen will zum umständlich.

Mir fehlt doch nur eine Leitung....

Das muss doch realisierbar sein.

von Falk B. (falk)


Lesenswert?

@ Christian Illig (christianillig)

>Es geht mir doch nicht um den Preis!

Worum dann?

>Aber wenn so ein Chip auf dem Markt ist der angeblich relativ einfach
>JTAG kann,

JTAG an sich ja, aber die softwareseitige Anbindung (TREIBER) ist bei 
fast allen JTAG Adapten VERSCHIEDEN. Das ist arg komisch und eigentlich 
Unsinn, praktisch aber Realität. Ein JTAG-Adapter von TI kann keine 
JTAG-Software von Atmel ansteuern. Das liegt nicht am JTAG sondern in 
der darüberliegenden Treiberebene.

> dann ist für mich die Auffassung : Chip nach Referenz auf die
>Leiterplatte, das FTProg angeschürt bzw Treiber auf den Rechner und dann
>einfach mit CCS das Ding programmieren.

Dem ist nicht so. Siehe oben!

>Das was Joerg beschrieben hat ist für mich für das was ich damit
>erreichen will zum umständlich.

Was willst du denn erreichen? den IC per CCS anzusprechen. Eben DAS 
macht ein fertigen Adapter ala XDS100 aus der Kiste. Der wurde exta als 
kostengünstige Alternative erfunden.

>Das muss doch realisierbar sein.

Kauf dir ein XDS100.

von Frank K. (fchk)


Lesenswert?

Christian Illig schrieb:
> Naja anhand des Schaltplanes sitzt da ein Xilinx dazwischen wo ich nicht
> weis welche Funktion der erfüllt, denn in der Referenzschaltung vom
> FT2232H wird sowas gar nicht benötigt.

Meines Wissens ist beim XDS100v1 kein CPLD vorhanden, das ist erst bei 
v2 und v3 dazu gekommen. Welche Version hast Du?

Für die 28xx'er reicht Version 1. Besorge Dir davon den Schaltplan.

> Wenn du sagst der Treiber setzt den Chip in JTAG, warum brauch ich dann
> den EEPROM ?

Im EEPROM sitzt die USB PID/VID, Konfigurationsinfos für den Chip im 
UART-Modus sowie ein Bit, das angibt, ob der Treiber den Chip im VCP 
oder im D2xx-Modus enumerieren soll.

fchk

von Frank K. (fchk)


Lesenswert?

So, ich habe mir den Schaltplan für den XDS100v1 von TI besorgt, und es 
ist definitiv kein CPLD drauf, sondern alles diskrete Logik, die Du 
problemlos nachbauen kannst. Quasi Copy&Paste.

Der XDS100v1 benutzt nicht den FT2232H, sondern den FT2232C. Das ist ein 
ganz anderer Chip, anderes Pinout, Full Speed statt High Speed etc etc. 
Du solltest den trotzdem verwenden, um eben XDS100v1 Kompatibilität zu 
haben, um auf das CPLD verzichten zu können.

Oder: Schau Dir das an:
http://web.eecs.umich.edu/~hero/EE452/Labs/Docs/usbstk5515_Schematics_RevA.pdf
Auf der letzten Seite ist ein XDS100v1 drauf, in vereinfachter Form, 
weil hier die Pegelwandler etc und die EMU0/EMU1 Signale nicht benötigt 
werden. Das 1:1 abzupinnen sollte im Bereich Deiner Möglichkeiten 
liegen.

Dann sagt TI:
EEPROM needs to be programmed for VID 0403 PID A6D0. The device name 
string should be, “Texas Instruments Inc. XDS100 Version 1.0”.

fchk

von Falk B. (falk)


Lesenswert?

@ Frank K. (fchk)

>problemlos nachbauen kannst. Quasi Copy&Paste.

Und was hat er dabei gewonnen?

https://www.olimex.com/Products/DSP/Emulators/TMS320-JTAG-USB/

Wem das zu teuer ist, kauf ein (subventioniertes) C2000 Lauchpad, dort 
ist ein XDS100 incl. galvanischer Trennung drauf, und das für schlappe 
20 Euro.

von Christian I. (christianillig)


Lesenswert?

Frank K. schrieb:
> So, ich habe mir den Schaltplan für den XDS100v1 von TI besorgt, und es
> ist definitiv kein CPLD drauf, sondern alles diskrete Logik, die Du
> problemlos nachbauen kannst. Quasi Copy&Paste.
>
> Der XDS100v1 benutzt nicht den FT2232H, sondern den FT2232C. Das ist ein
> ganz anderer Chip, anderes Pinout, Full Speed statt High Speed etc etc.
> Du solltest den trotzdem verwenden, um eben XDS100v1 Kompatibilität zu
> haben, um auf das CPLD verzichten zu können.
>
> Oder: Schau Dir das an:
> http://web.eecs.umich.edu/~hero/EE452/Labs/Docs/usbstk5515_Schematics_RevA.pdf
> Auf der letzten Seite ist ein XDS100v1 drauf, in vereinfachter Form,
> weil hier die Pegelwandler etc und die EMU0/EMU1 Signale nicht benötigt
> werden. Das 1:1 abzupinnen sollte im Bereich Deiner Möglichkeiten
> liegen.
>
> Dann sagt TI:
> EEPROM needs to be programmed for VID 0403 PID A6D0. The device name
> string should be, “Texas Instruments Inc. XDS100 Version 1.0”.
>
> fchk

Kannst du mir auch verraten warum ich bei dem FT2232H den Logikchip 
bräuchte und beim FT2232C nicht?

Den Schaltplan hatte ich bereits auch schon so gefunden, aber was mir 
halt noch nicht einleuchtet wie PIN 20 als Reset gesteuert wird, bzw an 
welcher Stelle ich das dem Chip begreiflich mache den eigentlich steuert 
doch der EEPROM dessen Funktionalität, d.H. der braucht erstmal eine 
Konfiguration durch das FTProg um zu funktionieren wie er soll, aber wie 
bereits erwähnt gibt es da keine JTAG Einstellmöglichkeit.

Und laut Datenblatt braucht er für JTAG einen EEPROM, da ja JTAG Teil 
des MPSSE ist.

Der JTAG Wandler soll direkt auf die Leiterplatte wo er beide ihm 
angeschlossene µC mit Programmcode versorgen soll, er hat ja 2 Ausgänge.

Bei anderen Platinen von uns wäre nur 1 µC angeschlossen.

Warum will ich kein Kaufteil? Ganz einfach, erstens will ich was dazu 
lernen und zweitens bin ich Mitglied eines Formula Student Teams und wir 
würden gerne "einfach" ein USB Kabel in die Hand nehmen und an die 
jeweilige Platine knüpfen um die zu Programmieren. Bis dato haben wir 
Atmel genommen und haben durch den häufigen Einsatz Probleme mit dem 
Flachbandkabel bekommen welches direkt am Stecker Kabelbrüche hatte.

Desweiteren waren meist die Debugger entweder verlegt oder nicht in 
ausreichender Zahl vorhanden, somit stellt für uns so eine Chip Lösung 
etwas feines dar.

Ich hoffe jetzt versteht ihr warum die Kauflösung für uns nicht 
unbedingt das non-plus-ultra ist obwohl es evtl. nur 1cent kostet.

Danke für eure Antworten!

von Frank K. (fchk)


Lesenswert?

Christian Illig schrieb:

> Kannst du mir auch verraten warum ich bei dem FT2232H den Logikchip
> bräuchte und beim FT2232C nicht?

Falsche Frage. Die richtige Frage lautet: Wieso ist beim XDS100v2 ein 
CPLD drauf und beim XDS100v1 nicht?

Antwort: Das CPLD wird zum einen als Level Shifter benutzt, und dann ist 
da noch etwas Logik drin, die teilweise beim XDS100v1 als extra 
Logikchips mit drauf ist. Heißt also: 1. Kostenersparnis durch weniger 
Bauteile und 2. Unterstützung zusätzlicher Prozessorarchitekturen 
(insbesondere ARM9 und Cortex A8, die haben unter anderem ein 
zusätzlichen RTCK (JTAG Return Clock)), und das braucht zusätzliche 
Logik, die Du nicht brauchst. Für Dich reicht der XDS100v1, und deswegen 
solltest Du ihn kopieren. Pegelwandler etc brauchst Du ja nicht.

> Den Schaltplan hatte ich bereits auch schon so gefunden, aber was mir
> halt noch nicht einleuchtet wie PIN 20 als Reset gesteuert wird

Das ist ein reiner GPIO, der nicht durch die MPSSE, sondern durch die 
Debuggersoftware gesteuert wird.

> Und laut Datenblatt braucht er für JTAG einen EEPROM, da ja JTAG Teil
> des MPSSE ist.

Hier ist nur wichtig, dass der JTAG nicht als virtueller COM-Port 
enumeriert wird und im USB unter der richtigen VID/PID auftaucht.

> Der JTAG Wandler soll direkt auf die Leiterplatte wo er beide ihm
> angeschlossene µC mit Programmcode versorgen soll, er hat ja 2 Ausgänge.

nein, der hat nur genau eine MPSSE und einen JTAG-Port. Wenn Du mehrere 
Prozessoren dort hast, musst Du eine JTAG-Kette bilden. Was für ein 
Prozessor ist der andere?

> Warum will ich kein Kaufteil? Ganz einfach, erstens will ich was dazu
> lernen

Hier musst Du nur 1:1 abpinnen, damit es funktioniert, und ja nicht zu 
viel denken, denn dann kommst Du auf dumme Ideen, und dann ist es nicht 
mehr 100% XDS100v1 kompatibel, und dann funktioniert der Code Composer 
nicht mehr.

fchk

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.