xref: /openwifi/user_space/drv_and_fpga_package_gen.sh (revision a47b55e6cafa759d041cd8d309e454edc8a51770)
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."
1022a15944SXianjun Jiao    echo "You must enter exactly 3 arguments: \$OPENWIFI_HW_IMG_DIR \$XILINX_DIR \$BOARD_NAME"
1194847d80SXianjun Jiao    exit 1
1294847d80SXianjun Jiaofi
1394847d80SXianjun Jiao
1422a15944SXianjun JiaoOPENWIFI_HW_IMG_DIR=$1
1594847d80SXianjun JiaoXILINX_DIR=$2
1694847d80SXianjun JiaoBOARD_NAME=$3
1794847d80SXianjun Jiao
186a4d7ceaSXianjun Jiaoif [ -d "$XILINX_DIR/Vitis" ]; 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
25*a47b55e6SJiao Xianjunif [ "$BOARD_NAME" != "neptunesdr" ] && [ "$BOARD_NAME" != "antsdr" ] && [ "$BOARD_NAME" != "antsdr_e200" ] && [ "$BOARD_NAME" != "e310v2" ]  && [ "$BOARD_NAME" != "sdrpi" ] && [ "$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
3222a15944SXianjun Jiaoif [ -d "$OPENWIFI_HW_IMG_DIR/boards/$BOARD_NAME" ]; then
3322a15944SXianjun Jiao    echo "\$OPENWIFI_HW_IMG_DIR is found!"
3494847d80SXianjun Jiaoelse
3522a15944SXianjun Jiao    echo "\$OPENWIFI_HW_IMG_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
416a4d7ceaSXianjun Jiaorm hdf_and_bit/* -rf
4222a15944SXianjun Jiaounzip $OPENWIFI_HW_IMG_DIR/boards/$BOARD_NAME/sdk/system_top.xsa -d ./hdf_and_bit
4322a15944SXianjun Jiao# cp ./hdf_and_bit/$BOARD_NAME/sdk/system_top_hw_platform_0/system.hdf $OPENWIFI_HW_IMG_DIR/boards/$BOARD_NAME/sdk/system_top_hw_platform_0/ -rf
4422a15944SXianjun Jiao# cp ./hdf_and_bit/system_top.bit $OPENWIFI_HW_IMG_DIR/boards/$BOARD_NAME/sdk/system_top_hw_platform_0/ -rf
4594847d80SXianjun Jiao
4622a15944SXianjun Jiao# BIT_FILENAME=$OPENWIFI_HW_IMG_DIR/boards/$BOARD_NAME/sdk/system_top_hw_platform_0/system_top.bit
476a4d7ceaSXianjun JiaoBIT_FILENAME=./hdf_and_bit/system_top.bit
4894847d80SXianjun Jiao
4994847d80SXianjun Jiaoif [ -f "$BIT_FILENAME" ]; then
5094847d80SXianjun Jiao    echo "\$BIT_FILENAME is found!"
5194847d80SXianjun Jiaoelse
5294847d80SXianjun Jiao    echo "\$BIT_FILENAME does NOT exist. Please check!"
5394847d80SXianjun Jiao    exit 1
5494847d80SXianjun Jiaofi
5594847d80SXianjun Jiao
5694847d80SXianjun Jiaoif [ "$BOARD_NAME" == "zcu102_fmcs2" ] || [ "$BOARD_NAME" == "zcu102_9371" ]; then
5794847d80SXianjun Jiao    ARCH="zynqmp"
5894847d80SXianjun Jiao    ARCH_BIT=64
5994847d80SXianjun Jiaoelse
6094847d80SXianjun Jiao    ARCH="zynq"
6194847d80SXianjun Jiao    ARCH_BIT=32
6294847d80SXianjun Jiaofi
6394847d80SXianjun Jiao
6494847d80SXianjun Jiao# FINAL_BIT_FILENAME=$BOARD_NAME\_system_top_reload.bit.bin
6594847d80SXianjun Jiao
666a4d7ceaSXianjun Jiaosource $XILINX_DIR/Vitis/2021.1/settings64.sh
6794847d80SXianjun Jiao
6894847d80SXianjun Jiaoset -x
6994847d80SXianjun Jiao
7094847d80SXianjun Jiaocp $BIT_FILENAME ./
7194847d80SXianjun Jiaobootgen -image system_top.bif -arch $ARCH -process_bitstream bin -w
7294847d80SXianjun Jiao
7394847d80SXianjun Jiao# cp system_top_reload.bit.bin ./$FINAL_BIT_FILENAME
7494847d80SXianjun Jiao
7594847d80SXianjun Jiaocd ../driver
7688cef6e2SXianjun Jiaomake clean
7794847d80SXianjun Jiao./make_all.sh $XILINX_DIR $ARCH_BIT
7894847d80SXianjun Jiaocd ../user_space
7994847d80SXianjun Jiaomkdir -p drv_and_fpga
8094847d80SXianjun Jiaorm -rf drv_and_fpga/*
8122a15944SXianjun Jiaocp system_top.bit.bin ../driver/side_ch/side_ch.ko ../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
8222a15944SXianjun Jiaocp $OPENWIFI_HW_IMG_DIR/boards/$BOARD_NAME/sdk/git_info.txt ./drv_and_fpga -f
8394847d80SXianjun Jiaotar -cvf ./drv_and_fpga/driver.tar $(git ls-files ../driver/)
8494847d80SXianjun Jiao
8522a15944SXianjun Jiao# dir_save=$(pwd)
8694847d80SXianjun Jiao
8722a15944SXianjun Jiao# cd $OPENWIFI_HW_DIR/ip/
8822a15944SXianjun Jiao# tar -cvf $dir_save/drv_and_fpga/openwifi-hw-ip-root.tar $(git ls-files ./ | grep -v -E "/|openofdm_rx")
8922a15944SXianjun Jiao# tar -cvf $dir_save/drv_and_fpga/openwifi-hw-ip-xpu.tar $(git ls-files ./xpu)
9022a15944SXianjun Jiao# tar -cvf $dir_save/drv_and_fpga/openwifi-hw-ip-tx_intf.tar $(git ls-files ./tx_intf)
9122a15944SXianjun Jiao# tar -cvf $dir_save/drv_and_fpga/openwifi-hw-ip-rx_intf.tar $(git ls-files ./rx_intf)
9222a15944SXianjun Jiao# tar -cvf $dir_save/drv_and_fpga/openwifi-hw-ip-openofdm_tx.tar $(git ls-files ./openofdm_tx)
9322a15944SXianjun Jiao# tar -cvf $dir_save/drv_and_fpga/openwifi-hw-ip-side_ch.tar $(git ls-files ./side_ch)
9494847d80SXianjun Jiao
9522a15944SXianjun Jiao# cd ../boards
9622a15944SXianjun Jiao# tar -cvf $dir_save/drv_and_fpga/openwifi-hw-boards-root.tar $(git ls-files ./ | grep -v "/")
9722a15944SXianjun Jiao# cd ./$BOARD_NAME
9822a15944SXianjun Jiao# tar -cvf $dir_save/drv_and_fpga/openwifi-hw-boards-$BOARD_NAME-root.tar $(git ls-files ./ | grep -v "/")
9922a15944SXianjun Jiao# tar -cvf $dir_save/drv_and_fpga/openwifi-hw-boards-$BOARD_NAME-src.tar $(git ls-files ./src)
10022a15944SXianjun Jiao# tar -cvf $dir_save/drv_and_fpga/openwifi-hw-boards-$BOARD_NAME-ip_repo.tar ip_repo
10194847d80SXianjun Jiao
10222a15944SXianjun Jiao# cd $dir_save
10322a15944SXianjun 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
10494847d80SXianjun Jiao
10594847d80SXianjun Jiaotar -zcvf drv_and_fpga.tar.gz drv_and_fpga
10694847d80SXianjun Jiao
10794847d80SXianjun Jiaoset +x
108