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
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
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
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.
Mein Gott, bei DEN Preisen für so einen popeligen XDS100
Programmieradapter ist doch jegliches Nachdenken über selbstgebaute
Adapter oder gar Software reinste Zeitverschwendung!
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.
@ 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.
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
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
@ 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.
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!
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