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