赞
踩
2023-5-24 master openharmony 4.0.7.3
openharmony版本更新代码会变化,请看当前文件夹其他md
确保无任何修改能编译RK3568
docker run -it -v $(pwd):/home/openharmony swr.cn-south-1.myhuaweicloud.com/openharmony-docker/openharmony-docker:1.0.0
编译方式
./build.sh --product-name rk3568
如果出现
root@3de51292b422:/home/openharmony# hb build -f [OHOS INFO] Set cache size limit to 100.0 GB [OHOS INFO] root_out_dir=//out/rk3568 [OHOS INFO] root_build_dir=//out/rk3568 [OHOS INFO] root_gen_dir=//out/rk3568/gen [OHOS INFO] current_toolchain=//build/toolchain/ohos:ohos_clang_arm [OHOS INFO] host_toolchain=//build/toolchain/linux:clang_x64 [OHOS INFO] build configs generation is complete. [OHOS INFO] ERROR at //build/core/gn/BUILD.gn:59:14: Unable to load "/home/openharmony/out/rk3568/build_configs/BUILD.gn". [OHOS INFO] deps = [ "$root_build_dir/build_configs:inner_kits" ] [OHOS INFO] ^----------------------------------------- [OHOS INFO] --------------------------------------------- [OHOS INFO] ccache summary: [OHOS INFO] cache hit (direct) : 0 [OHOS INFO] cache hit (preprocessed) : 0 [OHOS INFO] cache miss : 0 [OHOS INFO] hit rate: 0.00% [OHOS INFO] mis rate: 0.00% [OHOS INFO] --------------------------------------------- [OHOS INFO] file: /home/openharmony/out/rk3568/.ninja_log not exists [OHOS INFO] parse file fail [OHOS ERROR] Please check build log in /home/openharmony/out/rk3568/build.log
请执行下面的命令安装新版本
python -m pip uninstall ohos-build
python -m pip install --user build/hb
复制下面三个文件到device/board/hihope/rk3568/kernel
修改build_kernel.sh文件
修改make-ohos.sh文件
device/board/hihope/rk3568/kernel/build_kernel.sh
#!/bin/bash # Copyright (c) 2021-2023 HiHope Open Source Organization . # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. set -e pushd ${1} ROOT_DIR=${5} export PRODUCT_PATH=${4} export DEVICE_COMPANY=${6} export DEVICE_NAME=${7} export PRODUCT_COMPANY=${8} KERNEL_FORM=${9} KERNEL_PROD=${10} ENABLE_LTO_O0=${11} KERNEL_SRC_TMP_PATH=${ROOT_DIR}/out/kernel/src_tmp/linux-5.10 KERNEL_OBJ_TMP_PATH=${ROOT_DIR}/out/kernel/OBJ/linux-5.10 KERNEL_SOURCE=${ROOT_DIR}/kernel/linux/linux-5.10 KERNEL_PATCH_PATH=${ROOT_DIR}/kernel/linux/patches/linux-5.10 KERNEL_PATCH=${ROOT_DIR}/kernel/linux/patches/linux-5.10/rk3568_patch/kernel.patch BUILD_SCRIPT_PATH=${3} NEWIP_PATCH_FILE=${ROOT_DIR}/kernel/linux/common_modules/newip/apply_newip.sh XPM_PATCH_FILE=${ROOT_DIR}/kernel/linux/common_modules/xpm/apply_xpm.sh KERNEL_CONFIG_FILE=${ROOT_DIR}/device/board/hihope/rk3568/kernel/rk3568_standard_defconfig KERNEL_DTS_FILE=${ROOT_DIR}/device/board/hihope/rk3568/kernel/ido-evb3568-hdmi.dts KERNEL_DTSI_FILE=${ROOT_DIR}/device/board/hihope/rk3568/kernel/ido-som3568.dtsi KERNEL_MAKE_OHOS_FILE=${ROOT_DIR}/device/board/hihope/rk3568/kernel/make-ohos.sh HARMONY_CONFIG_PATH=${ROOT_DIR}/kernel/linux/config/linux-5.10 DEVICE_CONFIG_PATH=${ROOT_DIR}/kernel/linux/config/linux-5.10/${DEVICE_NAME} DEFCONFIG_BASE_FILE=${HARMONY_CONFIG_PATH}/base_defconfig DEFCONFIG_TYPE_FILE=${HARMONY_CONFIG_PATH}/type/standard_defconfig DEFCONFIG_FORM_FILE=${HARMONY_CONFIG_PATH}/form/${KERNEL_FORM}_defconfig DEFCONFIG_ARCH_FILE=${DEVICE_CONFIG_PATH}/arch/arm64_defconfig DEFCONFIG_PROC_FILE=${DEVICE_CONFIG_PATH}/product/${KERNEL_PROD}_defconfig RAMDISK_ARG="disable_ramdisk" MAKE_OHOS_ENV="GPUDRIVER=mali" export KBUILD_OUTPUT=${KERNEL_OBJ_TMP_PATH} source ${BUILD_SCRIPT_PATH}/kernel/kernel_source_checker.sh for i in "$@" do case $i in enable_ramdisk) RAMDISK_ARG=enable_ramdisk ;; enable_mesa3d) MAKE_OHOS_ENV="GPUDRIVER=mesa3d" ;; esac done function copy_and_patch_kernel_source() { rm -rf ${KERNEL_SRC_TMP_PATH} mkdir -p ${KERNEL_SRC_TMP_PATH} rm -rf ${KERNEL_OBJ_TMP_PATH} mkdir -p ${KERNEL_OBJ_TMP_PATH} cp -arf ${KERNEL_SOURCE}/* ${KERNEL_SRC_TMP_PATH}/ cd ${KERNEL_SRC_TMP_PATH} #HDF patch bash ${ROOT_DIR}/drivers/hdf_core/adapter/khdf/linux/patch_hdf.sh ${ROOT_DIR} ${KERNEL_SRC_TMP_PATH} ${KERNEL_PATCH_PATH} ${DEVICE_NAME} #kernel patch patch -p1 < ${KERNEL_PATCH} #newip if [ -f $NEWIP_PATCH_FILE ]; then bash $NEWIP_PATCH_FILE ${ROOT_DIR} ${KERNEL_SRC_TMP_PATH} ${DEVICE_NAME} linux-5.10 fi #xpm if [ -f $XPM_PATCH_FILE ]; then bash $XPM_PATCH_FILE ${ROOT_DIR} ${KERNEL_SRC_TMP_PATH} ${DEVICE_NAME} linux-5.10 fi cp -rf ${BUILD_SCRIPT_PATH}/kernel/logo* ${KERNEL_SRC_TMP_PATH}/ #config if [ ! -f "$DEFCONFIG_FORM_FILE" ]; then DEFCONFIG_FORM_FILE= echo "warning no form config file $(DEFCONFIG_FORM_FILE)" fi if [ ! -f "$DEFCONFIG_PROC_FILE" ]; then DEFCONFIG_PROC_FILE= echo "warning no prod config file $(DEFCONFIG_PROC_FILE)" fi bash ${ROOT_DIR}/kernel/linux/linux-5.10/scripts/kconfig/merge_config.sh -O ${KERNEL_SRC_TMP_PATH}/arch/arm64/configs/ -m ${DEFCONFIG_TYPE_FILE} ${DEFCONFIG_FORM_FILE} ${DEFCONFIG_ARCH_FILE} ${DEFCONFIG_PROC_FILE} ${DEFCONFIG_BASE_FILE} mv ${KERNEL_SRC_TMP_PATH}/arch/arm64/configs/.config ${KERNEL_SRC_TMP_PATH}/arch/arm64/configs/rockchip_linux_defconfig # cp -rf ${KERNEL_DTS_FILE} ${KERNEL_SRC_TMP_PATH}/arch/arm64/boot/dts/rockchip/ido-evb3568-hdmi.dts # cp -rf ${KERNEL_DTSI_FILE} ${KERNEL_SRC_TMP_PATH}/arch/arm64/boot/dts/rockchip/ido-som3568.dtsi # cp -rf ${KERNEL_MAKE_OHOS_FILE} ${KERNEL_SRC_TMP_PATH}/make-ohos.sh #selinux config patch for arg in "$@"; do if [ "$arg" = "is_release" ]; then echo "close selinux kernel config CONFIG_SECURITY_SELINUX_DEVELOP in release version" ${KERNEL_SOURCE}/scripts/config --file ${KERNEL_SRC_TMP_PATH}/arch/arm64/configs/rockchip_linux_defconfig -d SECURITY_SELINUX_DEVELOP fi done if [ $MAKE_OHOS_ENV == "GPUDRIVER=mesa3d" ]; then python ${ROOT_DIR}/third_party/mesa3d/ohos/modifyDtsi.py ${KERNEL_SRC_TMP_PATH}/arch/arm64/boot/dts/rockchip/rk3568.dtsi fi } set +e is_kernel_change ${ROOT_DIR} KERNEL_SOURCE_CHANGED=$? set -e if [ ${KERNEL_SOURCE_CHANGED} -ne 0 ]; then echo "kernel or it's deps changed, start source update." copy_and_patch_kernel_source else echo "no changes to kernel, skip source copy." fi cp -rf ${KERNEL_DTS_FILE} ${KERNEL_SRC_TMP_PATH}/arch/arm64/boot/dts/rockchip/ido-evb3568-hdmi.dts cp -rf ${KERNEL_DTSI_FILE} ${KERNEL_SRC_TMP_PATH}/arch/arm64/boot/dts/rockchip/ido-som3568.dtsi cp -rf ${KERNEL_MAKE_OHOS_FILE} ${KERNEL_SRC_TMP_PATH}/make-ohos.sh cd ${KERNEL_SRC_TMP_PATH} eval $MAKE_OHOS_ENV ./make-ohos.sh EVB3568 $RAMDISK_ARG ${ENABLE_LTO_O0} mkdir -p ${2} if [ "enable_ramdisk" != "${12}" ]; then cp ${KERNEL_OBJ_TMP_PATH}/boot_linux.img ${2}/boot_linux.img fi cp ${KERNEL_OBJ_TMP_PATH}/resource.img ${2}/resource.img cp ${3}/loader/MiniLoaderAll.bin ${2}/MiniLoaderAll.bin cp ${3}/loader/uboot.img ${2}/uboot.img if [ "enable_absystem" == "${14}" ]; then cp ${3}/loader/parameter_ab.txt ${2}/parameter_ab.txt cp ${3}/loader/config_ab.cfg ${2}/config_ab.cfg else cp ${3}/loader/parameter.txt ${2}/parameter.txt cp ${3}/loader/config.cfg ${2}/config.cfg fi popd ../kernel/src_tmp/linux-5.10/make-boot.sh .. if [ ${KERNEL_SOURCE_CHANGED} -ne 0 ]; then cp ${ROOT_DIR}/out/kernel/checkpoint/last_build.info ${ROOT_DIR}/out/kernel/checkpoint/last_build.backup cp ${ROOT_DIR}/out/kernel/checkpoint/current_build.info ${ROOT_DIR}/out/kernel/checkpoint/last_build.info echo "kernel compile finish, save build info." else echo "kernel compile finish." fi
device/board/hihope/rk3568/kernel/make-ohos.sh
#!/bin/bash set -e SCRIPTPATH=$(dirname $realpath "$0") export PATH=$(realpath $SCRIPTPATH/../../../../)/prebuilts/clang/ohos/linux-x86_64/llvm/bin/:$(realpath $SCRIPTPATH/../../../../)/prebuilts/develop_tools/pahole/bin/:$PATH export PRODUCT_PATH=vendor/hihope/rk3568 IMAGE_SIZE=64 # 64M IMAGE_BLOCKS=4096 ENABLE_LTO_O0=${3} CPUs=`sed -n "N;/processor/p" /proc/cpuinfo|wc -l` MAKE="make LLVM=1 LLVM_IAS=1 CROSS_COMPILE=aarch64-linux-gnu-" [ "${ENABLE_LTO_O0}" == "enable_lto_O0" ] && MAKE="${MAKE} KCFLAGS=-Wl,--lto-O0" BUILD_PATH=boot_linux EXTLINUX_PATH=${BUILD_PATH}/extlinux EXTLINUX_CONF=${EXTLINUX_PATH}/extlinux.conf TOYBRICK_DTB=toybrick.dtb if [ ${KBUILD_OUTPUT} ]; then OBJ_PATH=${KBUILD_OUTPUT}/ fi ID_MODEL=1 ID_ARCH=2 ID_UART=3 ID_DTB=4 ID_IMAGE=5 ID_CONF=6 model_list=( "EVB3568 arm64 0xfe660000 ido-evb3568-hdmi Image rockchip_linux_defconfig" "TB-RK3568X0 arm64 0xfe660000 rk3568-toybrick-x0-linux Image rockchip_linux_defconfig" "TB-RK3568X10 arm64 0xfe660000 rk3568-toybrick-x10-linux Image rockchip_linux_defconfig" ) function help() { echo "Usage: ./make-ohos.sh {BOARD_NAME}" echo "e.g." for i in "${model_list[@]}"; do echo " ./make-ohos.sh $(echo $i | awk '{print $1}')" done } function make_extlinux_conf() { dtb_path=$1 uart=$2 image=$3 echo "label rockchip-kernel-5.10" > ${EXTLINUX_CONF} echo " kernel /extlinux/${image}" >> ${EXTLINUX_CONF} echo " fdt /extlinux/${TOYBRICK_DTB}" >> ${EXTLINUX_CONF} cmdline="append earlycon=uart8250,mmio32,${uart} root=PARTUUID=614e0000-0000-4b53-8000-1d28000054a9 rw rootwait rootfstype=ext4" echo " ${cmdline}" >> ${EXTLINUX_CONF} } function make_kernel_image() { arch=$1 conf=$2 dtb=$3 if [ "$GPUDRIVER" == "mesa3d" ]; then config_base="arch/${arch}/configs/${conf}" config_frag="../../../../device/soc/rockchip/panfrost.config" ARCH=${arch} ./scripts/kconfig/merge_config.sh ${config_base} ${config_frag} else ${MAKE} ARCH=${arch} ${conf} fi if [ $? -ne 0 ]; then echo "FAIL: ${MAKE} ARCH=${arch} ${conf}" return -1 fi ${MAKE} ARCH=${arch} ${dtb}.img -j${CPUs} if [ $? -ne 0 ]; then echo "FAIL: ${MAKE} ARCH=${arch} ${dtb}.img" return -2 fi return 0 } function make_ext2_image() { blocks=${IMAGE_BLOCKS} block_size=$((${IMAGE_SIZE} * 1024 * 1024 / ${blocks})) if [ "`uname -m`" == "aarch64" ]; then echo y | sudo mke2fs -b ${block_size} -d boot_linux -i 8192 -t ext2 boot_linux.img ${blocks} else genext2fs -B ${blocks} -b ${block_size} -d boot_linux -i 8192 -U boot_linux.img fi return $? } function make_boot_linux() { arch=${!ID_ARCH} uart=${!ID_UART} dtb=${!ID_DTB} image=${!ID_IMAGE} conf=${!ID_CONF} if [ ${arch} == "arm" ]; then dtb_path=arch/arm/boot/dts else dtb_path=arch/arm64/boot/dts/rockchip fi rm -rf ${BUILD_PATH} mkdir -p ${EXTLINUX_PATH} make_kernel_image ${arch} ${conf} ${dtb} if [ $? -ne 0 ]; then exit 1 fi make_extlinux_conf ${dtb_path} ${uart} ${image} cp -f ${OBJ_PATH}arch/${arch}/boot/${image} ${EXTLINUX_PATH}/ cp -f ${OBJ_PATH}${dtb_path}/${dtb}.dtb ${EXTLINUX_PATH}/${TOYBRICK_DTB} cp -f logo*.bmp ${BUILD_PATH}/ if [ "enable_ramdisk" != "${ramdisk_flag}" ]; then make_ext2_image fi } ramdisk_flag=$2 found=0 for i in "${model_list[@]}"; do if [ "$(echo $i | awk '{print $1}')" == "$1" ]; then make_boot_linux $i found=1 fi done
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。