forked from M-Labs/artiq
artiq_flash: add support for kc705
This commit is contained in:
parent
a50f2c20ff
commit
8a3be4eca0
|
@ -1,9 +1,11 @@
|
||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
|
||||||
ARTIQ_PREFIX=$(python3 -c "import artiq; print(artiq.__path__[0])")
|
ARTIQ_PREFIX=$(python3 -c "import artiq; print(artiq.__path__[0])")
|
||||||
BIN_PREFIX=$ARTIQ_PREFIX/binaries
|
|
||||||
|
|
||||||
while getopts "bBrh" opt
|
# Default is ppro
|
||||||
|
BOARD=ppro
|
||||||
|
|
||||||
|
while getopts "bBrht:d:" opt
|
||||||
do
|
do
|
||||||
case $opt in
|
case $opt in
|
||||||
b)
|
b)
|
||||||
|
@ -15,22 +17,87 @@ do
|
||||||
r)
|
r)
|
||||||
FLASH_RUNTIME=1
|
FLASH_RUNTIME=1
|
||||||
;;
|
;;
|
||||||
|
t)
|
||||||
|
if [ "$OPTARG" == "kc705" ]
|
||||||
|
then
|
||||||
|
BOARD=kc705
|
||||||
|
elif [ "$OPTARG" == "ppro" ]
|
||||||
|
then
|
||||||
|
BOARD=ppro
|
||||||
|
else
|
||||||
|
echo "Supported targets (-t option) are: kc705 and ppro"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
d)
|
||||||
|
if [ -d $OPTARG ]
|
||||||
|
then
|
||||||
|
BIN_PATH=$OPTARG
|
||||||
|
else
|
||||||
|
echo "You specified a non-existing directory: $OPTARG"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
;;
|
||||||
*)
|
*)
|
||||||
echo "ARTIQ flashing tool"
|
echo "ARTIQ flashing tool"
|
||||||
echo ""
|
echo ""
|
||||||
echo "To flash everything, do not use any command line option."
|
echo "To flash everything, do not use any of the -b|-B|-r option."
|
||||||
echo ""
|
echo ""
|
||||||
echo "usage: $0 [-b] [-B] [-r] [-h]"
|
echo "usage: $0 [-b] [-B] [-r] [-h] [-t kc705|ppro] [-d path]"
|
||||||
echo "-b Flash bitstream"
|
echo "-b Flash bitstream"
|
||||||
echo "-B Flash BIOS"
|
echo "-B Flash BIOS"
|
||||||
echo "-r Flash ARTIQ runtime"
|
echo "-r Flash ARTIQ runtime"
|
||||||
echo "-h Show this help message"
|
echo "-h Show this help message"
|
||||||
|
echo "-t Target (kc705 or ppro, default is: ppro)"
|
||||||
|
echo "-d Directory containing the binaries to be flashed"
|
||||||
exit 1
|
exit 1
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
done
|
done
|
||||||
|
|
||||||
if [ -z $@ ]
|
if ! [ -z "$BIN_PATH" ]
|
||||||
|
then
|
||||||
|
BIN_PREFIX=$BIN_PATH
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ "$BOARD" == "ppro" ]
|
||||||
|
then
|
||||||
|
UDEV_RULES=99-ppro.rules
|
||||||
|
BITSTREAM=artiq_ppro-up-papilio_pro.bin
|
||||||
|
CABLE=papilio
|
||||||
|
PROXY=bscan_spi_lx9_papilio.bit
|
||||||
|
BIN_PREFIX=$ARTIQ_PREFIX/binaries/ppro
|
||||||
|
PROXY_PATH=$BIN_PREFIX
|
||||||
|
BIOS_ADDR=0x60000
|
||||||
|
RUNTIME_ADDR=0x70000
|
||||||
|
elif [ "$BOARD" == "kc705" ]
|
||||||
|
then
|
||||||
|
UDEV_RULES=99-kc705.rules
|
||||||
|
BITSTREAM=artiq_kc705-artiqsocbasic-kc705.bit
|
||||||
|
CABLE=jtaghs1_fast
|
||||||
|
PROXY=bscan_spi_kc705.bit
|
||||||
|
BIN_PREFIX=$ARTIQ_PREFIX/binaries/kc705
|
||||||
|
BIOS_ADDR=0xaf0000
|
||||||
|
RUNTIME_ADDR=0xb00000
|
||||||
|
if [ -f $HOME/.migen/$PROXY ]
|
||||||
|
then
|
||||||
|
PROXY_PATH=$HOME/.migen/
|
||||||
|
elif [ -f /usr/local/share/migen/$PROXY ]
|
||||||
|
then
|
||||||
|
PROXY_PATH=/usr/local/share/migen/
|
||||||
|
elif [ -f /usr/share/migen/$PROXY ]
|
||||||
|
then
|
||||||
|
PROXY_PATH=/usr/share/migen/
|
||||||
|
else
|
||||||
|
echo "KC705 flash proxy ($PROXY) not found."
|
||||||
|
echo "Please build it from https://github.com/m-labs/bscan_spi_kc705"
|
||||||
|
echo "and put it in ~/.migen or /usr/local/share/migen or /usr/share/migen"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Check if neither of -b|-B|-r have been used
|
||||||
|
if [ -z "$FLASH_RUNTIME" -a -z "$FLASH_BIOS" -a -z "$FLASH_BITSTREAM" ]
|
||||||
then
|
then
|
||||||
FLASH_RUNTIME=1
|
FLASH_RUNTIME=1
|
||||||
FLASH_BIOS=1
|
FLASH_BIOS=1
|
||||||
|
@ -42,12 +109,12 @@ check_return() {
|
||||||
exit
|
exit
|
||||||
}
|
}
|
||||||
|
|
||||||
xc3sprog -c papilio -R 2&>1 > /dev/null
|
xc3sprog -c $CABLE -R 2&>1 > /dev/null
|
||||||
if [ "$?" != "0" ]
|
if [ "$?" != "0" ]
|
||||||
then
|
then
|
||||||
echo "Flashing failed because it seems you do not have permission to access the USB device."
|
echo "Flashing failed because it seems you do not have permission to access the USB device."
|
||||||
echo "To fix this you might want to add a udev rule by doing:"
|
echo "To fix this you might want to add a udev rule by doing:"
|
||||||
echo "$ sudo cp $ARTIQ_PREFIX/misc/99-ppro.rules /etc/udev/rules.d"
|
echo "$ sudo cp $ARTIQ_PREFIX/misc/$UDEV_RULES /etc/udev/rules.d"
|
||||||
echo "Then unplug/replug your device and try flashing again"
|
echo "Then unplug/replug your device and try flashing again"
|
||||||
exit
|
exit
|
||||||
fi
|
fi
|
||||||
|
@ -57,19 +124,19 @@ trap check_return ERR
|
||||||
if [ "${FLASH_BITSTREAM}" == "1" ]
|
if [ "${FLASH_BITSTREAM}" == "1" ]
|
||||||
then
|
then
|
||||||
echo "Flashing FPGA bitstream..."
|
echo "Flashing FPGA bitstream..."
|
||||||
xc3sprog -v -c papilio -I$BIN_PREFIX/bscan_spi_lx9_papilio.bit $BIN_PREFIX/artiqminisoc-papilio_pro.bin:w:0x0:BIN
|
xc3sprog -v -c $CABLE -I$PROXY_PATH/$PROXY $BIN_PREFIX/$BITSTREAM:w:0x0:BIN
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [ "${FLASH_BIOS}" == "1" ]
|
if [ "${FLASH_BIOS}" == "1" ]
|
||||||
then
|
then
|
||||||
echo "Flashing BIOS..."
|
echo "Flashing BIOS..."
|
||||||
xc3sprog -v -c papilio -I$BIN_PREFIX/bscan_spi_lx9_papilio.bit $BIN_PREFIX/bios.bin:w:0x60000:BIN
|
xc3sprog -v -c $CABLE -I$PROXY_PATH/$PROXY $BIN_PREFIX/bios.bin:w:$BIOS_ADDR:BIN
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [ "${FLASH_RUNTIME}" == "1" ]
|
if [ "${FLASH_RUNTIME}" == "1" ]
|
||||||
then
|
then
|
||||||
echo "Flashing ARTIQ runtime..."
|
echo "Flashing ARTIQ runtime..."
|
||||||
xc3sprog -v -c papilio -I$BIN_PREFIX/bscan_spi_lx9_papilio.bit $BIN_PREFIX/runtime.fbi:w:0x70000:BIN
|
xc3sprog -v -c $CABLE -I$PROXY_PATH/$PROXY $BIN_PREFIX/runtime.fbi:w:$RUNTIME_ADDR:BIN
|
||||||
fi
|
fi
|
||||||
echo "Done."
|
echo "Done."
|
||||||
xc3sprog -v -c papilio -R 2&>1 > /dev/null
|
xc3sprog -v -c $CABLE -R 2&>1 > /dev/null
|
||||||
|
|
|
@ -8,12 +8,12 @@ cd $SRC_DIR/misoc; python make.py -X ../soc -t artiq_ppro build-headers build-bi
|
||||||
make -C soc/runtime runtime.fbi
|
make -C soc/runtime runtime.fbi
|
||||||
cd $SRC_DIR/misoc; python make.py -X $SRC_DIR/soc -t artiq_ppro build-bitstream; cd -
|
cd $SRC_DIR/misoc; python make.py -X $SRC_DIR/soc -t artiq_ppro build-bitstream; cd -
|
||||||
ARTIQ_PREFIX=$PREFIX/lib/python3.4/site-packages/artiq
|
ARTIQ_PREFIX=$PREFIX/lib/python3.4/site-packages/artiq
|
||||||
BIN_PREFIX=$ARTIQ_PREFIX/binaries
|
BIN_PREFIX=$ARTIQ_PREFIX/binaries/
|
||||||
mkdir -p $ARTIQ_PREFIX/misc
|
mkdir -p $ARTIQ_PREFIX/misc
|
||||||
cp misc/99-ppro.rules $ARTIQ_PREFIX/misc/
|
cp misc/99-ppro.rules $ARTIQ_PREFIX/misc/
|
||||||
mkdir -p $BIN_PREFIX
|
mkdir -p $BIN_PREFIX/ppro $BIN_PREFIX/kc705
|
||||||
cp $SRC_DIR/misoc/build/artiq_ppro-up-papilio_pro.bin $BIN_PREFIX/
|
cp $SRC_DIR/misoc/build/artiq_ppro-up-papilio_pro.bin $BIN_PREFIX/ppro
|
||||||
cp $SRC_DIR/misoc/software/bios/bios.bin $BIN_PREFIX/
|
cp $SRC_DIR/misoc/software/bios/bios.bin $BIN_PREFIX/ppro
|
||||||
cp soc/runtime/runtime.fbi $BIN_PREFIX/
|
cp soc/runtime/runtime.fbi $BIN_PREFIX/ppro
|
||||||
cp artiq/frontend/artiq_flash.sh $PREFIX/bin
|
cp artiq/frontend/artiq_flash.sh $PREFIX/bin
|
||||||
cp Papilio-Loader/xc3sprog/trunk/bscan_spi/bscan_spi_lx9_papilio.bit $BIN_PREFIX/
|
cp Papilio-Loader/xc3sprog/trunk/bscan_spi/bscan_spi_lx9_papilio.bit $BIN_PREFIX/ppro
|
||||||
|
|
|
@ -0,0 +1,2 @@
|
||||||
|
ATTR{idVendor}=="1443", MODE:="666"
|
||||||
|
ACTION=="add", ATTR{idVendor}=="0403", ATTR{manufacturer}=="Digilent", MODE:="666"
|
Loading…
Reference in New Issue