Firmwaredowaload via USB

Gast #2847490
Lesenswert?

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.
#2847742
Lesenswert?

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.
Gast #2848543
Lesenswert?

@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.
Gast #2848617
Lesenswert?

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.
#2848700
Lesenswert?

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
Gast #2848844
Lesenswert?

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
Gast #2848885
Lesenswert?

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.
#2849020
Lesenswert?

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.
Gast #2849465
Lesenswert?

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.
#2850288
Lesenswert?

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 :(
#2850615
Lesenswert?

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?
#2850813
Lesenswert?

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.
(Firma: www.dossmatik.de) #2851041
Lesenswert?

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.
Gast #2851150
Lesenswert?

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.
#2851184
Lesenswert?

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.
Gast #2851526
Lesenswert?

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?
Gast #2851629
Lesenswert?

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
Gast #2851837
Lesenswert?

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.
Gast #2851857
Lesenswert?

@ 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 :-(
#2852242
Lesenswert?

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.
Gast #2852419
Lesenswert?

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.
Gast #2852917
Lesenswert?

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.
Gast #2856060
Lesenswert?

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
Gast #2856089
Lesenswert?

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.
Gast #2856102
Lesenswert?

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.
Gast #2856130
Lesenswert?

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.
Angehängte Dateien:
Gast #2856285
Lesenswert?

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.
Gast #2856458
Lesenswert?

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?
Gast #2856653
Lesenswert?

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.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren