Hallo, vor ein paar Tagen habe ich einen JTAG Stecker mit einem 10-Poligen Format vorgestellt. Siehe hier: http://www.mikrocontroller.net/articles/STM32#Der_10polige_JTAG-Stecker_von_mmvisual Nun gibt es ja nichts naheliegenderes als einen JTAG-Adapter der ebenfalls diesen 10-Poligen Stecker bietet, so dass man kein Adapterstück basteln muss. Ich habe im Internet diverse Open-Source Adapter gefunden, alle mit einem FTDI2232 drauf und darauf hin diesen Plan erstellt. Kann bitte jemand einen Blick drauf werfen ob ich nichts vergessen habe? Die Platine wäre übrigends 42x26mm klein. Vielen Dank im Voraus.
1. Du hast den FT2232D verwendet. Warum nicht gleich den FT2232H mit USB 2.0 Hi-Speed? Das flutscht dann doch gleich besser. 2. Ich hätte auf der Rückseite eine Groundplane vorgesehen, der Betriebssicherheit wegen. 3. Für welche Target-Spannungen soll das Teil arbeiten? Was passiert, wenn Du auf ein Target mit 1.8V oder gar eines mit 5V (z.B. Toshiba) triffst? Erste Folge: die LEDs leuchten nicht mehr. Ich hab jetzt nicht in die Datenblätter geschaut, aber Vorsicht ist besser. Andere Leute arbeiten mit separaten IO-Treibern bzw Level-Shiftern. Damit hast Du dann auch den Vorteil, daß es Dir im Fehlerfall nicht den FTDI-Chip für 10 Euro, sondern nur einen Treiber im Cent-Bereich zerhaut. Die Treiber sind auch ESD-mäßig deutlich unempfindlicher. Amontec nimmt z.B. Fairchild NC7SZ125 - ich habe 9 Stück gezählt. 4. Hat das einen Grund, warum Du /RESET einmal auf AD7 und einmal über den 125'er führst? Zum Zurücklesen? Dann hätte ich den Pfeil des Labels umgedreht, damit man auch sieht, daß es ein Input ist. 5. Ich würde an den USB-Eingang Schutzdioden hängen, je eine Diode an D+ und D- in Sperrrichtung nach Gnd und 3.3V. Am platzsparendsten ist eine BAV99S oder eine BAS70XY, da sind vier Dioden in einem kleinen SOT363 Gehäuse. fchk
Ich habe die Seite wieder gefunden, von der her ich das Design für den Aufbau habe: http://www.joernonline.de/ Daraus habe ich den Umbau auf den 10-Poligen JTAG vor. Also es ist garantiert keine "Neuerfindung" von mir. Das hat natürlich auch weitere Vorteile: - Die Daten für das EEPROM sind auch frei verfügbar - OpenOCD unterstützt diesen JTAG als "oocdlink.cfg" Er verwendet in dem Board OOCDLinkP den gleichen Chip. Die Eagle Dateien kann ich nicht lesen. Was müsste ich denn ändern um den H-Chip verwenden zu können? GND hab ich natürlich massig dran, aber für den Screenshot ausgeblendet, sonst sieht man nur noch schwarz. Als Spannung habe ich 3,3V/ 5V im Sinn. So wie bei einem Standard-Cortex-M3 / STM32 oder LPC2000 ARM7. Das reicht in der Regel für die Hobby-Anwenungen aus. (Die Profis nehmen sowiso einen J-Link oder ähnlich...) Eine Schutzdiode ist drin, die schützt bei Überspannung und Verpolung auf der Versorgungsleitung. (ganz links die D4) In dem Plan ist auch der Reset auf den Pin des FTDI Chips gelegt, also hab ich es übernommen. Wenn ich die USB Leitungen schützen würde, dann würde ich PESD5V0U2BT verwenden. Das ist extra ein Chip für USB spezifiziert (und ich habe massig davon in der Kiste). Aber ich denke mit der D4 bin ich erst mal gut bedient. Edit, ich hab die PESD5V0U2BT mal eindesignt. Ich muss die ja nicht unbedingt bestücken, aber ist mal Vorgesehen.
Markus Müller schrieb: > Ich habe die Seite wieder gefunden, von der her ich das Design für den > Aufbau habe: > http://www.joernonline.de/ > Er verwendet in dem Board OOCDLinkP den gleichen Chip. Die Eagle Dateien > kann ich nicht lesen. Was müsste ich denn ändern um den H-Chip verwenden > zu können? Ziehe Dir das Datenblatt zum F2232H bei FTDI. Da steht alles drin. Es wird ein komplett anderes Layout, weil es jetzt ein TQFP64 ist, intern mit 1.8V arbeitet und einen 12 MHz Quarz gibt. Schau rein, dann ist alles klar. > Als Spannung habe ich 3,3V/ 5V im Sinn. So wie bei einem > Standard-Cortex-M3 / STM32 oder LPC2000 ARM7. Das reicht in der Regel > für die Hobby-Anwenungen aus. (Die Profis nehmen sowiso einen J-Link > oder ähnlich...) Na, paß auf. Der rend zu niedrigeren Spannungen hält an, und gerade für Bastler solltest Du den FTDI-Chip schützen. Besser is das. > Wenn ich die USB Leitungen schützen würde, dann würde ich PESD5V0U2BT > verwenden. Das ist extra ein Chip für USB spezifiziert (und ich habe > massig davon in der Kiste). Ja, oder so. Den hatte ich noch nicht auf meiner Zutatenliste.
Ja, da sind dennoch einige Unklarheiten. Die 4 JTAG Pins sind ja definiert, aber die anderen Reset, TRST usw. sind frei auf einen der GPIO Ports gelegt. Jetzt weiß ich nicht welche IOs ich wie verschalten muss damit es klappt mit einem bestehenden USB Treiber und OpenOCD. Ich würde schon gerne ein bestehenden OpenSource-JTAG verwenden, nur halt mit dem Umbau auf den 10-Poligen Stecker mit UART. (Im http://www.joernonline.de/ gibt es ja eine Variante mit dem H-Chip, leider ist der Plan für mich nicht lesbar) Und wenn ich das Datenblatt der H-Variante richtig gelesen habe, kann der VCCio nur bis zu 3,63V, also wäre ein Gatter Nachfolgend für die Spannungsanpassung an 5V obligatorisch. Der H-Pegel wird auch nur bis 2,0V erkannt. Als ESD Schutz bei den Eingängen gäbe es auch das Bauteil PRTR5V0U4Y von NXP. PS: Als USB Schutz kann man nicht jede beliebige Diode verwenden. Wenn da die Kapazität zu groß ist geht der USB Port nicht mehr.
Markus Müller schrieb: > Ja, da sind dennoch einige Unklarheiten. Die 4 JTAG Pins sind ja > definiert, aber die anderen Reset, TRST usw. sind frei auf einen der > GPIO Ports gelegt. > Jetzt weiß ich nicht welche IOs ich wie verschalten muss damit es klappt > mit einem bestehenden USB Treiber und OpenOCD. Es gibt dafür bei FTDI2232-basierten Adaptern meines Wissens keinen Standard. Daher sind bei OpenOCD auch diverse Adapter einstellbar, obwohl in diesen intern ein FT2232x steckt. Im Quellcode von OpenOCD kann man nachsehen, welche Pins des FTDI-Chips bei z.B. Olimex ARM-JTAG oder Amtontec JTAGkey mit /SRST und /TRST verbunden sind (Datei ft2232.c o.ä.). Amontec gibt diese Informationen w.r.e. auch auf deren Webseite an. Ich würde eine Belegung wählen, die mit den gebräuchlicheren Adaptern übereinstimmt (z.B. Amontecs JTAGkey). RTCK ist eine neue Funktion des FT2232H, dafür ist wahrscheinlich ein extra Pin reserviert. Wenn man aber noch einen UART über die 10 Pole rauschleifen will, dürfte für RTCK eh keine Leitung mehr frei sein. > Ich würde schon gerne ein bestehenden OpenSource-JTAG verwenden, nur > halt mit dem Umbau auf den 10-Poligen Stecker mit UART. (Im > http://www.joernonline.de/ gibt es ja eine Variante mit dem H-Chip, > leider ist der Plan für mich nicht lesbar) > > Und wenn ich das Datenblatt der H-Variante richtig gelesen habe, kann > der VCCio nur bis zu 3,63V, also wäre ein Gatter Nachfolgend für die > Spannungsanpassung an 5V obligatorisch. Der H-Pegel wird auch nur bis > 2,0V erkannt. Auch darin unterscheiden sich die Adapter trotz FT2232-Gemeinsamkeiten. Die Levelshifter im JTAGkey (werden mit 1,8V-compatible beworben) wurden breits genannt. Mit heftigem Suchen im Netz findet man auch nachgezeichnete Schaltpläne von U- und JLINK, an denen man sich mglw. im Bereich Levelshifting etwas abschauen kann. Core und TAP-Reset habe ich in Wiggler-Schaltplänen oft als Open-Collector/Open-Drain gesehen (mit Transistor/FET). Falls der Levelshifter Ausgänge "tri-staten" kann, braucht man evtl. kein extra Bauteil dafür, ansonsten würde ich schon vorsehen, dass /SRST nur "low gezogen" werden kann. Bei TRST bin ich mir grade nicht sicher, kann mglw. direkt auch an einen Push-Pull Ausgang. Es gibt auch viele kleine Unterschiede bei der Ansteuerung über JTAG verschiedener Controller mit ARM-Core. Oft kann man auf TRST und manchmal auch SRST verzichten (Bei LPC2k braucht man w.r.e beides). RTCK ist optional aber auch praktisch, wenn der Controller es unterstützt. > Als ESD Schutz bei den Eingängen gäbe es auch das Bauteil PRTR5V0U4Y von > NXP. > > PS: Als USB Schutz kann man nicht jede beliebige Diode verwenden. Wenn > da die Kapazität zu groß ist geht der USB Port nicht mehr. Hat FTDI betr. FT2232 USB-Anschaltung nicht einige Kochrezepte in AppNotes wie bei den anderen USB-Chips auch?
Ich habe jetzt einige Stunden das Internet durchwühlt und nur einen einzigen Chip gefunden, der einen echten Pegelwandler drin hat und zwischen 1,5V und 5,5V funktioniert. http://www.nxp.com/documents/data_sheet/74LVC4245A.pdf Davon braucht es zwei, je Richtung einen. Um die Reset Logik auf der Steite Vtarget zu generieren gibts den Chip: http://www.nxp.com/documents/data_sheet/74LVC2G125.pdf oder http://www.fairchildsemi.com/ds/NC%2FNC7SZ125.pdf Der geht von 1,65V...5,5V Davon braucht es zwei Gatter, je Reset einen. Was meint Ihr?
Beim Basteln den Serial Wire Debug einrechnen. Dazu muss SWDIO bidirektional sein, was nicht alle FT2232 Varianten drauf haben.
Hier wäre noch einer, ähnlich dem 74LVC4245A. http://www.fairchildsemi.com/ds/FX/FXMA108.pdf Von OnSemi gibt es Bidirektionale Leve-Translators: http://www.onsemi.com/pub_link/Collateral/NLSX3012-D.PDF Allerdings klappen die nicht mit dem Spannungsbereich. Der hier sieht besser aus: http://www.nxp.com/documents/data_sheet/GTL2003.pdf Benötigt aber Pull-Up Widerstände, was bei großer Geschwindigkeit auch schwierig ist. Bei diesen komischen Chips habe ich immer Bauchschmerzen bzgl. Bezugsquelle.
Hier ist noch ein Bidirektional: http://www.analog.com/static/imported-files/data_sheets/ADG3300.pdf oder http://www.analog.com/static/imported-files/data_sheets/ADG3308_3308-1.pdf >For proper operation, VCCA must always be less than VCCY Also muss ich den FTDImit 5V VccIO betreiben und die A-Seite ist die der JTAG Seite. Das müsste doch gehen oder?
Der Turtelizer funktioniert nicht richtig mit 1,8V Cores. Denn: Beim FT2232 sind die VDDIO mit 5V verbunden. Die 74125 Chips laufen mit der Spannung des Cores (1,8V). Insbesondere der IC6. Also wenn der bei Hi-Pegel nur 1,8V aus gibt, dann erkennt der FT2232 da noch lange keinen Hi-Pegel.
Ist aber fies, der FT2232H kann am VDDio keine 5V. Also nochmals grübeln... 2 Stück ADG3300 hintereinander ist auch irgendwie doof.
So, die Platine ist angekommen und ich habe die mal zusammen gelötet. Doch mit dem Treiber habe ich noch meine Probleme. Ich habe als EEPROM Datei die vom Typ "OOCDLink" genommen, aber der möchte mir einfach keinen COM-Port machen. Der Port A trägt er als JTAG OOCDLink ein. Für den Port B hatte ich einen COM Port im Gerätemaneger erwartet, aber es erscheint nur ein USB-Controller eintrag. Ich bin mal hergegangen und habe mal selbst versucht einen FTDI-Treiber INF-Datei an zu passen aber der mag einfach den zweiten Port nicht. Anbei die INF-Datei. Danke für eure Hilfe.
@mmvisual welches Betriebssystem verwendest du? ich hab probleme mit x64 Systemen festgestellt, dort wird JTAG zwar erkannt aber kein wirklicher treiber erkannt - versucht man den von FTDI zu installieren ist dies ebenfalls erfolglos. Unter windows Xp 32Bit wird JTAG reibungslos erkannt. Da ich die verwendete Platin leider nicht selsbt erstellt und konfiguriert habe kann ich dir sonnst leider nicht weiterhelfen gruß timmey
Ich habe XP32. Der JTAG wird erkannt und installiert, aber der Treiber für Port B, also den möchte ich als RS232 betreiben, wird nicht installiert. Anbei ein Bild wie der Geräte-Manager dann aus sieht. - Der OOCDLink ist da - Das USB-Verbundgerät erscheint auch Aber unter "Andere Geräte" steht der OOCDLink. Und das sollte die serielle Schnittstelle werden und sich unter "Anschlüsse (COM und LPT)" eintragen.
Ich habe mal einen Treiber von Olimex genommen und meine VID/PID rein geschrieben. Jetzt hat der den JTAG und Seriell zwar installiert, aber der COM-Port geht immer noch nicht, zumindest kommen keine Daten. OpenOCD mag den Treiber auch nicht. Die neue OpenOCD Version nutzt einen LibUSB-Treiber, der allerdings macht mit keinen COM-Port, bzw. nur einen beim Olimex ARM-USB-OCD. Also ich bräuchte das gleiche wir für den Olimex, nur mit der ID des OOCDLink Adapters. In der INF Datei von LibUSB (OpenOCD) habe ich keinen Hinweis gefunden warum für den Olimex ein COM Port gemacht wird. Kann mir hier jemand weiter helfen?
Jetzt empfagnge ich Daten vom COM Port. Ich habe den JTAG Treiber von FTDI gelöscht unf dann den von LibUSB installiert. (Den COM Port Treiber von FTDI gelassen) OpenOCD startet und bleibt an, also der JTAG wird vom OpenOCD erkannt. Aber, mein Prozessor nicht. Ich bin mir nicht sicher ob sich da noch was beißt.
Bei mir sieht das ganze so aus - wie erwähnt win7 x64
Die Teile haben ein gelbes Ausrufezeichen in Deiner Grafik. Also der USB Treiber wurde nicht richtig installiert und funktioniert nicht. Was ist das für eine JTAG Platine?
ist von unserer Schule ne lehrplatine mit nem Xe164 (infineon) drauf der (jtag?)chip ist ein ft2232D (soviel hab ich mittlerweile herrausgefunden). ich hab leider nicht viel ahnung über den aufbau der platine nur einige ports sind mir bekannt. hier noch ein bildchen von dem ding :-D http://img69.imageshack.us/img69/1469/platine.jpg
Mit der rechten Maustaste auf dieses Gerät kommen die Eigenschaften des Treibers. Unter Details müsste die USB VID und PID (zwei 16 Bit Hex Zahlen) zu sehen sein. Nun muss Du eine INF Datei finden, in der auch diese VID und PID Nummer drin steht, dast ist dann der richtige Treiber. Diesen falsch installierten Treiber kann mit der ENTF-Taste gelöscht werden, dann kann bei erneutem Einstecken der richtige Treiber installiert werden.
ich versuch nochmal mein glück... danke für den tipp
ich hab jetz zumindest mal ne serielle verbindung - das reicht mir :-) hab dazu den treiber von ftdi heruntergeladen und mir einen "Konfigurationssatz" aus der ftdibus.inf Herrausgepickt in meinem fall war das der: %USB\VID_0403&PID_6010&MI_01.DeviceDesc%=FtdiBus.NTamd64,USB\VID_0403&PI D_6010&MI_01 ich hab ihn abgeändert in: %VID_058B&PID_002A.DeviceDesc%=FtdiPort2232.NTamd64,FTDIBUS\COMPORT&VID_ 058B&PID_002A leider wurde der treiber dennoch nicht von meinem system bei "nimm treiber aus pfad" angenommen. daher habe ich manuelle treiberwahl und dann über "datenträger" die inf datei ausgewählt. nun kann ich eine verbindung zum virtuellen comport auf meiner platine zugreifn und daten empfangen/senden :-). Flashn geht trotzdem nich bzw is mir zu heikel das jetz mit der method auszuprobiern - sollte ja aber eigendlich auch funktioniern.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.