Skip to content

Commit 8a3be4e

Browse files
fallensbourdeauducq
authored andcommittedApr 11, 2015
artiq_flash: add support for kc705
1 parent a50f2c2 commit 8a3be4e

File tree

3 files changed

+86
-17
lines changed

3 files changed

+86
-17
lines changed
 

Diff for: ‎artiq/frontend/artiq_flash.sh

+78-11
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,11 @@
11
#!/bin/bash
22

33
ARTIQ_PREFIX=$(python3 -c "import artiq; print(artiq.__path__[0])")
4-
BIN_PREFIX=$ARTIQ_PREFIX/binaries
54

6-
while getopts "bBrh" opt
5+
# Default is ppro
6+
BOARD=ppro
7+
8+
while getopts "bBrht:d:" opt
79
do
810
case $opt in
911
b)
@@ -15,22 +17,87 @@ do
1517
r)
1618
FLASH_RUNTIME=1
1719
;;
20+
t)
21+
if [ "$OPTARG" == "kc705" ]
22+
then
23+
BOARD=kc705
24+
elif [ "$OPTARG" == "ppro" ]
25+
then
26+
BOARD=ppro
27+
else
28+
echo "Supported targets (-t option) are: kc705 and ppro"
29+
exit 1
30+
fi
31+
;;
32+
d)
33+
if [ -d $OPTARG ]
34+
then
35+
BIN_PATH=$OPTARG
36+
else
37+
echo "You specified a non-existing directory: $OPTARG"
38+
exit 1
39+
fi
40+
;;
1841
*)
1942
echo "ARTIQ flashing tool"
2043
echo ""
21-
echo "To flash everything, do not use any command line option."
44+
echo "To flash everything, do not use any of the -b|-B|-r option."
2245
echo ""
23-
echo "usage: $0 [-b] [-B] [-r] [-h]"
46+
echo "usage: $0 [-b] [-B] [-r] [-h] [-t kc705|ppro] [-d path]"
2447
echo "-b Flash bitstream"
2548
echo "-B Flash BIOS"
2649
echo "-r Flash ARTIQ runtime"
2750
echo "-h Show this help message"
51+
echo "-t Target (kc705 or ppro, default is: ppro)"
52+
echo "-d Directory containing the binaries to be flashed"
2853
exit 1
2954
;;
3055
esac
3156
done
3257

33-
if [ -z $@ ]
58+
if ! [ -z "$BIN_PATH" ]
59+
then
60+
BIN_PREFIX=$BIN_PATH
61+
fi
62+
63+
if [ "$BOARD" == "ppro" ]
64+
then
65+
UDEV_RULES=99-ppro.rules
66+
BITSTREAM=artiq_ppro-up-papilio_pro.bin
67+
CABLE=papilio
68+
PROXY=bscan_spi_lx9_papilio.bit
69+
BIN_PREFIX=$ARTIQ_PREFIX/binaries/ppro
70+
PROXY_PATH=$BIN_PREFIX
71+
BIOS_ADDR=0x60000
72+
RUNTIME_ADDR=0x70000
73+
elif [ "$BOARD" == "kc705" ]
74+
then
75+
UDEV_RULES=99-kc705.rules
76+
BITSTREAM=artiq_kc705-artiqsocbasic-kc705.bit
77+
CABLE=jtaghs1_fast
78+
PROXY=bscan_spi_kc705.bit
79+
BIN_PREFIX=$ARTIQ_PREFIX/binaries/kc705
80+
BIOS_ADDR=0xaf0000
81+
RUNTIME_ADDR=0xb00000
82+
if [ -f $HOME/.migen/$PROXY ]
83+
then
84+
PROXY_PATH=$HOME/.migen/
85+
elif [ -f /usr/local/share/migen/$PROXY ]
86+
then
87+
PROXY_PATH=/usr/local/share/migen/
88+
elif [ -f /usr/share/migen/$PROXY ]
89+
then
90+
PROXY_PATH=/usr/share/migen/
91+
else
92+
echo "KC705 flash proxy ($PROXY) not found."
93+
echo "Please build it from https://github.com/m-labs/bscan_spi_kc705"
94+
echo "and put it in ~/.migen or /usr/local/share/migen or /usr/share/migen"
95+
exit 1
96+
fi
97+
fi
98+
99+
# Check if neither of -b|-B|-r have been used
100+
if [ -z "$FLASH_RUNTIME" -a -z "$FLASH_BIOS" -a -z "$FLASH_BITSTREAM" ]
34101
then
35102
FLASH_RUNTIME=1
36103
FLASH_BIOS=1
@@ -42,12 +109,12 @@ check_return() {
42109
exit
43110
}
44111

45-
xc3sprog -c papilio -R 2&>1 > /dev/null
112+
xc3sprog -c $CABLE -R 2&>1 > /dev/null
46113
if [ "$?" != "0" ]
47114
then
48115
echo "Flashing failed because it seems you do not have permission to access the USB device."
49116
echo "To fix this you might want to add a udev rule by doing:"
50-
echo "$ sudo cp $ARTIQ_PREFIX/misc/99-ppro.rules /etc/udev/rules.d"
117+
echo "$ sudo cp $ARTIQ_PREFIX/misc/$UDEV_RULES /etc/udev/rules.d"
51118
echo "Then unplug/replug your device and try flashing again"
52119
exit
53120
fi
@@ -57,19 +124,19 @@ trap check_return ERR
57124
if [ "${FLASH_BITSTREAM}" == "1" ]
58125
then
59126
echo "Flashing FPGA bitstream..."
60-
xc3sprog -v -c papilio -I$BIN_PREFIX/bscan_spi_lx9_papilio.bit $BIN_PREFIX/artiqminisoc-papilio_pro.bin:w:0x0:BIN
127+
xc3sprog -v -c $CABLE -I$PROXY_PATH/$PROXY $BIN_PREFIX/$BITSTREAM:w:0x0:BIN
61128
fi
62129

63130
if [ "${FLASH_BIOS}" == "1" ]
64131
then
65132
echo "Flashing BIOS..."
66-
xc3sprog -v -c papilio -I$BIN_PREFIX/bscan_spi_lx9_papilio.bit $BIN_PREFIX/bios.bin:w:0x60000:BIN
133+
xc3sprog -v -c $CABLE -I$PROXY_PATH/$PROXY $BIN_PREFIX/bios.bin:w:$BIOS_ADDR:BIN
67134
fi
68135

69136
if [ "${FLASH_RUNTIME}" == "1" ]
70137
then
71138
echo "Flashing ARTIQ runtime..."
72-
xc3sprog -v -c papilio -I$BIN_PREFIX/bscan_spi_lx9_papilio.bit $BIN_PREFIX/runtime.fbi:w:0x70000:BIN
139+
xc3sprog -v -c $CABLE -I$PROXY_PATH/$PROXY $BIN_PREFIX/runtime.fbi:w:$RUNTIME_ADDR:BIN
73140
fi
74141
echo "Done."
75-
xc3sprog -v -c papilio -R 2&>1 > /dev/null
142+
xc3sprog -v -c $CABLE -R 2&>1 > /dev/null

Diff for: ‎conda/artiq/build.sh

+6-6
Original file line numberDiff line numberDiff line change
@@ -8,12 +8,12 @@ cd $SRC_DIR/misoc; python make.py -X ../soc -t artiq_ppro build-headers build-bi
88
make -C soc/runtime runtime.fbi
99
cd $SRC_DIR/misoc; python make.py -X $SRC_DIR/soc -t artiq_ppro build-bitstream; cd -
1010
ARTIQ_PREFIX=$PREFIX/lib/python3.4/site-packages/artiq
11-
BIN_PREFIX=$ARTIQ_PREFIX/binaries
11+
BIN_PREFIX=$ARTIQ_PREFIX/binaries/
1212
mkdir -p $ARTIQ_PREFIX/misc
1313
cp misc/99-ppro.rules $ARTIQ_PREFIX/misc/
14-
mkdir -p $BIN_PREFIX
15-
cp $SRC_DIR/misoc/build/artiq_ppro-up-papilio_pro.bin $BIN_PREFIX/
16-
cp $SRC_DIR/misoc/software/bios/bios.bin $BIN_PREFIX/
17-
cp soc/runtime/runtime.fbi $BIN_PREFIX/
14+
mkdir -p $BIN_PREFIX/ppro $BIN_PREFIX/kc705
15+
cp $SRC_DIR/misoc/build/artiq_ppro-up-papilio_pro.bin $BIN_PREFIX/ppro
16+
cp $SRC_DIR/misoc/software/bios/bios.bin $BIN_PREFIX/ppro
17+
cp soc/runtime/runtime.fbi $BIN_PREFIX/ppro
1818
cp artiq/frontend/artiq_flash.sh $PREFIX/bin
19-
cp Papilio-Loader/xc3sprog/trunk/bscan_spi/bscan_spi_lx9_papilio.bit $BIN_PREFIX/
19+
cp Papilio-Loader/xc3sprog/trunk/bscan_spi/bscan_spi_lx9_papilio.bit $BIN_PREFIX/ppro

Diff for: ‎misc/99-kc705.rules

+2
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
ATTR{idVendor}=="1443", MODE:="666"
2+
ACTION=="add", ATTR{idVendor}=="0403", ATTR{manufacturer}=="Digilent", MODE:="666"

0 commit comments

Comments
 (0)
Please sign in to comment.