From 14321460fbfb756bc39a966c177286ae15427ba9 Mon Sep 17 00:00:00 2001 From: zhujiaxin Date: Thu, 30 Nov 2023 19:44:11 +0800 Subject: [PATCH 1/3] update README Signed-off-by: zhujiaxin --- README.md | 53 ++++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 52 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 4f4bd7b..c8c03d7 100644 --- a/README.md +++ b/README.md @@ -20,7 +20,12 @@ kernel/linux/ ├ ─ ─ OAT.xml # OAT扫描配置文件,合入模块同步更新 ├ ─ ─ README.md # linux内核通用模块仓介绍文档 ├ ─ ─ README_en.md - └ ─ ─ README.OpenSource # 模块资源配置文件 + ├ ─ ─ README.OpenSource # 模块资源配置文件 + ├ ─ ─ BUILD.gn # 内核ko模块参与构建的编译配置文件 + └ ─ ─ module_smple # 内核ko示例 + ├ ─ ─ BUILD.gn # 内核ko模块编译配置文件 + └ ─ ─ *.c # ko源码文件(支持子目录以及多源码文件) + ``` #### 贡献流程 @@ -73,3 +78,49 @@ kernel/linux/ 8. 【规则】合入模块如有借鉴或引用三方开源模块的需要在README.OpenSource文件中进行添加说明。 9. 【建议】具备编译ko的条件,在ko构建能力上线后可适配整改构建出ko模块。 +### ko模块指导 + +1. BUILD.gn文件 +(1) 参与构建 +参与编译ko模块在common_modules下的BUILD.gn中deps字段中进行添加,格式为“模块目录:模块名”,例如: +``` +group("ko_build") { + deps = [ + "module_sample:ko_sample", # 示例ko + "my_sample:new_ko", # 新建ko + ] +} +``` + +(2) 模块编译配置文件,示例如下 +``` +import("//build/templates/kernel/ohos_kernel_build.gni") # 包含编译ko所需的模板配置 + +ohos_build_ko("ko_sample") { # 内核ko模块编译名,用于参与构建依赖,必须配置 + sources = [ # 涉及源码文件填写,必须配置 + "ko_sample.c", + "sample_fun.c", + ] + target_ko_name = "kosample" # 内核ko最终模块名,不用带扩展名“.ko”,必须配置 + device_name = device_name # 参与的设备名,如rk3568,默认使用编译参数device_name配置即可 + device_arch = "arm64" # 适用架构配置,必须配置 +} +``` + +2. 编译 +新增编译目标mk_chip_ckm_img,所有填入BUILD.gn的ko模块将会被编译生成。以rk3568为例: +``` +./build.sh --product-name rk3568 --build-target mk_chip_ckm_img --ccache --jobs 4 +``` + +3. 产物 +所有构建后ko生成在新增的chip_ckm目录下,以rk3568为例: +``` +out/rk3568/packages/phone/chip_ckm/ + └ ─ ─ *.ko +``` +ko全部打包到独立镜像chip_ckm.img镜像中,镜像位置以rk3568为例: +``` +out/rk3568/packages/phone/images/ + └ ─ ─ chip_ckm.img +``` \ No newline at end of file -- Gitee From 36c88fcf52956b5e964ec6ed8ce4f1031475d3af Mon Sep 17 00:00:00 2001 From: zhujiaxin Date: Thu, 30 Nov 2023 19:55:39 +0800 Subject: [PATCH 2/3] --amend Signed-off-by: zhujiaxin --- README.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/README.md b/README.md index c8c03d7..72d401e 100644 --- a/README.md +++ b/README.md @@ -81,7 +81,9 @@ kernel/linux/ ### ko模块指导 1. BUILD.gn文件 + (1) 参与构建 + 参与编译ko模块在common_modules下的BUILD.gn中deps字段中进行添加,格式为“模块目录:模块名”,例如: ``` group("ko_build") { @@ -108,12 +110,14 @@ ohos_build_ko("ko_sample") { # 内核ko模块编译名,用于参与构建 ``` 2. 编译 + 新增编译目标mk_chip_ckm_img,所有填入BUILD.gn的ko模块将会被编译生成。以rk3568为例: ``` ./build.sh --product-name rk3568 --build-target mk_chip_ckm_img --ccache --jobs 4 ``` 3. 产物 + 所有构建后ko生成在新增的chip_ckm目录下,以rk3568为例: ``` out/rk3568/packages/phone/chip_ckm/ -- Gitee From 3003394e18d5f9f1a0bcc35a129ee0ed95e30945 Mon Sep 17 00:00:00 2001 From: zhujiaxin Date: Thu, 30 Nov 2023 19:57:34 +0800 Subject: [PATCH 3/3] --amend Signed-off-by: zhujiaxin --- README.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/README.md b/README.md index 72d401e..6566e1e 100644 --- a/README.md +++ b/README.md @@ -94,6 +94,7 @@ group("ko_build") { } ``` + (2) 模块编译配置文件,示例如下 ``` import("//build/templates/kernel/ohos_kernel_build.gni") # 包含编译ko所需的模板配置 @@ -109,6 +110,7 @@ ohos_build_ko("ko_sample") { # 内核ko模块编译名,用于参与构建 } ``` + 2. 编译 新增编译目标mk_chip_ckm_img,所有填入BUILD.gn的ko模块将会被编译生成。以rk3568为例: @@ -116,6 +118,7 @@ ohos_build_ko("ko_sample") { # 内核ko模块编译名,用于参与构建 ./build.sh --product-name rk3568 --build-target mk_chip_ckm_img --ccache --jobs 4 ``` + 3. 产物 所有构建后ko生成在新增的chip_ckm目录下,以rk3568为例: -- Gitee