El problema fue que al actualizar a Karmic Koala, me dejo de detectar la tarjeta. Que es lo que pasa cuando conectamos la Tarjeta a la PC:
1.- Cuando conectamos la tarjeta a un puerto USB, udev detecta el dispositivo.
2.- Ya que lo detecto el siguiente paso es que le actualize el firmware con fxload (según las reglas que tenga para dicho dispositivo, y se encuentran en el archivo /etc/udev/rules.d/xusbdfwu.rules).
3- Si tuvo exito se enciende un led de color verde que se encuentra a lado derecho del conector usb de la tarjeta y además al hacer lusb veremos que que el dispositivo lo identifica como 03fd:0008, en el caso contrarío veremos 03fd:000d.
¿Como solucionar este problema?
En caso de que hicieron una actualización de Jaunty a Karmic:
1.- Tienen que editar el archivo de reglas, que se encuentra en /etc/udev/rules.d
sudo gedit /etc/udev/rules.d/xusbdfwu.rules
Y reemplazar todos los $TEMPNODE por $tempnode
2.- Reinicar el servicio udev
sudo service udev restart o sudo /etc/init.d/udev restart
En caso de ser una instalación nueva:
0.- Requisitos: Tener instaldo el ISE Webpack y los paquetes fxload, libusb-dev y el build-essential.
sudo apt-get install fxload libusb-dev build-essential
1.- Suponiendo que ya tenemos instalado el ISE Webpack 11.1 (ó el 10.x), nos movemos al la ruta donde quedó instalado.
cd /ruta_instalación_Xilinx/11.1/ISE/bin/lin/ o cd /ruta_instalación_Xilinx/11.1/ISE/bin/lin64/
Ahí encontraremos los siguientes archivos
$ ls *.hex
xusbdfwu.hex xusb_emb.hex xusb_xlp.hex xusb_xp2.hex xusb_xpr.hex xusb_xse.hex xusb_xup.hex
Los cuales copiaremos a /usr/share
sudo cp xusb*.hex /usr/share/
2.- Enseguida editamos el archivo xusbdfwu.rules
gedit xusbdfwu.rules
# version 0003
SYSFS{idVendor}=="03fd", SYSFS{idProduct}=="0008", MODE="666"
BUS=="usb", ACTION=="add", SYSFS{idVendor}=="03fd", SYSFS{idProduct}=="0007", RUN+="/sbin/fxload -v -t fx2 -I /usr/share/xusbdfwu.hex -D $TEMPNODE"
BUS=="usb", ACTION=="add", SYSFS{idVendor}=="03fd", SYSFS{idProduct}=="0009", RUN+="/sbin/fxload -v -t fx2 -I /usr/share/xusb_xup.hex -D $TEMPNODE"
BUS=="usb", ACTION=="add", SYSFS{idVendor}=="03fd", SYSFS{idProduct}=="000d", RUN+="/sbin/fxload -v -t fx2 -I /usr/share/xusb_emb.hex -D $TEMPNODE"
BUS=="usb", ACTION=="add", SYSFS{idVendor}=="03fd", SYSFS{idProduct}=="000f", RUN+="/sbin/fxload -v -t fx2 -I /usr/share/xusb_xlp.hex -D $TEMPNODE"
BUS=="usb", ACTION=="add", SYSFS{idVendor}=="03fd", SYSFS{idProduct}=="0013", RUN+="/sbin/fxload -v -t fx2 -I /usr/share/xusb_xp2.hex -D $TEMPNODE"
BUS=="usb", ACTION=="add", SYSFS{idVendor}=="03fd", SYSFS{idProduct}=="0015", RUN+="/sbin/fxload -v -t fx2 -I /usr/share/xusb_xse.hex -D $TEMPNODE"
Cambiando $TEMPNODE por $tempnode, si lo dejan tan y como esta, no les va a funcionar. El contenido les debe de quedar algo como:
# version 0003 SYSFS{idVendor}=="03fd", SYSFS{idProduct}=="0008", MODE="666" BUS=="usb", ACTION=="add", SYSFS{idVendor}=="03fd", SYSFS{idProduct}=="0007", RUN+="/sbin/fxload -v -t fx2 -I /usr/share/xusbdfwu.hex -D $tempnode" BUS=="usb", ACTION=="add", SYSFS{idVendor}=="03fd", SYSFS{idProduct}=="0009", RUN+="/sbin/fxload -v -t fx2 -I /usr/share/xusb_xup.hex -D $tempnode" BUS=="usb", ACTION=="add", SYSFS{idVendor}=="03fd", SYSFS{idProduct}=="000d", RUN+="/sbin/fxload -v -t fx2 -I /usr/share/xusb_emb.hex -D $tempnode" BUS=="usb", ACTION=="add", SYSFS{idVendor}=="03fd", SYSFS{idProduct}=="000f", RUN+="/sbin/fxload -v -t fx2 -I /usr/share/xusb_xlp.hex -D $tempnode" BUS=="usb", ACTION=="add", SYSFS{idVendor}=="03fd", SYSFS{idProduct}=="0013", RUN+="/sbin/fxload -v -t fx2 -I /usr/share/xusb_xp2.hex -D $tempnode" BUS=="usb", ACTION=="add", SYSFS{idVendor}=="03fd", SYSFS{idProduct}=="0015", RUN+="/sbin/fxload -v -t fx2 -I /usr/share/xusb_xse.hex -D $tempnode"
3.- Ya que lo modificamos lo copiamos a /etc/
sudo cp xusbdfwu.rules /etc/udev/rules.d/
4.- reiniciamos el servicio udev
sudo service udev restart o sudo /etc/init.d/udev restart
5.- Ahora nos movemos al $HOME creamos una carpeta tmp
cd
mkdir tmp
cd tmp
Vamos a http://www.rmdir.de/~michael/xilinx/
Y descargamos de ahí el archivo usb-driver-HEAD.tar.gz en la carpeta que acabamos de crear
6.- estando en tmp descomprimimos el archivo y entramos al directorio recién creado y ejecutamos el make
tar -xvzf usb-driver-HEAD.tar.gz
cd usb-driver
make
7.- Lo anterior nos generará dos archivos, libusb-driver-DEBUG.so y libusb-driver.so los cuales copiaremos a /usr/lib/
sudo cp *.so /usr/lib/
8.- Ya podemos conectar nuestra tarjeta al la PC con el Karmic Kola y ver
$ lsusb | grep Xilinx Bus 001 Device 007: ID 03fd:0008 Xilinx, Inc.
en lugar del
$ lsusb | grep Xilinx
Bus 001 Device 007: ID 03fd:000d Xilinx, Inc.
Que al actualizar de versión me venía saliendo
En la versión 11.1 para que el impact use el libusb-driver.so en vez de los windrvr, ya no es necesario hacer lo de "export LD_PRELOAD=/ruta/libusb-driver.so" antes de ejecutarlo.
7 comentarios:
Hola,
sabes si funciona tambien con una placa nexys2 de digilent,
Es que seguido tu tutorial y no consigo que me detecte la placa.
Gracias.
nexys2 usa otro protocolo diferente, pero econtré un programa que te puede ayudar:
http://plausible.org/andy/nexys2prog.tar.gz
Viene un README, aunque tenga la extención gz no esta comprimido
tar -xvf nexys2prog.tar.gz
En el README dice que
tienes que instalar el fxload y el libftdi1
sudo apt-get install fxload libftdi1,
Descargar el UrJTAG de http://urjtag.org
Compilarlo e Instalarlo,
Y para usarlo sería con
nexys2prog programa.bit
http://www.edaboard.com/ftopic345414.html
http://www.sensicomm.com/main/projects/fpga/digilent_nexys_usb.shtml
Hola, logré instalar todo y me funciona perfecto en linux, pero ahora en windows no funciona, tu sabes si puedo restaurarla de nuevo para que funcione en windows??
Mx no tengo ni la menor idea ya que no tengo una de esas tarjetas a la mano (supongo que es la tarjeta nexys2) supuestamente al momento que enciendes la tarjeta carga el firmware de una flash y lo que hace el proceso descrito en el post anterior es sólo cargar un firmware (de manera temporal) que trabaje en Linux, supuestamente no deberías tener problemas al usarlo en los dos SO.
Mejor que copiar todos los archivos a /usr/share, es más limpio modificar el .rules y cambiar donde pone /usr/share a (Xilinx)/ISE/bin/lin (en mi caso, /opt/Xilinx/12.1/ISE_DS/ISE/bin/lin). Así todos los archivos propios de Xilinx quedan en la carpeta de instalación de Xilinx.
Hola,
Tengo una spartan 3E, ubuntu 12.04 de 64 bits y no logro que el impact reconozca mi tarjeta, me sale el mensaje: "iMPACT:923 - Can not find cable, check cable setup !"
Si me pudieras ayudar te agradecería mucho
Que version de ISE usas y si es posible que procedimiento seguiste para instalarlo.
verifica con lusb para ver si te esta reconociendo la tarjeta.
Que informacion adicional muestra aparte de "IMPACT:923 - Can not find cable, check cable setup !"
En el caso que sea
Cable is LOCKED. Retrying...
The cable is being used by another application.
Please try opening the cable connection at a later time."
Desde la linea de comando ejecutas el impact con
impact -batch
Dentro desbloqueas el cable y sales
cleancablelock
exit
En caso de que no sea ese el problema, voy a buscar el procedimiento que me funciono, de hecho hice un PDF.
Saludos
Publicar un comentario