diff --git a/build_kernel.sh b/build_kernel.sh index e622fbb594070d63ded2eb50c0ef5a5842941f94..8d840d97935696070b1c643100fe45461ef05ff4 100755 --- a/build_kernel.sh +++ b/build_kernel.sh @@ -23,5 +23,17 @@ set -e pushd ${1} ./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 + +#distinguish different board[nxp] +if [ $7 == "imx8mm" ];then + cp ${2}/kernel/src_tmp/${8}/arch/arm64/boot/Image ${3}/Image + if [ -d ${3}/dtb ];then + echo "${3}/dtb existed!" + else + mkdir -p ${3}/dtb + fi + cp ${2}/kernel/src_tmp/linux-4.19/arch/arm64/boot/dts/myir/*.dtb ${3}/dtb +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..fa0b9ae2b4f62faa6a16f8968cfdb5c01199d08e 100644 --- a/kernel.mk +++ b/kernel.mk @@ -32,10 +32,17 @@ 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), imx8mm) + KERNEL_ARCH := arm64 + KERNEL_TARGET_TOOLCHAIN := $(PREBUILTS_GCC_DIR)/linux-x86/aarch64/gcc-linaro-7.5.0-2019.12-x86_64_aarch64-linux-gnu/bin + KERNEL_TARGET_TOOLCHAIN_PREFIX := $(KERNEL_TARGET_TOOLCHAIN)/aarch64-linux-gnu- + CLANG_CC := $(CLANG_HOST_TOOLCHAIN)/clang + 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), "") @@ -65,11 +72,25 @@ 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), imx8mm) + KERNEL_IMAGE_FILE := $(KERNEL_SRC_TMP_PATH)/arch/arm64/boot/Image + DEFCONFIG_FILE := myd_imx8mm_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), imx8mm) + $(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 < $(HDF_PATCH_FILE) && patch -p1 < $(DEVICE_PATCH_FILE) + $(hide) cp -rf $(KERNEL_CONFIG_PATH)/. $(KERNEL_SRC_TMP_PATH)/ + $(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 Image 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 +105,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..94881dd6cf72231f9cedb2bd2921e9f6a256193a 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 == "imx8mm" ];then + LINUX_KERNEL_UIMAGE_FILE=${LINUX_KERNEL_OUT}/arch/arm64/boot/Image +else + LINUX_KERNEL_UIMAGE_FILE=${LINUX_KERNEL_OUT}/arch/arm/boot/uImage +fi make -f kernel.mk