diff --git a/build_kernel.sh b/build_kernel.sh index e622fbb594070d63ded2eb50c0ef5a5842941f94..8569929b24fa1db5d11e2fab4943b57ee1d7085a 100755 --- a/build_kernel.sh +++ b/build_kernel.sh @@ -21,7 +21,25 @@ set -e pushd ${1} + +VIM3L_2NDBOOT_PATH=$(pwd)/../../../kernel/linux/patches/linux-4.19/vim3l_patch/2ndbootloader +VIM3L_MKBOOTIMG=$(pwd)/../../../prebuilts/host/linux-x86/bin/mkbootimg + ./kernel_module_build.sh ${2} ${4} ${5} ${6} ${7} ${8} mkdir -p ${3} -cp ${2}/kernel/src_tmp/${8}/arch/arm/boot/uImage ${3}/uImage + +if [ $7 == "vim3l" ];then + cp ${2}/kernel/src_tmp/${8}/arch/arm/boot/uImage ${3}/uImage + cp ${3}/uImage ${3}/kernel + cp ${VIM3L_2NDBOOT_PATH} ${3}/2ndbootloader + ${VIM3L_MKBOOTIMG} --second ${3}/2ndbootloader --kernel ${3}/kernel --base 0x0 --cmdline androidboot.dtbo_idx=0 --cmdline root=/dev/mmcblk1p1 \ + --os_version 9 --os_patch_level 2018-08-05 --kernel_offset 0x1080000 --header_version 1 --output ${3}/boot.img + if [ -f ${3}/boot.img ];then + echo "create boot.img OK!" + else + echo "create boot.img failed!" + fi +else + cp ${2}/kernel/src_tmp/${8}/arch/arm/boot/uImage ${3}/uImage +fi popd diff --git a/kernel.mk b/kernel.mk index 56fcde79ef552cf7816d12b48202bbe0a1564870..a3393f8af4838a7aa9fe1127006a166aea71ffed 100644 --- a/kernel.mk +++ b/kernel.mk @@ -32,10 +32,18 @@ KERNEL_HOSTCC := $(CLANG_HOST_TOOLCHAIN)/clang KERNEL_PREBUILT_MAKE := make ifeq ($(BUILD_TYPE), standard) - KERNEL_ARCH := arm - KERNEL_TARGET_TOOLCHAIN := $(PREBUILTS_GCC_DIR)/linux-x86/arm/gcc-linaro-7.5.0-arm-linux-gnueabi/bin - KERNEL_TARGET_TOOLCHAIN_PREFIX := $(KERNEL_TARGET_TOOLCHAIN)/arm-linux-gnueabi- - CLANG_CC := $(CLANG_HOST_TOOLCHAIN)/clang + ifeq ($(DEVICE_NAME), vim3l) + KERNEL_ARCH := arm + KERNEL_TARGET_TOOLCHAIN := $(PREBUILTS_GCC_DIR)/linux-x86/arm/gcc-linaro-6.3.1-arm-linux-gnueabihf/bin + KERNEL_TARGET_TOOLCHAIN_PREFIX := $(KERNEL_TARGET_TOOLCHAIN)/arm-linux-gnueabihf- + CLANG_CC := + KERNEL_HOSTCC := + else + KERNEL_ARCH := arm + KERNEL_TARGET_TOOLCHAIN := $(PREBUILTS_GCC_DIR)/linux-x86/arm/gcc-linaro-7.5.0-arm-linux-gnueabi/bin + KERNEL_TARGET_TOOLCHAIN_PREFIX := $(KERNEL_TARGET_TOOLCHAIN)/arm-linux-gnueabi- + CLANG_CC := $(CLANG_HOST_TOOLCHAIN)/clang + endif else ifeq ($(BUILD_TYPE), small) KERNEL_ARCH := arm ifeq ($(CLANG_CC), "") @@ -47,7 +55,11 @@ KERNEL_PERL := /usr/bin/perl KERNEL_CROSS_COMPILE := KERNEL_CROSS_COMPILE += CC="$(CLANG_CC)" -ifeq ($(BUILD_TYPE), standard) +ifeq ($(DEVICE_NAME), vim3l) + KERNEL_CROSS_COMPILE := + KERNEL_CROSS_COMPILE += PERL=$(KERNEL_PERL) + KERNEL_CROSS_COMPILE += CROSS_COMPILE="$(KERNEL_TARGET_TOOLCHAIN_PREFIX)" +else ifeq ($(BUILD_TYPE), standard) KERNEL_CROSS_COMPILE += HOSTCC="$(KERNEL_HOSTCC)" KERNEL_CROSS_COMPILE += PERL=$(KERNEL_PERL) KERNEL_CROSS_COMPILE += CROSS_COMPILE="$(KERNEL_TARGET_TOOLCHAIN_PREFIX)" @@ -65,11 +77,26 @@ DEVICE_PATCH_DIR := $(OHOS_BUILD_HOME)/kernel/linux/patches/${KERNEL_VERSION}/$( DEVICE_PATCH_FILE := $(DEVICE_PATCH_DIR)/$(DEVICE_NAME).patch HDF_PATCH_FILE := $(DEVICE_PATCH_DIR)/hdf.patch SMALL_PATCH_FILE := $(DEVICE_PATCH_DIR)/$(DEVICE_NAME)_$(BUILD_TYPE).patch -KERNEL_IMAGE_FILE := $(KERNEL_SRC_TMP_PATH)/arch/arm/boot/uImage -DEFCONFIG_FILE := $(DEVICE_NAME)_$(BUILD_TYPE)_defconfig +ifeq ($(DEVICE_NAME), vim3l) + KERNEL_IMAGE_FILE := $(KERNEL_SRC_TMP_PATH)/arch/arm/boot/uImage + DEFCONFIG_FILE := kvim_a32_defconfig +else + KERNEL_IMAGE_FILE := $(KERNEL_SRC_TMP_PATH)/arch/arm/boot/uImage + DEFCONFIG_FILE := $(DEVICE_NAME)_$(BUILD_TYPE)_defconfig +endif export HDF_PROJECT_ROOT=$(OHOS_BUILD_HOME)/ $(KERNEL_IMAGE_FILE): +ifeq ($(DEVICE_NAME), vim3l) + $(hide) echo "build kernel..." + $(hide) rm -rf $(KERNEL_SRC_TMP_PATH);mkdir -p $(KERNEL_SRC_TMP_PATH);cp -arf $(KERNEL_SRC_PATH)/* $(KERNEL_SRC_TMP_PATH)/ + $(hide) cd $(KERNEL_SRC_TMP_PATH) && patch -p1 < $(DEVICE_PATCH_FILE) && patch -p1 < $(HDF_PATCH_FILE) + $(hide) cp -rf $(KERNEL_CONFIG_PATH)/. $(KERNEL_SRC_TMP_PATH)/ + $(hide) rm -rf $(KERNEL_SRC_TMP_PATH)/.git/hooks + $(hide) $(KERNEL_MAKE) -C $(KERNEL_SRC_TMP_PATH) ARCH=$(KERNEL_ARCH) $(KERNEL_CROSS_COMPILE) distclean + $(hide) $(KERNEL_MAKE) -C $(KERNEL_SRC_TMP_PATH) ARCH=$(KERNEL_ARCH) $(KERNEL_CROSS_COMPILE) $(DEFCONFIG_FILE) + $(hide) $(KERNEL_MAKE) -C $(KERNEL_SRC_TMP_PATH) ARCH=$(KERNEL_ARCH) $(KERNEL_CROSS_COMPILE) dtbs uImage modules -j24 +else $(hide) echo "build kernel..." $(hide) rm -rf $(KERNEL_SRC_TMP_PATH);mkdir -p $(KERNEL_SRC_TMP_PATH);cp -arfL $(KERNEL_SRC_PATH)/* $(KERNEL_SRC_TMP_PATH)/ $(hide) cd $(KERNEL_SRC_TMP_PATH) && patch -p1 < $(HDF_PATCH_FILE) && patch -p1 < $(DEVICE_PATCH_FILE) @@ -84,5 +111,6 @@ ifeq ($(KERNEL_VERSION), linux-5.10) endif $(hide) $(KERNEL_MAKE) -C $(KERNEL_SRC_TMP_PATH) ARCH=$(KERNEL_ARCH) $(KERNEL_CROSS_COMPILE) -j64 uImage endif +endif .PHONY: build-kernel build-kernel: $(KERNEL_IMAGE_FILE) diff --git a/kernel_module_build.sh b/kernel_module_build.sh index 826bd6c3e6bd74ee18376fd4dcd6e22c45d0c72a..28aa14ac12901fa085d0aadb87b0797634b767e4 100755 --- a/kernel_module_build.sh +++ b/kernel_module_build.sh @@ -41,7 +41,11 @@ fi export OHOS_ROOT_PATH=$(pwd)/../../.. export PRODUCT_PATH=$4 -LINUX_KERNEL_UIMAGE_FILE=${LINUX_KERNEL_OUT}/arch/arm/boot/uImage +if [ "$5" == "vim3l" ];then + LINUX_KERNEL_UIMAGE_FILE=${LINUX_KERNEL_OUT}/arch/arm/boot/uImage +else + LINUX_KERNEL_UIMAGE_FILE=${LINUX_KERNEL_OUT}/arch/arm/boot/uImage +fi make -f kernel.mk