588b9f5b0210ce7644c9e32d89f9698c40b39bcd
[fleet.git] / misc / program.sh
1 #!/bin/bash
2
3 export XILINX=/usr/local/xilinx/ise/
4
5
6 DEVICE=`lsusb | grep Xilinx | sed 's_Bus __' | sed 's_ Device _/_' | sed 's_:.*__'`
7
8 sudo sh -c 'cat > /etc/udev/rules.d/xusbdfwu.rules' <<EOF
9 # version 0002
10 SYSFS{idVendor}=="03fd", SYSFS{idProduct}=="0008", MODE="666"
11 BUS=="usb", ACTION=="add", SYSFS{idVendor}=="03fd", SYSFS{idProduct}=="0007", RUN+="/sbin/fxload -v -t fx2 -I $XILINX/bin/lin/xusbdfwu.hex -D $TEMPNODE"
12 BUS=="usb", ACTION=="add", SYSFS{idVendor}=="03fd", SYSFS{idProduct}=="0009", RUN+="/sbin/fxload -v -t fx2 -I $XILINX/bin/lin/xusb_xup.hex -D $TEMPNODE"
13 BUS=="usb", ACTION=="add", SYSFS{idVendor}=="03fd", SYSFS{idProduct}=="000d", RUN+="/sbin/fxload -v -t fx2 -I $XILINX/bin/lin/xusb_emb.hex -D $TEMPNODE"
14 BUS=="usb", ACTION=="add", SYSFS{idVendor}=="03fd", SYSFS{idProduct}=="000f", RUN+="/sbin/fxload -v -t fx2 -I $XILINX/bin/lin/xusb_xlp.hex -D $TEMPNODE"
15 BUS=="usb", ACTION=="add", SYSFS{idVendor}=="03fd", SYSFS{idProduct}=="0013", RUN+="/sbin/fxload -v -t fx2 -I $XILINX/bin/lin/xusb_xpr.hex -D $TEMPNODE"
16 EOF
17
18 (lsusb | grep '000f Xilinx') && \
19  (/sbin/fxload -v -t fx2 -I $XILINX/bin/lin/xusb_xlp.hex -D /proc/bus/usb/$DEVICE;\
20   sudo /etc/init.d/udev stop;\
21   sudo /etc/init.d/udev start)
22
23 export BITFILE=$1
24
25 sudo rmmod xpc4drvr
26 sudo rmmod windrvr6
27 #sudo insmod /lib/modules/2.6.22.9goliath/kernel/drivers/misc/xpc4drvr.ko
28 #sudo insmod /lib/modules/2.6.22.9goliath/kernel/drivers/misc/windrvr6.ko
29 #DEVNUM=`grep windrvr /proc/devices | sed 's_ .*__'`
30 #sudo rm -f /dev/windrvr6
31 #sudo mknod /dev/windrvr6 c $DEVNUM 0
32
33 export LD_PRELOAD=`pwd`/misc/libusb-driver.so
34
35 sudo ln -sf $XILINX/bin/lin/xusbdfwu.hex /usr/share/xusbdfwu.hex
36
37 # ml410: use -p 2
38 # ml505: use -p 5
39
40 $XILINX/bin/lin/impact -batch <<EOF
41 cleancablelock
42 setMode -bs
43 setCable -port usb21 -baud 12000000
44 identify
45 setMode -bs
46 assignFile -p 5 -file $BITFILE
47 program -p 5
48 quit
49 EOF
50
51 sudo rm _impact*
52 sudo rm /usr/share/xusbdfwu.hex
53 #rm /etc/udev/rules.d/xusbdfwu.rules