From e9669b0f834339796fa3bab99ffe059aa77d86dc Mon Sep 17 00:00:00 2001 From: zhang Date: Tue, 16 Nov 2021 17:13:59 +0800 Subject: [PATCH 1/3] modify hdf document Signed-off-by: zhang --- .../driver/driver-hdf-development.md | 94 +++++++++++++++---- 1 file changed, 78 insertions(+), 16 deletions(-) diff --git a/zh-cn/device-dev/driver/driver-hdf-development.md b/zh-cn/device-dev/driver/driver-hdf-development.md index 60f3a091890..f265813b157 100644 --- a/zh-cn/device-dev/driver/driver-hdf-development.md +++ b/zh-cn/device-dev/driver/driver-hdf-development.md @@ -66,24 +66,86 @@ HDF框架以组件化的驱动模型作为核心设计思路,为开发者提 HDF_INIT(g_sampleDriverEntry); ``` -2. 驱动编译 - - 驱动代码的编译必须要使用HDF框架提供的Makefile模板进行编译。 +2. 驱动编译 + + - liteos + + ​ 涉及makefile和BUILD.gn修改: + ​ makefile部分: + ​ 驱动代码的编译必须要使用HDF框架提供的Makefile模板进行编译。 + + ``` + include $(LITEOSTOPDIR)/../../drivers/adapter/khdf/liteos/lite.mk #导入hdf预定义内容,必需 + MODULE_NAME := #生成的结果文件 + LOCAL_INCLUDE := #本驱动的头文件目录 + LOCAL_SRCS := #本驱动的源代码文件 + LOCAL_CFLAGS := #自定义的编译选项 + include $(HDF_DRIVER) #导入模板makefile完成编译 + ``` + + ​ 编译结果文件链接到内核镜像,添加到drivers/adapter/khdf/liteos目录下的hdf_lite.mk里面,示例如下: + + ``` + LITEOS_BASELIB += -lxxx #链接生成的静态库 + LIB_SUBDIRS += #驱动代码Makefile的目录 + ``` + + ​ BUILD.gn部分: + + ​ 添加模块BUILD.gn参考定义如下内容: + + ``` + import("//build/lite/config/component/lite_component.gni") + import("//drivers/adapter/khdf/liteos/hdf.gni") + module_switch = defined(LOSCFG_DRIVERS_HDF_PLATFORM) + module_name = "xxx" + hdf_driver(module_name) { + sources = [ + "xxx/xxx/xxx.c", + ] + public_configs = [ ":public" ] --添加依赖头文件 + } + + config("public") { --定义依赖的头文件 + include_dirs = [ + ] + } + ``` + + ​ 把新增的BUILD.gn所在的目录添加到/drivers/adapter/khdf/liteos/BUILD.gn里面: + + ``` + group("liteos") { + public_deps = [ ":$module_name" ] + deps = [ + "xxx/xxx", --新增的BUILD.gn所在的目录 + ] + } + ``` + + - linux + + +​ 如果需要定义模块控制宏,需要在模块目录xxx里面添加Kconfig文件,并把Kconfig文件路径添加到drivers/adapter/khdf/linux/Kconfig里面: + +``` + source "drivers/hdf/khdf/xxx/Kconfig" +``` + +​ 添加模块目录到drivers/adapter/khdf/linux/Makefile: + +``` + obj-$(CONFIG_DRIVERS_HDF) += xxx/ +``` + +​ 在模块目录xxx里面添加Makefile文件,在Makefile文件里面添加模块代码编译规则: + +``` + obj-y += xxx.o +``` - ``` - include $(LITEOSTOPDIR)/../../drivers/adapter/lite/khdf/lite.mk #导入hdf预定义内容,必需 - MODULE_NAME := #生成的结果文件 - LOCAL_INCLUDE := #本驱动的头文件目录 - LOCAL_SRCS := #本驱动的源代码文件 - LOCAL_CFLAGS := #自定义的编译选项 - include $(HDF_DRIVER) #导入模板makefile完成编译 - ``` - - 编译结果文件链接到内核镜像,添加到vendor目录下的hdf\_vendor.mk里面,示例如下: - ``` - LITEOS_BASELIB += -lxxx #链接生成的静态库 - LIB_SUBDIRS += #驱动代码Makefile的目录 - ``` 3. 驱动配置 @@ -167,7 +229,7 @@ HDF框架以组件化的驱动模型作为核心设计思路,为开发者提 > DEVICE_PRELOAD_INVALID > } DevicePreload; > ``` -> 配置文件中preload 字段配成 0 (DEVICE\_PRELOAD\_ENABLE ),则系统启动过程中默认加载;配成1(DEVICE\_PRELOAD\_ENABLE\_STEP2),当系统支持快启的时候,则在系统系统完成之后再加载这一类驱动,否则和DEVICE\_PRELOAD\_ENABLE 含义相同;配成2(DEVICE\_PRELOAD\_DISABLE),则系统启动过程中默认不加载,支持后续动态加载,当用户态获取驱动服务(参考[消息机制](driver-hdf-news.md))时,如果驱动服务不存在时,HDF框架会尝试动态加载该驱动。 +> 配置文件中preload 字段配成 0 (DEVICE\_PRELOAD\_ENABLE ),则系统启动过程中默认加载;配成1(DEVICE\_PRELOAD\_ENABLE\_STEP2),当系统支持快启的时候,则在系统完成之后再加载这一类驱动,否则和DEVICE\_PRELOAD\_ENABLE 含义相同;配成2(DEVICE\_PRELOAD\_DISABLE),则系统启动过程中默认不加载,支持后续动态加载,当用户态获取驱动服务(参考[消息机制](driver-hdf-news.md))时,如果驱动服务不存在时,HDF框架会尝试动态加载该驱动。 >- 按序加载(需要驱动为默认加载) > 配置文件中的priority(取值范围为整数0到200)是用来表示host和驱动的优先级,不同的host内的驱动,host的priority值越小,驱动加载优先级越高;同一个host内驱动的priority值越小,加载优先级越高。 -- Gitee From 06d101cd8d3d5fbf253e31c0d74a69226377b625 Mon Sep 17 00:00:00 2001 From: zhang Date: Wed, 17 Nov 2021 14:32:16 +0800 Subject: [PATCH 2/3] modify hdf document Signed-off-by: zhang --- .../driver/driver-hdf-development.md | 122 +++++++++--------- 1 file changed, 61 insertions(+), 61 deletions(-) diff --git a/zh-cn/device-dev/driver/driver-hdf-development.md b/zh-cn/device-dev/driver/driver-hdf-development.md index f265813b157..e0a6f19b74a 100644 --- a/zh-cn/device-dev/driver/driver-hdf-development.md +++ b/zh-cn/device-dev/driver/driver-hdf-development.md @@ -68,81 +68,81 @@ HDF框架以组件化的驱动模型作为核心设计思路,为开发者提 2. 驱动编译 - - liteos - - ​ 涉及makefile和BUILD.gn修改: - ​ makefile部分: - ​ 驱动代码的编译必须要使用HDF框架提供的Makefile模板进行编译。 - - ``` - include $(LITEOSTOPDIR)/../../drivers/adapter/khdf/liteos/lite.mk #导入hdf预定义内容,必需 - MODULE_NAME := #生成的结果文件 - LOCAL_INCLUDE := #本驱动的头文件目录 - LOCAL_SRCS := #本驱动的源代码文件 - LOCAL_CFLAGS := #自定义的编译选项 - include $(HDF_DRIVER) #导入模板makefile完成编译 - ``` - - ​ 编译结果文件链接到内核镜像,添加到drivers/adapter/khdf/liteos目录下的hdf_lite.mk里面,示例如下: - - ``` - LITEOS_BASELIB += -lxxx #链接生成的静态库 - LIB_SUBDIRS += #驱动代码Makefile的目录 - ``` - - ​ BUILD.gn部分: - - ​ 添加模块BUILD.gn参考定义如下内容: - - ``` - import("//build/lite/config/component/lite_component.gni") - import("//drivers/adapter/khdf/liteos/hdf.gni") - module_switch = defined(LOSCFG_DRIVERS_HDF_PLATFORM) - module_name = "xxx" - hdf_driver(module_name) { + - liteos + + 涉及makefile和BUILD.gn修改: + + * makefile部分: + + 驱动代码的编译必须要使用HDF框架提供的Makefile模板进行编译。 + + ``` + include $(LITEOSTOPDIR)/../../drivers/adapter/khdf/liteos/lite.mk #导入hdf预定义内容,必需 + MODULE_NAME := #生成的结果文件 + LOCAL_INCLUDE := #本驱动的头文件目录 + LOCAL_SRCS := #本驱动的源代码文件 + LOCAL_CFLAGS := #自定义的编译选项 + include $(HDF_DRIVER) #导入模板makefile完成编译 + ``` + + 编译结果文件链接到内核镜像,添加到drivers/adapter/khdf/liteos目录下的hdf_lite.mk里面,示例如下: + + ``` + LITEOS_BASELIB += -lxxx #链接生成的静态库 + LIB_SUBDIRS += #驱动代码Makefile的目录 + ``` + + * BUILD.gn部分: + + 添加模块BUILD.gn参考定义如下内容: + + ``` + import("//build/lite/config/component/lite_component.gni") + import("//drivers/adapter/khdf/liteos/hdf.gni") + module_switch = defined(LOSCFG_DRIVERS_HDF_PLATFORM) + module_name = "xxx" + hdf_driver(module_name) { sources = [ - "xxx/xxx/xxx.c", + "xxx/xxx/xxx.c", ] public_configs = [ ":public" ] --添加依赖头文件 - } - - config("public") { --定义依赖的头文件 + } + config("public") { --定义依赖的头文件 include_dirs = [ ] - } - ``` - - ​ 把新增的BUILD.gn所在的目录添加到/drivers/adapter/khdf/liteos/BUILD.gn里面: + } + ``` - ``` - group("liteos") { - public_deps = [ ":$module_name" ] - deps = [ - "xxx/xxx", --新增的BUILD.gn所在的目录 - ] - } - ``` + 把新增的BUILD.gn所在的目录添加到/drivers/adapter/khdf/liteos/BUILD.gn里面: - - linux + ``` + group("liteos") { + public_deps = [ ":$module_name" ] + deps = [ + "xxx/xxx", --新增的BUILD.gn所在的目录 + ] + } + ``` + - linux -​ 如果需要定义模块控制宏,需要在模块目录xxx里面添加Kconfig文件,并把Kconfig文件路径添加到drivers/adapter/khdf/linux/Kconfig里面: + 如果需要定义模块控制宏,需要在模块目录xxx里面添加Kconfig文件,并把Kconfig文件路径添加到drivers/adapter/khdf/linux/Kconfig里面: -``` - source "drivers/hdf/khdf/xxx/Kconfig" -``` + ``` + source "drivers/hdf/khdf/xxx/Kconfig" #目录为hdf模块软链接到kernel里面的目录 + ``` -​ 添加模块目录到drivers/adapter/khdf/linux/Makefile: + 添加模块目录到drivers/adapter/khdf/linux/Makefile: -``` - obj-$(CONFIG_DRIVERS_HDF) += xxx/ -``` + ``` + obj-$(CONFIG_DRIVERS_HDF) += xxx/ + ``` -​ 在模块目录xxx里面添加Makefile文件,在Makefile文件里面添加模块代码编译规则: + 在模块目录xxx里面添加Makefile文件,在Makefile文件里面添加模块代码编译规则: -``` - obj-y += xxx.o -``` + ``` + obj-y += xxx.o + ``` -- Gitee From 2f34dbdcf1195b316ad40dce00a5a761396b778d Mon Sep 17 00:00:00 2001 From: zhang Date: Wed, 17 Nov 2021 14:47:17 +0800 Subject: [PATCH 3/3] modify hdf document Signed-off-by: zhang --- .../driver/driver-hdf-development.md | 21 ++++++++++--------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/zh-cn/device-dev/driver/driver-hdf-development.md b/zh-cn/device-dev/driver/driver-hdf-development.md index e0a6f19b74a..64a37c0d419 100644 --- a/zh-cn/device-dev/driver/driver-hdf-development.md +++ b/zh-cn/device-dev/driver/driver-hdf-development.md @@ -99,27 +99,28 @@ HDF框架以组件化的驱动模型作为核心设计思路,为开发者提 ``` import("//build/lite/config/component/lite_component.gni") import("//drivers/adapter/khdf/liteos/hdf.gni") - module_switch = defined(LOSCFG_DRIVERS_HDF_PLATFORM) + module_switch = defined(LOSCFG_DRIVERS_HDF_xxx) module_name = "xxx" hdf_driver(module_name) { - sources = [ - "xxx/xxx/xxx.c", - ] - public_configs = [ ":public" ] --添加依赖头文件 + sources = [ + "xxx/xxx/xxx.c", #模块要编译的源码文件 + ] + public_configs = [ ":public" ] #使用依赖的头文件配置 } - config("public") { --定义依赖的头文件 - include_dirs = [ - ] + config("public") { #定义依赖的头文件配置 + include_dirs = [ + "xxx/xxx/xxx", #依赖的头文件目录 + ] } ``` - 把新增的BUILD.gn所在的目录添加到/drivers/adapter/khdf/liteos/BUILD.gn里面: + 把新增模块的BUILD.gn所在的目录添加到/drivers/adapter/khdf/liteos/BUILD.gn里面: ``` group("liteos") { public_deps = [ ":$module_name" ] deps = [ - "xxx/xxx", --新增的BUILD.gn所在的目录 + "xxx/xxx", #新增模块BUILD.gn所在的目录,目录结构相对于/drivers/adapter/khdf/liteos ] } ``` -- Gitee