日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > windows >内容正文

windows

基于imx6ul平台移植ohos3.0.3LTS小型系统之添加产品编译框架

發布時間:2024/3/24 windows 20 豆豆
生活随笔 收集整理的這篇文章主要介紹了 基于imx6ul平台移植ohos3.0.3LTS小型系统之添加产品编译框架 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

首先添加vendor下的目錄,我這里創建如下形式的目錄vendor/xingyun/imx6ul_nand_linux,目錄創建完成后就是填充這個目錄了,首先添加BUILD.gn文件,其中文件內容如下,請注意,這個雙引號里面的內容最好和目錄相匹配。

group("imx6ul_nand_linux") { }

添加完成BUILD.gn后再接著添加config.json文件,文件內容如下,

{"product_name": "imx6ul_nand_openharmony", //這里是對應hb set時顯示的內容"ohos_version": "OpenHarmony 3.0", //這里使用的版本"device_company": "xingyun", //這里對應源碼根目錄下device下的子目錄"board": "imx6ul_nand_linux", //這里對應/device/xingyun/下的子目錄名"kernel_type": "linux",//內核類型"kernel_version": "5.4", //內核版本"subsystems": [] }

添加完成之后,我們對應的在device下創建好如下兩級子目錄xingyun/imx6ul_nand_linux,完整目錄為device/xingyun/imx6ul_nand_linux,創建完成后,我們使用hb set查看效果。hb set效果如下圖

可以看到我們添加的產品已經可以選擇了。選中之后回車,報如下錯誤信息。

這是因為我們沒有在device下添加我們的配置信息。這里我們直接是復制其他產品的配置文件cp hisilicon/hispark_taurus/sdk_linux/config.gni xingyun/imx6ul_nand_linux/sdk_linux/,修改如下圖對應的linux內核版本。

再次執行hb set然后回車效果如下圖所示。

報錯信息如下所示

OHOS INFO] ERROR at //build/lite/ohos_var.gni:71:45: No value named "product_adapter_dir" in scope "product_config" [OHOS INFO] ohos_product_adapter_dir = product_config.product_adapter_dir [OHOS INFO] ^------------------ [OHOS INFO] See //build/lite/config/BUILDCONFIG.gn:13:1: whence it was imported. [OHOS INFO] import("//build/lite/ohos_var.gni") [OHOS INFO] ^--------------------------------- [OHOS ERROR] you can check build log in /home/zxy/openharmony/imx6ul/out/imx6ul_nand_linux/imx6ul_nand_openharmony/build.log [OHOS ERROR] command: "/home/zxy/openharmony/imx6ul/prebuilts/build-tools/linux-x86/bin/gn gen /home/zxy/openharmony/imx6ul/out/imx6ul_nand_linux/imx6ul_nand_openharmony --root=/home/zxy/openharmony/imx6ul --dotfile=/home/zxy/openharmony/imx6ul/build/lite/.gn --script-executable=/usr/bin/python3 --args=ohos_build_compiler_specified="clang" ohos_build_compiler_dir="//prebuilts/clang/ohos/linux-x86_64/llvm" product_path="/home/zxy/openharmony/imx6ul/vendor/xingyun/imx6ul_nand_linux" device_path="/home/zxy/openharmony/imx6ul/device/xingyun/imx6ul_nand_linux/sdk_linux" ohos_kernel_type="linux" ohos_build_type="debug" ohos_build_time="1654928453054" ohos_build_datetime="2022-06-11 22:20:53" ohos_full_compile=true" failed [OHOS ERROR] return code: 1 [OHOS ERROR] execution path: /home/zxy/openharmony/imx6ul

這里是因為我們沒有在vendor/xingyun/imx6ul_nand_linux/config.json中添加如下兩句話,添加完之后記得創建vendor/xingyun/imx6ul_nand_linux/hals目錄

diff --git a/vendor/xingyun/imx6ul_nand_linux/config.json b/vendor/xingyun/imx6ul_nand_linux/config.json index fb5c3344e0..387f94f04d 100644 --- a/vendor/xingyun/imx6ul_nand_linux/config.json +++ b/vendor/xingyun/imx6ul_nand_linux/config.json @@ -6,5 +6,8 @@"kernel_type": "linux","kernel_version": "5.4","subsystems": [ - ] + ], + "third_party_dir": "//third_party", + "product_adapter_dir": "//vendor/xingyun/imx6ul_nand_linux/hals" +}

接著執行hb build,出現如下錯誤

[OHOS INFO] ERROR at //build/lite/BUILD.gn:101:17: Unable to load "/home/zxy/openharmony/imx6ul/device/xingyun/imx6ul_nand_linux/BUILD.gn". [OHOS INFO] deps += [ "${device_path}/../" ] [OHOS INFO] ^------------------- [OHOS INFO] ohos_build_compiler: clang [OHOS ERROR] you can check build log in /home/zxy/openharmony/imx6ul/out/imx6ul_nand_linux/imx6ul_nand_openharmony/build.log [OHOS ERROR] command: "/home/zxy/openharmony/imx6ul/prebuilts/build-tools/linux-x86/bin/gn gen /home/zxy/openharmony/imx6ul/out/imx6ul_nand_linux/imx6ul_nand_openharmony --root=/home/zxy/openharmony/imx6ul --dotfile=/home/zxy/openharmony/imx6ul/build/lite/.gn --script-executable=/usr/bin/python3 --args=ohos_build_compiler_specified="clang" ohos_build_compiler_dir="//prebuilts/clang/ohos/linux-x86_64/llvm" product_path="/home/zxy/openharmony/imx6ul/vendor/xingyun/imx6ul_nand_linux" device_path="/home/zxy/openharmony/imx6ul/device/xingyun/imx6ul_nand_linux/sdk_linux" ohos_kernel_type="linux" ohos_build_type="debug" ohos_build_time="1654928846765" ohos_build_datetime="2022-06-11 22:27:26" ohos_full_compile=true" failed [OHOS ERROR] return code: 1 [OHOS ERROR] execution path: /home/zxy/openharmony/imx6ul

我們沒有在device/xingyun/imx6ul_nand_linux目錄下添加BUILD.gn文件,那么我們添加它,添加device/xingyun/imx6ul_nand_linux/BUILD.gn文件,文件內容為

group("imx6ul_nand_linux") { }

接著hb build,依然報錯

[OHOS INFO] ohos_build_compiler: clang [OHOS INFO] //prebuilts/lite/sysroot/build:build_sysroot is marked as prebuilts [OHOS INFO] //kernel/linux/build:linux_kernel is marked as prebuilts [OHOS INFO] Done. Made 12 targets from 16 files in 8ms [OHOS INFO] [1/17] STAMP obj/build/lite/mark_as_prebuilts.stamp [OHOS INFO] [2/17] STAMP obj/build/lite/ndk.stamp [OHOS INFO] [3/17] STAMP obj/device/xingyun/imx6ul_nand_linux/imx6ul_nand_linux.stamp [OHOS INFO] [4/17] STAMP obj/vendor/xingyun/imx6ul_nand_linux/imx6ul_nand_linux.stamp [OHOS INFO] [5/17] STAMP obj/build/lite/ohos.stamp [OHOS INFO] [6/17] STAMP obj/build/lite/product.stamp [OHOS INFO] [7/17] ACTION //kernel/linux/build:linux_kernel(//build/lite/toolchain:linux_x86_64_ohos_clang) [OHOS ERROR] [7/17] ACTION //kernel/linux/build:linux_kernel(//build/lite/toolchain:linux_x86_64_ohos_clang) [OHOS ERROR] FAILED: obj/kernel/linux/build/linux_kernel_build_ext_components.txt [OHOS ERROR] /usr/bin/python3 ../../../build/lite/build_ext_components.py --path=../../../kernel/linux/build --command=./kernel_module_build.sh\ /home/zxy/openharmony/imx6ul/out/imx6ul_nand_linux/imx6ul_nand_openharmony\ small\ /home/zxy/openharmony/imx6ul/prebuilts/clang/ohos/linux-x86_64/llvm\ vendor/xingyun/imx6ul_nand_linux\ imx6ul_nand_linux\ linux-5.10 --target_dir=/home/zxy/openharmony/imx6ul/out/imx6ul_nand_linux/imx6ul_nand_openharmony/obj/kernel/linux/build/build.log --out_dir=/home/zxy/openharmony/imx6ul/out/imx6ul_nand_linux/imx6ul_nand_openharmony/error.log [OHOS ERROR] echo "build kernel..." [OHOS ERROR] build kernel... [OHOS ERROR] rm -rf /home/zxy/openharmony/imx6ul/out/imx6ul_nand_linux/imx6ul_nand_openharmony/kernel/linux-5.10;mkdir -p /home/zxy/openharmony/imx6ul/out/imx6ul_nand_linux/imx6ul_nand_openharmony/kernel/linux-5.10;cp -arfL /home/zxy/openharmony/imx6ul/kernel/linux/linux-5.10/* /home/zxy/openharmony/imx6ul/out/imx6ul_nand_linux/imx6ul_nand_openharmony/kernel/linux-5.10/ [OHOS ERROR] cd /home/zxy/openharmony/imx6ul/out/imx6ul_nand_linux/imx6ul_nand_openharmony/kernel/linux-5.10 && patch -p1 < /home/zxy/openharmony/imx6ul/kernel/linux/patches/linux-5.10/_patch/hdf.patch && patch -p1 < /home/zxy/openharmony/imx6ul/kernel/linux/patches/linux-5.10/_patch/.patch [OHOS ERROR] /bin/sh: /home/zxy/openharmony/imx6ul/kernel/linux/patches/linux-5.10/_patch/hdf.patch: No such file or directory [OHOS ERROR] make: *** [kernel.mk:75: /home/zxy/openharmony/imx6ul/out/imx6ul_nand_linux/imx6ul_nand_openharmony/kernel/linux-5.10/arch/arm/boot/uImage] Error 1 [OHOS ERROR] you can check build log in /home/zxy/openharmony/imx6ul/out/imx6ul_nand_linux/imx6ul_nand_openharmony/build.log [OHOS ERROR] command: "/home/zxy/openharmony/imx6ul/prebuilts/build-tools/linux-x86/bin/ninja -w dupbuild=warn -C /home/zxy/openharmony/imx6ul/out/imx6ul_nand_linux/imx6ul_nand_openharmony" failed [OHOS ERROR] return code: 1 [OHOS ERROR] execution path: /home/zxy/openharmony/imx6ul

通過對上面的報錯信息分析,發現編譯的內核好像并沒有使用我們的內核版本去進行編譯,這里是因為build/ohos/kernel/kernel.gni這里影響了,那么我們怎么解決這個問題呢,我們可以使用如下添加打印信息,print(“$board_name”),修改補丁如下

diff --git a/kernel/linux/build/BUILD.gn b/kernel/linux/build/BUILD.gn index 5e2e10fa92..6ba5e1bb51 100644 --- a/kernel/linux/build/BUILD.gn +++ b/kernel/linux/build/BUILD.gn @@ -29,7 +29,11 @@ if (defined(ohos_lite)) {}build_type = "small"product_path_rebase = rebase_path(product_path, ohos_root_path) - command = "./kernel_module_build.sh ${outdir} ${build_type} ${clang_dir} ${product_path_rebase} ${board_name} ${linux_kernel_version}" + if ( board_name == "imx6ul_nand_linux") { + command = "./kernel_module_build.sh ${outdir} ${build_type} ${clang_dir} ${product_path_rebase} ${board_name} linux-${kernel_version}" + } else { + command = "./kernel_module_build.sh ${outdir} ${build_type} ${clang_dir} ${product_path_rebase} ${board_name} ${linux_kernel_version}" + }deps = [ "//build/lite:mark_as_prebuilts" ]}} else {

這里我是通過判斷我們的baord_name字段來區分,這里特別需要注意的是if和else括號里面的內容不能用tab來縮進,不然會報如下錯誤信息,一定是需要使用空格

[OHOS INFO] ohos_build_compiler: clang [OHOS INFO] //prebuilts/lite/sysroot/build:build_sysroot is marked as prebuilts [OHOS INFO] ERROR at //kernel/linux/build/BUILD.gn:35:1: Invalid token. [OHOS INFO] command = "./kernel_module_build.sh ${outdir} ${build_type} ${clang_dir} ${product_path_rebase} ${board_name} ${linux_kernel_version}" [OHOS INFO] ^ [OHOS INFO] You got a tab character in here. Tabs are evil. Convert to spaces. [OHOS ERROR] you can check build log in /home/zxy/openharmony/imx6ul/out/imx6ul_nand_linux/imx6ul_nand_openharmony/build.log [OHOS ERROR] command: "/home/zxy/openharmony/imx6ul/prebuilts/build-tools/linux-x86/bin/gn gen /home/zxy/openharmony/imx6ul/out/imx6ul_nand_linux/imx6ul_nand_openharmony --root=/home/zxy/openharmony/imx6ul --dotfile=/home/zxy/openharmony/imx6ul/build/lite/.gn --script-executable=/usr/bin/python3 --args=ohos_build_compiler_specified="clang" ohos_build_compiler_dir="//prebuilts/clang/ohos/linux-x86_64/llvm" product_path="/home/zxy/openharmony/imx6ul/vendor/xingyun/imx6ul_nand_linux" device_path="/home/zxy/openharmony/imx6ul/device/xingyun/imx6ul_nand_linux/sdk_linux" ohos_kernel_type="linux" ohos_build_type="debug" ohos_build_time="1654930991854" ohos_build_datetime="2022-06-11 23:03:11" ohos_full_compile=true" failed [OHOS ERROR] return code: 1

這樣就會去編譯我們指定的內核版本了,然后修改如下地方

diff --git a/kernel/linux/build/kernel_module_build.sh b/kernel/linux/build/kernel_module_build.sh index 826bd6c3e6..5599923370 100755 --- a/kernel/linux/build/kernel_module_build.sh +++ b/kernel/linux/build/kernel_module_build.sh @@ -30,6 +30,8 @@ if [ "$2" == "small" ];thenfiif [ "$5" == "hispark_taurus" ];thenexport DEVICE_NAME=hi3516dv300 + elif [ "$5" == "imx6ul_nand_linux" ];then + export DEVICE_NAME=imx6ul_nand_linuxfielif [ "$2" == "standard" ];thenexport BUILD_TYPE=standard

編譯報錯如下,我們沒有添加patch文件導致如下錯誤。

[OHOS ERROR] rm -rf /home/zxy/openharmony/imx6ul/out/imx6ul_nand_linux/imx6ul_nand_openharmony/kernel/linux-5.4;mkdir -p /home/zxy/openharmony/imx6ul/out/imx6ul_nand_linux/imx6ul_nand_openharmony/kernel/linux-5.4;cp -arfL /home/zxy/openharmony/imx6ul/kernel/linux/linux-5.4/* /home/zxy/openharmony/imx6ul/out/imx6ul_nand_linux/imx6ul_nand_openharmony/kernel/linux-5.4/ [OHOS ERROR] cd /home/zxy/openharmony/imx6ul/out/imx6ul_nand_linux/imx6ul_nand_openharmony/kernel/linux-5.4 && patch -p1 < /home/zxy/openharmony/imx6ul/kernel/linux/patches/linux-5.4/imx6ul_nand_linux_patch/hdf.patch && patch -p1 < /home/zxy/openharmony/imx6ul/kernel/linux/patches/linux-5.4/imx6ul_nand_linux_patch/imx6ul_nand_linux.patch [OHOS ERROR] /bin/sh: /home/zxy/openharmony/imx6ul/kernel/linux/patches/linux-5.4/imx6ul_nand_linux_patch/hdf.patch: No such file or directory [OHOS ERROR] make: *** [kernel.mk:75: /home/zxy/openharmony/imx6ul/out/imx6ul_nand_linux/imx6ul_nand_openharmony/kernel/linux-5.4/arch/arm/boot/uImage] Error 1 [OHOS ERROR] you can check build log in /home/zxy/openharmony/imx6ul/out/imx6ul_nand_linux/imx6ul_nand_openharmony/build.log [OHOS ERROR] command: "/home/zxy/openharmony/imx6ul/prebuilts/build-tools/linux-x86/bin/ninja -w dupbuild=warn -C /home/zxy/openharmony/imx6ul/out/imx6ul_nand_linux/imx6ul_nand_openharmony" failed [OHOS ERROR] return code: 1 [OHOS ERROR] execution path: /home/zxy/openharmony/imx6ul

首先創建kernel/linux/patches/linux-5.4/imx6ul_nand_linux_patch目錄,然后添加hdf.patch ,imx6ul_nand_linux.patch , imx6ul_nand_linux_small.patch三個patch文件,這里確定使用如下目錄可以根據如下編譯報錯信息提示得知,

[OHOS ERROR] rm -rf /home/zxy/openharmony/imx6ul/out/imx6ul_nand_linux/imx6ul_nand_openharmony/kernel/linux-5.4;mkdir -p /home/zxy/openharmony/imx6ul/out/imx6ul_nand_linux/imx6ul_nand_openharmony/kernel/linux-5.4;cp -arfL /home/zxy/openharmony/imx6ul/kernel/linux/linux-5.4/* /home/zxy/openharmony/imx6ul/out/imx6ul_nand_linux/imx6ul_nand_openharmony/kernel/linux-5.4/ [OHOS ERROR] cd /home/zxy/openharmony/imx6ul/out/imx6ul_nand_linux/imx6ul_nand_openharmony/kernel/linux-5.4 && patch -p1 < /home/zxy/openharmony/imx6ul/kernel/linux/patches/linux-5.4/imx6ul_nand_linux_patch/hdf.patch && patch -p1 < /home/zxy/openharmony/imx6ul/kernel/linux/patches/linux-5.4/imx6ul_nand_linux_patch/imx6ul_nand_linux.patch [OHOS ERROR] cd /home/zxy/openharmony/imx6ul/out/imx6ul_nand_linux/imx6ul_nand_openharmony/kernel/linux-5.4 && patch -p1 < /home/zxy/openharmony/imx6ul/kernel/linux/patches/linux-5.4/imx6ul_nand_linux_patch/imx6ul_nand_linux_small.patch [OHOS ERROR] /bin/sh: /home/zxy/openharmony/imx6ul/kernel/linux/patches/linux-5.4/imx6ul_nand_linux_patch/imx6ul_nand_linux_small.patch: No such file or directory [OHOS ERROR] make: *** [kernel.mk:76: /home/zxy/openharmony/imx6ul/out/imx6ul_nand_linux/imx6ul_nand_openharmony/kernel/linux-5.4/arch/arm/boot/uImage] Error 1 [OHOS ERROR] you can check build log in /home/zxy/openharmony/imx6ul/out/imx6ul_nand_linux/imx6ul_nand_openharmony/build.log [OHOS ERROR] command: "/home/zxy/openharmony/imx6ul/prebuilts/build-tools/linux-x86/bin/ninja -w dupbuild=warn -C /home/zxy/openharmony/imx6ul/out/imx6ul_nand_linux/imx6ul_nand_openharmony" failed [OHOS ERROR] return code: 1 [OHOS ERROR] execution path: /home/zxy/openharmony/imx6ul

或者根據kernel/linux/build/kernel.mk中如下描述也可得知

DEVICE_PATCH_DIR := $(OHOS_BUILD_HOME)/kernel/linux/patches/${KERNEL_VERSION}/$(DEVICE_NAME)_patch 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 export HDF_PROJECT_ROOT=$(OHOS_BUILD_HOME)/

添加好了patch文件后,再添加配置文件,首先創建kernel/linux/config/linux-5.4/arch/arm/configs目錄,然后再此目錄下添加imx6ul_nand_linux_small_defconfig,這里使用我們編譯linux內核使用的配置文件即可。

[OHOS ERROR] *** Can't find default configuration "arch/arm/configs/imx6ul_nand_linux_small_defconfig"! [OHOS ERROR] *** [OHOS ERROR] make[2]: *** [scripts/kconfig/Makefile:90: imx6ul_nand_linux_small_defconfig] Error 1 [OHOS ERROR] make[1]: *** [Makefile:590: imx6ul_nand_linux_small_defconfig] Error 2 [OHOS ERROR] make[1]: Leaving directory '/home/zxy/openharmony/imx6ul/out/imx6ul_nand_linux/imx6ul_nand_openharmony/kernel/linux-5.4' [OHOS ERROR] make: *** [kernel.mk:79: /home/zxy/openharmony/imx6ul/out/imx6ul_nand_linux/imx6ul_nand_openharmony/kernel/linux-5.4/arch/arm/boot/uImage] Error 2 [OHOS ERROR] you can check build log in /home/zxy/openharmony/imx6ul/out/imx6ul_nand_linux/imx6ul_nand_openharmony/build.log [OHOS ERROR] command: "/home/zxy/openharmony/imx6ul/prebuilts/build-tools/linux-x86/bin/ninja -w dupbuild=warn -C /home/zxy/openharmony/imx6ul/out/imx6ul_nand_linux/imx6ul_nand_openharmony" failed [OHOS ERROR] return code: 1 [OHOS ERROR] execution path: /home/zxy/openharmony/imx6ul

然后對于我這里,因為我是編譯zImage,所以我需要修改如下兩個地方

diff --git a/kernel/linux/build/kernel.mk b/kernel/linux/build/kernel.mk index 56fcde79ef..1688c985e5 100644 --- a/kernel/linux/build/kernel.mk +++ b/kernel/linux/build/kernel.mk @@ -82,7 +82,11 @@ endififeq ($(KERNEL_VERSION), linux-5.10)$(hide) $(KERNEL_MAKE) -C $(KERNEL_SRC_TMP_PATH) ARCH=$(KERNEL_ARCH) $(KERNEL_CROSS_COMPILE) modules_prepareendif +ifeq ($(DEVICE_NAME),imx6ul_nand_linux) + $(hide) $(KERNEL_MAKE) -C $(KERNEL_SRC_TMP_PATH) ARCH=$(KERNEL_ARCH) $(KERNEL_CROSS_COMPILE) -j64 +else$(hide) $(KERNEL_MAKE) -C $(KERNEL_SRC_TMP_PATH) ARCH=$(KERNEL_ARCH) $(KERNEL_CROSS_COMPILE) -j64 uImageendif +endif.PHONY: build-kernelbuild-kernel: $(KERNEL_IMAGE_FILE) diff --git a/kernel/linux/build/kernel_module_build.sh b/kernel/linux/build/kernel_module_build.sh index 5599923370..05c5ed775e 100755 --- a/kernel/linux/build/kernel_module_build.sh +++ b/kernel/linux/build/kernel_module_build.sh @@ -43,7 +43,11 @@ fiexport OHOS_ROOT_PATH=$(pwd)/../../..export PRODUCT_PATH=$4-LINUX_KERNEL_UIMAGE_FILE=${LINUX_KERNEL_OUT}/arch/arm/boot/uImage +if [ "$5" == "hispark_taurus" ];then + LINUX_KERNEL_UIMAGE_FILE=${LINUX_KERNEL_OUT}/arch/arm/boot/uImage +elif [ "$5" == "imx6ul_nand_linux" ];then + LINUX_KERNEL_UIMAGE_FILE=${LINUX_KERNEL_OUT}/arch/arm/boot/zImage +fimake -f kernel.mk

編譯成功如下所示

[OHOS INFO] [1/11] ACTION //kernel/linux/build:linux_kernel(//build/lite/toolchain:linux_x86_64_ohos_clang) [OHOS INFO] [2/11] STAMP obj/kernel/linux/build/linux_kernel.stamp [OHOS INFO] [3/11] ACTION //prebuilts/lite/sysroot/build:build_sysroot(//build/lite/toolchain:linux_x86_64_ohos_clang) [OHOS INFO] [4/11] STAMP obj/prebuilts/lite/sysroot/build/build_sysroot.stamp [OHOS INFO] [5/11] STAMP obj/prebuilts/lite/sysroot/build/build.stamp [OHOS INFO] [6/11] STAMP obj/prebuilts/lite/sysroot/sysroot.stamp [OHOS INFO] [7/11] STAMP obj/build/lite/prebuilts.stamp [OHOS INFO] [8/11] STAMP obj/prebuilts/lite/sysroot/build/strip.inputdeps.stamp [OHOS INFO] [9/11] ACTION //prebuilts/lite/sysroot/build:strip(//build/lite/toolchain:linux_x86_64_ohos_clang) [OHOS INFO] [10/11] ACTION //prebuilts/lite/sysroot/build:strip(//build/lite/toolchain:linux_x86_64_ohos_clang) [OHOS INFO] [11/11] STAMP obj/prebuilts/lite/sysroot/build/strip.stamp [OHOS INFO] /home/zxy/openharmony/imx6ul/vendor/xingyun/imx6ul_nand_linux/fs.yml not found, stop packing fs. If the product does not need to be packaged, ignore it. [OHOS INFO] imx6ul_nand_openharmony build success [OHOS INFO] cost time: 0:08:48

內核成功運行截圖如下

然后添加我們的啟動恢復子系統,這樣就能產生init可執行文件,只需要添加如下信息文件即可

{"subsystem": "startup","components": [{ "component": "bootstrap_lite", "features":[] },{ "component": "syspara_lite", "features":[] },{ "component": "init_lite", "features":[] },{ "component": "appspawn_lite", "features":[] }]}

添加完成后如下圖,多了恢復啟動子系統

然后開始添加我們的根文件系統,首先復制其他產品的根文件系統,主要是依靠fs.yml產生
cp vendor/hisilicon/hispark_taurus_linux/fs.yml vendor/xingyun/imx6ul_nand_linux/,復制完成后,需要修改,因為我們是256MB的NAND需要裁剪。

添加完成后還需要添加init.cfg文件,init進程會通過init.cfg啟動其他服務首先在vendor/xingyun/imx6ul_nand_linux下創建目錄init_configs,然后新建文件init_configs.cfg,把其他產品上的復制一份即可,接著添加BUILD.gn和etc目錄,其中etc目錄下添加的文件為

進入init.d目錄,創建如下文件。

然后再來修改這些文件,首先需要修改vendor/xingyun/imx6ul_nand_linux/init_configs/下的BUILD.gn文件,需要把我們的文件都添加到根文件系統里面去。

copy("init_configs") {sources = [ "init_configs.cfg" ]outputs = [ "$root_out_dir/etc/init.cfg" ] }copy("init_fstab") {sources = ["etc/fstab",]outputs = [ "$root_out_dir/etc/{{source_file_part}}" ] }copy("init_initd") {sources = ["etc/init.d/rcS","etc/init.d/S00devs","etc/init.d/S01mdev",]outputs = [ "$root_out_dir/etc/init.d/{{source_file_part}}" ] }

這里是直接進行的復制操作,然后修改vendor/xingyun/imx6ul_nand_linux/下的BUILD.gn

group("imx6ul_nand_linux") {deps = ["init_configs","init_configs:init_initd","init_configs:init_fstab"] }

接著復制當前文件內容到hals下
cp vendor/hisilicon/hispark_taurus_linux/hals/* vendor/xingyun/imx6ul_nand_linux/hals/ -r,注意修改如下地方

編譯完成后,我們手動執行如下命令tar -jcvf rootfs.tar.bz2 -C ./rootfs .打包我們的根文件系統即可,然后通過mfgtools下載。

可以看到成功掛載上了根文件系統。這里因為需要自己手動去打包根文件系統,比較麻煩,那么現在我們直接添加到編譯腳本中去,首先修改如下圖,使用我們自己的腳本文件

接著修改device/xingyun/imx6ul_nand_linux/tools/rootfsimg_linux.sh腳本文件,這個文件可以從其他產品或者build下拷貝過來使用,我這邊添加成如下即可。

然后打開binder驅動,

diff --git a/kernel/linux/config/linux-5.4/arch/arm/configs/imx6ul_nand_linux_small_defconfig b/kernel/linux/config/linux-5.4/arch/arm/configs/imx6ul_nand_linux_small_defconfig index 732cdc41eb..1760aa3c59 100644 --- a/kernel/linux/config/linux-5.4/arch/arm/configs/imx6ul_nand_linux_small_defconfig +++ b/kernel/linux/config/linux-5.4/arch/arm/configs/imx6ul_nand_linux_small_defconfig @@ -449,3 +449,8 @@ CONFIG_FONT_8x16=yCONFIG_PRINTK_TIME=yCONFIG_DEBUG_FS=yCONFIG_MAGIC_SYSRQ=y + +CONFIG_ANDROID=y +CONFIG_ANDROID_BINDER_IPC=y +CONFIG_ANDROID_BINDER_DEVICES="binder,hwbinder,vndbinder" +

重新編譯后,就可以得到我們的所有文件了。然后再把編譯好的u-boot文件復制到我們的目錄下
首先創建vendor/xingyun/imx6ul_nand_linux/u-boot目錄,然后把uboot二進制文件放到此處即可。接著添加BUILD.gn文件,具體文件內容如下

copy("u-boot") {sources = ["u-boot-dtb.imx",]outputs = [ "$root_out_dir/{{source_file_part}}" ] }

然后修改上級BUILD.gn,將u-boot加入進去即可。

group("imx6ul_nand_linux") {deps = ["init_configs","init_configs:init_initd","init_configs:init_fstab","u-boot"] }

這樣編譯后,我們就能得到u-boot,zImage ,dtb,rootfs所有的文件了。接著添加內核HDF框架支持,之前有人問到過怎么提取自己版本的hdf文件,我這里就詳細介紹下,我這邊是如何得到的,首先將你的源碼存放在其他目錄下,比如我這里就是將linux原生的sdk源碼,單獨存放在一個目錄。

然后使用git init,git commit將源碼生成commit,然后我們在這里對應修改,生成patch即可。然后需要添加hcs文件,首先創建如下目錄vendor/xingyun/imx6ul_nand_linux/hdf_config,然后復制其他產品此目錄中的Makefile文件,然后新建hdf.hcs文件,文件就添加如下內容就好。

root {module = "nxp,imx6ul_chip"; }

然后編譯,主要解決以下錯誤。首先就是usb的問題,這里是判斷內核是哪個

diff --git a/drivers/adapter/khdf/linux/model/usb/device/f_generic.c b/drivers/adapter/khdf/linux/model/usb/device/f_generic.c index 6878c95797..e5965d4551 100644 --- a/drivers/adapter/khdf/linux/model/usb/device/f_generic.c +++ b/drivers/adapter/khdf/linux/model/usb/device/f_generic.c @@ -1604,7 +1604,7 @@ static void ffs_data_put(struct ffs_data *ffs)pr_info("%s(): freeing\n", __func__);ffs_data_clear(ffs);BUG_ON(waitqueue_active(&ffs->ev.waitq) || -#if LINUX_VERSION_CODE >= KERNEL_VERSION(5,0,0) +#if LINUX_VERSION_CODE >= KERNEL_VERSION(5,5,0)swait_active(&ffs->ep0req_completion.wait) ||#elsewaitqueue_active(&ffs->ep0req_completion.wait) ||

然后有些配置是默認就打開的,我們這里全部修改為默認關閉。

diff --git a/drivers/adapter/khdf/linux/Kconfig b/drivers/adapter/khdf/linux/Kconfig index 037b190fb2..a3b15659b4 100644 --- a/drivers/adapter/khdf/linux/Kconfig +++ b/drivers/adapter/khdf/linux/Kconfig @@ -1,7 +1,7 @@config DRIVERS_HDFbool "Enable HDF manager" - default y + default nhelpAnswer Y to enable Linux support HDF.@@ -25,4 +25,4 @@ source "drivers/hdf/khdf/model/usb/host/Kconfig"source "drivers/hdf/khdf/model/usb/device/Kconfig"source "drivers/hdf/khdf/model/audio/Kconfig"source "drivers/hdf/khdf/model/misc/vibrator/Kconfig" -source "drivers/hdf/khdf/model/misc/dsoftbus/Kconfig" \ No newline at end of file +source "drivers/hdf/khdf/model/misc/dsoftbus/Kconfig" diff --git a/drivers/adapter/khdf/linux/model/audio/Kconfig b/drivers/adapter/khdf/linux/model/audio/Kconfig index a760df7f5d..e64039795e 100755 --- a/drivers/adapter/khdf/linux/model/audio/Kconfig +++ b/drivers/adapter/khdf/linux/model/audio/Kconfig @@ -1,6 +1,6 @@config DRIVERS_HDF_AUDIObool "Enable HDF Audio driver" - default y + default ndepends on DRIVERS_HDFhelpAnswer Y to choice HDF Audio input driver. diff --git a/drivers/adapter/khdf/linux/model/usb/device/Kconfig b/drivers/adapter/khdf/linux/model/usb/device/Kconfig index 54d4cc7962..eb473b36f6 100644 --- a/drivers/adapter/khdf/linux/model/usb/device/Kconfig +++ b/drivers/adapter/khdf/linux/model/usb/device/Kconfig @@ -1,6 +1,6 @@config DRIVERS_HDF_USB_F_GENERICbool "Enable F_GENERIC driver" - default y + default ndepends on DRIVERS_HDFhelpAnswer Y to choice HDF USB F_GENERIC driver. diff --git a/drivers/adapter/khdf/linux/model/usb/host/Kconfig b/drivers/adapter/khdf/linux/model/usb/host/Kconfig index 97f59cb6a0..710f80dba6 100644 --- a/drivers/adapter/khdf/linux/model/usb/host/Kconfig +++ b/drivers/adapter/khdf/linux/model/usb/host/Kconfig @@ -11,7 +11,7 @@config DRIVERS_HDF_USB_PNP_NOTIFYbool "Enable HDF USB PNP Notify driver" - default y + default ndepends on DRIVERS_HDFhelpAnswer Y to choice HDF USB PNP Notify driver.

到此,添加框架基本計算完成了。如果啟動出現如下情況,是因為沒有把binder驅動補丁添加造成的

在kernel/linux/patches/linux-5.4/imx6ul_nand_linux_patch/imx6ul_nand_linux_small.patch中添加如下補丁內容即可解決。

diff --git a/include/uapi/linux/android/binder.h b/include/uapi/linux/android/binder.h index 731780804..7348b3a0b 100644 --- a/include/uapi/linux/android/binder.h +++ b/include/uapi/linux/android/binder.h @@ -27,7 +27,7 @@#define B_PACK_CHARS(c1, c2, c3, c4) \((((c1)<<24)) | (((c2)<<16)) | (((c3)<<8)) | (c4))#define B_TYPE_LARGE 0x85 - +#define BINDER_IPC_32BIT 1enum {BINDER_TYPE_BINDER = B_PACK_CHARS('s', 'b', '*', B_TYPE_LARGE),BINDER_TYPE_WEAK_BINDER = B_PACK_CHARS('w', 'b', '*', B_TYPE_LARGE),

成功運行截圖

啟動的時候發現hilog并未成功注冊

[ 1.425978] register hilog error -16 [ 1.429805] hilog_init Start-16

修改補丁如下

diff --git a/kernel/linux/linux-5.4/drivers/staging/hilog/hilog.c b/kernel/linux/linux-5.4/drivers/staging/hilog/hilog.c index dae5ab074c..46700b146a 100644 --- a/kernel/linux/linux-5.4/drivers/staging/hilog/hilog.c +++ b/kernel/linux/linux-5.4/drivers/staging/hilog/hilog.c @@ -337,12 +337,14 @@ static void hilog_device_init(void)hilog_dev.count = 0;}+static dev_t dev_t_no; +static int __init hilogdev_init(void){int result; - dev_t devno = MKDEV(hilog_major, 0); - - result = register_chrdev_region(devno, 2, "hilog"); + //dev_t devno = MKDEV(hilog_major, 0); + alloc_chrdev_region(&dev_t_no,2,255,"hilog"); + //result = register_chrdev_region(devno, 2, "hilog");if (result < 0) {pr_emerg("\t register hilog error %d\n", result);return result; @@ -352,7 +354,7 @@ static int __init hilogdev_init(void)g_hilog_cdev.owner = THIS_MODULE;g_hilog_cdev.ops = &hilog_fops;- cdev_add(&g_hilog_cdev, MKDEV(hilog_major, 0), HILOG_NR_DEVS); + cdev_add(&g_hilog_cdev, dev_t_no/*MKDEV(hilog_major, 0)*/, HILOG_NR_DEVS);hilog_device_init();return 0;

總結

以上是生活随笔為你收集整理的基于imx6ul平台移植ohos3.0.3LTS小型系统之添加产品编译框架的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 99视频久久| 国产无遮挡裸体免费视频 | 国产亚洲欧洲 | 轮乱| 久久精工是国产品牌吗 | 青青草手机在线视频 | 国产美女精品在线 | 18成人免费观看视频 | 国产婷婷一区二区三区 | 国产在线视频91 | 在线免费观看黄色片 | 偷拍女澡堂一区二区三区 | 少妇真实被内射视频三四区 | 狠狠艹视频 | 国产女人毛片 | 国产欧美激情 | 欧美日韩一区二区在线播放 | 欧美激情xxx| 91久久一区二区三区 | 欧美熟妇精品一区二区蜜桃视频 | 好吊操免费视频 | 激情久久久| 大地资源二中文在线影视观看 | 美女扒开尿口让男人捅爽 | 男女啪啪毛片 | 日韩精品中文字 | 国产suv一区二区 | 亚洲av中文无码乱人伦在线视色 | 强迫凌虐淫辱の牝奴在线观看 | 国产l精品国产亚洲区久久 午夜青青草 | 激情福利 | 国产一在线观看 | 日日夜夜爽 | 久久福利小视频 | 激情久久中文字幕 | 噼里啪啦动漫 | 国产黄a三级三级三级看三级男男 | 午夜精品一区二区三区在线视频 | 女人喷潮完整视频 | 毛片9 | 欧美成人一区二区三区高清 | 超碰免费在线 | 美国一区二区三区 | 黑人欧美一区二区三区 | 毛色毛片 | 久久最新视频 | 日韩高清片 | 精品国产一区二区三区久久 | 狠狠干夜夜骑 | 日本成人三级电影 | 官场艳妇疯狂性关系 | 伊人婷婷在线 | 欧美中文字幕 | 欧美激情3p| 国产在线麻豆精品观看 | 成人精品三级 | 99久久久国产精品无码网爆 | 青青青国产精品一区二区 | 亚洲AV无码国产成人久久 | 99av国产精品欲麻豆 | 亚洲成人一二三区 | 99热这里只有精品18 | 成年人在线观看av | av自拍网 | 欧美日韩色视频 | 日韩h在线| 韩国午夜激情 | 无码人妻精品一区二区蜜桃视频 | 波多野结衣在线免费观看视频 | 91精品国自产在线 | 亚洲免费精品视频在线观看 | 日韩人妻精品一区二区三区视频 | 国产又粗又长又黄视频 | 狠狠涩| 91亚洲精品久久久蜜桃 | 欧美日本中文字幕 | 亚洲网站一区 | 一区二区成人网 | 蜜桃成熟时李丽珍在线观看 | 韩国三级一区 | 久久久久久久香蕉 | 91se在线 | 在线观看日本中文字幕 | 欧美午夜激情视频 | 久操视频免费 | 欧美国产高清 | 国产精品久久综合青草亚洲AV | 老司机在线免费视频 | 日韩成人在线影院 | av网站大全在线 | 色图18p | 女同av在线播放 | 久久精品国产99久久不卡 | 成人在线视频网站 | 亚洲国产91| 光明影院手机版在线观看免费 | 亚洲av无码乱码国产精品fc2 | 亚洲の无码国产の无码步美 | 日本东京热一区二区三区 |