From 55845ebe4c739e022573911e69645f956192ccde Mon Sep 17 00:00:00 2001 From: zhujiaxin Date: Sun, 11 Jun 2023 14:23:00 +0800 Subject: [PATCH] update kernel hck md Signed-off-by: zhujiaxin --- zh-cn/device-dev/kernel/Readme-CN.md | 1 + .../figures/zh-cn_image-20230611130037045.png | Bin 0 -> 8456 bytes .../device-dev/kernel/kernel-standard-hck.md | 144 ++++++++++++++++ ...70\345\255\220\347\263\273\347\273\237.md" | 163 +++++++++--------- 4 files changed, 229 insertions(+), 79 deletions(-) create mode 100644 zh-cn/device-dev/kernel/figures/zh-cn_image-20230611130037045.png create mode 100644 zh-cn/device-dev/kernel/kernel-standard-hck.md diff --git a/zh-cn/device-dev/kernel/Readme-CN.md b/zh-cn/device-dev/kernel/Readme-CN.md index 4334e426a6..f43d4bf955 100755 --- a/zh-cn/device-dev/kernel/Readme-CN.md +++ b/zh-cn/device-dev/kernel/Readme-CN.md @@ -158,6 +158,7 @@ - [标准系统内核概述](kernel-standard-overview.md) - [OpenHarmony开发板Patch使用指导](kernel-standard-patch.md) - [标准系统内核编译与构建指导](kernel-standard-build.md) + - [HCK内核解耦框架指导](kernel-standard-hck.md) - 内核增强特性 - [Enhanced SWAP特性介绍](kernel-standard-mm-eswap.md) - [NewIP内核协议栈介绍](kernel-standard-newip.md) diff --git a/zh-cn/device-dev/kernel/figures/zh-cn_image-20230611130037045.png b/zh-cn/device-dev/kernel/figures/zh-cn_image-20230611130037045.png new file mode 100644 index 0000000000000000000000000000000000000000..75e59f5088fc2e951dae0800f29b0194c646f10a GIT binary patch literal 8456 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 XRd7lS;|K^}5Xkrj#Gvw;OZ5K$hiLZ% literal 0 HcmV?d00001 diff --git a/zh-cn/device-dev/kernel/kernel-standard-hck.md b/zh-cn/device-dev/kernel/kernel-standard-hck.md new file mode 100644 index 0000000000..5d9ef98b45 --- /dev/null +++ b/zh-cn/device-dev/kernel/kernel-standard-hck.md @@ -0,0 +1,144 @@ +# HCK内核解耦框架指导 + + +## 背景 + +随着更多的平台适配OpenHarmony,各厂商针对内核的需求功能也不尽相同,都有特性化的方案。 + +直接合入内核仓或适用patch方法,会导致后期构建开发效率低、日常维护复杂、特性移植性差等问题,阻碍内核的良性发展。 + +为使三方内核特性在不侵入或少侵入内核仓的情况下合入社区,社区开发设计HCK(OpenHarmony Common Kernel)内核解耦框架,该方案为开发者提供了整套插桩、注册、调用接口,减少对内核的侵入修改,统一解耦框架,插桩接口可在多平台间通用。 + +本文主要对基于源生hook方式的HCK框架进行使用指导说明,并对使用规范进行说明。 + +## 使用范围 + +涉及Linux内核patch、特性、模块侵入源生内核的整改。 + +## 接口说明 + +DECLARE_HCK_LITE_HOOK:接口定义使用的接口宏,用于插桩接口定义声明用,同时会生成注册和调用接口。 + +REGISTER_HCK_LITE_HOOK:插桩接口实例注册宏,HCK方案仅支持单接口注册单实例,且不可注销已注册接口。 + +REGISTER_HCK_LITE_DATA_HOOK:带参数的接口注册宏,同样仅单实例注册,且接口不可注销。 + +CALL_HCK_LITE_HOOK:插桩接口调用接口宏,在原侵入内核代码处进行替换,使用方法下详。 + +**图 1** HCK定义、注册、调用接口及流程图 + +![zh-cn_image-20230611130037045](figures/zh-cn_image-20230611130037045.png) + +## 使用指导 + +### 配置说明 + +使用HCK方案请先在kernel_linux_config仓下对应平台config配置文件中打开以下配置: + +```c +CONFIG_HCK=y +CONFIG_HCK_VENDOR_HOOKS=y +``` + +### 接口定义 + +在kernel-x.x/include/linux/hck/lite_hck_xxx.h中用以下宏定义hook接口: + +```c +#include // 包含hck必要头文件 + +// 可自定义数据类型,供注册传参用 +struct hck_data { + int stat; + char* name; +}; + +// 插桩接口声明,声明宏中包含EXPORT接口,无需单独调用 +DECLARE_HCK_LITE_HOOK(boot_config_info0_lhck, TP_PROTO(类型 参数, ...), TP_ARGS(参数, ...)); +``` + +### 接口声明 + +在统一新增的vendor hck模块下添加声明接口头文件,文件路径:drivers/hck/vendor_hooks.c + +```c +#define CREATE_LITE_VENDOR_HOOK +#include // 在宏定义后添加接口声明头文件 +``` + +### 接口注册 + +在自研hook模块中定义插桩函数以及注册hook函数 + +```c +// 包含接口声明头文件 +#include + +// 接口实现: +boot_config_info0([void* data], ...) +{ + // 调用注册入参 + ((struct hck_data*)data)->stat ... ; +} + +// 接口注册:一般在模块init函数中进行注册,确保注册要在调用之前完成 +xxx_init() +{ + REGISTER_HCK_LITE_HOOK(boot_config_info0_lhck, boot_config_info0); + // 带参数的接口注册,代入的参数可在接口实例中获取使用 + REGISTER_HCK_LITE_DATA_HOOK(boot_config_info1_lhck, boot_config_info1, data); +} +``` + +### 接口调用 + +在其他内核模块中,插入hook函数,完成接口调用。 + +如:在linux-x.y/drivers/xxx/xxx.c中添加之前定义的接口 + +```c +#include +... +int foo(...) +{ + CALL_HCK_LITE_HOOK(boot_config_info0_lhck, 参数...); +} +``` + +### 示例模块参考 + +示例代码位置:kernel/linux/linux-5.10/samples/hck + +启用示例代码,请打开以下config配置(请勿在正式版本中开启): + +```c +CONFIG_SAMPLES=y +CONFIG_SAMPLE_HCK=y +CONFIG_SAMPLE_HCK_CALL=y +CONFIG_SAMPLE_HCK_REGISTER=y +``` + +## 使用规范 + +### 命名规范 + +1. 遵守内核接口命名格式即可,尽量做到自解释。 + +2. 当前使用的是lite hck接口,请在接口命名后加”_lhck”后缀。如: +```c +DECLARE_HCK_LITE_HOOK(boot_config_info0_lhck, TP_PROTO(int* s ), TP_ARGS(s)); +``` + +3. 使用英文单词和语法,不要用拼音。 + +4. 使用领域内公用的缩写,不自创缩写。 + +5. 尽量不要用否定句式。 + +如:获取启动配置接口: get_boot_config_lhck + +### 文件目录规范 + +1. 接口定义头文件放置位置:kernel-x.x/include/linux/hck/ + +2. 头文件命名规范:lite_hck_模块简述.h,如lite_hck_mmc.h \ No newline at end of file diff --git "a/zh-cn/readme/\345\206\205\346\240\270\345\255\220\347\263\273\347\273\237.md" "b/zh-cn/readme/\345\206\205\346\240\270\345\255\220\347\263\273\347\273\237.md" index f8ce7de114..7ae779c5ae 100644 --- "a/zh-cn/readme/\345\206\205\346\240\270\345\255\220\347\263\273\347\273\237.md" +++ "b/zh-cn/readme/\345\206\205\346\240\270\345\255\220\347\263\273\347\273\237.md" @@ -72,87 +72,92 @@ Linux社区LTS 5.10.y分支信息请查看[kernel官网](https://git.kernel.org/ ``` kernel/ ├── linux -│ ├── linux-4.19 # OpenHarmony linux-4.19 Common kernel -│ ├── linux-5.10 # OpenHarmony linux-5.10 Common kernel -│ ├── build -│ │ ├── BUILD.gn # 编译框架GN文件 -│ │ ├── kernel.mk # 内核编译文件 -│ │ └── ohos.build # 内核编译组件文件 -│ ├── patches -│ │ ├── linux-4.19 # linux-4.19 相关patch -│ │ │   ├── common_patch -│ │ │   │ └── hdf.patch # linux-4.19 HDF patches -│ │ │   └── hi3516dv300_patch -│ │ │   └── hi3516dv300.patch # linux-4.19 Hi3516D V300 SOC patches -│ │ └── linux-5.10 -│ │    ├── common_patch -│ │    │ └── hdf.patch # linux-5.10 HDF patches -│ │    └── hi3516dv300_patch -│ │    │ └── hi3516dv300.patch # linux-5.10 Hi3516D V300 SOC patches -│ │    └── rkrk3568_patch -│ │    ├── kernel.patch # linux-5.10 rk3568 SOC patches -│ │    └── hdf.patch # linux-5.10 rk3568 定制 HDF patches -│ └── config -│ ├── linux-4.19 -│ │   └── arch -│ │   └── arm -│ │   └── configs -│ │   ├── hi3516dv300_small_defconfig # 厂商Hisilicon对应的开源开发板Hi3516dv300小型系统的defconfig -│ │   ├── hi3516dv300_standard_defconfig # 厂商Hisilicon对应的开源开发板Hi3516dv300标准系统的defconfig -│ │   ├── small_common_defconfig # 小型系统的内核的common defconfig -│ │   └── standard_common_defconfig # 标准系统的内核的common defconfig -│ └── linux-5.10 -│ └── arch -│ └── arm -│ └── configs -│    ├── hi3516dv300_small_defconfig # 厂商Hisilicon对应的开源开发板Hi3516dv300小型系统的defconfig -│    ├── hi3516dv300_standard_defconfig # 厂商Hisilicon对应的开源开发板Hi3516dv300标准系统的defconfig -│    ├── small_common_defconfig # 小型系统的内核的common defconfig -│    └── standard_common_defconfig # 标准系统的内核的common defconfig -└── liteos_a # liteos内核基线代码 - ├── apps # 用户态的init和shell应用程序 - ├── arch # 体系架构的目录,如arm等 - │ └── arm # arm架构代码 - ├── bsd # freebsd相关的驱动和适配层模块代码引入,例如USB等 - ├── compat # 内核接口兼容性目录 - │ └── posix # posix相关接口 - ├── drivers # 内核驱动 - │ └── char # 字符设备 - │ ├── mem # 访问物理IO设备驱动 - │ ├── quickstart # 系统快速启动接口目录 - │ ├── random # 随机数设备驱动 - │ └── video # framebuffer驱动框架 - ├── fs # 文件系统模块,主要来源于NuttX开源项目 - │ ├── fat # fat文件系统 - │ ├── jffs2 # jffs2文件系统 - │ ├── include # 对外暴露头文件存放目录 - │ ├── nfs # nfs文件系统 - │ ├── proc # proc文件系统 - │ ├── ramfs # ramfs文件系统 - │ └── vfs # vfs层 - ├── kernel # 进程、内存、IPC等模块 - │ ├── base # 基础内核,包括调度、内存等模块 - │ ├── common # 内核通用组件 - │ ├── extended # 扩展内核,包括动态加载、vdso、liteipc等模块 - │ ├── include # 对外暴露头文件存放目录 - │ └── user # 加载init进程 - ├── lib # 内核的lib库 - ├── net # 网络模块,主要来源于lwip开源项目 - ├── platform # 支持不同的芯片平台代码,如Hi3516DV300等 - │ ├── hw # 时钟与中断相关逻辑代码 - │ ├── include # 对外暴露头文件存放目录 - │ └── uart # 串口相关逻辑代码 - ├── platform # 支持不同的芯片平台代码,如Hi3516DV300等 - ├── security # 安全特性相关的代码,包括进程权限管理和虚拟id映射管理 - ├── syscall # 系统调用 - └── tools # 构建工具及相关配置和代码 +│ ├── common_modules # linux内核通用模块仓 +│ ├── linux-4.19 # OpenHarmony linux-4.19 Common kernel +│ ├── linux-5.10 # OpenHarmony linux-5.10 Common kernel +│ ├── build +│ │ ├── BUILD.gn # 编译框架GN文件 +│ │ ├── kernel.mk # 内核编译文件 +│ │ └── ohos.build # 内核编译组件文件 +│ ├── patches +│ │ ├── linux-4.19 # linux-4.19 相关patch +│ │ │ ├── common_patch +│ │ │ │ └── hdf.patch # linux-4.19 HDF patches +│ │ │ └── hispark_taurus_patch +│ │ │ └── hispark_taurus.patch # linux-4.19 hispark_taurus SOC patches +│ │ └── linux-5.10 +│ │ ├── common_patch +│ │ │ └── hdf.patch # linux-5.10 HDF patches +│ │ └── hispark_taurus_patch +│ │ │ └── hispark_taurus.patch # linux-5.10 hispark_taurus SOC patches +│ │ └── rk3568_patch +│ │ ├── kernel.patch # linux-5.10 rk3568 SOC patches +│ │ └── hdf.patch # linux-5.10 rk3568 定制 HDF patches +│ └── config +│ ├── linux-4.19 +│ │ └── arch +│ │ └── arm +│ │ └── configs +│ │ ├── hispark_taurus_small_defconfig # 厂商Hisilicon对应的开源开发板hispark_taurus小型系统的defconfig +│ │ ├── hispark_taurus_standard_defconfig # 厂商Hisilicon对应的开源开发板hispark_taurus标准系统的defconfig +│ │ ├── small_common_defconfig # 小型系统的内核的common defconfig +│ │ └── standard_common_defconfig # 标准系统的内核的common defconfig +│ └── linux-5.10 +│ ├── base_defconfig # 内核必选或安全红线模块基础配置 +│ ├── type # 形态配置目录 +│ │ ├── small_defconfig # 小型系统常用配置文件 +│ │ └── standard_defconfig # 标准系统常用配置文件 +│ ├── form # 版本配置目录 +│ │ └── debug_defconfig # 调试版本配置文件(示例目前无配置需求) +│ ├── rk3568 # 厂商平台配置目录 +│ │ └── arch +│ │ └── arm64_defconfig # 芯片单板64位版本相关配置文件 +│ └── product # 相关产品类型配置目录 +│ └── phone_defconfig # 手机类型产品相关配置文件 +└── liteos_a # liteos内核基线代码 + ├── apps # 用户态的init和shell应用程序 + ├── arch # 体系架构的目录,如arm等 + │ └── arm # arm架构代码 + ├── bsd # freebsd相关的驱动和适配层模块代码引入,例如USB等 + ├── compat # 内核接口兼容性目录 + │ └── posix # posix相关接口 + ├── drivers # 内核驱动 + │ └── char # 字符设备 + │ ├── mem # 访问物理IO设备驱动 + │ ├── quickstart # 系统快速启动接口目录 + │ ├── random # 随机数设备驱动 + │ └── video # framebuffer驱动框架 + ├── fs # 文件系统模块,主要来源于NuttX开源项目 + │ ├── fat # fat文件系统 + │ ├── jffs2 # jffs2文件系统 + │ ├── include # 对外暴露头文件存放目录 + │ ├── nfs # nfs文件系统 + │ ├── proc # proc文件系统 + │ ├── ramfs # ramfs文件系统 + │ └── vfs # vfs层 + ├── kernel # 进程、内存、IPC等模块 + │ ├── base # 基础内核,包括调度、内存等模块 + │ ├── common # 内核通用组件 + │ ├── extended # 扩展内核,包括动态加载、vdso、liteipc等模块 + │ ├── include # 对外暴露头文件存放目录 + │ └── user # 加载init进程 + ├── lib # 内核的lib库 + ├── net # 网络模块,主要来源于lwip开源项目 + ├── platform # 支持不同的芯片平台代码,如hispark_taurus等 + │ ├── hw # 时钟与中断相关逻辑代码 + │ ├── include # 对外暴露头文件存放目录 + │ └── uart # 串口相关逻辑代码 + ├── platform # 支持不同的芯片平台代码,如hispark_taurus等 + ├── security # 安全特性相关的代码,包括进程权限管理和虚拟id映射管理 + ├── syscall # 系统调用 + └── tools # 构建工具及相关配置和代码 ``` ## 约束 LiteOS: -Hi3518EV300默认使用jffs2文件系统,Hi3516DV300默认使用FAT文件系统。若要使用其他文件系统,需要新增适配。 +Hi3518EV300默认使用jffs2文件系统,hispark_taurus默认使用FAT文件系统。若要使用其他文件系统,需要新增适配。 ## 使用 @@ -172,7 +177,7 @@ Hi3518EV300默认使用jffs2文件系统,Hi3516DV300默认使用FAT文件系 2. 合入芯片平台驱动补丁 - 以Hi3516DV300为例: + 以hispark_taurus为例: 在kernel/linux/build仓中,按照kernel.mk中的芯片组件所对应的patch路径规则及命名规则,将对应的芯片组件patch放到对应路径下: @@ -198,13 +203,13 @@ Hi3518EV300默认使用jffs2文件系统,Hi3516DV300默认使用FAT文件系 ## 构建说明 -以hi3516dv300开源开发板+ubuntu x86主机开发环境为例 +以hispark_taurus开源开发板+ubuntu x86主机开发环境为例 使用工程的全量编译命令,编译生成uImage内核镜像 ``` -./build.sh --product-name hispark_taurus_standard # 编译hi3516dv300镜像 - --build-target build_kernel # 编译hi3516dv300的uImage内核镜像 +./build.sh --product-name hispark_taurus_standard # 编译hispark_taurus镜像 + --build-target build_kernel # 编译hispark_taurus的uImage内核镜像 --gn-args linux_kernel_version=\"linux-5.10\" # 编译指定内核版本 ``` -- GitLab