凌云实验室推出的ARM Linux物联网网关开发板IGKBoard(IoT Gateway Kit Board)项目源码
guowenxue
2022-06-12 0365e3e471c3df1c0a76d05dde7214d24d3f453d
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
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
#!/bin/bash
# This shell script used auto download bootloader source code and do cross compile
 
source ../scripts/setup_env.sh
 
PRJ_PATH=`pwd`
 
UBOOT_SRC=uboot-imx
IMG_NAME=u-boot-${BOARD}.imx
 
arch=arm
defconf=${BOARD}_defconfig
patch_file=${PRJ_PATH}/patch/uboot-imx-${BSP_VER}.patch
logo_file=${PRJ_PATH}/patch/logo_uboot_364x128.bmp
 
set -u
set -e
 
function do_fetch()
{
    if [ -d $UBOOT_SRC ] ; then
        pr_warn "$UBOOT_SRC fetched already."
        return 0;
    fi
 
    do_fetch_json $JSON_CONF UBOOT_SRC $UBOOT_SRC
}
 
function do_patch()
{
    cd ${UBOOT_SRC}
 
    if [ ! -s configs/$defconf -a  -s $patch_file ] ; then
        pr_warn "Patch for ${UBOOT_SRC} source code"
        patch -p1 < $patch_file
    fi
 
    pr_warn "Copy logo file: `basename $logo_file` "
    if [ ! -s tools/logos/lingyun.bmp ] ; then
        cp $logo_file tools/logos/lingyun.bmp
    fi
 
    pr_warn "Modify cross compiler in Makefile: $CROSS_TOOL"
    sed -i -e "s|^CROSS_COMPILE=.*|CROSS_COMPILE?=${CROSS_TOOL}|g" Makefile
 
    cd ${PRJ_PATH}
}
 
function do_build()
{
    pr_warn "Build for ${UBOOT_SRC} source code"
 
    cd ${UBOOT_SRC}
 
    make $defconf
    make -j ${JOBS}
 
    cp u-boot-dtb.imx ${IMG_NAME}
    chmod a+x ${IMG_NAME}
 
    cd ${PRJ_PATH}
}
 
 
function do_install()
{
    pr_warn "Install bootloader $IMG_NAME"
 
    cd ${UBOOT_SRC}
 
    do_install_json $JSON_CONF "INSTALL"
 
    cd ${PRJ_PATH}
}
 
function do_clean()
{
    pr_warn "Clean ${UBOOT_SRC} source code"
 
    cd ${UBOOT_SRC}
 
    make distclean
 
    cd ${PRJ_PATH}
}
 
function gen_patch()
{
    pr_warn "Clean ${UBOOT_SRC} source code"
 
    cd ${UBOOT_SRC}
    make savedefconfig
    mv defconfig configs/$defconf
    make distclean
    cd -
 
    mv ${UBOOT_SRC} ${UBOOT_SRC}-${BSP_VER}
 
    pr_warn "Fetch orignal source code"
    do_fetch
 
    pr_warn "Generate ${UBOOT_SRC} patch file"
 
    set +e
    diff -Nuar -x lingyun.bmp ${UBOOT_SRC} ${UBOOT_SRC}-${BSP_VER} > $patch_file
 
    rm -rf ${UBOOT_SRC}
    mv ${UBOOT_SRC}-${BSP_VER} ${UBOOT_SRC}
}
 
function do_usage()
{
    echo ""
    echo "Usage:"
    echo "  $0 [-b] [-p] [-c] [-h]"
    echo "     -b: download and build $PRJ_NAME"
    echo "     -p: generate $PRJ_NAME patch file"
    echo "     -c: clean the source code"
    echo "     -h: show this help message"
    echo ""
    exit;
}
 
while getopts "bpch" OPTNAME
do
    case "${OPTNAME}" in
        "b")
            break;
            ;;
 
        "p")
            gen_patch
            exit;
            ;;
 
        "c")
            do_clean
            exit;
            ;;
 
        "h")
            do_usage
            exit;
            ;;
 
        "*")
            do_usage
            exit;
            ;;
    esac
done
 
#defualt do build action
 
do_fetch
do_patch
do_build
do_install
 
exit;