Hallo Community!
Hat schon mal jemand versucht (und es vielleicht geschafft?) den
Xilinx-Programmer direkt unter Mac OS X zu nutzen?
Ich weiß, das man Xilinx-ISE in einer virtuellen Maschine (Parallels,
VMware, VirtualBox) verwenden kann (BTDT).
Allerdings benötigt so eine virtuelle Maschine ganz schön viel
Rechenleistung (und damit Akkulaufzeit).
Und das Umschalten zwischen (meinem) Editor und der VM ist auch nervig.
Dank wine läßt sich Xilinx-ISE aber auch direkt im Mac OS X
installieren (und auch verwenden).
Da ich meine Synthese oft per Skript ausführe, habe ich mir für
einzelnen Xilinx-Programme (xst, ngdbuild, map, par, bitgen, impact)
kleine Wrapper geschrieben:
Bis zum Bitfile läuft es (bis auf einige wine-warnings) offensichtlich
problemlos durch.
Ich scheitere nur am letzten Schritt: Das Bitfile ins FPGA zu bekommen.
Damit der Xilinx-Programmer richtig funktioniert, braucht er beim
Einstöpseln seine Firmware.
Unter Linux erledigt das udev mit den entsprechenden rules:
Da es unter OS X kein udev gibt muß man diesen Schritt manuell machen:
*** fxload (https://github.com/nall/nexys2-osx) hat scheinbar ein
Problem mit dem Firmwaredownload:
/usr/local/lib/libusb-0.1.4.dylib: no matching architecture in universal wrapper
6
Trace/BPT trap: 5
Das ist zwar für alle Systeme vorkompiliert, aber offensichtlich mag er
die libusb nicht (mehr).
*** CycFX2Prog
(http://www.triplespark.net/elec/periph/USB-FX2/software/)
laßt sich mit Verweis auf -I/opt/local/include und -L/opt/local/lib
kompilieren, scheint aber nur teilweise zu funktionieren:
$ ./fx2_programmer 038 003 program ~/.wine/drive_c/Xilinx/13.4/ISE_DS/ISE/data/xusb_xp2.hex
2
Using device 003 on bus 038 vendor id 0x03fd product id 0x0013
3
Using file "/Users/Ralf/.wine/drive_c/Xilinx/13.4/ISE_DS/ISE/data/xusb_xp2.hex"
4
Programming 16 bytes starting at 0x2022, checksum ok
5
Programming 15 bytes starting at 0x2032, checksum ok
6
Programming 3 bytes starting at 0x06f0, checksum ok
7
Programming 16 bytes starting at 0x17ba, checksum ok
8
Programming 16 bytes starting at 0x17ca, checksum ok
9
...
10
Programming 12 bytes starting at 0x0cb7, checksum ok
11
Programming 12 bytes starting at 0x0cc3, checksum ok
12
Programming 9 bytes starting at 0x0ccf, checksum ok
13
Programming 9 bytes starting at 0x0cd8, checksum ok
14
Programming 9 bytes starting at 0x0ce1, checksum ok
15
End of file
Die LED leuchtet aber erst, wenn ich mit CycFX2Prog noch einen Run
ausführe:
1
$ ./cycfx2prog -id=03fd:0013 run
2
Using ID 03fd:0013 on 038.003.
3
Putting 8051 out of reset.
4
Segmentation fault: 11
Immerhin ein kleiner Erfolg!
Dummerweise führt der USB-Stack von OS X keine Reenumaration aus:
1
$ system_profiler SPUSBDataType
2
...
3
Vendor-Specific Device:
4
5
Product ID: 0x0013
6
Vendor ID: 0x03fd (Xilinx Inc.)
7
Version: 0.00
8
Speed: Up to 480 Mb/sec
9
Location ID: 0x26200000 / 3
10
Current Available (mA): 500
11
Current Required (mA): Unknown (Device has not been configured)
12
...
Unter Linux (und Windows, wo die ganze Prozedur der Treiber übernimmt)
bekommt der Programmer dann die VID:PID 03fd:0008.
Wie bekomme ich das mit OS X hin, damit impact oder xc3sprog den
Programmer nutzen können?
Viele Grüßee,
Ralf
Ich benutze OSX und Altera tools unter VMWare.
Mi Xilinx kenne ich mich überhaupt nicht aus, aber hast Du mal versucht
OpenOCD zu verwenden?
Dafür gibt es unendlich viele Scripte und vieles wird unterstützt und
ich wette, dass Xilinx Programmer damit wunderbar läuft
Grüße
Kest
Krass was du schon für einen Aufwand getrieben hast. Hätte nicht
gedacht, dass man überhaupt so weit kommt :-)
Der Hinweis auf OpenOCD ist sicher gut, würde die Sache etwas einfacher
machen als mit Wine versuchen USB Geräte zum Laufen zu bekommen.
Chipscope ist dann natürlich nicht möglich.
Ralf schrieb:> Die LED leuchtet aber erst, wenn ich mit CycFX2Prog noch einen Run> ausführe:$ ./cycfx2prog -id=03fd:0013 run> Using ID 03fd:0013 on 038.003.> Putting 8051 out of reset.> Segmentation fault: 11> Immerhin ein kleiner Erfolg!>> Dummerweise führt der USB-Stack von OS X keine Reenumaration aus:
Die Reenumeration wird vom FX2 ausgelöst. Der USB-Stack reagiert nur
darauf.
Der FX2 meldet sich vom Bus ab ("Kabel ausstecken") und nach kurzer Zeit
wieder an ("Kabel wieder einstecken"). Das kann (und sollte auch) die
Firmware des FX2 auslösen (aber die ist ja fix gegeben).
Habe jetzt auf die schnelle nichts gefunden, wie man die reenumeration
vom USB Host aus auslösen kann.
Mein Gefühl sagt mir, dass die Xilinx FW gar nicht korrekt auf den FX2
geschrieben wurde oder nach dem Reset diese FW nicht korrekt ausgeführt
wird.
Sind da nicht sogar 2 Firmware Teile nacheinander reinzuladen? Unter
Windows meldet der sich 2 mal mit was neuem an. ReNumeration löst die
Firmware aus, wenn die das nicht macht, stimmt was nicht. Eventuell
nicht nur ein Run machen sondern erst mal den Programm Counter wieder
auf Null stellen? Ansonsten kannst du ja mal schauen, ob du eventuell
einen Digilent HS1 Programmer auftreiben kannst, der hat einen FT2232H
drin, und sollte mit XC3Sprog auch unter OS-X funktionieren.
Hallo Community!
Es gibt gute Neuigkeiten: Es funktioniert!
Ralf schrieb:> Ich scheitere nur am letzten Schritt: Das Bitfile ins FPGA zu bekommen.
Jetzt nicht mehr:
Problem war ja die fehlende Reenumaration und das Problem mit fxload
(2014-05-14 21:58:24.146 fxload[66612:507] can't write 31 bytes external
memory at 0x2022)
1. Für fxload muß man den richtigen Chip einstellen, den fx2lp
2. die Reenumaration ist mir mit der folgenden Firmwaredatei geglückt:
http://www.xilinx.com/txpatches/pub/utilities/fpga/xusbdfwu-1025.zip
Hier der komplette Aufruf (nach Einstecken des USB-Kabels):
Danach findet xc3sprog den Programmer (und das FPGA):
1
$ xc3sprog -c xpc -j
2
XC3SPROG (c) 2004-2011 xc3sprog project $Rev: 760 $ OS: Darwin
3
Free software: If you contribute nothing, expect nothing!
4
Feedback on success/failure/enhancement requests:
5
http://sourceforge.net/mail/?group_id=170565
6
Check Sourceforge for updates:
7
http://sourceforge.net/projects/xc3sprog/develop
8
9
JTAG loc.: 0 IDCODE: 0x41c22093 Desc: XC3S500E Rev: E IR length: 6
Und schon kann man das Bitfile ins FPGA brezeln!
Damit kann man quasi nativ unter Mac-OS FPGA-Entwicklung betreiben!
Die Krönung wäre jetzt natürlich, wenn Impact unter wine auch noch den
Programmer finden würde, aber warum kompliziert (impact) wenn's auch
einfach (xc3sprog) geht.
Ich bin auch überzeugt, daß der Vorschlag von Christian mit dem
FTDI-Kabel auch funktioniert. Ich hab mir inzwischen eins besorgt. Aber
das hebe ich mir für später auf :-)
Viele Grüße,
Ralf
P.S.: "lsusb" sieht jetzt so aus:
Ralf schrieb:> Ich bin auch überzeugt, daß der Vorschlag von Christian mit dem> FTDI-Kabel auch funktioniert. Ich hab mir inzwischen eins besorgt. Aber> das hebe ich mir für später auf :-)
So, jetzt ist später. Auch das FTDI-Kabel funktioniert.
Ich habe hier das C232HM-DDHSL-0 von FTDI mit einem FT232H, der die
MPSSE-Engine drinhat. GND, TCK, TMS, TDI und TDO müssen mit den
entsprechenden JTAG-Pins verbunden werden.
MacOS muß es untersagt werden den FTDI-Chip als virtuellen COM-Port
bereitzustellen: