• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1#!/bin/bash
2
3# Copyright (c) 2021 HiHope Open Source Organization .
4# Licensed under the Apache License, Version 2.0 (the "License");
5# you may not use this file except in compliance with the License.
6# You may obtain a copy of the License at
7#
8#     http://www.apache.org/licenses/LICENSE-2.0
9#
10# Unless required by applicable law or agreed to in writing, software
11# distributed under the License is distributed on an "AS IS" BASIS,
12# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13# See the License for the specific language governing permissions and
14# limitations under the License.
15
16set -e
17
18export PATH=../../../../prebuilts/clang/ohos/linux-x86_64/llvm/bin/:$PATH
19export PRODUCT_PATH=vendor/hihope/dayu210
20IMAGE_SIZE=64  # 64M
21IMAGE_BLOCKS=4096
22
23CPUs=`sed -n "N;/processor/p" /proc/cpuinfo|wc -l`
24MAKE="make CROSS_COMPILE=../../../../prebuilts/gcc/linux-x86/aarch64/gcc-linaro-7.5.0-2019.12-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu-"
25BUILD_PATH=boot_linux
26EXTLINUX_PATH=${BUILD_PATH}/extlinux
27EXTLINUX_CONF=${EXTLINUX_PATH}/extlinux.conf
28TOYBRICK_DTB=toybrick.dtb
29if [ ${KBUILD_OUTPUT} ]; then
30	OBJ_PATH=${KBUILD_OUTPUT}/
31fi
32
33ID_MODEL=1
34ID_ARCH=2
35ID_UART=3
36ID_DTB=4
37ID_IMAGE=5
38ID_CONF=6
39model_list=(
40	"TB-RK3568X0   arm64 0xfe660000 rk3568-toybrick-x0-linux  Image rockchip_linux_defconfig"
41	"TB-RK3568X10  arm64 0xfe660000 rk3568-toybrick-x10-linux Image rockchip_linux_defconfig"
42	"BQ3588C1      arm64 0xfe660000 rk3588-bearkey-bq3588c1-linux  Image rockchip_linux_defconfig"
43)
44
45
46function help()
47{
48	echo "Usage: ./make-ohos.sh {BOARD_NAME}"
49	echo "e.g."
50	for i in "${model_list[@]}"; do
51		echo "  ./make-ohos.sh $(echo $i | awk '{print $1}')"
52	done
53}
54
55
56function make_extlinux_conf()
57{
58	dtb_path=$1
59	uart=$2
60	image=$3
61
62	echo "label rockchip-kernel-5.10" > ${EXTLINUX_CONF}
63	echo "	kernel /extlinux/${image}" >> ${EXTLINUX_CONF}
64	echo "	fdt /extlinux/${TOYBRICK_DTB}" >> ${EXTLINUX_CONF}
65	cmdline="append earlycon=uart8250,mmio32,${uart} root=PARTUUID=614e0000-0000-4b53-8000-1d28000054a9 rw rootwait rootfstype=ext4"
66	echo "  ${cmdline}" >> ${EXTLINUX_CONF}
67}
68
69function make_kernel_image()
70{
71	arch=$1
72	conf=$2
73	dtb=$3
74
75	${MAKE} ARCH=${arch} ${conf}
76	if [ $? -ne 0 ]; then
77		echo "FAIL: ${MAKE} ARCH=${arch} ${conf}"
78		return -1
79	fi
80
81	${MAKE} ARCH=${arch} ${dtb}.img -j${CPUs}
82	if [ $? -ne 0 ]; then
83		echo "FAIL: ${MAKE} ARCH=${arch} ${dtb}.img"
84		return -2
85	fi
86
87	return 0
88}
89
90function make_ext2_image()
91{
92	blocks=${IMAGE_BLOCKS}
93	block_size=$((${IMAGE_SIZE} * 1024 * 1024 / ${blocks}))
94
95	if [ "`uname -m`" == "aarch64" ]; then
96		echo y | sudo mke2fs -b ${block_size} -d boot_linux -i 8192 -t ext2 boot_linux.img ${blocks}
97	else
98		genext2fs -B ${blocks} -b ${block_size} -d boot_linux -i 8192 -U boot_linux.img
99	fi
100
101	return $?
102}
103
104function make_boot_linux()
105{
106	arch=${!ID_ARCH}
107	uart=${!ID_UART}
108	dtb=${!ID_DTB}
109	image=${!ID_IMAGE}
110	conf=${!ID_CONF}
111	if [ ${arch} == "arm" ]; then
112		dtb_path=vendor/arch/arm/boot/dts
113	else
114		dtb_path=vendor/arch/arm64/boot/dts/rockchip
115	fi
116
117	rm -rf ${BUILD_PATH}
118	mkdir -p ${EXTLINUX_PATH}
119
120	make_kernel_image ${arch} ${conf} ${dtb}
121	if [ $? -ne 0 ]; then
122		exit 1
123	fi
124	make_extlinux_conf ${dtb_path} ${uart} ${image}
125	cp -f ${OBJ_PATH}arch/${arch}/boot/${image} ${EXTLINUX_PATH}/
126	cp -f ${OBJ_PATH}${dtb_path}/${dtb}.dtb ${EXTLINUX_PATH}/${TOYBRICK_DTB}
127	cp -f logo*.bmp ${BUILD_PATH}/
128	if [ "enable_ramdisk" != "${ramdisk_flag}" ]; then
129		make_ext2_image
130	fi
131}
132
133ramdisk_flag=$2
134found=0
135for i in "${model_list[@]}"; do
136	if [ "$(echo $i | awk '{print $1}')" == "$1" ]; then
137		make_boot_linux $i
138		found=1
139	fi
140done
141
142