# çƒç®¡æŽ§å®šåˆ¶å¼€å‘指导 ## 概述 ### 简介 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="airplane" | 飞行模å¼ç®¡æŽ§åŠ¨ä½œ | æ— | æ— | æ— | æ— | | name="cpu_big" | å¤§æ ¸CPUç®¡æŽ§åŠ¨ä½œï¼ˆæŽ§åˆ¶å¤§æ ¸CPU频率) | æ— | æ— | æ— | æ— | | name="cpu_med" | 䏿 ¸CPUç®¡æŽ§åŠ¨ä½œï¼ˆæŽ§åˆ¶ä¸æ ¸CPU频率) | æ— | æ— | æ— | æ— | | name="cpu_lit" | å°æ ¸CPUç®¡æŽ§åŠ¨ä½œï¼ˆæŽ§åˆ¶å°æ ¸CPU频率) | æ— | æ— | æ— | æ— | | name="gpu" | GPU管控动作(控制GPU频率) | æ— | æ— | æ— | æ— | | name="boost" | SOCPERFçƒç‰çº§ç®¡æŽ§åŠ¨ä½œ | event | 为1æ—¶å‘é€äº‹ä»¶ï¼Œä¸º0æ—¶ä¸å‘é€äº‹ä»¶ | int | 0,1 | | name="isolate" | CPUæé«˜é¢‘率管控动作 | event | 为1æ—¶å‘é€äº‹ä»¶ï¼Œä¸º0æ—¶ä¸å‘é€äº‹ä»¶ | int | 0,1 | | name="lcd" | LCD管控动作(控制å±å¹•亮度) | æ— | æ— | æ— | æ— | | name="volume" | 声音管控动作(控制音é‡å¤§å°ï¼‰ | uid | 用户id | int | æ ¹æ®äº§å“定义 | | name="current_xxx" | 充电电æµç®¡æŽ§åŠ¨ä½œï¼ˆæŽ§åˆ¶å¿«å……å’Œæ…¢å……æ—¶çš„å……ç”µç”µæµå¤§å°ï¼‰ | protocol<br>param | protocol填写current,param填写支æŒçš„充电å议,快充(sc)和慢充(buck) | string |protocol="current" param="sc" | | name="current_xxx" | 充电电æµç®¡æŽ§åŠ¨ä½œ | event | 为1æ—¶å‘é€äº‹ä»¶ï¼Œä¸º0æ—¶ä¸å‘é€äº‹ä»¶ | int | 0,1 | | name="voltage_xxx" | 充电电压管控动作(控制快充和慢充时的充电电压大å°ï¼‰ | protocol<br>param | protocol填写voltage,param填写支æŒçš„充电å议,快充(sc)和慢充(buck) | string | protocol="voltage" param="buck" | | name="voltage_xxx" | 充电电压管控动作 | event | 为1æ—¶å‘é€äº‹ä»¶ï¼Œä¸º0æ—¶ä¸å‘é€äº‹ä»¶ | int | 0,1 | | name="process_ctrl" | 进程管控动作(控制å‰å°å’ŒåŽå°è¿›ç¨‹å˜æ´»çжæ€ï¼‰ | param | param填写任æ„å—符串 | string | æ— | | name="process_ctrl" | 进程管控动作(控制å‰å°å’ŒåŽå°è¿›ç¨‹å˜æ´»çжæ€ï¼‰ | event | 为1æ—¶å‘é€äº‹ä»¶ï¼Œä¸º0æ—¶ä¸å‘é€äº‹ä»¶ï¼Œä¸ºç©ºæ—¶é»˜è®¤å€¼ä¸º0 | int | 0,1 | | name="shut_down" | 关机管控动作(控制是å¦å…³æœºï¼‰ | event | 为1æ—¶å‘é€äº‹ä»¶ï¼Œä¸º0æ—¶ä¸å‘é€äº‹ä»¶ | int | 0,1 | | name="thermallevel" | çƒç‰çº§ç®¡æŽ§åŠ¨ä½œï¼ˆæŽ§åˆ¶çƒç‰çº§ä¸ŠæŠ¥ï¼‰ | event | 为1æ—¶å‘é€äº‹ä»¶ï¼Œä¸º0æ—¶ä¸å‘é€äº‹ä»¶ | int | 0,1 | | name="popup" | 弹窗管控动作(控制是å¦å¼¹çª—) | æ— | æ— | æ— | æ— | | name="xxx" | 节点定制温控动作 | protocol<br>param | protocolå¡«å…¥node<br>param填入节点路径åŠå›žé€€å€¼ï¼Œç”¨"\|"隔开 | string | æ— | ```shell <action> <item name="airplane"/> <item name="cpu_big"/> <item name="cpu_med"/> <item name="cpu_lit"/> <item name="gpu"/> <item name="boost" event="1"/> <item name="isolate" event="1"/> <item name="lcd"/> <item name="volume" uid="2001,2002"/> <item name="current_sc" protocol="current" param="sc" event="1"/> <item name="voltage_buck" protocol="voltage" param="buck" event="1"/> <item name="process_ctrl" param="32,64,128,256" event=""/> <item name="shut_down" event="0"/> <item name="thermallevel" event="1"/> <item name="popup"/> <item name="(action_name)" protocol="node" param="/sys/class/thermal/xxx"/> <item name="test"/> </action> ``` 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_service_configâ€ä¸ºç¼–è¯‘ç›®æ ‡ã€‚ 6. å‚考《[快速入门](../quick-start/quickstart-overview.md)》编译定制版本,编译命令如下: ```shell ./build.sh --product-name rk3568 --ccache ``` 7. 将定制版本烧录到DAYU200开呿¿ä¸ã€‚ ### è°ƒæµ‹éªŒè¯ OpenHarmony从5.0.0 Releaseç‰ˆæœ¬èµ·ï¼Œæ”¯æŒæ¸©åº¦æ¨¡æ‹Ÿè°ƒæµ‹åŠŸèƒ½ã€‚ä¸‹è¿°æ“作通过模拟温度å˜åŒ–实现温度ç‰çº§çš„è·ƒè¿ï¼Œä»¥æ¤æ¥éªŒè¯çƒç®¡æŽ§ç–ç•¥çš„å®šåˆ¶èƒ½åŠ›ã€‚ä¸‹è¿°è°ƒæµ‹éªŒè¯æ¥éª¤ï¼Œé»˜è®¤å®šåˆ¶çš„thermal_service_config.xml按照[默认çƒç®¡æŽ§çš„é…置文件夹ä¸çš„thermal_service_config.xml](https://gitee.com/openharmony/powermgr_thermal_manager/blob/master/services/native/profile/thermal_service_config.xml)é…置。 1. 开机åŽï¼Œè¿›å…¥shell命令行: ```shell hdc shell ``` 2. 获å–当å‰çƒç®¡æŽ§ä¿¡æ¯ã€‚ ```shell hidumper -s 3303 -a -a ``` 查看定制åŽçš„çƒç®¡æŽ§ç»“果如下: ```shell -------------------------------[ability]------------------------------- ----------------------------------ThermalService--------------------------------- name: airplane strict: 0 enableEvent: 0 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: 1 name: isolate strict: 0 enableEvent: 1 name: lcd strict: 0 enableEvent: 0 name: volume uid: 2001,2002 strict: 0 enableEvent: 0 name: current_sc params: sc protocol: current strict: 0 enableEvent: 1 name: current_buck params: buck protocol: current strict: 0 enableEvent: 1 name: voltage_sc params: sc protocol: voltage strict: 0 enableEvent: 1 name: voltage_buck params: buck protocol: voltage 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: 1 name: popup strict: 0 enableEvent: 0 name: test strict: 0 enableEvent: 0 ``` 3. åœæ¢è‡ªåŠ¨ä¸ŠæŠ¥æ¸©åº¦ã€‚ 使用```hidumper -s 3303 -a '-st [f] [...]'```指令控制是å¦è‡ªåŠ¨ä¸ŠæŠ¥æ¸©åº¦ã€‚å…¶ä¸...表示任æ„å—符串。如果f为0ï¼Œåˆ™åœæ¢è‡ªåŠ¨ä¸ŠæŠ¥æ¸©åº¦ï¼›å¦åˆ™ï¼Œåˆ™æ¢å¤è‡ªåŠ¨ä¸ŠæŠ¥æ¸©åº¦ã€‚ ```shell $ hidumper -s 3303 -a '-st 0' -------------------------------[ability]------------------------------- ----------------------------------ThermalService---------------------------------- Temperature reporting has been stopped. ``` 4. 模拟温度å˜åŒ–。 为触å‘çƒç®¡æŽ§ç–略,先设置低温,å†è®¾ç½®é«˜æ¸©ã€‚使用```hidumper -s 3303 -a '-te [name] [num]'```指令上报模拟温度。其ä¸nameè¡¨ç¤ºæ¸©åº¦ä¼ æ„Ÿå™¨å称,numè¡¨ç¤ºè¯¥ä¼ æ„Ÿå™¨å¯¹åº”çš„æ¨¡æ‹Ÿæ¸©åº¦ã€‚å¤šç»„nameå’Œnumï¼Œè¡¨ç¤ºåŒæ—¶ä¸Šä¼ 多组模拟温度。 ```shell $ hidumper -s 3303 -a '-te battery 32000 charger 32000' -------------------------------[ability]------------------------------- ----------------------------------ThermalService---------------------------------- Report temperature [ battery ]: 32000 Report temperature [ charger ]: 32000 $ hidumper -s 3303 -a '-te battery 39000 charger 39000' -------------------------------[ability]------------------------------- ----------------------------------ThermalService---------------------------------- Report temperature [ battery ]: 39000 Report temperature [ charger ]: 39000 ``` 5. 获å–当剿¸©åº¦ç‰çº§ä¿¡æ¯ã€‚ ```shell hidumper -s 3303 -a -l ``` æŸ¥çœ‹ä¸Šä¼ æ¨¡æ‹Ÿæ¸©åº¦åŽçš„æ¸©åº¦ç‰çº§ä¿¡æ¯å¦‚下: ```shell -------------------------------[ability]------------------------------- ----------------------------------ThermalService---------------------------------- name: base_safe level: 1 name: cold_safe level: 0 name: high_safe level: 0 name: screenoff_charge level: 0 name: warm_5G level: 0 name: warm_safe level: 0 ``` 6. 查看温控结点信æ¯ã€‚ ```shell cat /data/service/el0/thermal/config/process_ctrl ``` 查看温控结点信æ¯å¦‚下,表明process_ctrlçƒç®¡æŽ§ç–ç•¥æ£ç¡®æ‰§è¡Œï¼š ```shell 3 ``` ## å‚考 å¼€å‘过程ä¸å¯å‚考的é…置文件路径:[默认çƒç®¡æŽ§æºç 路径](https://gitee.com/openharmony/powermgr_thermal_manager/blob/master/services/native/profile/thermal_service_config.xml) 打包路径:`/vendor/etc/thermal_config/hdf`