Ich komme bei userem Produkt leider nicht mehr um ein USB Firmwaredownloader herum. Bis jetzt habe ich immer einen Xilinx Programmer benutzt. Auf meinen Board war bis jetzt ein 14poliger Flachbandstecker. An diesen Flachbandstecker konnte ich den Xilinx Programmer anschließend und die Firmware auf einen XILINX XC16P hochladen. Der FPGA hat die Daten aus dem Xilinx Flash im Master Serial Mode geladen. Dies ist zwar nicht besonders schnell, zudem der Baustein auch im parallelen Mode betrieben werden kann. Für unser neues Gerät soll natürlich vieles anders werden :-) Es besitzt nur noch einen USB 2.0 Anschluss. Unser Gerät ist über ein USB Kabel an einen PC angeschlossen. Unser Gerät soll übers Internet wartbar sein. Daher greift der Support übers Internet auf den PC zu. Der Support startet dann das Xilinx Impact und lädt über das USB Kabel eine neue Firmware in den Flash Speicher. Den XILINX XC16P möchte ich auch ersetzen dieser ist von der Form viel zu groß und zudem auch zu teuer. Ich habe das Xilinx SP605 gekauft. Dort besteht ja die Downloadmöglichkeit über ein USB Kabel. Super dachte ich das kann man doch bestimmt benutzen. Demnach habe ich im Schaltplan nachgeschaut und festgestellt das ein Cypress USB Chip und ein Xilinx CPLD verbaut wurde. Beide Bausteine habe ca. 100Pins und sind von der Fläche auch sehr groß. Nun zu meiner Frage: Gibt es die Firmare für den Cypress USB Chip und dem Xilinx CLPD zum herunterladen oder muss ich diese selbst schreiben? Sind noch andere Lösungen bekannt wie ich die Firmware über ein USB Kabel in den FPGA Flash downloaden kann. Ich wollte es vermeiden selbst eine PC Software für den Download zu schreiben. sondern die IMPACT Software benutzen. So ein FTDI CHIP kann ja auch SPI so das ich einen USB auf SPI Converter benutzen kann. Jedoch befürchte ich das der Aufwand zu groß wird und ich dafür zu viel Zeit benötige.
Die Firmware gibts nicht direkt, nur reverse-engineert. Aber es geht viel viel einfacher: http://www.digilent.us/Products/Detail.cfm?NavPath=2,395,923&Prod=JTAG-SMT1 Das Ding einfach in dein Produkt integrieren. Seit ein paar Versionen von Impact wird das komplett unterstützt. Wir haben das jetzt auch in einem älteren Virtex 4 Gerät, welches bloß einen XCF32P im Master Serial Mode hat. Treiber wird bei Xilinx gleich mit installiert.
@Christian Du bist mein Held :-) Genau was ich gesucht habe. Habt Ihr schon Erfahrungen über die Zuverlässigkeit sammeln können? Es gibt von FTDI ja den FT2232H und den FT232H zur Auswahl. Ich bin mir noch nicht sicher ob ich den kleinen Chip verwende, da ich ja nur ein JTAG Interface verwende.
Naja, wenn du selbst den Chip drauf setzt, musst du ja noch das Ding quasi als Digilent Adapter vortäuschen. Ich weiß nicht, ob da VID/PID tauschen reicht. Wollte ich mal testen hier. Auf den Boards ist der 2232H drauf, und die gehen bisher ohne Fehler.
Ueber einen FT2232H kann man mit xc3sprog ueber JTAG direkt mit den Bitfile den FPGA, das Platformn Flash und SPI Flash programieren. Mit der anderen Schnittstelle kann man dann noch Daten mit dem PC austauschen, entweder seriell oder im FFIO Modus. Nur Chipscope geht nicht. Die Quellen sind frei.
Sebastian schrieb: > Für unser neues Gerät soll natürlich vieles anders werden :-) > > Es besitzt nur noch einen USB 2.0 Anschluss. Unser Gerät ist über ein > USB Kabel an einen PC angeschlossen. Habt Ihr einen externen Mikrocontroller oder nehmt Ihr einen Softcore? Ansonsten könnte ja auch der Mikrocontroller das FPGA booten, und Ihr wärt das Platform Flash los. fchk
Leider habe in den nächsten Tagen viel zu tun. Ich habe ein FT2232H mini Board bei mir im Regal liegen und könnte es mal ausprobieren. Ich wollte jetzt nicht von Digilent die Platine kaufen und diese auf mein Board löten. Ich würde aber ein EEPROM von Digilent kaufen und diesen dann auf das Board löten lassen. Es besteht beim FTDI Chip ja nur die Möglichkeit die VID und PID Nummer anzupassen. Somit verwendet der FTDI Chip dann die DIGILENT USB Treiber. Jedoch weis ich nicht wie diese dies dann abrechnen :-) Wie zuverlässig funktiniert denn die xc3sprog Software? Nicht das dort mal Fehler beim Doanload auftreten
Ich habe mal das FT2232H Mini Module an meine PC angeschlossen und anschließend IMPACT gestartet. Ich bekomme dann die Fehlermeldung das kein Kabel angeschlossen ist. Auch das Digilent Plugin erkennt kein Downloader. Ich werde mal so ein Digilent Downloader kaufen und dies mal ausprobieren.
Sebastian schrieb: > Ich habe mal das FT2232H Mini Module an meine PC angeschlossen und > anschließend IMPACT gestartet. > > Ich bekomme dann die Fehlermeldung das kein Kabel angeschlossen ist. > Auch das Digilent Plugin erkennt kein Downloader. Logisch, die nutzen ja auch eine eigene VID und PID. Eventuell haben die auch noch eine "lustige" Verschaltung auf dem Board... Ich kann ja mal den EEPROM Inhalt sichern und in ein FT2232 Mini Modul programmieren. Mal sehen was passiert.
Wenn du noch Impact durch das einfache Kommandozeilentool xc3sprog ersetzt, wird dein Leben noch einfacher. http://xc3sprog.sourceforge.net/
Hallo Rene ich habe mir das XC3sprog schon mal runtergeladen. Das mit der Kommandozeile hat mich zuerst mal abgeschreckt. Ich muss mal nach einem Tutorial suchen. @ Christan genau das hatte ich auch vor. Ich wollte den EEPROM inhalt auslesen und dann in den EEPROM vom FT2232H Mini Modul schreiben. Nur leider kommt mein Digilent Board erst morgen und da habe ich Urlaub, so das ich es erst am Dienstag testen kann.
René D. schrieb: > Wenn du noch Impact durch das einfache Kommandozeilentool xc3sprog > ersetzt, wird dein Leben noch einfacher. > > http://xc3sprog.sourceforge.net/ Einfacher ist relativ. Ich habe letztens ergebnislos versucht, xc3sprog unter Debian zu kompilieren. An irgendeiner FTDI Lib ist es immer gescheitert. Auf meine Anfrage auf der Mailinglist hat dann auch Keiner geantwortet. Somit habe ich dieses Kapitel wieder zu den Akten gelegt :(
T. M. schrieb: > Auf meine Anfrage auf der Mailinglist hat dann auch Keiner > geantwortet. Somit habe ich dieses Kapitel wieder zu den Akten gelegt :( Wo unter http://sourceforge.net/mailarchive/forum.php?forum_name=xc3sprog-users findet man Deine Problemschilderung?
Kriegt man xc3sprog unter Windows eigentlich auch mit der D2XX.dll zum laufen? Immer das Gefrickel mit LibUSB. Das ist dem Kunden nicht zumutbar, da auch andere USB Serial Wandler von FTDI im System sind, auf die sich dann u.U. auch der Filtertreiber setzt... Es gibt ja die -L Option, aber die scheint gänzlich ignorirt zu werden. (r401 package) Ich konnte jedenfalls das JTAG SMT1 nicht ansprechen. Mit LibUSB hat´s zumindest was getan, aber keine Kette gefunden. Eventuell muss da erst noch ein Enable an einem CBUS gesetzt werden?
Uwe Bonnes schrieb: > Wo unter > http://sourceforge.net/mailarchive/forum.php?forum... > findet man Deine Problemschilderung? Tja ehrlich gesagt, ich sehe sie auch nicht. Ich habe am 11. August eine Mail an xc3sprog-users@lists.sourceforge.net geschrieben mit folgendem Inhalt: " ... Hello, I've tried to build xc3sprog under my Debian Wheezy installation. After i have installed all the dependencies, i get following error when i try to build with 'cmake .' command: -- checking for module 'libftd2xx' -- package 'libftd2xx' not found I have installed the libfdt2xx Library which i've downloaded from the FTDI website. It's installed under /usr/local/lib/libftd2xx.so and /usr/lib/libftd2xx.so. The header file is under /usr/include. So, i don't know, why cmake complains about the libftd2xx package, do i have forgotten something? Thanks in advance for your help :) ..." Dann kam eine Mail von sourceforge, dass meine Mail von einem Moderator geprüft wird, da ich kein sourceforge Member bin. Und danach kam nie wieder was.
T. M. schrieb: > René D. schrieb: >> Wenn du noch Impact durch das einfache Kommandozeilentool xc3sprog >> ersetzt, wird dein Leben noch einfacher. >> >> http://xc3sprog.sourceforge.net/ > > Einfacher ist relativ. Ich habe letztens ergebnislos versucht, xc3sprog > unter Debian zu kompilieren. An irgendeiner FTDI Lib ist es immer > gescheitert. Auf meine Anfrage auf der Mailinglist hat dann auch Keiner > geantwortet. Somit habe ich dieses Kapitel wieder zu den Akten gelegt :( Es geht hier um diesen Treiber http://www.intra2net.com/en/developer/libftdi/ bei Suse und Fedora ist er einfach über den packagemanager installierbar. Suche einfach nach FTDI im packagemanager und installiere alles mit FTDI**. Bei Ubuntu müsste synaptic der packagemanager sein. Du brauchst auch das Devel package, da Headerfiles beim kompilieren eingebunden werden und diese nur bei dem devel package dabei sind.
T. M. schrieb: > I have installed the libfdt2xx Library which i've downloaded from the > FTDI website. It's installed > under /usr/local/lib/libftd2xx.so and /usr/lib/libftd2xx.so. The header > file is under /usr/include. Bei mir sieht es wie folgt aus: > ls -l /usr/local/*/*ftd2* -rwxr-xr-x ... /usr/local/include/ftd2xx.h -rw-r--r-- ... /usr/local/lib64/libftd2xx.a lrwxrwxrwx ... /usr/local/lib64/libftd2xx.so\ -> libftd2xx.so.1.0.4 -rwxr-xr-x ... /usr/local/lib64/libftd2xx.so.1.0.4 -rw-rw-r-- ... /usr/local/lib/libftd2xx.a lrwxrwxrwx ... /usr/local/lib/libftd2xx.so\ -> libftd2xx.so.1.0.4 -rwxr-xr-x ... /usr/local/lib/libftd2xx.so.1.0.2 -rwxrwxr-x ... /usr/local/lib/libftd2xx.so.1.0.4 Ausserdem braucht man auch -rwxr-xr-x ... /usr/local/include/WinTypes.h aus dem FTD2XX Verzeichnis Vergleiche es einmal, probiere es erneut und berichte bitte. Allerdings sollte die fehlende FTD2XX nicht fatal sein, denn unter Linux ist libusb/libftdi sinnvoller. Lange Zeit gab es aber unter Windows keine libusb1, daher verwendet xc3sprog libusb-0 bzw. die Kompatibilitaetsschicht.
Danke, ich werde es nochmal probieren. Ich habe vor einigen Jahren schonmal im Studium xc3sprog verwendet, um mein Virtex2 Board zu programmieren. Das hat damals gut funktioniert. Musste nur den Baustein in die eine Liste da eintragen, das funzte dann problemlos. War damals aber noch ein Parallelprogger.
So ich war heute noch schnell auch Arbeit und habe den Digilent abgeholt. Zu hause habe ich bemerkt das ich keien micro USB habe :-) Demnach muss ich jetzt noch mal lost um ein micro USB Kabel zu kaufen. Da in unserem Gerät aus einige USB auf RS232 Converter von FTDI vorhanden sind bin ich auch etwas verunsichert ob sich dies so gut mit dem xc3sprog verträgt. Weis jemand ob das xc3sprog fehler bei der Datenübertragung zuverlässig erkennt?
Wie schon frueher im Forum erwaehnt, implementieren wir eine Emulation des FT2232 in einem Cypress PSOC. Wir beabsichtigen, den Code als Open Source zu veroeffentlichen, aber noch testen wir. Wenn man USB also fuer mehrere Zwecke braucht, und entweder knapp an USB devices oder an Platz ist, koennte das eine Loesung werden. Andreas
So ich habe ein Kabel im Handy Shop bekommen war zwar nicht ganz billig aber das war mir egal :-) Hat schon jemand mal versucht den FT2232H mit FTprog auszulesen? Falls FTProg nicht funktioniert gibt es ja noch die DLL von FTDI mit dieser kann man den EEPROM Inhalt ja auch auslesen. Wenn Digilent jedoch die VID und PID geändert hat weis ich halt nicht ob man noch mit diesen Methoden auf den FT2232H zugreifen kann, da der Treiber diese VID und PID nicht kennt.
@ Uwe Wie kann ich das denn jetzt verstehen. Installiert Xilinx nicht den FTDI Treiber, sondern den libftdi? So ich habe jetzt ein Micro USB Kabel, jedoch wird kein neues Device im Devicemanager angezeigt. Demnach benötigt das Board noch eine 3,3V Versorgungsspannung, diese habe ich jetzt aber nicht zu Hause. Also bis Dienstag wearten :-(
Ich habe mir mal die Internetseite von libftdi angeschaut. Dies ist ja schön übersichtlich und macht auch einen professionellen Eindruck. Bei Daumen hoch.
Sebastian schrieb: > Wie kann ich das denn jetzt verstehen. Installiert Xilinx nicht den FTDI > Treiber, sondern den libftdi? Hallo nochmals, ich habe nichts von Xilinx erwaehnt, nur einfach das libftdi auch auf der EEPROM zugreifen kann. Tschuess
Kann ich auch auf den FTDI zugreifen auch wenn diese die VID und PID geändert haben?
Ja das geht. Ich hab das getestet gestern. Allerdings nutzt die offenbar noch einen der CBUS Pins, um die I/O Buffer freizuschalten. Das müsste man noch herausfinden und dann den Source Code von xc3sprog entsprechend verändern. Selbst mit LibUSB Treiber habe ich keine JTAG Kette angezeigt bekommen mit dem Modul. Und ja, die 3.3V sind nötig.
Christian R. schrieb: > llerdings nutzt die offenbar > noch einen der CBUS Pins, um die I/O Buffer freizuschalten. Das müsste > man noch herausfinden und dann den Source Code von xc3sprog entsprechend > verändern. Dazu musst Du, falls es noch keine Definition des Kabel in devlist.txt gibt, Dein Kabel in devlist.txt hinzufuegen. Mit "xc3sprog -D" schreibts Du die internen Tabelle raus, dann kannst Du sie aendern und bei naechsten Start wird die geaenderte Tabelle aus dem aktuellen Verzeichnis gelesen. Die Aenderung schickts Du dann zurueck und dann ist irgendwann dein Kabel auch in der interne Tabelle. Setzt aber einen Build aus aktuellen SVN voraus. Der Aufbau einer Kabelbeschreibung hier am einen internen Beispiel llif ftdi 8000000\ 0x0403:0x6010:LLBBC_INTERFACE1:2:0x10:0x10:0x00:0x00 Dad Kabel nennt sich "llif", ist vom Type "ftdi", kann auch mit 8 MHz betrieben werden, das es ein FT2232H Baustein ist und die JTag Kette nicht ueber ein Kabel gefuehrt wird. VID is 0x403, PID 0x6010, die Jtag Kette ist am zweiten Interface angeschlossen. Zusaetzlich zu den JTAG Pins muss noch am Port A der Pin 4 (0x10) auf '1' (0x10) gesetzt werden, am B-Port muss nichts gesetzt werden.
Geht denn da unter Windows mittlerweile auch über die d2xx.dll? Falls ja, würde ich das mal so versuchen...
Beim Digilent Board gibt es ja nicht viele Möglichkeiten. Hast Du schon mal das FTDI Tool " FT_PROG 2.6.8 - EEPROM Programming Utility" ausprobiert? Damit kann man alle Einstellungen vom FTDI Chip auslesen. Diese kann man dann in einer Config Datei speichern und dann auf das FTDI Modul hochladen. http://www.ftdichip.com/Support/Utilities.htm Mir fallen spontan nur 3 Möglichkeiten ein wie man sich geschützt haben kann. Sie haben einen Device Namen vergeben und der Treiber kann das Device nur dann ansprechen wenn es den richtigen Namen besitzt. Dies kann man mit dem FT_PROG auslesen. Eine weitere Möglichkeit ist das ein Code im EEPROM gespeichert ist der ausgelesen wird. Daher muss der ganze EEPROM ausgelesen werden und in einer Datei gespeichert werden. Die 3. Möglichkeit ist das eine IOS auf 3,3V geschaltet sind und andere auf GND gezogen sind. Somit ergibt sich eine Art Code wie bei einem Tresor. Dies müste man aber eventuell auch auslesen können ober man muss es nachmessen. Ich würde das Modul ja auch kaufen und auf meiner Platine drauflöten, jedoch kann ich mit dem micros USB nichts anfangen. Ich benötige eine Platinenversion, wo das D+ und D- Signal auch auf der Unterseite der Platine ist. Ich weis nicht warum Xilin dies so kompliziert macht. Immerhin wird der Digilent Treiber schon mitgeliefert, demnach arbeitet man ja auch zusammen. Warum bietet Xilinx denn nicht einfach etwas zum kaufen an.
So ich habe mal den FT2232H vom FTDI Mini USB Modul und vom Digilent SMT1 mit FTPROG ausgelesen: folgendes steht bei FTDI Mini USB Modul im EEPROM: Manufaturer: FTDI Product Description: FT2232H MiniModule Auto Generate Serial Number: ist aktiviert Prefix Serial Number: FT Port A = RS232 UART Driver = Virtual Com Port Port B = RS232 UART Driver = Virtual Com Port Beim Digilent Modul steht folgendes im EERPOM: Manufaturer: Digilent Product Description: Digilent Adept USB Device Auto Generate Serial Number: ist aktiviert Prefix Serial Number: 21 Port A = 245 FIFO Driver = D2XX Direct Port B = 245 FIFO Driver = D2XX Direct
Ich habe die Konfiguration vom Digilent JTAG SMT1 in einer Datei gespeichert. Anschließend habe ich diese Konfiguration in das FT2232H Mini Modul geladen. DAnch habe ich IMPACT gestartet. Leider wurde es nicht als JTAG SMT1 erkannt. Da die Seriennummer neu erzeugt wurde unterscheiden sich beide Module in der Seriennummer. Ich werde nun die Seriennummer manuell angleichen und es noch mal versuchen. Ich kann mir vorstellen das hier noch ein EEPROM drauf ist, in dem noch mehr drin steht.
Notfalls halt mal mit dem USBLyzer gucken, was die da machen beim Suchen des Moduls. Vielleicht prüfen sie wirklich nur die Verbindung zwischen zwei CBUS Pins oder sowas...
Ich hatte schon überlegt mit einem Oszi die entsprechenden Pins nachzumessen. Dazu benötigt man aber eine sehr ruhige Hand. Zudem bin ich heute nicht im Büro und zu Hause habe ich leider gerade kein Gerät :-) Ich werde mir das USBLyzer mal anschauen.
So ich habe noch mal das FTPROG von FTDI benutzt. Ich habe zwar die Einstellungen in einer Datei gespeichert, jedoch wird nicht der komplette EEPROM in dieser Datei gespeichert. FTPROG zeigt jedoch den kompletten EEPROM Inhalt an. Diesen habe ich mal in 2 Screenshots festgehalten: Ab der Adresse 0x0010 steht im FT2232H Mini Module nur noch 0x0000, jedoch beim Digilent JTAG SMT1 steht dort ein anderer Inhalt. Jetzt muss ich nur noch herausfinden wie ich den EEPROM mit den gleichen Inhalt beschreiben kann.
Ja habe ich auch gefunden :-) Ich habe den User Area EEPROM ausgelesen. Dies hat auch funktioniert :-) Jetzt werde ich diesen mal in den EEPROM vom FT2232H Mini Modul schreiben.
Juhu :-) Ich habe mit FTPROG die Konfiguration vom Digilent JTAG-SMT1 ausgelesen und diese in einer Datei gespeichert. Anschließend habe ich diese Konfiguration mit dem FTPROG auf das FT2232H Mini Module geschrieben. Danach habe ich mit der API von FTDI den USER AREA EEPROM Bereich vom Digilent JTAG-SMT1 ausgelesen. Diesen habe ich in einer Datei gespeichert und anschließend in den USER AREA EEPROM Bereich vom FT2232H Mini Module geschrieben. Der Xilinx Programmer zeigt schon mal an das es sicht um Digilent JTAG-SMT1 handelt. ERROR:iMPACT - A problem may exist in the hardware configuration. Check that the cable, scan chain, and power connections are intact, that the specified scan chain configuration matches the actual hardware, and that the power supply is adequate and delivering the correct voltage. Gut ich habe natürlich nichts am FT2232H Mini Module angeschlossen. Demnach muss dies auch erscheinen. Zudem habe ich VREF noch nicht angeschlossen. Dies muss ich noch mit 3,3V belegen.
Jetzt muss ich nur noch herausfinden an welchem Pin vom FT2232H VREF angeschlossen ist. Weis dies vielleicht jemand? Gibt es denn keine Schaltplan von diesem Digilent JTAG-SMT1 Board? Vor allem würde mich es interessieren wie Digilent dieses Plugin erzeugt hat. Bei mir gibt es unter Programme ein Digilent Ordner. Dieser beinhaltet die FTDI USB Treiber. FTDI selbst stellt ja eine FTCJTAG.dll zur Verfügung. Jedoch ist diese DLL nicht im Diglent Ordner. Demnach denke ich das Digilent eine andere DLL benutzt. Digilent hat demnach ein eigenes Plugin geschrieben. Weis jemand wo sich dies auf dem PC befindet?
Sebastian schrieb: > Jetzt muss ich nur noch herausfinden an welchem Pin vom FT2232H VREF > angeschlossen ist. Beim Digilent Modul sind da kleine Pegelwandler Chips verbaut, ich vermute mal, dass die über eine der I/O Leitungen erst aktiviert werden müssen, denn auch mit XC3SProg konnte ich da nicht direkt auf die Kette zugreifen.
Ja die kleinen Pegelwandler haben einen Enable Pin. Nur leider sind die so klein das ich nicht lesen kann welche das sind so das ich mal im Datenblatt nachschauen kann. Weis jemand zufällig welcher 12MHz Quarz dort verbaut ist. Die Bauform ist so schön klein. Ich würde diesen Quarz auch gerne verwenden.
Kannst ja auch messen, welcher Pin der Pegelwandler an allen verbunden ist und dann wohin der am FTDI geht. Masse, VCC muss man natürlich vorher ausschließen.
Juhu es funktioniert jetzt. Die Ref Spannung geht wirklich nur an die Buffer. Demnach benötigt man nur die 4 JTAG Pins (ab Pin 16) Der FT2232H erzeugt 3,3V Signale auf den JTAG Leitungen. Somit benötige ich nicht mal Buffer wenn ich den FT2232H direkt auf mein Board integriere.
Ich werde dann mal die Open Source testen. Denn wer will schon auf den PC über 1 GB für Impact installieren.
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.