凌云实验室推出的ARM Linux物联网网关开发板IGKBoard(IoT Gateway Kit Board)项目源码
guowenxue
2021-12-30 c5289d6f5ef0b5c249bec0edf638aece0c401d1a
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
#!/bin/bash
 
PRJ_PATH=`pwd`
 
# update by top build.sh
BOARD=igkboard
BSP_BRANCH=lf-5.10.52-2.1.0
CROSS_TOOL=/opt/buildroot/cortexA7/bin/arm-linux-
 
TAR_PATH=${PRJ_PATH}/../tarball
DRV_PATH=../rootfs/driver
 
WIFI_SRC=rtl8188fu
 
JOBS=`cat /proc/cpuinfo | grep processor | wc -l`
 
set -u
set -e
 
STAGE=0
 
function msg_banner()
{
    STAGE=`expr $STAGE + 1`
    
    echo ""
    echo "+---------------------------------------------+"
    printf " Stage $STAGE: $1\n"
    echo "+---------------------------------------------+"
    echo ""
}
 
function do_fetch()
{
    msg_banner "Fetch ${WIFI_SRC} source code"
    if [ -d ${WIFI_SRC} ] ; then
        printf "\n\n -- ${WIFI_SRC} fetched already -- \n\n"
        return 0;
    fi
 
    printf "\n -- decompress ${WIFI_SRC}.tar.bz2 now ... -- \n\n"
    tar -xjf ${TAR_PATH}/${WIFI_SRC}.tar.bz2
}
 
function build_wifi_driver()
{
    if [ ! -d ${WIFI_SRC} ]  ; then
        return ;
    fi
 
    msg_banner "Build for USB WiFi driver"
 
    cd ${WIFI_SRC}
 
    sed -i "s|^CROSS_COMPILE ?=.*|CROSS_COMPILE ?= ${CROSS_TOOL}|g" Makefile
    sed -i "s|^ARCH ?=.*|ARCH ?= arm|g" Makefile
    sed -i "s|^KVER.*|KVER := 5.10.52|g" Makefile
    sed -i "s|^KSRC.*|KSRC := ../../kernel/linux-imx/|g" Makefile
    sed -i "s|^MODDESTDIR.*|MODDESTDIR := ../${DRV_PATH}/|g" Makefile
 
    sed -i "s|^#define CONFIG_DEBUG|//#define CONFIG_DEBUG|g" include/autoconf.h
 
    sed -i "/nolinked power/d" core/rtw_pwrctrl.c
    sed -i "/request firmware/d" hal/rtl8188f/rtl8188f_hal_init.c
 
    make -j ${JOBS}
    mkdir -p  ../${DRV_PATH}/lib/firmware/rtlwifi/
    cp firmware/rtl8188fufw.bin ../${DRV_PATH}/lib/firmware/rtlwifi/
 
    cd ${PRJ_PATH}
}
 
function build_users_driver()
{
    if [ ! -d users ] ; then
        return ;
    fi
 
    msg_banner "Build for users driver"
 
    cd users 
 
    sed -i "s|^CROSS_COMPILE ?=.*|CROSS_COMPILE ?= ${CROSS_TOOL}|g" Makefile
 
    make DRV_PATH=../${DRV_PATH}
 
    cd ${PRJ_PATH}
}
 
 
function do_build()
{
    build_users_driver
    build_wifi_driver
}
 
function do_clean()
{
    msg_banner "Clean drivers source code"
    rm -rf ${WIFI_SRC}
 
    cd users && make clean
}
 
 
function do_usage()
{
    echo ""
    echo "Usage:"
    echo "  $0 [-b] [p] [-c] [-h]"
    echo "     -b: build $PRJ_NAME"
    echo "     -c: clean the source code"
    echo "     -h: show this help message"
    echo ""
    exit;
}
 
while getopts "bpch" OPTNAME
do
    case "${OPTNAME}" in
        "b")
            break;
            ;;
 
        "c")
            do_clean
            exit;
            ;;
 
        "*")
            do_usage
            exit;
            ;;
    esac
done
 
# Default do build action
do_fetch
do_build
 
exit;