xref: /openwifi/user_space/boot_bin_gen.sh (revision a47b55e6cafa759d041cd8d309e454edc8a51770)
1b73660adSXianjun Jiao#!/bin/bash
2a6085186SLina Ceballos
3596ef126SJiao Xianjun# Author: Xianjun Jiao
4596ef126SJiao Xianjun# SPDX-FileCopyrightText: 2019 UGent
5a6085186SLina Ceballos# SPDX-License-Identifier: AGPL-3.0-or-later
6a6085186SLina Ceballos
7b73660adSXianjun Jiaoif [ "$#" -ne 3 ]; then
86ffca2acSXianjun Jiao    echo "You must enter exactly 3 arguments: \$XILINX_DIR \$BOARD_NAME DIR_TO_system_top.xsa"
9b73660adSXianjun Jiao    exit 1
10b73660adSXianjun Jiaofi
11b73660adSXianjun Jiao
126ffca2acSXianjun JiaoXILINX_DIR=$1
136ffca2acSXianjun JiaoBOARD_NAME=$2
146ffca2acSXianjun JiaoXSA_FILE=$3
15b73660adSXianjun Jiao
16abdb610fSJiao XianjunOPENWIFI_DIR=$(pwd)/../
17abdb610fSJiao Xianjun
18abdb610fSJiao Xianjunecho OPENWIFI_DIR $OPENWIFI_DIR
196ffca2acSXianjun Jiaoecho XSA_FILE $XSA_FILE
20abdb610fSJiao Xianjun
21b73660adSXianjun Jiaoif [ -f "$OPENWIFI_DIR/LICENSE" ]; then
22b73660adSXianjun Jiao    echo "\$OPENWIFI_DIR is found!"
23b73660adSXianjun Jiaoelse
24b73660adSXianjun Jiao    echo "\$OPENWIFI_DIR is not correct. Please check!"
25b73660adSXianjun Jiao    exit 1
26b73660adSXianjun Jiaofi
27b73660adSXianjun Jiao
286ffca2acSXianjun Jiaoif [ -d "$XILINX_DIR/Vitis" ]; then
29b73660adSXianjun Jiao    echo "\$XILINX_DIR is found!"
30b73660adSXianjun Jiaoelse
31b73660adSXianjun Jiao    echo "\$XILINX_DIR is not correct. Please check!"
32b73660adSXianjun Jiao    exit 1
33b73660adSXianjun Jiaofi
34b73660adSXianjun Jiao
356ffca2acSXianjun Jiao# if [ "$BOARD_NAME" != "antsdr" ] && [ "$BOARD_NAME" != "zc706_fmcs2" ] && [ "$BOARD_NAME" != "zc702_fmcs2" ] && [ "$BOARD_NAME" != "zed_fmcs2" ] && [ "$BOARD_NAME" != "adrv9361z7035" ] && [ "$BOARD_NAME" != "adrv9364z7020" ]; then
366ffca2acSXianjun Jiao#     echo "\$BOARD_NAME is not correct. Please check!"
376ffca2acSXianjun Jiao#     exit 1
386ffca2acSXianjun Jiao# else
396ffca2acSXianjun Jiao#     echo "\$BOARD_NAME is found!"
406ffca2acSXianjun Jiao# fi
41b73660adSXianjun Jiao
426ffca2acSXianjun Jiaoif [ -f "$XSA_FILE" ]; then
436ffca2acSXianjun Jiao    echo "\$XSA_FILE is found!"
44abdb610fSJiao Xianjunelse
456ffca2acSXianjun Jiao    echo "\$XSA_FILE is not found. Please check!"
46abdb610fSJiao Xianjun    exit 1
47abdb610fSJiao Xianjunfi
48abdb610fSJiao Xianjun
49b73660adSXianjun Jiaohome_dir=$(pwd)
50b73660adSXianjun Jiao
51b73660adSXianjun Jiaoset -ex
52b73660adSXianjun Jiao
536ffca2acSXianjun Jiaosource $XILINX_DIR/Vitis/2021.1/settings64.sh
5494847d80SXianjun Jiao
55b73660adSXianjun Jiaocd $OPENWIFI_DIR/kernel_boot
56b73660adSXianjun Jiao
576ffca2acSXianjun Jiaoif [ "$BOARD_NAME" == "zcu102_fmcs2" ] || [ "$BOARD_NAME" == "zcu102_9371" ]; then
586ffca2acSXianjun Jiao  ./build_zynqmp_boot_bin.sh $XSA_FILE boards/$BOARD_NAME/u-boot_xilinx_zynqmp_zcu102_revA.elf boards/$BOARD_NAME/bl31.elf
59914bc0b9SXianjun Jiao  ARCH="zynqmp"
60914bc0b9SXianjun Jiao  ARCH_BIT=64
61*a47b55e6SJiao Xianjunelif [ "$BOARD_NAME" == "antsdr" ] || [ "$BOARD_NAME" == "antsdr_e200" ] || [ "$BOARD_NAME" == "e310v2" ] || [ "$BOARD_NAME" == "sdrpi" ] || [ "$BOARD_NAME" == "neptunesdr" ] || [ "$BOARD_NAME" == "zc706_fmcs2" ] || [ "$BOARD_NAME" == "zc702_fmcs2" ] || [ "$BOARD_NAME" == "zed_fmcs2" ] || [ "$BOARD_NAME" == "adrv9361z7035" ] || [ "$BOARD_NAME" == "adrv9364z7020" ]; then
626ffca2acSXianjun Jiao  ./build_boot_bin.sh $XSA_FILE boards/$BOARD_NAME/u-boot.elf
63914bc0b9SXianjun Jiao  ARCH="zynq"
64914bc0b9SXianjun Jiao  ARCH_BIT=32
656ffca2acSXianjun Jiaoelse
666ffca2acSXianjun Jiao  echo "\$BOARD_NAME is not correct. Please check!"
676ffca2acSXianjun Jiao  cd $home_dir
686ffca2acSXianjun Jiao  exit 1
696ffca2acSXianjun Jiaofi
706ffca2acSXianjun Jiao
716ffca2acSXianjun Jiaorm -rf build_boot_bin
726ffca2acSXianjun Jiaorm -rf boards/$BOARD_NAME/output_boot_bin
736ffca2acSXianjun Jiaomv output_boot_bin boards/$BOARD_NAME/
74b73660adSXianjun Jiao
75b73660adSXianjun Jiaocd $home_dir
76914bc0b9SXianjun Jiao
77914bc0b9SXianjun Jiao# generate system_top.bit.bin for FPGA dynamic loading
78914bc0b9SXianjun Jiaounzip -o $XSA_FILE
79914bc0b9SXianjun Jiaorm -rf ./system_top.bit.bin
80914bc0b9SXianjun Jiaobootgen -image system_top.bif -arch $ARCH -process_bitstream bin -w
81914bc0b9SXianjun Jiaols ./system_top.bit.bin -al
82