1#!/bin/bash 2 3# Author: Xianjun Jiao 4# SPDX-FileCopyrightText: 2022 UGent 5# SPDX-License-Identifier: AGPL-3.0-or-later 6 7# get fpga image file name 8if [[ -n $1 ]]; then 9 fpga_img_filename=$1 10else 11 fpga_img_filename=system_top.bit.bin 12fi 13 14fpga_type=$(cat /proc/device-tree/compatible) 15fpga_img_filename_core=${fpga_img_filename##*/} 16echo $fpga_type 17echo $fpga_img_filename 18echo $fpga_img_filename_core 19 20set -x 21 22ifconfig sdr0 down 23rmmod sdr 24# rmmod mac80211 25# rmmod cfg80211 26# rmmod ad9361_drv 27# rmmod xilinx_dma.ko 28rmmod openofdm_rx 29rmmod openofdm_tx 30rmmod rx_intf 31rmmod tx_intf 32rmmod xpu 33 34sleep 1 35 36echo 0 > /sys/class/fpga_manager/fpga0/flags 37mkdir -p /lib/firmware 38cp $fpga_img_filename /lib/firmware/ 39echo $fpga_img_filename_core > /sys/class/fpga_manager/fpga0/firmware 40 41# insmod ad9361_drv.ko 42# sleep 1 43 44if [ "$fpga_type" != "xlnx,zynq-7000" ]; then 45 SPI_DEVNAME="spi1.0" 46 DDS_DEVNAME="99024000.cf-ad9361-dds-core-lpc" 47 ADC_DEVNAME="99020000.cf-ad9361-lpc" 48else 49 SPI_DEVNAME="spi0.0" 50 DDS_DEVNAME="79024000.cf-ad9361-dds-core-lpc" 51 ADC_DEVNAME="79020000.cf-ad9361-lpc" 52fi 53 54while [ ! -d "/sys/bus/spi/drivers/ad9361/$SPI_DEVNAME" ] 55do 56 echo "Waiting for /sys/bus/spi/drivers/ad9361/$SPI_DEVNAME" 57 sleep 0.2 58done 59cd /sys/bus/spi/drivers/ad9361/ 60echo $SPI_DEVNAME > unbind 61echo $SPI_DEVNAME > bind 62 63while [ ! -d "/sys/bus/platform/drivers/cf_axi_dds/$DDS_DEVNAME" ] 64do 65 echo "Waiting for /sys/bus/platform/drivers/cf_axi_dds/$DDS_DEVNAME" 66 sleep 0.2 67done 68cd /sys/bus/platform/drivers/cf_axi_dds/ 69echo $DDS_DEVNAME > unbind 70echo $DDS_DEVNAME > bind 71 72while [ ! -d "/sys/bus/platform/drivers/cf_axi_adc/$ADC_DEVNAME" ] 73do 74 echo "Waiting for /sys/bus/platform/drivers/cf_axi_adc/$ADC_DEVNAME" 75 sleep 0.2 76done 77cd /sys/bus/platform/drivers/cf_axi_adc/ 78echo $ADC_DEVNAME > unbind 79echo $ADC_DEVNAME > bind 80 81set +x 82