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.
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 :(
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
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.
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.