xref: /openwifi/user_space/drv_and_fpga_package_gen.sh (revision 94847d8099d02464386e2c89892d4d135cf864f7)
1*94847d80SXianjun Jiao
2*94847d80SXianjun Jiao#!/bin/bash
3*94847d80SXianjun Jiao
4*94847d80SXianjun Jiao# Author: Xianjun Jiao
5*94847d80SXianjun Jiao# SPDX-FileCopyrightText: 2022 UGent
6*94847d80SXianjun Jiao# SPDX-License-Identifier: AGPL-3.0-or-later
7*94847d80SXianjun Jiao
8*94847d80SXianjun Jiaoif [ "$#" -ne 3 ]; then
9*94847d80SXianjun Jiao    echo "You have input $# arguments."
10*94847d80SXianjun Jiao    echo "You must enter exactly 3 arguments: \$OPENWIFI_HW_DIR \$XILINX_DIR \$BOARD_NAME"
11*94847d80SXianjun Jiao    exit 1
12*94847d80SXianjun Jiaofi
13*94847d80SXianjun Jiao
14*94847d80SXianjun JiaoOPENWIFI_HW_DIR=$1
15*94847d80SXianjun JiaoXILINX_DIR=$2
16*94847d80SXianjun JiaoBOARD_NAME=$3
17*94847d80SXianjun Jiao
18*94847d80SXianjun Jiaoif [ -d "$XILINX_DIR/SDK" ]; then
19*94847d80SXianjun Jiao    echo "\$XILINX_DIR is found!"
20*94847d80SXianjun Jiaoelse
21*94847d80SXianjun Jiao    echo "\$XILINX_DIR is not correct. Please check!"
22*94847d80SXianjun Jiao    exit 1
23*94847d80SXianjun Jiaofi
24*94847d80SXianjun Jiao
25*94847d80SXianjun 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
26*94847d80SXianjun Jiao    echo "\$BOARD_NAME is not correct. Please check!"
27*94847d80SXianjun Jiao    exit 1
28*94847d80SXianjun Jiaoelse
29*94847d80SXianjun Jiao    echo "\$BOARD_NAME is found!"
30*94847d80SXianjun Jiaofi
31*94847d80SXianjun Jiao
32*94847d80SXianjun Jiaoif [ -d "$OPENWIFI_HW_DIR/boards/$BOARD_NAME" ]; then
33*94847d80SXianjun Jiao    echo "\$OPENWIFI_HW_DIR is found!"
34*94847d80SXianjun Jiaoelse
35*94847d80SXianjun Jiao    echo "\$OPENWIFI_HW_DIR is not correct. Please check!"
36*94847d80SXianjun Jiao    exit 1
37*94847d80SXianjun Jiaofi
38*94847d80SXianjun Jiao
39*94847d80SXianjun Jiao# uncompress the system.hdf and system_top.bit for use
40*94847d80SXianjun Jiaomkdir -p hdf_and_bit
41*94847d80SXianjun Jiaotar -zxvf $OPENWIFI_HW_DIR/boards/$BOARD_NAME/sdk/system_top_hw_platform_0/hdf_and_bit.tar.gz -C ./hdf_and_bit
42*94847d80SXianjun 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
43*94847d80SXianjun 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
44*94847d80SXianjun Jiao
45*94847d80SXianjun JiaoBIT_FILENAME=$OPENWIFI_HW_DIR/boards/$BOARD_NAME/sdk/system_top_hw_platform_0/system_top.bit
46*94847d80SXianjun Jiao
47*94847d80SXianjun Jiaoif [ -f "$BIT_FILENAME" ]; then
48*94847d80SXianjun Jiao    echo "\$BIT_FILENAME is found!"
49*94847d80SXianjun Jiaoelse
50*94847d80SXianjun Jiao    echo "\$BIT_FILENAME does NOT exist. Please check!"
51*94847d80SXianjun Jiao    exit 1
52*94847d80SXianjun Jiaofi
53*94847d80SXianjun Jiao
54*94847d80SXianjun Jiaoif [ "$BOARD_NAME" == "zcu102_fmcs2" ] || [ "$BOARD_NAME" == "zcu102_9371" ]; then
55*94847d80SXianjun Jiao    ARCH="zynqmp"
56*94847d80SXianjun Jiao    ARCH_BIT=64
57*94847d80SXianjun Jiaoelse
58*94847d80SXianjun Jiao    ARCH="zynq"
59*94847d80SXianjun Jiao    ARCH_BIT=32
60*94847d80SXianjun Jiaofi
61*94847d80SXianjun Jiao
62*94847d80SXianjun Jiao# FINAL_BIT_FILENAME=$BOARD_NAME\_system_top_reload.bit.bin
63*94847d80SXianjun Jiao
64*94847d80SXianjun Jiaosource $XILINX_DIR/SDK/2018.3/settings64.sh
65*94847d80SXianjun Jiao
66*94847d80SXianjun Jiaoset -x
67*94847d80SXianjun Jiao
68*94847d80SXianjun Jiaocp $BIT_FILENAME ./
69*94847d80SXianjun Jiaobootgen -image system_top.bif -arch $ARCH -process_bitstream bin -w
70*94847d80SXianjun Jiao
71*94847d80SXianjun Jiao# cp system_top_reload.bit.bin ./$FINAL_BIT_FILENAME
72*94847d80SXianjun Jiao
73*94847d80SXianjun Jiaocd ../driver
74*94847d80SXianjun Jiao./make_all.sh $XILINX_DIR $ARCH_BIT
75*94847d80SXianjun Jiaocd ../user_space
76*94847d80SXianjun Jiaomkdir -p drv_and_fpga
77*94847d80SXianjun Jiaorm -rf drv_and_fpga/*
78*94847d80SXianjun 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
79*94847d80SXianjun Jiaocp $OPENWIFI_HW_DIR/boards/$BOARD_NAME/sdk/git_info.txt ./drv_and_fpga -f
80*94847d80SXianjun Jiaotar -cvf ./drv_and_fpga/driver.tar $(git ls-files ../driver/)
81*94847d80SXianjun Jiao
82*94847d80SXianjun Jiaodir_save=$(pwd)
83*94847d80SXianjun Jiao
84*94847d80SXianjun Jiaocd $OPENWIFI_HW_DIR/ip/
85*94847d80SXianjun Jiaotar -cvf $dir_save/drv_and_fpga/openwifi-hw-ip-root.tar $(git ls-files ./ | grep -v -E "/|openofdm_rx")
86*94847d80SXianjun Jiaotar -cvf $dir_save/drv_and_fpga/openwifi-hw-ip-xpu.tar $(git ls-files ./xpu)
87*94847d80SXianjun Jiaotar -cvf $dir_save/drv_and_fpga/openwifi-hw-ip-tx_intf.tar $(git ls-files ./tx_intf)
88*94847d80SXianjun Jiaotar -cvf $dir_save/drv_and_fpga/openwifi-hw-ip-rx_intf.tar $(git ls-files ./rx_intf)
89*94847d80SXianjun Jiaotar -cvf $dir_save/drv_and_fpga/openwifi-hw-ip-openofdm_tx.tar $(git ls-files ./openofdm_tx)
90*94847d80SXianjun Jiaotar -cvf $dir_save/drv_and_fpga/openwifi-hw-ip-side_ch.tar $(git ls-files ./side_ch)
91*94847d80SXianjun Jiao
92*94847d80SXianjun Jiaocd ../boards
93*94847d80SXianjun Jiaotar -cvf $dir_save/drv_and_fpga/openwifi-hw-boards-root.tar $(git ls-files ./ | grep -v "/")
94*94847d80SXianjun Jiaocd ./$BOARD_NAME
95*94847d80SXianjun Jiaotar -cvf $dir_save/drv_and_fpga/openwifi-hw-boards-$BOARD_NAME-root.tar $(git ls-files ./ | grep -v "/")
96*94847d80SXianjun Jiaotar -cvf $dir_save/drv_and_fpga/openwifi-hw-boards-$BOARD_NAME-src.tar $(git ls-files ./src)
97*94847d80SXianjun Jiaotar -cvf $dir_save/drv_and_fpga/openwifi-hw-boards-$BOARD_NAME-ip_repo.tar ip_repo
98*94847d80SXianjun Jiao
99*94847d80SXianjun Jiaocd $dir_save
100*94847d80SXianjun 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
101*94847d80SXianjun Jiao
102*94847d80SXianjun Jiaotar -zcvf drv_and_fpga.tar.gz drv_and_fpga
103*94847d80SXianjun Jiao
104*94847d80SXianjun Jiaoset +x
105