xref: /openwifi/user_space/prepare_kernel.sh (revision a6085186d94dfe08b0e09c18c8d4b1b4fe38ea35)
1
2#!/bin/bash
3
4# SPDX-FileCopyrightText: 2019 Jiao Xianjun <[email protected]>
5# SPDX-License-Identifier: AGPL-3.0-or-later
6
7if [ "$#" -lt 3 ]; then
8    echo "You must enter at least 3 arguments: \$OPENWIFI_DIR \$XILINX_DIR ARCH_BIT(32 or 64)"
9    exit 1
10fi
11
12OPENWIFI_DIR=$1
13XILINX_DIR=$2
14ARCH_OPTION=$3
15
16if [ -f "$OPENWIFI_DIR/LICENSE" ]; then
17    echo "\$OPENWIFI_DIR is found!"
18else
19    echo "\$OPENWIFI_DIR is not correct. Please check!"
20    exit 1
21fi
22
23if [ -d "$XILINX_DIR/SDK" ]; then
24    echo "\$XILINX_DIR is found!"
25else
26    echo "\$XILINX_DIR is not correct. Please check!"
27    exit 1
28fi
29
30if [ "$ARCH_OPTION" != "32" ] && [ "$ARCH_OPTION" != "64" ]; then
31    echo "\$ARCH_OPTION is not correct. Should be 32 or 64. Please check!"
32    exit 1
33else
34    echo "\$ARCH_OPTION is valid!"
35fi
36
37if [ "$ARCH_OPTION" == "64" ]; then
38    LINUX_KERNEL_SRC_DIR_NAME=adi-linux-64
39    LINUX_KERNEL_CONFIG_FILE=$OPENWIFI_DIR/kernel_boot/kernel_config_zynqmp
40    ARCH_NAME="arm64"
41    CROSS_COMPILE_NAME="aarch64-linux-gnu-"
42    IMAGE_TYPE=Image
43else
44    LINUX_KERNEL_SRC_DIR_NAME=adi-linux
45    LINUX_KERNEL_CONFIG_FILE=$OPENWIFI_DIR/kernel_boot/kernel_config
46    ARCH_NAME="arm"
47    CROSS_COMPILE_NAME="arm-linux-gnueabihf-"
48    IMAGE_TYPE=uImage
49fi
50
51home_dir=$(pwd)
52
53set -x
54
55cd $OPENWIFI_DIR/
56git submodule init $LINUX_KERNEL_SRC_DIR_NAME
57git submodule update $LINUX_KERNEL_SRC_DIR_NAME
58cd $OPENWIFI_DIR/$LINUX_KERNEL_SRC_DIR_NAME
59git checkout 2019_R1
60git pull origin 2019_R1
61# git reset --hard 4fea7c5
62cp $OPENWIFI_DIR/driver/xilinx_dma/xilinx_dma.c $OPENWIFI_DIR/$LINUX_KERNEL_SRC_DIR_NAME/drivers/dma/xilinx/xilinx_dma.c
63cp $LINUX_KERNEL_CONFIG_FILE ./.config
64source $XILINX_DIR/SDK/2018.3/settings64.sh
65export ARCH=$ARCH_NAME
66export CROSS_COMPILE=$CROSS_COMPILE_NAME
67
68make oldconfig && make prepare && make modules_prepare
69
70if [ "$#" -gt 3 ]; then
71    if [ -f "$OPENWIFI_DIR/$LINUX_KERNEL_SRC_DIR_NAME/arch/$ARCH_NAME/boot/$IMAGE_TYPE" ]; then
72        echo "Kernel found! Skip the time costly Linux kernel compiling."
73    else
74        make -j12 $IMAGE_TYPE UIMAGE_LOADADDR=0x8000
75        make modules
76    fi
77fi
78
79cd $home_dir
80