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