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