From 01ad0c35308fcc1d4bdcd2c404818a8c24d93cf3 Mon Sep 17 00:00:00 2001 From: yangziyong Date: Wed, 12 Apr 2023 15:25:35 +0800 Subject: [PATCH] docs: thermal_docs Signed-off-by: yangziyong --- zh-cn/device-dev/subsystems/Readme-CN.md | 10 +- .../subsys-thermal_charging_idle_state.md | 131 ++++++++++ .../subsystems/subsys-thermal_control.md | 156 ++++++++++++ .../subsystems/subsys-thermal_detection.md | 150 ++++++++++++ .../subsystems/subsys-thermal_level.md | 163 +++++++++++++ .../subsystems/subsys-thermal_log.md | 202 +++++++++++++++ .../subsystems/subsys-thermal_policy.md | 230 ++++++++++++++++++ .../subsystems/subsys-thermal_scene.md | 126 ++++++++++ zh-cn/device-dev/website.md | 15 ++ 9 files changed, 1182 insertions(+), 1 deletion(-) create mode 100644 zh-cn/device-dev/subsystems/subsys-thermal_charging_idle_state.md create mode 100644 zh-cn/device-dev/subsystems/subsys-thermal_control.md create mode 100644 zh-cn/device-dev/subsystems/subsys-thermal_detection.md create mode 100644 zh-cn/device-dev/subsystems/subsys-thermal_level.md create mode 100644 zh-cn/device-dev/subsystems/subsys-thermal_log.md create mode 100644 zh-cn/device-dev/subsystems/subsys-thermal_policy.md create mode 100644 zh-cn/device-dev/subsystems/subsys-thermal_scene.md diff --git a/zh-cn/device-dev/subsystems/Readme-CN.md b/zh-cn/device-dev/subsystems/Readme-CN.md index 760e4b1681..4349ec89aa 100644 --- a/zh-cn/device-dev/subsystems/Readme-CN.md +++ b/zh-cn/device-dev/subsystems/Readme-CN.md @@ -100,7 +100,7 @@ - [hdc使用指导](subsys-toolchain-hdc-guide.md) - [hiperf使用指导](subsys-toolchain-hiperf.md) - [HiDumper使用指导](subsys-dfx-hidumper.md) -- 电源管理 +- 电源 - 显示管理 - [系统亮度范围定制开发指导](subsys-power-brightness-customization.md) - 电池管理 @@ -112,3 +112,11 @@ - [关机充电动画开发指导](subsys-power-poweroff-charge-animation.md) - 耗电统计 - [耗电统计定制开发指导](subsys-power-stats-power-average-customization.md) + - 热管理 + - [充电空闲状态定制开发指导](subsys-thermal_charging_idle_state.md) + - [热管控定制开发指导](subsys-thermal_control.md) + - [热检测定制开发指导](subsys-thermal_detection.md) + - [热等级定制开发指导](subsys-thermal_level.md) + - [热日志定制开发指导](subsys-thermal_log.md) + - [热策略定制开发指导](subsys-thermal_policy.md) + - [热场景定制开发指导](subsys-thermal_scene.md) diff --git a/zh-cn/device-dev/subsystems/subsys-thermal_charging_idle_state.md b/zh-cn/device-dev/subsystems/subsys-thermal_charging_idle_state.md new file mode 100644 index 0000000000..63947c9f34 --- /dev/null +++ b/zh-cn/device-dev/subsystems/subsys-thermal_charging_idle_state.md @@ -0,0 +1,131 @@ +# 充电空闲状态定制开发指导 + +## 概述 + +### 简介 + +OpenHarmony默认提供了充电空闲状态的特性。根据设备的热等级、电量、充电状态和充电电流,来决策当前设备是否处于空闲状态,处于此种状态的设备可以执行一些重度的后台任务。但是各设备达到充电空闲状态的条件在不同的产品上规格是不同的,产品希望根据产品的设计规格来定制此特性。OpenHarmony提供了充电空闲状态的定制方式,产品定制开发者可根据产品的设计规格来定制这些特性。 + +### 约束与限制 + +产品定制的配置路径,需要根据[配置策略](https://gitee.com/openharmony/customization_config_policy)决定。本开发指导中的定制路径以`/vendor`进行举例,请开发者根据具体的产品配置策略,修改定制路径。 + +## 开发指导 + +### 搭建环境 + +设备要求: + +标准系统开发板,如DAYU200/Hi3516DV300开源套件。 + +环境要求: + +Linux调测环境,相关要求和配置可参考《[快速入门](../quick-start/quickstart-overview.md)》。 + +### 开发步骤 + +本文以[DAYU200](https://gitee.com/openharmony/vendor_hihope/tree/master/rk3568)为例介绍充电空闲状态的定制方法。 + +1. 在产品目录[(/vendor/hihope/rk3568)](https://gitee.com/openharmony/vendor_hihope/tree/master/rk3568)下创建thermal文件夹。 + +2. 参考[默认充电空闲状态的配置文件夹](https://gitee.com/openharmony/powermgr_thermal_manager/tree/master/services/native/profile)创建目标文件夹,并安装到`//vendor/hihope/rk3568/thermal`,文件格式如下: + + ```text + profile + ├── BUILD.gn + ├── thermal_service_config.xml + ``` + +3. 参考[默认充电空闲状态的配置文件夹中的thermal_service_config.xml](https://gitee.com/openharmony/powermgr_thermal_manager/blob/master/services/native/profile/thermal_service_config.xml)编写定制的thermal_service_config.xml。包含充电空闲状态配置说明及定制后的充电空闲状态配置如下: + + **表1** 充电空闲状态配置说明 + + | 配置项 | 描述 | 数据类型 | 取值范围 | + | -------- | -------- | -------- | -------- | + | thermallevel | 热等级阈值 | int | 根据产品的热等级进行定义,当设备热等级小于等于该阈值时,其状态为充电空闲状态。 | + | soc | 电池电量阈值 | int | 0~100,当设备电量大于等于该阈值时,其状态为充电空闲状态。 | + | charging | 电池是否在充电 | int | 1为正在充电,0为不在充电。 | + | current | 电池充电电流阈值 | int | 单位为mA,当电池充电电流大于等于该阈值时,其状态为充电空闲状态。 | + + ```shell + + 1 + 90 + 1 + 1000 + + ``` + +4. 参考[默认充电空闲状态配置文件夹中的BUILD.gn](https://gitee.com/openharmony/powermgr_thermal_manager/blob/master/services/native/profile/BUILD.gn)编写BUILD.gn文件,将thermal_service_config.xml打包到`/vendor/etc/thermal_config`目录下 + + ```shell + import("//build/ohos.gni") # 引用build/ohos.gni + + ohos_prebuilt_etc("thermal_service_config") { + source = "thermal_service_config.xml" + relative_install_dir = "thermal_config" + install_images = [ chipset_base_dir ] # 安装到vendor目录下的必要配置 + part_name = "product_rk3568" # part_name暂定为product_rk3568,以实现后续编译,产品定制根据需要自行修改 + } + ``` + +5. 将编译目标添加到[ohos.build](https://gitee.com/openharmony/vendor_hihope/blob/master/rk3568/ohos.build)的"module_list"中,例如: + + ```json + { + "parts": { + "product_rk3568": { + "module_list": [ + "//vendor/hihope/rk3568/default_app_config:default_app_config", + "//vendor/hihope/rk3568/image_conf:custom_image_conf", + "//vendor/hihope/rk3568/preinstall-config:preinstall-config", + "//vendor/hihope/rk3568/resourceschedule:resourceschedule", + "//vendor/hihope/rk3568/etc:product_etc_conf", + "//vendor/hihope/rk3568/thermal/profile:thermal_service_config", // 添加thermal_service_config的编译 + ] + } + }, + "subsystem": "product_hihope" + } + ``` + “//vendor/hihope/rk3568/thermal/”为文件夹路径,“profile”为创建的文件夹名字,“thermal_hdf_config”为编译目标。 + +6. 参考《[快速入门](../quick-start/quickstart-overview.md)》编译定制版本,编译命令如下: + + ```shell + ./build.sh --product-name rk3568 --ccache + ``` + +7. 将定制版本烧录到DAYU200开发板中。 + +### 调测验证 + +1. 开机后,进入shell命令行: + ```shell + hdc shell + ``` + +2. 获取当前充电空闲状态。 + ```shell + hidumper -s 3303 -a -i + ``` + + 查看定制后的充电空闲状态结果如下: + ```shell + -------------------------------[ability]------------------------------- + + + ----------------------------------ThermalService--------------------------------- + thermallevel: 1 + soc: 100 + charging: 1 + current: 1000 + ``` + +## 参考 +开发过程中可参考的配置文件路径:[默认充电空闲状态源码路径](https://gitee.com/openharmony/powermgr_thermal_manager/blob/master/services/native/profile/thermal_service_config.xml) + +打包路径:`/vendor/etc/thermal_config/hdf` + + + diff --git a/zh-cn/device-dev/subsystems/subsys-thermal_control.md b/zh-cn/device-dev/subsystems/subsys-thermal_control.md new file mode 100644 index 0000000000..f4d8cb528b --- /dev/null +++ b/zh-cn/device-dev/subsystems/subsys-thermal_control.md @@ -0,0 +1,156 @@ +# 热管控定制开发指导 + +## 概述 + +### 简介 + +OpenHarmony默认提供了热管控的特性。设备在使用的过程中如果发热过多,则需要对发热的器件进行管控,如充电时电池温度过高,则需要对充电进行限制。但是管控动作在不同的产品上规格是不同的,产品希望根据产品的设计规格来定制此特性。为此OpenHarmony提供了热管控的定制方式,产品定制开发者可根据产品的设计规格来定制这些特性。 + +### 约束与限制 + +产品定制的配置路径,需要根据[配置策略](https://gitee.com/openharmony/customization_config_policy)决定。本开发指导中的定制路径以`/vendor`进行举例,请开发者根据具体的产品配置策略,修改定制路径。 + +## 开发指导 + +### 搭建环境 + +设备要求: + +标准系统开发板,如DAYU200/Hi3516DV300开源套件。 + +环境要求: + +Linux调测环境,相关要求和配置可参考《[快速入门](../quick-start/quickstart-overview.md)》。 + +### 开发步骤 + +本文以[DAYU200](https://gitee.com/openharmony/vendor_hihope/tree/master/rk3568)为例介绍热管控的定制方法。 + +1. 在产品目录[(/vendor/hihope/rk3568)](https://gitee.com/openharmony/vendor_hihope/tree/master/rk3568)下创建thermal文件夹。 + +2. 参考[默认热管控的配置文件夹](https://gitee.com/openharmony/powermgr_thermal_manager/tree/master/services/native/profile)创建目标profile文件夹,并安装到`//vendor/hihope/rk3568/thermal`,文件格式如下: + + ```text + profile + ├── BUILD.gn + ├── thermal_service_config.xml + ``` + +3. 参考[默认热管控的配置文件夹中的thermal_service_config.xml](https://gitee.com/openharmony/powermgr_thermal_manager/blob/master/services/native/profile/thermal_service_config.xml)编写定制的thermal_service_config.xml。包含热管控配置说明及定制后的热管控配置如下: + + **表1** 热管控配置说明 + + | 管控动作配置项名称 | 管控动作配置项描述 | 管控动作配置项参数 | 管控动作配置项参数描述 | 数据类型 |取值范围 | + | -------- | -------- | -------- | -------- | -------- | -------- | + | name="cpu_big" | 大核CPU管控动作(控制大核CPU频率) | 无 | 无 | 无 | 无 | + | name="cpu_med" | 中核CPU管控动作(控制中核CPU频率) | 无 | 无 | 无 | 无 | + | name="cpu_lit" | 小核CPU管控动作(控制小核CPU频率) | 无 | 无 | 无 | 无 | + | name="gpu" | GPU管控动作(控制GPU频率) | 无 | 无 | 无 | 无 | + | name="lcd" | LCD管控动作(控制屏幕亮度) | 无 | 无 | 无 | 无 | + | name="volume" | 声音管控动作(控制音量大小) | uid | 用户id | int | 根据产品定义 | + | name="current" | 充电电流管控动作(控制快充和慢充时的充电电流大小) | protocol | 支持的充电协议,快充(sc)和慢充(buck) | string | sc,buck | + | name="current" | 充电电流管控动作 | event | 为1时发送事件,为0时不发送事件 | int | 0,1 | + | name="voltage" | 充电电压管控动作(控制快充和慢充时的充电电压大小) | protocol | 支持的充电协议,快充(sc)和慢充(buck) | string | sc,buck | + | name="voltage" | 充电电压管控动作 | event | 为1时发送事件,为0时不发送事件 | int | 0,1 | + | name="process_ctrl" | 进程管控动作(控制前台和后台进程存活状态) | event | 为1时发送事件,为0时不发送事件 | int | 0,1 | + | name="shut_down" | 关机管控动作(控制是否关机) | event | 为1时发送事件,为0时不发送事件 | int | 0,1 | + | name="thermallevel" | 热等级管控动作(控制热等级上报) | event | 为1时发送事件,为0时不发送事件 | int | 0,1 | + | name="popup" | 弹窗管控动作(控制是否弹窗) | 无 | 无 | 无 | 无 | + + ```shell + + + + + + + + + + + + + + + ``` + +4. 参考[默认热管控配置文件夹中的BUILD.gn](https://gitee.com/openharmony/powermgr_thermal_manager/blob/master/services/native/profile/BUILD.gn)编写BUILD.gn文件,将thermal_service_config.xml打包到`/vendor/etc/thermal_config`目录下 + + ```shell + import("//build/ohos.gni") # 引用build/ohos.gni + + ohos_prebuilt_etc("thermal_service_config") { + source = "thermal_service_config.xml" + relative_install_dir = "thermal_config" + install_images = [ chipset_base_dir ] # 安装到vendor目录下的必要配置 + part_name = "product_rk3568" # part_name暂定为product_rk3568,以实现后续编译,产品定制根据需要自行修改 + } + ``` + +5. 将编译目标添加到[ohos.build](https://gitee.com/openharmony/vendor_hihope/blob/master/rk3568/ohos.build)的"module_list"中,例如: + + ```json + { + "parts": { + "product_rk3568": { + "module_list": [ + "//vendor/hihope/rk3568/default_app_config:default_app_config", + "//vendor/hihope/rk3568/image_conf:custom_image_conf", + "//vendor/hihope/rk3568/preinstall-config:preinstall-config", + "//vendor/hihope/rk3568/resourceschedule:resourceschedule", + "//vendor/hihope/rk3568/etc:product_etc_conf", + "//vendor/hihope/rk3568/thermal/profile:thermal_service_config", // 添加thermal_service_config的编译 + ] + } + }, + "subsystem": "product_hihope" + } + ``` + “//vendor/hihope/rk3568/thermal/”为文件夹路径,“profile”为创建的文件夹名字,“thermal_hdf_config”为编译目标。 + +6. 参考《[快速入门](../quick-start/quickstart-overview.md)》编译定制版本,编译命令如下: + + ```shell + ./build.sh --product-name rk3568 --ccache + ``` + +7. 将定制版本烧录到DAYU200开发板中。 + +### 调测验证 + +1. 开机后,进入shell命令行: + ```shell + hdc shell + ``` + +2. 获取当前热管控信息。 + ```shell + hidumper -s 3303 -a -a + ``` + + 查看定制后的热管控结果如下: + ```shell + -------------------------------[ability]------------------------------- + + + ----------------------------------ThermalService--------------------------------- + name: cpu_big strict: 0 enableEvent: 0 + name: cpu_med strict: 0 enableEvent: 0 + name: cpu_lit strict: 0 enableEvent: 0 + name: gpu strict: 0 enableEvent: 0 + name: boost strict: 0 enableEvent: 0 + name: lcd strict: 0 enableEvent: 0 + name: volume uid: 2001,2002 strict: 0 enableEvent: 0 + name: current protocol: sc,buck strict: 0 enableEvent: 1 + name: voltage protocol: sc,buck strict: 0 enableEvent: 1 + name: process_ctrl params: 32,64,128,256 strict: 0 enableEvent: 0 + name: shut_down strict: 0 enableEvent: 0 + name: thermallevel strict: 0 enableEvent: 0 + name: popup strict: 0 enableEvent: 0 + ``` + +## 参考 +开发过程中可参考的配置文件路径:[默认热管控源码路径](https://gitee.com/openharmony/powermgr_thermal_manager/blob/master/services/native/profile/thermal_service_config.xml) + +打包路径:`/vendor/etc/thermal_config/hdf` + diff --git a/zh-cn/device-dev/subsystems/subsys-thermal_detection.md b/zh-cn/device-dev/subsystems/subsys-thermal_detection.md new file mode 100644 index 0000000000..f71ea6fa8a --- /dev/null +++ b/zh-cn/device-dev/subsystems/subsys-thermal_detection.md @@ -0,0 +1,150 @@ +# 热检测定制开发指导 + +## 概述 + +### 简介 + +OpenHarmony默认提供了热检测的特性。设备在运行过程中会产生热量,如CPU发热、电池发热等,此时器件会通过相应的温度传感器,将其温度进行实时上报。热检测特性是实时检测器件的温度,为热管理模块提供温度输入。但是在不同产品中,对不同器件进行热检测的规格是不同的,针对此种情况,OpenHarmony提供了热检测的定制方式,产品定制开发者可根据产品的设计规格来定制这些特性。 + +### 约束与限制 + +产品定制的配置路径,需要根据[配置策略](https://gitee.com/openharmony/customization_config_policy)决定。本开发指导中的定制路径以`/vendor`进行举例,请开发者根据具体的产品配置策略,修改定制路径。 + +## 开发指导 + +### 搭建环境 + +设备要求: + +标准系统开发板,如DAYU200/Hi3516DV300开源套件。 + +环境要求: + +Linux调测环境,相关要求和配置可参考《[快速入门](../quick-start/quickstart-overview.md)》。 + +### 开发步骤 + +本文以[DAYU200](https://gitee.com/openharmony/vendor_hihope/tree/master/rk3568)为例介绍热检测的定制方法。 + +1. 在产品目录[(/vendor/hihope/rk3568)](https://gitee.com/openharmony/vendor_hihope/tree/master/rk3568)下创建thermal文件夹。 + +2. 参考[默认热检测的配置文件夹](https://gitee.com/openharmony/drivers_peripheral/tree/master/thermal/interfaces/hdi_service/profile)创建目标文件夹,并安装到`//vendor/hihope/rk3568/thermal`,文件格式如下: + + ```text + profile + ├── BUILD.gn + ├── thermal_hdi_config.xml + ``` + +3. 参考[默认热检测的配置文件夹中的thermal_hdi_config.xml](https://gitee.com/openharmony/drivers_peripheral/blob/master/thermal/interfaces/hdi_service/profile/thermal_hdi_config.xml)编写定制的thermal_hdi_config.xml。包含热检测配置说明及定制后的热检测配置如下: + + **表1** 热检测配置说明 + + |节点名称| 配置项名称 | 配置项描述 | 值的类型 | + | -------- | -------- | -------- | -------- | + | item | tag | 获取真实节点或模拟节点温度值标志位的名称 | string | + | item | value | 为1时获取模拟节点温度值,为0时获取真实节点温度值 | int | + | group | name | 真实节点组(actual)或模拟节点组(sim)的名称 | string | + | group | interval | 轮询时间间隔(默认单位为ms) | int | + | thermal_zone | type | thermal zone名称 | string | + | thermal_zone | path | 获取真实节点thermal zone温度值的路径 | string | + | thermal_node | type | thermal node名称 | string | + | thermal_node | path | 获取模拟节点thermal node温度值的路径 | string | + + ```shell + + + + + + + + + + + + + + + + + + + + + ``` + 获取真实节点温度的路径参考[热日志文档](../subsystems/subsys-thermal_log.md)中获取thermal zone温度的路径,获取模拟节点温度的路径参考[热检测的默认配置](https://gitee.com/openharmony/drivers_peripheral/blob/master/thermal/interfaces/hdi_service/profile/thermal_hdi_config.xml)。 + +5. 参考[默认热检测配置文件夹中的BUILD.gn](https://gitee.com/openharmony/drivers_peripheral/blob/master/thermal/interfaces/hdi_service/profile/BUILD.gn)编写BUILD.gn文件,将thermal_hdi_config.xml打包到`//vendor/etc/thermal_config/hdf`目录下: + + ```shell + import("//build/ohos.gni") + + ohos_prebuilt_etc("thermal_hdf_config") { + source = "thermal_hdi_config.xml" + relative_install_dir = "thermal_config/hdf" + install_images = [ chipset_base_dir ] # 安装到vendor目录下的必要配置 + part_name = "product_rk3568" # part_name暂定为product_rk3568,以实现后续编译,产品定制根据需要自行修改 + } + ``` + +6. 将编译目标添加到[ohos.build](https://gitee.com/openharmony/vendor_hihope/blob/master/rk3568/ohos.build)的"module_list"中,例如: + + ```json + { + "parts": { + "product_rk3568": { + "module_list": [ + "//vendor/hihope/rk3568/default_app_config:default_app_config", + "//vendor/hihope/rk3568/image_conf:custom_image_conf", + "//vendor/hihope/rk3568/preinstall-config:preinstall-config", + "//vendor/hihope/rk3568/resourceschedule:resourceschedule", + "//vendor/hihope/rk3568/etc:product_etc_conf", + "//vendor/hihope/rk3568/thermal/profile:thermal_hdf_config", // 添加thermal_hdf_config的编译 + ] + } + }, + "subsystem": "product_hihope" + } + ``` + “//vendor/hihope/rk3568/thermal/”为文件夹路径,“profile”为创建的文件夹名字,“thermal_hdf_config”为编译目标。 + +7. 参考《[快速入门](../quick-start/quickstart-overview.md)》编译定制版本,编译命令如下: + + ```shell + ./build.sh --product-name rk3568 --ccache + ``` + +8. 将定制版本烧录到DAYU200开发板中。 + +### 调测验证 + +1. 开机后,进入shell命令行: + ```shell + hdc shell + ``` + +2. 获取thermal zone的热检测结果: + ```shell + hidumper -s 3303 -a -t + ``` + + 成功获取thermal zone的热检测结果如下,其中Temperature的默认温度单位为0.001摄氏度: + ```shell + -------------------------------[ability]------------------------------- + + + ----------------------------------ThermalService--------------------------------- + ······(省略其他,只显示定制后的热检测结果) + Type: gpu-thermal + Temperature: 35555 + Type: soc-thermal + Temperature: 35000 + ······ + ``` + +## 参考 +开发过程中可参考的配置文件路径:[默认热检测的配置源码路径](https://gitee.com/openharmony/drivers_peripheral/tree/master/thermal/interfaces/hdi_service/profile/) + +打包路径:`/vendor/etc/thermal_config/hdf` + diff --git a/zh-cn/device-dev/subsystems/subsys-thermal_level.md b/zh-cn/device-dev/subsystems/subsys-thermal_level.md new file mode 100644 index 0000000000..284d2444ad --- /dev/null +++ b/zh-cn/device-dev/subsystems/subsys-thermal_level.md @@ -0,0 +1,163 @@ +# 热等级定制开发指导 + +## 概述 + +### 简介 + +OpenHarmony默认提供了热等级的特性。不同的硬件设备发热量和所能承受的最大温度都不相同,因此需要根据不同器件的温度,来定义系统的热等级标准,从而清晰的表明当前设备的发热状态,给热策略提供输入。但是器件在不同温度下对应的热等级在不同的产品上规格是不同的,产品希望根据产品的设计规格来定制此特性。OpenHarmony提供了热等级的定制方式,产品定制开发者可根据产品的设计规格来定制这些特性。 + +### 约束与限制 + +产品定制的配置路径,需要根据[配置策略](https://gitee.com/openharmony/customization_config_policy)决定。本开发指导中的定制路径以`/vendor`进行举例,请开发者根据具体的产品配置策略,修改定制路径。 + +## 开发指导 + +### 搭建环境 + +设备要求: + +标准系统开发板,如DAYU200/Hi3516DV300开源套件。 + +环境要求: + +Linux调测环境,相关要求和配置可参考《[快速入门](../quick-start/quickstart-overview.md)》。 + +### 开发步骤 + +本文以[DAYU200](https://gitee.com/openharmony/vendor_hihope/tree/master/rk3568)为例介绍热等级的定制方法。 + +1. 在产品目录[(/vendor/hihope/rk3568)](https://gitee.com/openharmony/vendor_hihope/tree/master/rk3568)下创建thermal文件夹。 + +2. 参考[默认热等级的配置文件夹](https://gitee.com/openharmony/powermgr_thermal_manager/tree/master/services/native/profile)创建目标文件夹,并安装到`//vendor/hihope/rk3568/thermal`,文件格式如下: + + ```text + profile + ├── BUILD.gn + ├── thermal_service_config.xml + ``` + +3. 参考[默认热等级的配置文件夹中的thermal_service_config.xml](https://gitee.com/openharmony/powermgr_thermal_manager/blob/master/services/native/profile/thermal_service_config.xml)编写定制的thermal_service_config.xml。包含热等级配置说明及定制后的热等级配置如下: + + **表1** base配置说明 + | 配置项 | 配置项描述 | 配置项参数 | 配置项参数描述 | 参数类型 | 参数取值范围 | + | -------- | -------- | -------- | -------- | -------- | -------- | + | tag="history_temp_count" | 历史上报温度次数标签的名称 | value | 历史上报温度次数 | int | >0 | + | tag="temperature_query_enum" | 获取温度的设备列表的标签名称 | value | 要获取温度的设备列表 | enum | soc,battery,shell,cpu,charger,ambient,ap,pa | + + + **表2** sensor_cluster配置说明 + + | 配置项名称 | 配置项描述 | 数据类型 | 取值范围 | + | -------- | -------- | -------- | -------- | + | name | 传感器集合名称 | string | 无 | + | sensor | 集合内的传感器 | string | soc,battery,shell,cpu,charger,ambient,ap,pa | + | aux_sensor | 集合内的辅助传感器 | string | soc,battery,shell,cpu,charger,ambient,ap,pa | + + **表3** item配置说明 + + | 配置项名称 | 配置项描述 | 数据类型 | 取值范围 | + | -------- | -------- | -------- | -------- | + | level | 各传感器集合下定义的热等级 | int | >0 | + | threshold | 集合内每个传感器达到对应热等级的温度阈值(默认单位0.001摄氏度,开发者可定制) | int | 根据产品定制 | + | threshold_clr | 集合内每个传感器回退到上一热等级的温度阈值 | int | 根据产品定制 | + | temp_rise_rate | 温度升高频率 | double | 根据产品定制 | + + ```shell + + + + + + + + + + + + + + + ``` + +4. 参考[默认热等级配置文件夹中的BUILD.gn](https://gitee.com/openharmony/powermgr_thermal_manager/blob/master/services/native/profile/BUILD.gn)编写BUILD.gn文件,将thermal_service_config.xml打包到`/vendor/etc/thermal_config`目录下 + + ```shell + import("//build/ohos.gni") # 引用build/ohos.gni + + ohos_prebuilt_etc("thermal_service_config") { + source = "thermal_service_config.xml" + relative_install_dir = "thermal_config" + install_images = [ chipset_base_dir ] # 安装到vendor目录下的必要配置 + part_name = "product_rk3568" # part_name暂定为product_rk3568,以实现后续编译,产品定制根据需要自行修改 + } + ``` + +5. 将编译目标添加到[ohos.build](https://gitee.com/openharmony/vendor_hihope/blob/master/rk3568/ohos.build)的"module_list"中,例如: + + ```json + { + "parts": { + "product_rk3568": { + "module_list": [ + "//vendor/hihope/rk3568/default_app_config:default_app_config", + "//vendor/hihope/rk3568/image_conf:custom_image_conf", + "//vendor/hihope/rk3568/preinstall-config:preinstall-config", + "//vendor/hihope/rk3568/resourceschedule:resourceschedule", + "//vendor/hihope/rk3568/etc:product_etc_conf", + "//vendor/hihope/rk3568/thermal/profile:thermal_service_config", // 添加thermal_service_config的编译 + ] + } + }, + "subsystem": "product_hihope" + } + ``` + “//vendor/hihope/rk3568/thermal/”为文件夹路径,“profile”为创建的文件夹名字,“thermal_hdf_config”为编译目标。 + +6. 参考《[快速入门](../quick-start/quickstart-overview.md)》编译定制版本,编译命令如下: + + ```shell + ./build.sh --product-name rk3568 --ccache + ``` + +7. 将定制版本烧录到DAYU200开发板中。 + +### 调测验证 + +1. 开机后,进入shell命令行: + ```shell + hdc shell + ``` + +2. 进入`data/service/el0/thermal/sensor/soc/`路径: + ```shell + cd data/service/el0/thermal/sensor/soc + ``` + +3. 修改soc的温度: + ```shell + echo 42000 > temp + ``` + +4. 获取当前热等级信息: + ```shell + hidumper -s 3303 -a -l + ``` + + 成功获取热等级信息如下: + ```shell + -------------------------------[ability]------------------------------- + + + ----------------------------------ThermalService--------------------------------- + name: base_safe level: 2 + name: cold_safe level: 0 + name: high_safe level: 0 + name: warm_5G level: 0 + name: warm_safe level: 1 + ``` + +## 参考 +开发过程中可参考的配置文件路径:[默认热等级源码路径](https://gitee.com/openharmony/powermgr_thermal_manager/blob/master/services/native/profile/thermal_service_config.xml) + +打包路径:`/vendor/etc/thermal_config/hdf` + diff --git a/zh-cn/device-dev/subsystems/subsys-thermal_log.md b/zh-cn/device-dev/subsystems/subsys-thermal_log.md new file mode 100644 index 0000000000..062890c973 --- /dev/null +++ b/zh-cn/device-dev/subsystems/subsys-thermal_log.md @@ -0,0 +1,202 @@ +# 热日志定制开发指导 + +## 概述 + +### 简介 + +OpenHarmony默认提供了热日志的特性。热日志是设备器件在使用过程中温度的流水日志。由于热日志输出的内容和路径在不同的产品上规格是不同的,产品希望根据产品的设计规格来定制此特性。OpenHarmony提供了热日志的定制方式,产品定制开发者可根据产品的设计规格来定制这些特性。 + +### 约束与限制 + +产品定制的配置路径,需要根据[配置策略](https://gitee.com/openharmony/customization_config_policy)决定。本开发指导中的定制路径以`/vendor`进行举例,请开发者根据具体的产品配置策略,修改定制路径。 + +## 开发指导 + +### 搭建环境 + +设备要求: + +标准系统开发板,如DAYU200/Hi3516DV300开源套件。 + +环境要求: + +Linux调测环境,相关要求和配置可参考《[快速入门](../quick-start/quickstart-overview.md)》。 + +### 开发步骤 + +本文以[DAYU200](https://gitee.com/openharmony/vendor_hihope/tree/master/rk3568)为例介绍热日志的定制方法。 + +1. 在产品目录[(/vendor/hihope/rk3568)](https://gitee.com/openharmony/vendor_hihope/tree/master/rk3568)下创建thermal文件夹。 + +2. 参考[默认热日志的配置文件夹](https://gitee.com/openharmony/drivers_peripheral/tree/master/thermal/interfaces/hdi_service/profile)创建目标文件夹,并安装到`//vendor/hihope/rk3568/thermal`,文件格式如下: + + ```text + profile + ├── BUILD.gn + ├── thermal_hdi_config.xml + ``` + +3. 参考[默认热日志的参数配置文件夹](https://gitee.com/openharmony/drivers_peripheral/tree/master/thermal/etc)创建目标文件夹,并安装到`//vendor/hihope/rk3568/thermal`,文件格式如下: + ```text + etc + ├── BUILD.gn + ├── thermal.para + ├── thermal.para.dac + ``` + +4. 参考[默认热日志的配置文件夹中的thermal_hdi_config.xml](https://gitee.com/openharmony/drivers_peripheral/blob/master/thermal/interfaces/hdi_service/profile/thermal_hdi_config.xml)编写定制的thermal_hdi_config.xml。包含热日志配置说明及定制后的热日志配置如下: + + **表1** tracing配置说明 + + | 配置项名称 | 配置项描述 | 数据类型 | 取值范围 | + | -------- | -------- | -------- | -------- | + | interval | 温度跟踪日志的时间间隔,单位为毫秒 | int | >0 | + | width | 温度跟踪日志的宽度,单位为字符 | int | >0 | + | outpath | 温度跟踪日志输出的路径 | string | 无 | + + **表2** node配置说明 + + | 节点名称 | 配置项名称 | 配置项描述 | + | -------- | -------- | -------- | + | title | path | 获取thermal zone名称的路径 | + | title | name | thermal zone名称 | + | value | path | 获取thermal zone温度的路径 | + + ```shell + + + + <value path="sys/class/thermal/thermal_zone0/temp"/> + </node> + <node> + <title name="gpu-thermal"/> + <value path="sys/class/thermal/thermal_zone1/temp"/> + </node> + </tracing> + ``` + +5. 参考默认热日志的参数配置文件夹中的[thermal.para](https://gitee.com/openharmony/drivers_peripheral/blob/master/thermal/etc/thermal.para)和[thermal.para.dac](https://gitee.com/openharmony/drivers_peripheral/blob/master/thermal/etc/thermal.para.dac)编写定制的thermal.para和thermal.para.dac。包含定制后的配置如下: + + thermal.para: + ```text + persist.thermal.log.enable=true # 打开thermal log + persist.thermal.log.interval=5000 # 温度跟踪日志的时间间隔,单位为毫秒 + persist.thermal.log.width=20 # 温度跟踪日志的宽度,单位为字符 + ``` + + thermal.para.dac: + ```text + persist.thermal.log.="power_host:power_host:600" # 控制访问权限 + ``` + +6. 参考[默认热日志配置文件夹中的BUILD.gn](https://gitee.com/openharmony/drivers_peripheral/blob/master/thermal/interfaces/hdi_service/profile/BUILD.gn)编写BUILD.gn文件,将thermal_hdi_config.xml打包到`//vendor/etc/thermal_config/hdf`目录下: + + ```shell + import("//build/ohos.gni") + + ohos_prebuilt_etc("thermal_hdf_config") { + source = "thermal_hdi_config.xml" + relative_install_dir = "thermal_config/hdf" + install_images = [ chipset_base_dir ] # 安装到vendor目录下的必要配置 + part_name = "product_rk3568" # part_name暂定为product_rk3568,以实现后续编译,产品定制根据需要自行修改 + } + ``` + +7. 参考[默认热日志的参数配置文件夹的BUILD.gn](https://gitee.com/openharmony/drivers_peripheral/blob/master/thermal/etc/BUILD.gn)编写BUILD.gn文件,将thermal.para和thermal.para.dac打包到`//vendor/etc/param/thermal.para`目录下 + + ```shell + import("//build/ohos.gni") + + ## Install thermal.para to /vendor/etc/param/thermal.para + + ohos_prebuilt_etc("thermal.para") { + source = "thermal.para" + relative_install_dir = "param" + install_images = [ chipset_base_dir ] + part_name = "product_rk3568" + } + + ohos_prebuilt_etc("thermal.para.dac") { + source = "thermal.para.dac" + relative_install_dir = "param" + install_images = [ chipset_base_dir ] + part_name = "product_rk3568" + } + + group("param_files") { + deps = [ + ":thermal.para", + ":thermal.para.dac", + ] + } + ``` + +8. 将编译目标添加到[ohos.build](https://gitee.com/openharmony/vendor_hihope/blob/master/rk3568/ohos.build)的"module_list"中,例如: + + ```json + { + "parts": { + "product_rk3568": { + "module_list": [ + "//vendor/hihope/rk3568/default_app_config:default_app_config", + "//vendor/hihope/rk3568/image_conf:custom_image_conf", + "//vendor/hihope/rk3568/preinstall-config:preinstall-config", + "//vendor/hihope/rk3568/resourceschedule:resourceschedule", + "//vendor/hihope/rk3568/etc:product_etc_conf", + "//vendor/hihope/rk3568/thermal/profile:thermal_hdf_config", // 添加thermal_hdf_config的编译 + "//vendor/hihope/rk3568/thermal/etc:param_files" // 添加thermal.para和thermal.para.dac的编译 + ] + } + }, + "subsystem": "product_hihope" + } + ``` + “//vendor/hihope/rk3568/thermal/”为文件夹路径,“profile”、“etc”为创建的文件夹名字,“thermal_hdf_config”、“param_files”为编译目标。 + +9. 参考《[快速入门](../quick-start/quickstart-overview.md)》编译定制版本,编译命令如下: + + ```shell + ./build.sh --product-name rk3568 --ccache + ``` + +10. 将定制版本烧录到DAYU200开发板中。 + +### 调测验证 + +1. 开机后,进入shell命令行: + ```shell + hdc shell + ``` + +2. 进入定制后的目录。 + ```shell + cd /data/log/thermal/ + ``` + + 查看热日志。 + ```shell + cat thermal.000.20170805-175756 + ``` + + 成功获取热日志内容 + ```shell + timestamp soc-thermal gpu-thermal + 2017-08-05 17:57:56 37777 37222 + 2017-08-05 17:58:01 38333 37777 + 2017-08-05 17:58:06 36666 37222 + 2017-08-05 17:58:11 36666 37222 + 2017-08-05 17:58:16 36666 37222 + 2017-08-05 17:58:21 36111 37222 + 2017-08-05 17:58:26 36111 37222 + 2017-08-05 17:58:31 36666 37222 + 2017-08-05 17:58:36 36111 37222 + 2017-08-05 17:58:41 36111 37222 + 2017-08-05 17:58:46 36666 36666 + ``` + +## 参考 +开发过程中可参考的配置文件路径:[默认热日志的配置源码路径](https://gitee.com/openharmony/drivers_peripheral/tree/master/thermal/interfaces/hdi_service/profile/) 和[默认热日志的参数配置源码路径](https://gitee.com/openharmony/drivers_peripheral/tree/master/thermal/etc) + +打包路径:`/vendor/etc/thermal_config/hdf` + + diff --git a/zh-cn/device-dev/subsystems/subsys-thermal_policy.md b/zh-cn/device-dev/subsystems/subsys-thermal_policy.md new file mode 100644 index 0000000000..a3821f8277 --- /dev/null +++ b/zh-cn/device-dev/subsystems/subsys-thermal_policy.md @@ -0,0 +1,230 @@ +# 热策略定制开发指导 + +## 概述 + +### 简介 + +OpenHarmony默认提供了热策略的特性。设备上发热的器件种类繁多,因此需要结合热等级和热场景,针对各类发热器件定制统一的管控策略。但是不同热等级下的管控动作在不同的产品上规格是不同的,产品希望根据产品的设计规格来定制此特性。OpenHarmony提供了热策略的定制方式,产品定制开发者可根据产品的设计规格来定制这些特性。 + +### 约束与限制 + +产品定制的配置路径,需要根据[配置策略](https://gitee.com/openharmony/customization_config_policy)决定。本开发指导中的定制路径以`/vendor`进行举例,请开发者根据具体的产品配置策略,修改定制路径。 + +## 开发指导 + +### 搭建环境 + +设备要求: + +标准系统开发板,如DAYU200/Hi3516DV300开源套件。 + +环境要求: + +Linux调测环境,相关要求和配置可参考《[快速入门](../quick-start/quickstart-overview.md)》。 + +### 开发步骤 + +本文以[DAYU200](https://gitee.com/openharmony/vendor_hihope/tree/master/rk3568)为例介绍热策略的定制方法。 + +1. 在产品目录[(/vendor/hihope/rk3568)](https://gitee.com/openharmony/vendor_hihope/tree/master/rk3568)下创建thermal文件夹。 + +2. 参考[默认热策略的配置文件夹](https://gitee.com/openharmony/powermgr_thermal_manager/tree/master/services/native/profile)创建目标文件夹,并安装到`//vendor/hihope/rk3568/thermal`,文件格式如下: + + ```text + profile + ├── BUILD.gn + ├── thermal_service_config.xml + ``` + +3. 参考[默认热策略的配置文件夹中的thermal_service_config.xml](https://gitee.com/openharmony/powermgr_thermal_manager/blob/master/services/native/profile/thermal_service_config.xml)编写定制的thermal_service_config.xml。包含热策略配置说明及定制后的热策略配置如下,以其中两个热等级为例: + + **表1** config配置说明 + + | 配置项名称 | 配置项描述 | 配置项类型 | 配置项范围 | + | -------- | -------- | -------- | -------- | + | name | 定义热策略对应的传感器集合名称 | string | 对应[热等级文档](../subsystems/subsys-thermal_level.md)中定义的传感器集合名称 | + | level | 定义热策略对应的热等级 | int | 对应[热等级文档](../subsystems/subsys-thermal_level.md)中传感器集合下定义的热等级 | + + **表2** 配置项说明 + + | 配置项名称 | 配置项描述 | 配置项类型 | 配置项范围 | + | -------- | -------- | -------- | -------- | + | scene | 使用场景 | string | 对应[热场景文档](../subsystems/subsys-thermal_scene.md)中定义的使用场景 | + | charge | 是否在充电 | int | 0(不在充电),1(正在充电) | + | screen | 是否亮屏 | int | 0(灭屏),1(亮屏) | + + **表3** 节点配置说明 + + | 节点名称 | 节点值类型 | 节点值范围 | 节点描述 | + | -------- | -------- | -------- | -------- | + | lcd | double | 0.00~1.00 | 屏幕亮度的百分比(用浮点数表示) | + | cpu_big | int | 根据产品定义 | CPU大核频率 | + | cpu_med | int | 根据产品定义 | CPU中核频率 | + | cpu_lit | int | 根据产品定义 | CPU小核频率 | + | process_ctrl | enum | 1:KILL_FG_PROCESS_APP<br>2:KILL_BG_PROCESS_APP<br>3:KILL_ALL_PROCESS_APP | 进程控制 | + | gpu | int | 根据产品定义 | GPU频率 | + | thermallevel | int | 对应config节点中的level | 热等级 | + | current_sc | int | 根据产品定义 | 快充电流 | + | current_buck | int | 根据产品定义 | 慢充电流 | + | voltage_sc | int | 根据产品定义 | 快充电压 | + | voltage_buck | int | 根据产品定义 | 慢充电压 | + | volume | double | 0.00~1.00 | 音量百分比(用浮点数表示) | + + ```shell + <policy> + <config name="base_safe" level="1"> + <lcd>1.00</lcd> + <lcd scene="cam">0.99</lcd> + <lcd scene="call">0.98</lcd> + <lcd scene="game">0.95</lcd> + <cpu_big>1992000</cpu_big> + <cpu_med>1991500</cpu_med> + <cpu_lit>1991200</cpu_lit> + <process_ctrl>3</process_ctrl> + <cpu_big scene="cam" charge="1">1991800</cpu_big> + <cpu_big scene="cam" charge="0">1991600</cpu_big> + <gpu screen="0">524288</gpu> + <gpu screen="1">512000</gpu> + <thermallevel>1</thermallevel> + <current_sc>1800</current_sc> + <current_sc scene="cam">1200</current_sc> + <current_buck>1200</current_buck> + <voltage_sc>4000</voltage_sc> + <voltage_buck>3000</voltage_buck> + <volume>1.0</volume> + </config> + <policy> + <config name="base_safe" level="2"> + <lcd>0.90</lcd> + <lcd scene="cam">0.89</lcd> + <lcd scene="call">0.88</lcd> + <lcd scene="game">0.87</lcd> + <cpu_big>1991000</cpu_big> + <cpu_med>1990500</cpu_med> + <cpu_lit>1990200</cpu_lit> + <process_ctrl>2</process_ctrl> + <cpu_big scene="cam" charge="1">1990800</cpu_big> + <cpu_big scene="cam" charge="0">1990600</cpu_big> + <gpu screen="0">499712</gpu> + <gpu screen="1">487424</gpu> + <thermallevel>2</thermallevel> + <current_sc>1500</current_sc> + <current_sc scene="cam">1000</current_sc> + <current_buck>1000</current_buck> + <voltage_sc>3000</voltage_sc> + <voltage_buck>2000</voltage_buck> + <volume>0.8</volume> + </config> + </policy> + ``` + +4. 参考[默认热策略配置文件夹中的BUILD.gn](https://gitee.com/openharmony/powermgr_thermal_manager/blob/master/services/native/profile/BUILD.gn)编写BUILD.gn文件,将thermal_service_config.xml打包到`/vendor/etc/thermal_config`目录下 + + ```shell + import("//build/ohos.gni") # 引用build/ohos.gni + + ohos_prebuilt_etc("thermal_service_config") { + source = "thermal_service_config.xml" + relative_install_dir = "thermal_config" + install_images = [ chipset_base_dir ] # 安装到vendor目录下的必要配置 + part_name = "product_rk3568" # part_name暂定为product_rk3568,以实现后续编译,产品定制根据需要自行修改 + } + ``` + +5. 将编译目标添加到[ohos.build](https://gitee.com/openharmony/vendor_hihope/blob/master/rk3568/ohos.build)的"module_list"中,例如: + + ```json + { + "parts": { + "product_rk3568": { + "module_list": [ + "//vendor/hihope/rk3568/default_app_config:default_app_config", + "//vendor/hihope/rk3568/image_conf:custom_image_conf", + "//vendor/hihope/rk3568/preinstall-config:preinstall-config", + "//vendor/hihope/rk3568/resourceschedule:resourceschedule", + "//vendor/hihope/rk3568/etc:product_etc_conf", + "//vendor/hihope/rk3568/thermal/profile:thermal_service_config", // 添加thermal_service_config的编译 + ] + } + }, + "subsystem": "product_hihope" + } + ``` + “//vendor/hihope/rk3568/thermal/”为文件夹路径,“profile”为创建的文件夹名字,“thermal_hdf_config”为编译目标。 + +6. 参考《[快速入门](../quick-start/quickstart-overview.md)》编译定制版本,编译命令如下: + + ```shell + ./build.sh --product-name rk3568 --ccache + ``` + +7. 将定制版本烧录到DAYU200开发板中。 + +### 调测验证 + +1. 开机后,进入shell命令行: + ```shell + hdc shell + ``` + +2. 获取当前热策略信息。 + ```shell + hidumper -s 3303 -a -p + ``` + + 查看定制后的热策略结果如下: + ```shell + -------------------------------[ability]------------------------------- + + + ----------------------------------ThermalService--------------------------------- + name: base_safe level: 1 + actionName: lcd actionValue: 1.00 isProp: 0 + actionName: lcd actionValue: 0.99 scene: cam isProp: 1 + actionName: lcd actionValue: 0.98 scene: call isProp: 1 + actionName: lcd actionValue: 0.95 scene: game isProp: 1 + actionName: cpu_big actionValue: 1992000 isProp: 0 + actionName: cpu_med actionValue: 1991500 isProp: 0 + actionName: cpu_lit actionValue: 1991200 isProp: 0 + actionName: process_ctrl actionValue: 3 isProp: 0 + actionName: cpu_big actionValue: 1991800 charge: 1 scene: cam isProp: 1 + actionName: cpu_big actionValue: 1991600 charge: 0 scene: cam isProp: 1 + actionName: gpu actionValue: 524288 screen: 0 isProp: 1 + actionName: gpu actionValue: 512000 screen: 1 isProp: 1 + actionName: thermallevel actionValue: 1 isProp: 0 + actionName: current_sc actionValue: 1800 isProp: 0 + actionName: current_sc actionValue: 1200 scene: cam isProp: 1 + actionName: current_buck actionValue: 1200 isProp: 0 + actionName: voltage_sc actionValue: 4000 isProp: 0 + actionName: voltage_buck actionValue: 3000 isProp: 0 + actionName: volume actionValue: 1.0 isProp: 0 + actionName: boost actionValue: 1 isProp: 0 + + level: 2 + actionName: lcd actionValue: 0.90 isProp: 0 + actionName: lcd actionValue: 0.89 scene: cam isProp: 1 + actionName: lcd actionValue: 0.88 scene: call isProp: 1 + actionName: lcd actionValue: 0.87 scene: game isProp: 1 + actionName: cpu_big actionValue: 1991000 isProp: 0 + actionName: cpu_med actionValue: 1990500 isProp: 0 + actionName: cpu_lit actionValue: 1990200 isProp: 0 + actionName: process_ctrl actionValue: 2 isProp: 0 + actionName: cpu_big actionValue: 1990800 charge: 1 scene: cam isProp: 1 + actionName: cpu_big actionValue: 1990600 charge: 0 scene: cam isProp: 1 + actionName: gpu actionValue: 499712 screen: 0 isProp: 1 + actionName: gpu actionValue: 487424 screen: 1 isProp: 1 + actionName: thermallevel actionValue: 2 isProp: 0 + actionName: current_sc actionValue: 1500 isProp: 0 + actionName: current_sc actionValue: 1000 scene: cam isProp: 1 + actionName: current_buck actionValue: 1000 isProp: 0 + actionName: voltage_sc actionValue: 3000 isProp: 0 + actionName: voltage_buck actionValue: 2000 isProp: 0 + actionName: volume actionValue: 0.8 isProp: 0 + actionName: boost actionValue: 1 isProp: 0 + ``` + +## 参考 +开发过程中可参考的配置文件路径:[默认热策略源码路径](https://gitee.com/openharmony/powermgr_thermal_manager/blob/master/services/native/profile/thermal_service_config.xml) + +打包路径:`/vendor/etc/thermal_config/hdf` + diff --git a/zh-cn/device-dev/subsystems/subsys-thermal_scene.md b/zh-cn/device-dev/subsystems/subsys-thermal_scene.md new file mode 100644 index 0000000000..4325eb439a --- /dev/null +++ b/zh-cn/device-dev/subsystems/subsys-thermal_scene.md @@ -0,0 +1,126 @@ +# 热场景定制开发指导 + +## 概述 + +### 简介 + +OpenHarmony默认提供了热场景的特性。在设备使用过程中,比如游戏、拍照、通话时需要保证性能、温度和功耗的平衡。在不同场景下,热管理的策略会有所不同,如游戏场景下不会降低屏幕亮度,但是在不同的产品上对热场景的定义是不同的,产品希望根据产品的设计规格来定制此特性。OpenHarmony提供了热场景的定制方式,产品定制开发者可根据产品的设计规格来定制这些特性。 + +### 约束与限制 + +产品定制的配置路径,需要根据[配置策略](https://gitee.com/openharmony/customization_config_policy)决定。本开发指导中的定制路径以`/vendor`进行举例,请开发者根据具体的产品配置策略,修改定制路径。 + +## 开发指导 + +### 搭建环境 + +设备要求: + +标准系统开发板,如DAYU200/Hi3516DV300开源套件。 + +环境要求: + +Linux调测环境,相关要求和配置可参考《[快速入门](../quick-start/quickstart-overview.md)》。 + +### 开发步骤 + +本文以[DAYU200](https://gitee.com/openharmony/vendor_hihope/tree/master/rk3568)为例介绍热场景的定制方法。 + +1. 在产品目录[(/vendor/hihope/rk3568)](https://gitee.com/openharmony/vendor_hihope/tree/master/rk3568)下创建thermal文件夹。 + +2. 参考[默认热场景的配置文件夹](https://gitee.com/openharmony/powermgr_thermal_manager/tree/master/services/native/profile)创建目标文件夹,并安装到`//vendor/hihope/rk3568/thermal`,文件格式如下: + + ```text + profile + ├── BUILD.gn + ├── thermal_service_config.xml + ``` + +3. 参考[默认热场景的配置文件夹中的thermal_service_config.xml](https://gitee.com/openharmony/powermgr_thermal_manager/blob/master/services/native/profile/thermal_service_config.xml)编写定制的thermal_service_config.xml。包含热场景配置说明及定制后的热场景配置如下: + + **表1** 热场景配置说明 + + | 配置项 | 配置项描述 | 配置项参数 | 配置项参数描述 | 配置项参数类型 | 配置项参数取值范围 | + | -------- | -------- | -------- | -------- | -------- | -------- | + | name="scene" | 配置一种或多种使用场景,可以在枚举中任选 | param | 具体的使用场景:拍照、电话、游戏 | enum | cam,call,game | + + screen和charge是配置的使用场景的状态,分别为是否亮屏和是否充电。 + + ```shell + <state> + <item name="scene" param="cam,call,game"/> + <item name="screen"/> + <item name="charge"/> + </state> + ``` + +4. 参考[默认热场景配置文件夹中的BUILD.gn](https://gitee.com/openharmony/powermgr_thermal_manager/blob/master/services/native/profile/BUILD.gn)编写BUILD.gn文件,将thermal_service_config.xml打包到`/vendor/etc/thermal_config`目录下 + + ```shell + import("//build/ohos.gni") # 引用build/ohos.gni + + ohos_prebuilt_etc("thermal_service_config") { + source = "thermal_service_config.xml" + relative_install_dir = "thermal_config" + install_images = [ chipset_base_dir ] # 安装到vendor目录下的必要配置 + part_name = "product_rk3568" # part_name暂定为product_rk3568,以实现后续编译,产品定制根据需要自行修改 + } + ``` + +5. 将编译目标添加到[ohos.build](https://gitee.com/openharmony/vendor_hihope/blob/master/rk3568/ohos.build)的"module_list"中,例如: + + ```json + { + "parts": { + "product_rk3568": { + "module_list": [ + "//vendor/hihope/rk3568/default_app_config:default_app_config", + "//vendor/hihope/rk3568/image_conf:custom_image_conf", + "//vendor/hihope/rk3568/preinstall-config:preinstall-config", + "//vendor/hihope/rk3568/resourceschedule:resourceschedule", + "//vendor/hihope/rk3568/etc:product_etc_conf", + "//vendor/hihope/rk3568/thermal/profile:thermal_service_config", // 添加thermal_service_config的编译 + ] + } + }, + "subsystem": "product_hihope" + } + ``` + “//vendor/hihope/rk3568/thermal/”为文件夹路径,“profile”为创建的文件夹名字,“thermal_hdf_config”为编译目标。 + +6. 参考《[快速入门](../quick-start/quickstart-overview.md)》编译定制版本,编译命令如下: + + ```shell + ./build.sh --product-name rk3568 --ccache + ``` + +7. 将定制版本烧录到DAYU200开发板中。 + +### 调测验证 + +1. 开机后,进入shell命令行: + ```shell + hdc shell + ``` + +2. 获取当前热场景信息。 + ```shell + hidumper -s 3303 -a -s + ``` + + 查看定制后的热场景结果如下: + ```shell + -------------------------------[ability]------------------------------- + + + ----------------------------------ThermalService--------------------------------- + name: scene params: cam,call,game + name: screen + name: charge + ``` + +## 参考 +开发过程中可参考的配置文件路径:[默认热场景源码路径](https://gitee.com/openharmony/powermgr_thermal_manager/blob/master/services/native/profile/thermal_service_config.xml) + +打包路径:`/vendor/etc/thermal_config/hdf` + diff --git a/zh-cn/device-dev/website.md b/zh-cn/device-dev/website.md index 786b3ed5b3..0d9a619dc7 100644 --- a/zh-cn/device-dev/website.md +++ b/zh-cn/device-dev/website.md @@ -478,6 +478,21 @@ - 电源 - 耗电统计 - [耗电统计定制开发指导](subsystems/subsys-power-stats-power-average-customization.md) + - 电池管理 + - [电量与LED灯颜色的定制开发指导](subsystems/subsys-power-level-LED-color.md) + - [电池温度保护定制开发指导](subsystems/subsys-power-temperature-protection.md) + - [电量等级定制开发指导](subsystems/subsys-power-battery-level-customization.md) + - [充电限流限压定制开发指导](subsystems/subsys-power-charge-current-voltage-limit.md) + - [充电类型定制开发指导](subsystems/subsys-power-charge-type-customization.md) + - [关机充电动画开发指导](subsystems/subsys-power-poweroff-charge-animation.md) + - 热管理 + - [充电空闲状态定制开发指导](subsystems/subsys-thermal_charging_idle_state.md) + - [热管控定制开发指导](subsystems/subsys-thermal_control.md) + - [热检测定制开发指导](subsystems/subsys-thermal_detection.md) + - [热等级定制开发指导](subsystems/subsys-thermal_level.md) + - [热日志定制开发指导](subsystems/subsys-thermal_log.md) + - [热策略定制开发指导](subsystems/subsys-thermal_policy.md) + - [热场景定制开发指导](subsystems/subsys-thermal_scene.md) - 专题 - HPM Part -- GitLab