Update fpgactl usage
This commit is contained in:
parent
bd2b8b1bc5
commit
cf94b5a46a
84
fpga/fpgactl
84
fpga/fpgactl
@ -9,43 +9,12 @@
|
||||
# Stop on first error
|
||||
set -e
|
||||
|
||||
function usage() # {{{
|
||||
{
|
||||
echo "Loads a bitstream CPU into an FPGA and boots an image" >&2
|
||||
echo "Usage: $0 [-s slot] [-r] [-b] [-w bitstream]" >&2
|
||||
echo "" >&2
|
||||
echo "Loads a bitstream CPU into an FPGA and boots an image" >&2
|
||||
echo "" >&2
|
||||
echo "Options" >&2
|
||||
echo " -s slot Use the given FPGA slot (default 8)" >&2
|
||||
echo " -w bitfile Write the bitstream file to the FPGA" >&2
|
||||
echo " -r Reload filesystem only" >&2
|
||||
echo " -b Boot only" >&2
|
||||
echo "Options" >&2
|
||||
exit 1
|
||||
} # }}}
|
||||
|
||||
function is_module_loaded() # {{{
|
||||
{
|
||||
lsmod | grep -wq "$1"
|
||||
} # }}}
|
||||
|
||||
function check_environment() # {{{
|
||||
{
|
||||
# Check that all drivers are loaded and programs are available
|
||||
|
||||
# if ! lsmod | grep -q qdma_pf; then
|
||||
# echo 'error: driver qdma_pf not loaded' >&2
|
||||
# echo 'tip: sudo insmod /home/tools/drivers/cucu/dma_ip_drivers-onic-gamma/xilinx_pcie_drivers/QDMA/linux-kernel/bin/qdma-pf.ko' >&2
|
||||
# exit 1
|
||||
# fi
|
||||
#
|
||||
# if ! lsmod | grep -q qdma_vf; then
|
||||
# echo 'error: driver qdma_vf not loaded' >&2
|
||||
# echo 'tip: sudo insmod /home/tools/drivers/cucu/dma_ip_drivers-onic-gamma/xilinx_pcie_drivers/QDMA/linux-kernel/bin/qdma-vf.ko' >&2
|
||||
# exit 1
|
||||
# fi
|
||||
|
||||
if ! command -v dma-ctl &> /dev/null; then
|
||||
echo "error: dma-ctl not found in PATH" >&2
|
||||
exit 1
|
||||
@ -56,7 +25,6 @@ function check_environment() # {{{
|
||||
exit 1
|
||||
fi
|
||||
} # }}}
|
||||
|
||||
function create_qdma_queue() # {{{
|
||||
{
|
||||
pcidir="/sys/bus/pci/devices/0000:08:00.0"
|
||||
@ -97,7 +65,6 @@ function create_qdma_queue() # {{{
|
||||
|
||||
sleep 2
|
||||
} # }}}
|
||||
|
||||
function do_system_reset() # {{{
|
||||
{
|
||||
# UartBootEn (bit2) + system reset (bit0)
|
||||
@ -107,13 +74,11 @@ function do_system_reset() # {{{
|
||||
dma-ctl qdma08000 reg write bar 2 0x0 0x1 > /dev/null
|
||||
#sleep 5
|
||||
} # }}}
|
||||
|
||||
function do_system_release() # {{{
|
||||
{
|
||||
# Release Ariane's reset
|
||||
dma-ctl qdma08000 reg write bar 2 0x0 0x3 > /dev/null
|
||||
} # }}}
|
||||
|
||||
function copy_by_dma() # {{{
|
||||
{
|
||||
ifile="$1"
|
||||
@ -138,11 +103,11 @@ function copy_by_dma() # {{{
|
||||
done
|
||||
|
||||
} # }}}
|
||||
|
||||
function load_file_in_memory() # {{{
|
||||
{
|
||||
file="$1"
|
||||
address="$2"
|
||||
address_hex="$2"
|
||||
address=$(($address_hex))
|
||||
|
||||
# Previous tests...
|
||||
#strace -f dma-to-device -d /dev/qdma08000-MM-1 -a "$address" -s $((8*1024*1024)) -f "$file"
|
||||
@ -155,7 +120,6 @@ function load_file_in_memory() # {{{
|
||||
|
||||
dd if="$file" bs=8M seek="${address}" oflag=seek_bytes of=/dev/qdma08000-MM-1 status=none
|
||||
} # }}}
|
||||
|
||||
function do_boot_only() # {{{
|
||||
{
|
||||
do_system_reset
|
||||
@ -185,7 +149,6 @@ function do_boot_only() # {{{
|
||||
#sudo ifconfig onic${onicid}s0f0 10.0.2.2 netmask 255.255.255.0 mtu 9000 up
|
||||
sudo ifconfig onic${onicid}s0f0 10.0.2.2 netmask 255.255.255.0 up
|
||||
} # }}}
|
||||
|
||||
function do_reload_fs() # {{{
|
||||
{
|
||||
do_system_reset
|
||||
@ -211,7 +174,6 @@ function do_reload_fs() # {{{
|
||||
# uncomment to enable eth-over-pcie
|
||||
# sudo ifconfig onic${onicid}s0f0 10.0.2.2 netmask 255.255.255.0 mtu 9000 up
|
||||
} # }}}
|
||||
|
||||
function upload_bitstream_file() # {{{
|
||||
{
|
||||
bitfile="$1"
|
||||
@ -240,7 +202,6 @@ EOF
|
||||
|
||||
killall hw_server
|
||||
} # }}}
|
||||
|
||||
function unload_modules() # {{{
|
||||
{
|
||||
drvlist="$1"
|
||||
@ -253,7 +214,6 @@ function unload_modules() # {{{
|
||||
done
|
||||
|
||||
} # }}}
|
||||
|
||||
function remove_pci_devices() # {{{
|
||||
{
|
||||
for slot in $(lspci -mm -d 10ee: | awk '{printf "0000:%s\n",$1}'); do
|
||||
@ -264,12 +224,10 @@ function remove_pci_devices() # {{{
|
||||
done
|
||||
|
||||
} # }}}
|
||||
|
||||
function rescan_pci_devices() # {{{
|
||||
{
|
||||
echo 1 | sudo dd of=/sys/bus/pci/rescan
|
||||
} # }}}
|
||||
|
||||
function load_qdma_modules() # {{{
|
||||
{
|
||||
drv="$DMA_IP_DRIVERS/QDMA/linux-kernel/bin/qdma-pf.ko"
|
||||
@ -283,7 +241,6 @@ function load_qdma_modules() # {{{
|
||||
sudo insmod "$drv" "hw_buffers=$hw_buffers"
|
||||
sleep 4
|
||||
} # }}}
|
||||
|
||||
function load_bitstream() # {{{
|
||||
{
|
||||
bitstream="$1"
|
||||
@ -308,13 +265,36 @@ reloadfs=
|
||||
resetcpu=
|
||||
verbose=
|
||||
|
||||
while getopts "s:w:k:r:b:v" opt; do
|
||||
bootloader_addr=0x80000000
|
||||
kernel_addr=0x84000000
|
||||
initrd_addr=0x8c300000
|
||||
|
||||
function usage()
|
||||
{
|
||||
echo "" >&2
|
||||
echo "Usage: $0 [-v] [-w bitstream] [-b bootloader] [-k kernel] [-i initrd]" >&2
|
||||
echo "" >&2
|
||||
echo "First writes the bitstream if given. Then loads the rest of files" >&2
|
||||
echo "into memory and restarts the CPU." >&2
|
||||
echo "" >&2
|
||||
echo "Options" >&2
|
||||
echo " -w bitstream Write the bitstream file to the FPGA" >&2
|
||||
echo " -b bootloader Load the bootloader file in $bootloader_addr" >&2
|
||||
echo " -k kernel Load the kernel file in $kernel_addr" >&2
|
||||
echo " -i initrd Load the initrd file in $initrd_addr" >&2
|
||||
echo " -v Be verbose" >&2
|
||||
echo "" >&2
|
||||
exit 1
|
||||
}
|
||||
|
||||
while getopts "hvw:b:k:i:" opt; do
|
||||
case "${opt}" in
|
||||
v) verbose=1 ;;
|
||||
w) bitstream="${OPTARG}" ;;
|
||||
b) bootloader="${OPTARG}"; resetcpu=1 ;;
|
||||
k) kernelfile="${OPTARG}"; resetcpu=1 ;;
|
||||
r) rootfs="${OPTARG}"; resetcpu=1 ;;
|
||||
v) verbose=1 ;;
|
||||
k) kernel="${OPTARG}"; resetcpu=1 ;;
|
||||
i) initrd="${OPTARG}"; resetcpu=1 ;;
|
||||
h) usage ;;
|
||||
*) usage ;;
|
||||
esac
|
||||
done
|
||||
@ -325,9 +305,9 @@ check_environment
|
||||
|
||||
test "$bitstream" && load_bitstream "$bitstream"
|
||||
test "$resetcpu" && do_system_reset
|
||||
test "$bootloader" && load_file_in_memory "${bootloader}" $((0x80000000))
|
||||
test "$kernelfile" && load_file_in_memory "${kernelfile}" $((0x84000000))
|
||||
test "$rootfs" && load_file_in_memory "${rootfs}" $((0x8c300000))
|
||||
test "$bootloader" && load_file_in_memory "$bootloader" $bootloader_addr
|
||||
test "$kernel" && load_file_in_memory "$kernel" $kernel_addr
|
||||
test "$initrd" && load_file_in_memory "$initrd" $initrd_addr
|
||||
test "$resetcpu" && do_system_release
|
||||
|
||||
# vim:ts=2:sw=2:ai:foldmethod=marker:foldlevel=0:
|
||||
|
Loading…
Reference in New Issue
Block a user