I plug in my Digilent Spartan 3E starter board, and see:
May 10 17:08:42 trona kernel: usb 3-2: new high-speed USB device number 5 using xhci_hcd May 10 17:08:42 trona kernel: usb 3-2: New USB device found, idVendor=03fd, idProduct=000d, bcdDevice= 0.00 May 10 17:08:42 trona kernel: usb 3-2: New USB device strings: Mfr=0, Product=0, SerialNumber=0This vid:pid of 03fd,000d does not match anything on the list from xc3sprog! Vendor 03fd is Xilinx, which is somewhat comforting, but only two entries in the list with 03fd have the vid/pid of 03fd:0008 (these have names "xpc" and "xpc_internal"). Almost all the rest of the entries are FTDI devices.
Searching on 03fd:000d yields a variety of things, such as:
Apparently the starter board has this $270 JTAG cable built in. Next to the USB connector is a Cy7C68013A chip, which is the Cypress "EZ-USB" chip, and must be the heart of the platform cable. Note that this is the chip that the "fxload" command can fiddle with. This post mentions two LED for USB and indeed there are two on the board next to the USB connector, labeled LD-R and LD-G (so there is a red and green led). It also mentions flashing firmware to the board using fxload and after doing that the vid:pid of 03fd:0008 shows up. But before he did this, he had the Cypress firmware with vid/pid of 04b4:6560, which is a "CY7C65640 USB-2.0 "TetraHub" of all things. 04b4:8613 would be expected for a CY7C68013A development kit.
It looks like 03fd:000d is a newer version of the Xilinx platform loader and is already flashed on
my board. It also looks like xc3sprog does not know about this.
There is useful information here:
SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", ACTION=="add", ATTRS{idVendor}=="03fd", ATTRS{idProduct}=="000d", RUN+="/sbin/fxload -v -t fx2 -I /opt/Xilinx/14.7/ISE_DS/ISE/bin/lin64/xusb_emb.hex -D $tempnode"This runs /sbin/fxload -v -t fx2 -I /opt/Xilinx/14.7/ISE_DS/ISE/bin/lin64/xusb_emb.hex -D $tempnode". Now on my system, the path to this hex file is:
/u1/Xilinx/14.7/ISE_DS/ISE/bin/lin64/xusb_emb.hexThe "tempnode" variable is set by the udev system in some magic way. From the fxload documentation, the argument to -D is a usbfs path like /proc/bus/usb/004/080.
Bus 001 Device 004: ID 03fd:000d Xilinx, Inc.There is no /proc/bus/usb on my system. This is deprecated. These days you go to /sys/bus/usb/devices, or maybe /dev/bus/usb.
If you do go to /sys/bus/usb/devices you are confronted with a bunch of links like 1-0:1.0. How these work is that the "1-" is the bus. Now peek at the kernel messages and see: "usb 1-1.2: new high-speed USB device number 4" This tells us what we want to know, but there is no way to get it from lsusb.
Tom's Computer Info / [email protected]