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 36if [ -f "$fpga_img_filename" ]; then 37 echo 0 > /sys/class/fpga_manager/fpga0/flags 38 mkdir -p /lib/firmware 39 cp $fpga_img_filename /lib/firmware/ -rf 40 echo $fpga_img_filename_core > /sys/class/fpga_manager/fpga0/firmware 41fi 42 43# insmod ad9361_drv.ko 44# sleep 1 45 46if [ "$fpga_type" != "xlnx,zynq-7000" ]; then 47 SPI_DEVNAME="spi1.0" 48 DDS_DEVNAME="99024000.cf-ad9361-dds-core-lpc" 49 ADC_DEVNAME="99020000.cf-ad9361-lpc" 50else 51 SPI_DEVNAME="spi0.0" 52 DDS_DEVNAME="79024000.cf-ad9361-dds-core-lpc" 53 ADC_DEVNAME="79020000.cf-ad9361-lpc" 54fi 55 56while [ ! -d "/sys/bus/spi/drivers/ad9361/$SPI_DEVNAME" ] 57do 58 echo "Waiting for /sys/bus/spi/drivers/ad9361/$SPI_DEVNAME" 59 sleep 0.2 60done 61cd /sys/bus/spi/drivers/ad9361/ 62echo $SPI_DEVNAME > unbind 63echo $SPI_DEVNAME > bind 64 65while [ ! -d "/sys/bus/platform/drivers/cf_axi_dds/$DDS_DEVNAME" ] 66do 67 echo "Waiting for /sys/bus/platform/drivers/cf_axi_dds/$DDS_DEVNAME" 68 sleep 0.2 69done 70cd /sys/bus/platform/drivers/cf_axi_dds/ 71echo $DDS_DEVNAME > unbind 72echo $DDS_DEVNAME > bind 73 74while [ ! -d "/sys/bus/platform/drivers/cf_axi_adc/$ADC_DEVNAME" ] 75do 76 echo "Waiting for /sys/bus/platform/drivers/cf_axi_adc/$ADC_DEVNAME" 77 sleep 0.2 78done 79cd /sys/bus/platform/drivers/cf_axi_adc/ 80echo $ADC_DEVNAME > unbind 81echo $ADC_DEVNAME > bind 82 83set +x 84