1 2#!/bin/bash 3 4# Author: Xianjun Jiao 5# SPDX-FileCopyrightText: 2019 UGent 6# SPDX-License-Identifier: AGPL-3.0-or-later 7 8# Only put BOOT partition (BOOT.BIN devicetree kernel) and kernel modules drivers on the SD card, but not populate them 9 10if [ "$#" -lt 3 ]; then 11 echo "You have input $# arguments." 12 echo "You must enter exactly 3 arguments: \$OPENWIFI_HW_IMG_DIR \$XILINX_DIR \$SDCARD_DIR" 13 exit 1 14fi 15 16SKIP_KERNEL_BUILD=0 17SKIP_BOOT=0 18SKIP_rootfs=0 19if [ "$#" -eq 4 ]; then 20 SKIP_KERNEL_BUILD=$(( ($4 >> 0) & 1 )) 21 SKIP_BOOT=$(( ($4 >> 1) & 1 )) 22 SKIP_rootfs=$(( ($4 >> 2) & 1 )) 23 echo $4 24 echo SKIP_KERNEL_BUILD $SKIP_KERNEL_BUILD 25 echo SKIP_BOOT $SKIP_BOOT 26 echo SKIP_rootfs $SKIP_rootfs 27fi 28 29OPENWIFI_HW_IMG_DIR=$1 30XILINX_DIR=$2 31SDCARD_DIR=$3 32 33OPENWIFI_DIR=$(pwd)/../ 34 35echo OPENWIFI_DIR $OPENWIFI_DIR 36echo OPENWIFI_HW_IMG_DIR $OPENWIFI_HW_IMG_DIR 37 38if [ -f "$OPENWIFI_DIR/LICENSE" ]; then 39 echo "\$OPENWIFI_DIR is found!" 40else 41 echo "\$OPENWIFI_DIR is not correct. Please check!" 42 exit 1 43fi 44 45if [ -d "$XILINX_DIR/Vitis" ]; then 46 echo "\$XILINX_DIR is found!" 47else 48 echo "\$XILINX_DIR is not correct. Please check!" 49 exit 1 50fi 51 52if [ -d "$OPENWIFI_HW_IMG_DIR/boards/" ]; then 53 echo "\$OPENWIFI_HW_IMG_DIR is found!" 54else 55 echo "\$OPENWIFI_HW_IMG_DIR is not correct. Please check!" 56 exit 1 57fi 58 59# detect SD card mounting status 60if [ -d "$SDCARD_DIR/BOOT/" ]; then 61 echo "$SDCARD_DIR/BOOT/" 62 sudo rm -f $SDCARD_DIR/BOOT/README.txt 63 # to save some space 64 sudo rm -rf $SDCARD_DIR/BOOT/socfpga_* 65 sudo rm -rf $SDCARD_DIR/BOOT/versal-* 66else 67 echo "$SDCARD_DIR/BOOT/ does not exist!" 68 exit 1 69fi 70 71if [ -d "$SDCARD_DIR/rootfs/" ]; then 72 echo "$SDCARD_DIR/rootfs/" 73else 74 echo "$SDCARD_DIR/rootfs/ does not exist!" 75 exit 1 76fi 77 78sudo true 79 80home_dir=$(pwd) 81 82set -x 83 84LINUX_KERNEL_SRC_DIR_NAME32=adi-linux 85LINUX_KERNEL_SRC_DIR_NAME64=adi-linux-64 86 87if [ "$SKIP_KERNEL_BUILD" == "0" ]; then 88 cd $OPENWIFI_DIR/user_space/ 89 ./prepare_kernel.sh $XILINX_DIR 32 90 sudo true 91 ./prepare_kernel.sh $XILINX_DIR 64 92 sudo true 93fi 94 95if [ "$SKIP_BOOT" == "0" ]; then 96 sudo rm -rf $SDCARD_DIR/BOOT/openwifi/ 97 sudo mkdir -p $SDCARD_DIR/BOOT/openwifi 98 BOARD_NAME_ALL="sdrpi antsdr antsdr_e200 zc706_fmcs2 zed_fmcs2 zc702_fmcs2 adrv9361z7035 adrv9364z7020 zcu102_fmcs2 neptunesdr" 99 for BOARD_NAME_TMP in $BOARD_NAME_ALL 100 do 101 if [ "$BOARD_NAME_TMP" == "zcu102_fmcs2" ] || [ "$BOARD_NAME_TMP" == "zcu102_9371" ]; then 102 dtb_filename_tmp="system.dtb" 103 dts_filename_tmp="system.dts" 104 else 105 dtb_filename_tmp="devicetree.dtb" 106 dts_filename_tmp="devicetree.dts" 107 kernel_img_filename_tmp=$OPENWIFI_DIR/$LINUX_KERNEL_SRC_DIR_NAME32/arch/arm/boot/uImage 108 fi 109 ./boot_bin_gen.sh $XILINX_DIR $BOARD_NAME_TMP $OPENWIFI_HW_IMG_DIR/boards/$BOARD_NAME_TMP/sdk/system_top.xsa 110 echo $dtb_filename_tmp 111 echo $dts_filename_tmp 112 113 dtc -I dts -O dtb -o $OPENWIFI_DIR/kernel_boot/boards/$BOARD_NAME_TMP/$dtb_filename_tmp $OPENWIFI_DIR/kernel_boot/boards/$BOARD_NAME_TMP/$dts_filename_tmp 114 sudo mkdir -p $SDCARD_DIR/BOOT/openwifi/$BOARD_NAME_TMP 115 sudo cp $OPENWIFI_DIR/kernel_boot/boards/$BOARD_NAME_TMP/$dtb_filename_tmp $SDCARD_DIR/BOOT/openwifi/$BOARD_NAME_TMP/ 116 sudo cp $OPENWIFI_DIR/kernel_boot/boards/$BOARD_NAME_TMP/output_boot_bin/BOOT.BIN $SDCARD_DIR/BOOT/openwifi/$BOARD_NAME_TMP/ 117 sudo true 118 done 119 120 kernel_img_filename_tmp=$OPENWIFI_DIR/$LINUX_KERNEL_SRC_DIR_NAME64/arch/arm64/boot/Image 121 sudo cp $kernel_img_filename_tmp $SDCARD_DIR/BOOT/ 122 kernel_img_filename_tmp=$OPENWIFI_DIR/$LINUX_KERNEL_SRC_DIR_NAME32/arch/arm/boot/uImage 123 sudo cp $kernel_img_filename_tmp $SDCARD_DIR/BOOT/ 124fi 125 126if [ "$SKIP_rootfs" == "0" ]; then 127 sudo rm -rf $SDCARD_DIR/rootfs/root/openwifi/ 128 sudo mkdir -p $SDCARD_DIR/rootfs/root/openwifi 129 130 saved_dir=$(pwd) 131 cd $OPENWIFI_DIR/user_space/ 132 git clean -dxf ./ 133 cd $saved_dir 134 sudo cp $OPENWIFI_DIR/user_space/* $SDCARD_DIR/rootfs/root/openwifi/ -rf 135 sudo mv $SDCARD_DIR/rootfs/root/openwifi/system_top.bit.bin $SDCARD_DIR/rootfs/root/openwifi/system_top.bit.bin.bak 136 sudo wget -P $SDCARD_DIR/rootfs/root/openwifi/webserver/ https://users.ugent.be/~xjiao/openwifi-low-aac.mp4 137 138 ARCH_OPTION_ALL="32 64" 139 for ARCH_OPTION_TMP in $ARCH_OPTION_ALL 140 do 141 # build openwifi driver 142 saved_dir=$(pwd) 143 cd $OPENWIFI_DIR/driver/ 144 git clean -dxf ./ 145 sync 146 ./make_all.sh $XILINX_DIR $ARCH_OPTION_TMP 147 cd $saved_dir 148 149 # Copy files to SD card rootfs partition 150 sudo rm -rf $SDCARD_DIR/rootfs/root/openwifi$ARCH_OPTION_TMP/ 151 sudo mkdir -p $SDCARD_DIR/rootfs/root/openwifi$ARCH_OPTION_TMP 152 sudo find $OPENWIFI_DIR/driver/ -name \*.ko -exec cp {} $SDCARD_DIR/rootfs/root/openwifi$ARCH_OPTION_TMP \; 153 154 sudo rm -rf $SDCARD_DIR/rootfs/root/kernel_modules$ARCH_OPTION_TMP/ 155 sudo mkdir -p $SDCARD_DIR/rootfs/root/kernel_modules$ARCH_OPTION_TMP 156 157 if [ "$ARCH_OPTION_TMP" == "32" ]; then 158 sudo find $OPENWIFI_DIR/$LINUX_KERNEL_SRC_DIR_NAME32 -name \*.ko -exec cp {} $SDCARD_DIR/rootfs/root/kernel_modules$ARCH_OPTION_TMP/ \; 159 sudo cp $OPENWIFI_DIR/$LINUX_KERNEL_SRC_DIR_NAME32/Module.symvers $SDCARD_DIR/rootfs/root/kernel_modules$ARCH_OPTION_TMP/ 160 sudo cp $OPENWIFI_DIR/$LINUX_KERNEL_SRC_DIR_NAME32/modules.builtin $SDCARD_DIR/rootfs/root/kernel_modules$ARCH_OPTION_TMP/ 161 sudo cp $OPENWIFI_DIR/$LINUX_KERNEL_SRC_DIR_NAME32/modules.builtin.modinfo $SDCARD_DIR/rootfs/root/kernel_modules$ARCH_OPTION_TMP/ 162 sudo cp $OPENWIFI_DIR/$LINUX_KERNEL_SRC_DIR_NAME32/modules.order $SDCARD_DIR/rootfs/root/kernel_modules$ARCH_OPTION_TMP/ 163 else 164 sudo find $OPENWIFI_DIR/$LINUX_KERNEL_SRC_DIR_NAME64 -name \*.ko -exec cp {} $SDCARD_DIR/rootfs/root/kernel_modules$ARCH_OPTION_TMP/ \; 165 sudo cp $OPENWIFI_DIR/$LINUX_KERNEL_SRC_DIR_NAME64/Module.symvers $SDCARD_DIR/rootfs/root/kernel_modules$ARCH_OPTION_TMP/ 166 sudo cp $OPENWIFI_DIR/$LINUX_KERNEL_SRC_DIR_NAME64/modules.builtin $SDCARD_DIR/rootfs/root/kernel_modules$ARCH_OPTION_TMP/ 167 sudo cp $OPENWIFI_DIR/$LINUX_KERNEL_SRC_DIR_NAME64/modules.builtin.modinfo $SDCARD_DIR/rootfs/root/kernel_modules$ARCH_OPTION_TMP/ 168 sudo cp $OPENWIFI_DIR/$LINUX_KERNEL_SRC_DIR_NAME64/modules.order $SDCARD_DIR/rootfs/root/kernel_modules$ARCH_OPTION_TMP/ 169 fi 170 171 sudo rm -rf $SDCARD_DIR/rootfs/lib/modules/*dirty* 172 sudo rm -rf $SDCARD_DIR/rootfs/root/kernel_modules 173 174 # sudo rm $SDCARD_DIR/rootfs/root/kernel_modules$ARCH_OPTION_TMP/axidmatest.ko -f 175 # sudo rm $SDCARD_DIR/rootfs/root/kernel_modules$ARCH_OPTION_TMP/adi_axi_hdmi.ko -f 176 done 177 178fi 179 180cd $SDCARD_DIR/BOOT 181sync 182cd $SDCARD_DIR/rootfs 183sync 184 185cd $home_dir 186 187umount $SDCARD_DIR/BOOT/ 188umount $SDCARD_DIR/rootfs/ 189