194847d80SXianjun Jiao 294847d80SXianjun Jiao#!/bin/bash 394847d80SXianjun Jiao 494847d80SXianjun Jiao# Author: Xianjun Jiao 594847d80SXianjun Jiao# SPDX-FileCopyrightText: 2022 UGent 694847d80SXianjun Jiao# SPDX-License-Identifier: AGPL-3.0-or-later 794847d80SXianjun Jiao 894847d80SXianjun Jiaoif [ "$#" -ne 3 ]; then 994847d80SXianjun Jiao echo "You have input $# arguments." 1094847d80SXianjun Jiao echo "You must enter exactly 3 arguments: \$OPENWIFI_HW_DIR \$XILINX_DIR \$BOARD_NAME" 1194847d80SXianjun Jiao exit 1 1294847d80SXianjun Jiaofi 1394847d80SXianjun Jiao 1494847d80SXianjun JiaoOPENWIFI_HW_DIR=$1 1594847d80SXianjun JiaoXILINX_DIR=$2 1694847d80SXianjun JiaoBOARD_NAME=$3 1794847d80SXianjun Jiao 1894847d80SXianjun Jiaoif [ -d "$XILINX_DIR/SDK" ]; then 1994847d80SXianjun Jiao echo "\$XILINX_DIR is found!" 2094847d80SXianjun Jiaoelse 2194847d80SXianjun Jiao echo "\$XILINX_DIR is not correct. Please check!" 2294847d80SXianjun Jiao exit 1 2394847d80SXianjun Jiaofi 2494847d80SXianjun Jiao 2594847d80SXianjun Jiaoif [ "$BOARD_NAME" != "antsdr" ] && [ "$BOARD_NAME" != "zc706_fmcs2" ] && [ "$BOARD_NAME" != "zc702_fmcs2" ] && [ "$BOARD_NAME" != "zed_fmcs2" ] && [ "$BOARD_NAME" != "adrv9361z7035" ] && [ "$BOARD_NAME" != "adrv9364z7020" ] && [ "$BOARD_NAME" != "zcu102_fmcs2" ] && [ "$BOARD_NAME" != "zcu102_9371" ]; then 2694847d80SXianjun Jiao echo "\$BOARD_NAME is not correct. Please check!" 2794847d80SXianjun Jiao exit 1 2894847d80SXianjun Jiaoelse 2994847d80SXianjun Jiao echo "\$BOARD_NAME is found!" 3094847d80SXianjun Jiaofi 3194847d80SXianjun Jiao 3294847d80SXianjun Jiaoif [ -d "$OPENWIFI_HW_DIR/boards/$BOARD_NAME" ]; then 3394847d80SXianjun Jiao echo "\$OPENWIFI_HW_DIR is found!" 3494847d80SXianjun Jiaoelse 3594847d80SXianjun Jiao echo "\$OPENWIFI_HW_DIR is not correct. Please check!" 3694847d80SXianjun Jiao exit 1 3794847d80SXianjun Jiaofi 3894847d80SXianjun Jiao 3994847d80SXianjun Jiao# uncompress the system.hdf and system_top.bit for use 4094847d80SXianjun Jiaomkdir -p hdf_and_bit 4194847d80SXianjun Jiaotar -zxvf $OPENWIFI_HW_DIR/boards/$BOARD_NAME/sdk/system_top_hw_platform_0/hdf_and_bit.tar.gz -C ./hdf_and_bit 4294847d80SXianjun Jiaocp ./hdf_and_bit/$BOARD_NAME/sdk/system_top_hw_platform_0/system.hdf $OPENWIFI_HW_DIR/boards/$BOARD_NAME/sdk/system_top_hw_platform_0/ -rf 4394847d80SXianjun Jiaocp ./hdf_and_bit/$BOARD_NAME/sdk/system_top_hw_platform_0/system_top.bit $OPENWIFI_HW_DIR/boards/$BOARD_NAME/sdk/system_top_hw_platform_0/ -rf 4494847d80SXianjun Jiao 4594847d80SXianjun JiaoBIT_FILENAME=$OPENWIFI_HW_DIR/boards/$BOARD_NAME/sdk/system_top_hw_platform_0/system_top.bit 4694847d80SXianjun Jiao 4794847d80SXianjun Jiaoif [ -f "$BIT_FILENAME" ]; then 4894847d80SXianjun Jiao echo "\$BIT_FILENAME is found!" 4994847d80SXianjun Jiaoelse 5094847d80SXianjun Jiao echo "\$BIT_FILENAME does NOT exist. Please check!" 5194847d80SXianjun Jiao exit 1 5294847d80SXianjun Jiaofi 5394847d80SXianjun Jiao 5494847d80SXianjun Jiaoif [ "$BOARD_NAME" == "zcu102_fmcs2" ] || [ "$BOARD_NAME" == "zcu102_9371" ]; then 5594847d80SXianjun Jiao ARCH="zynqmp" 5694847d80SXianjun Jiao ARCH_BIT=64 5794847d80SXianjun Jiaoelse 5894847d80SXianjun Jiao ARCH="zynq" 5994847d80SXianjun Jiao ARCH_BIT=32 6094847d80SXianjun Jiaofi 6194847d80SXianjun Jiao 6294847d80SXianjun Jiao# FINAL_BIT_FILENAME=$BOARD_NAME\_system_top_reload.bit.bin 6394847d80SXianjun Jiao 6494847d80SXianjun Jiaosource $XILINX_DIR/SDK/2018.3/settings64.sh 6594847d80SXianjun Jiao 6694847d80SXianjun Jiaoset -x 6794847d80SXianjun Jiao 6894847d80SXianjun Jiaocp $BIT_FILENAME ./ 6994847d80SXianjun Jiaobootgen -image system_top.bif -arch $ARCH -process_bitstream bin -w 7094847d80SXianjun Jiao 7194847d80SXianjun Jiao# cp system_top_reload.bit.bin ./$FINAL_BIT_FILENAME 7294847d80SXianjun Jiao 7394847d80SXianjun Jiaocd ../driver 74*88cef6e2SXianjun Jiaomake clean 7594847d80SXianjun Jiao./make_all.sh $XILINX_DIR $ARCH_BIT 7694847d80SXianjun Jiaocd ../user_space 7794847d80SXianjun Jiaomkdir -p drv_and_fpga 7894847d80SXianjun Jiaorm -rf drv_and_fpga/* 7994847d80SXianjun Jiaocp system_top.bit.bin ../driver/tx_intf/tx_intf.ko ../driver/rx_intf/rx_intf.ko ../driver/openofdm_tx/openofdm_tx.ko ../driver/openofdm_rx/openofdm_rx.ko ../driver/xpu/xpu.ko ../driver/sdr.ko ./drv_and_fpga -f 8094847d80SXianjun Jiaocp $OPENWIFI_HW_DIR/boards/$BOARD_NAME/sdk/git_info.txt ./drv_and_fpga -f 8194847d80SXianjun Jiaotar -cvf ./drv_and_fpga/driver.tar $(git ls-files ../driver/) 8294847d80SXianjun Jiao 8394847d80SXianjun Jiaodir_save=$(pwd) 8494847d80SXianjun Jiao 8594847d80SXianjun Jiaocd $OPENWIFI_HW_DIR/ip/ 8694847d80SXianjun Jiaotar -cvf $dir_save/drv_and_fpga/openwifi-hw-ip-root.tar $(git ls-files ./ | grep -v -E "/|openofdm_rx") 8794847d80SXianjun Jiaotar -cvf $dir_save/drv_and_fpga/openwifi-hw-ip-xpu.tar $(git ls-files ./xpu) 8894847d80SXianjun Jiaotar -cvf $dir_save/drv_and_fpga/openwifi-hw-ip-tx_intf.tar $(git ls-files ./tx_intf) 8994847d80SXianjun Jiaotar -cvf $dir_save/drv_and_fpga/openwifi-hw-ip-rx_intf.tar $(git ls-files ./rx_intf) 9094847d80SXianjun Jiaotar -cvf $dir_save/drv_and_fpga/openwifi-hw-ip-openofdm_tx.tar $(git ls-files ./openofdm_tx) 9194847d80SXianjun Jiaotar -cvf $dir_save/drv_and_fpga/openwifi-hw-ip-side_ch.tar $(git ls-files ./side_ch) 9294847d80SXianjun Jiao 9394847d80SXianjun Jiaocd ../boards 9494847d80SXianjun Jiaotar -cvf $dir_save/drv_and_fpga/openwifi-hw-boards-root.tar $(git ls-files ./ | grep -v "/") 9594847d80SXianjun Jiaocd ./$BOARD_NAME 9694847d80SXianjun Jiaotar -cvf $dir_save/drv_and_fpga/openwifi-hw-boards-$BOARD_NAME-root.tar $(git ls-files ./ | grep -v "/") 9794847d80SXianjun Jiaotar -cvf $dir_save/drv_and_fpga/openwifi-hw-boards-$BOARD_NAME-src.tar $(git ls-files ./src) 9894847d80SXianjun Jiaotar -cvf $dir_save/drv_and_fpga/openwifi-hw-boards-$BOARD_NAME-ip_repo.tar ip_repo 9994847d80SXianjun Jiao 10094847d80SXianjun Jiaocd $dir_save 10194847d80SXianjun Jiao# tar -cvf drv_and_fpga.tar system_top.bit.bin tx_intf.ko rx_intf.ko openofdm_tx.ko openofdm_rx.ko xpu.ko sdr.ko git_info.txt 10294847d80SXianjun Jiao 10394847d80SXianjun Jiaotar -zcvf drv_and_fpga.tar.gz drv_and_fpga 10494847d80SXianjun Jiao 10594847d80SXianjun Jiaoset +x 106