12ee67178SXianjun Jiao#!/bin/bash 22ee67178SXianjun Jiao 3e07d2876SJiao Xianjun# Author: Xianjun Jiao 4*94847d80SXianjun Jiao# SPDX-FileCopyrightText: 2022 UGent 5a6085186SLina Ceballos# SPDX-License-Identifier: AGPL-3.0-or-later 6a6085186SLina Ceballos 7*94847d80SXianjun Jiaoprint_usage () { 8*94847d80SXianjun Jiao echo "usage:" 9*94847d80SXianjun Jiao echo " Script for load (or download+load) different driver and FPGA img without rebooting" 10*94847d80SXianjun Jiao echo " no argument: Load .ko driver files and FPGA img (if system_top.bit.bin exist) in current dir with test_mode=0." 11*94847d80SXianjun Jiao echo " 1st argument: If it is a NUMBER, it will be assigned to test_mode. Then load everything from current dir." 12*94847d80SXianjun Jiao echo " 1st argument: If it is a string called \"remote\", it will download driver/FPGA and load everything." 13*94847d80SXianjun Jiao echo " - 2nd argument (if exist) is the target directory name for downloading and reloading" 14*94847d80SXianjun Jiao echo " - 3rd argument (if exist) is the value for test_mode" 15*94847d80SXianjun Jiao echo " 1st argument: neither NUMBER nor \"remote\" nor a .tar.gz file, it is regarded as a directory and load everything from it." 16*94847d80SXianjun Jiao echo " - 2nd argument (if exist) is the value for test_mode" 17*94847d80SXianjun Jiao echo " 1st argument: a .tar.gz file, it will be unpacked then load from that unpacked directory" 18*94847d80SXianjun Jiao echo " - 2nd argument (if exist) is the value for test_mode" 19*94847d80SXianjun Jiao echo " " 20*94847d80SXianjun Jiao} 21*94847d80SXianjun Jiao 222ee67178SXianjun JiaocheckModule () { 23*94847d80SXianjun Jiao MODULE_input="$1" 24*94847d80SXianjun Jiao if lsmod | grep "$MODULE_input" &> /dev/null ; then 25*94847d80SXianjun Jiao echo "$MODULE_input is loaded!" 262ee67178SXianjun Jiao return 0 272ee67178SXianjun Jiao else 28*94847d80SXianjun Jiao echo "$MODULE_input is not loaded!" 292ee67178SXianjun Jiao return 1 302ee67178SXianjun Jiao fi 312ee67178SXianjun Jiao} 322ee67178SXianjun Jiao 33*94847d80SXianjun Jiaodownload_module () { 34*94847d80SXianjun Jiao MODULE_input="$1" 35*94847d80SXianjun Jiao TARGET_DIR_input="$2" 36*94847d80SXianjun Jiao mkdir -p $TARGET_DIR_input 37*94847d80SXianjun Jiao if [ "$MODULE_input" == "fpga" ]; then 38*94847d80SXianjun Jiao wget -O $TARGET_DIR_input/system_top.bit.bin ftp://192.168.10.1/user_space/system_top.bit.bin 392ee67178SXianjun Jiao else 40*94847d80SXianjun Jiao if [ "$MODULE_input" == "sdr" ]; then 41*94847d80SXianjun Jiao wget -O $TARGET_DIR_input/$MODULE_input.ko ftp://192.168.10.1/driver/$MODULE_input.ko 422ee67178SXianjun Jiao else 43*94847d80SXianjun Jiao wget -O $TARGET_DIR_input/$MODULE_input.ko ftp://192.168.10.1/driver/$MODULE_input/$MODULE_input.ko 442ee67178SXianjun Jiao fi 452ee67178SXianjun Jiao fi 46*94847d80SXianjun Jiao sync 47*94847d80SXianjun Jiao} 48*94847d80SXianjun Jiao 49*94847d80SXianjun Jiaoinsert_check_module () { 50*94847d80SXianjun Jiao TARGET_DIR_input="$1" 51*94847d80SXianjun Jiao MODULE_input="$2" 52*94847d80SXianjun Jiao rmmod $MODULE_input 53*94847d80SXianjun Jiao if [[ -n $3 ]]; then 54*94847d80SXianjun Jiao (set -x; insmod $TARGET_DIR_input/$MODULE_input.ko test_mode=$3) 55*94847d80SXianjun Jiao else 56*94847d80SXianjun Jiao (set -x; insmod $TARGET_DIR_input/$MODULE_input.ko) 57*94847d80SXianjun Jiao fi 58*94847d80SXianjun Jiao 59*94847d80SXianjun Jiao checkModule $MODULE_input 60*94847d80SXianjun Jiao if [ $? -eq 1 ]; then 61*94847d80SXianjun Jiao exit 1 62*94847d80SXianjun Jiao fi 63*94847d80SXianjun Jiao} 64*94847d80SXianjun Jiao 65*94847d80SXianjun Jiaoprint_usage 66*94847d80SXianjun Jiaosync 67*94847d80SXianjun Jiao 68*94847d80SXianjun JiaoTARGET_DIR=./ 69*94847d80SXianjun JiaoDOWNLOAD_FLAG=0 70*94847d80SXianjun Jiaotest_mode=0 71*94847d80SXianjun Jiao 72*94847d80SXianjun Jiaoif [[ -n $1 ]]; then 73*94847d80SXianjun Jiao re='^[0-9]+$' 74*94847d80SXianjun Jiao if ! [[ $1 =~ $re ]] ; then # not a number 75*94847d80SXianjun Jiao if [ "$1" == "remote" ]; then 76*94847d80SXianjun Jiao DOWNLOAD_FLAG=1 77*94847d80SXianjun Jiao if [[ -n $2 ]]; then 78*94847d80SXianjun Jiao TARGET_DIR=$2 79*94847d80SXianjun Jiao fi 80*94847d80SXianjun Jiao if [[ -n $3 ]]; then 81*94847d80SXianjun Jiao test_mode=$3 82*94847d80SXianjun Jiao fi 83*94847d80SXianjun Jiao else 84*94847d80SXianjun Jiao if [[ "$1" == *".tar.gz"* ]]; then 85*94847d80SXianjun Jiao set -x 86*94847d80SXianjun Jiao tar_gz_filename=$1 87*94847d80SXianjun Jiao TARGET_DIR=${tar_gz_filename%".tar.gz"} 88*94847d80SXianjun Jiao mkdir -p $TARGET_DIR 89*94847d80SXianjun Jiao rm -rf $TARGET_DIR/* 90*94847d80SXianjun Jiao tar -zxvf $1 -C $TARGET_DIR 91*94847d80SXianjun Jiao find $TARGET_DIR/ -name \*.ko -exec cp {} $TARGET_DIR/ \; 92*94847d80SXianjun Jiao find $TARGET_DIR/ -name \*.bit.bin -exec cp {} $TARGET_DIR/ \; 93*94847d80SXianjun Jiao set +x 94*94847d80SXianjun Jiao else 95*94847d80SXianjun Jiao TARGET_DIR=$1 96*94847d80SXianjun Jiao fi 97*94847d80SXianjun Jiao if [[ -n $2 ]]; then 98*94847d80SXianjun Jiao test_mode=$2 99*94847d80SXianjun Jiao fi 100*94847d80SXianjun Jiao fi 101*94847d80SXianjun Jiao else # is a number 102*94847d80SXianjun Jiao test_mode=$1 103*94847d80SXianjun Jiao fi 104*94847d80SXianjun Jiaofi 105*94847d80SXianjun Jiao 106*94847d80SXianjun Jiaoecho TARGET_DIR $TARGET_DIR 107*94847d80SXianjun Jiaoecho DOWNLOAD_FLAG $DOWNLOAD_FLAG 108*94847d80SXianjun Jiaoecho test_mode $test_mode 109*94847d80SXianjun Jiao 110*94847d80SXianjun Jiaosync 1114a12fa04SXianjun Jiao 1124a12fa04SXianjun Jiao#if ((($test_mode & 0x2) != 0)); then 1134a12fa04SXianjun Jiao tx_offset_tuning_enable=0 1144a12fa04SXianjun Jiao#else 1154a12fa04SXianjun Jiao# tx_offset_tuning_enable=1 1164a12fa04SXianjun Jiao#fi 1174a12fa04SXianjun Jiao 1184a12fa04SXianjun Jiaoecho tx_offset_tuning_enable $tx_offset_tuning_enable 1194a12fa04SXianjun Jiao 120*94847d80SXianjun Jiaoif [ -d "$TARGET_DIR" ]; then 121*94847d80SXianjun Jiao echo "\$TARGET_DIR is found!" 122*94847d80SXianjun Jiaoelse 123*94847d80SXianjun Jiao if [ $DOWNLOAD_FLAG -eq 0 ]; then 124*94847d80SXianjun Jiao echo "\$TARGET_DIR is not correct. Please check!" 125*94847d80SXianjun Jiao exit 1 126*94847d80SXianjun Jiao fi 127*94847d80SXianjun Jiaofi 128*94847d80SXianjun Jiao 129*94847d80SXianjun Jiaoecho " " 130*94847d80SXianjun Jiao 1314a12fa04SXianjun Jiaoservice network-manager stop 1324a12fa04SXianjun Jiao 133*94847d80SXianjun Jiaormmod sdr 134*94847d80SXianjun Jiaoinsert_check_module ./ ad9361_drv 135*94847d80SXianjun Jiao 136*94847d80SXianjun Jiaoif [ $DOWNLOAD_FLAG -eq 1 ]; then 137*94847d80SXianjun Jiao download_module fpga $TARGET_DIR 138*94847d80SXianjun Jiaofi 139*94847d80SXianjun Jiao 140*94847d80SXianjun Jiaoif [ -f "$TARGET_DIR/system_top.bit.bin" ]; then 141*94847d80SXianjun Jiao ./load_fpga_img.sh $TARGET_DIR/system_top.bit.bin 142*94847d80SXianjun Jiaoelse 143*94847d80SXianjun Jiao echo $TARGET_DIR/system_top.bit.bin not found. Skip reloading FPGA. 144*94847d80SXianjun Jiaofi 145*94847d80SXianjun Jiao 146*94847d80SXianjun Jiao./rf_init_11n.sh 147*94847d80SXianjun Jiaoinsert_check_module ./ xilinx_dma 148*94847d80SXianjun Jiao 1497e3e6749Sweiliudepmod 1502ee67178SXianjun Jiaomodprobe mac80211 1517e3e6749Sweiliulsmod 1522ee67178SXianjun Jiao 153*94847d80SXianjun JiaoMODULE_ALL="tx_intf rx_intf openofdm_tx openofdm_rx xpu sdr" 154*94847d80SXianjun Jiaofor MODULE in $MODULE_ALL 155*94847d80SXianjun Jiaodo 156*94847d80SXianjun Jiao if [ $DOWNLOAD_FLAG -eq 1 ]; then 157*94847d80SXianjun Jiao download_module $MODULE $TARGET_DIR 1587e3e6749Sweiliu fi 159*94847d80SXianjun Jiao if [ "$MODULE" == "sdr" ]; then 160*94847d80SXianjun Jiao insert_check_module $TARGET_DIR $MODULE $test_mode 161*94847d80SXianjun Jiao else 162*94847d80SXianjun Jiao insert_check_module $TARGET_DIR $MODULE 1637e3e6749Sweiliu fi 164*94847d80SXianjun Jiaodone 1652ee67178SXianjun Jiao 1668a2eaff3Sthavingaif ps -p $(</tmp/check_calib_inf.pid) > /dev/null 1678a2eaff3Sthavingathen 1688a2eaff3Sthavinga kill $(</tmp/check_calib_inf.pid) 1698a2eaff3Sthavingafi 1708a2eaff3Sthavinga./check_calib_inf.sh 1718a2eaff3Sthavinga 1722ee67178SXianjun Jiaoecho the end 173*94847d80SXianjun Jiao# dmesg 174*94847d80SXianjun Jiao# lsmod 175