OpenHarmony开发者论坛

标题: DAYU200关闭自动息屏的几种方式 [打印本页]

作者: 润开鸿_坚果    时间: 2023-11-24 04:48
标题: DAYU200关闭自动息屏的几种方式
[md]

# DAYU200关闭自动息屏的几种方式

> 梁开祝  2023.03.01
>

由于OpenHarmony的电源管理策略的配置,DAYU200开发板在默认情况下,开机后30秒会自动息屏,频繁的自动息屏会让不少小伙伴感到麻烦,下面汇总关闭DAYU200开发板自动息屏的几种方式供大家选择使用。

## 0. 电源管理策略概述

OpenHarmony标准系统的统一电源管理策略配置,见 //base/powermgr/power_manager/services/native/profile/power_mode_config.xml 文件,不同的配置对应不同的功耗情况。

```
<!--
    Power Mode Definitions:        // 电源模式定义
    MODE_NORMAL = 600,             // 正常模式
    MODE_POWER_SAVE = 601,         // 省电模式
    MODE_PERFORMANCE = 602,        // 性能优先
    MODE_EXTREME_POWER_SAVE = 603, // 超级省电
-->
<!--
    Action Definitions:         // 行为定义
    DisplayOffTime = 101,       // 息屏时间控制
    SystemAutoSleepTime = 102,  // 系统自动睡眠时间控制
    AutoAdjustBrightness = 103, // 亮度自动调整时间控制
    AutoWindowRotation = 107,   // 窗口自动旋转时间控制
    SystemBrightness = 115,     // 系统亮度调节
    VibratorsState = 120,       // 马达(震动)状态
-->
<switch_proxy version="1">
    <proxy id="600">
        <!-- value[单位:ms],-1表示不设置,如DisplayOffTime设为-1表示不息屏 -->
        <switch id="101" value="30000" recover_flag="0"/>
        <switch id="102" value="0" recover_flag="0"/>
        <switch id="103" value="-1" recover_flag="0"/>
        <switch id="107" value="1" recover_flag="0"/>
        <switch id="115" value="102" recover_flag="0"/>
        <switch id="120" value="1" recover_flag="0"/>
    </proxy>
    <proxy id="601">
        <switch id="101" value="10000" recover_flag="0"/>
        <switch id="102" value="5000" recover_flag="0"/>
        <switch id="103" value="-1" recover_flag="0"/>
        <switch id="107" value="-1" recover_flag="0"/>
        <switch id="115" value="50" recover_flag="0"/>
        <switch id="120" value="-1" recover_flag="0"/>
    </proxy>
    <proxy id="602">
        <switch id="101" value="-1" recover_flag="0"/>
        <switch id="102" value="-1" recover_flag="0"/>
        <switch id="103" value="-1" recover_flag="0"/>
        <switch id="107" value="1" recover_flag="0"/>
        <switch id="115" value="255" recover_flag="0"/>
        <switch id="120" value="1" recover_flag="0"/>
    </proxy>
    <proxy id="603">
        <switch id="101" value="5000" recover_flag="0"/>
        <switch id="102" value="1000" recover_flag="0"/>
        <switch id="103" value="-1" recover_flag="0"/>
        <switch id="107" value="-1" recover_flag="0"/>
        <switch id="115" value="25" recover_flag="0"/>
        <switch id="120" value="-1" recover_flag="0"/>
    </proxy>
</switch_proxy>
```

## 1. 手动解除息屏

开发板息屏后,手动按一下 ”POWER“ 按键即可点亮屏幕,点亮屏幕后,30秒又会自动息屏。

这个方法容易误按到 “RESET” 键而重启开发板,比较麻烦。

## 2. 修改电源模式

开发板上电后,可以通过shell执行:

```
power-shell setmode 602
```

或者通过 hdc shell 执行:

```
hdc shell power-shell setmode 602
```

执行成功后,会打印出:

```
Set Mode: 602
Set Mode Success!
```

即表示系统的电源配置模式已经切换到编号为602的性能优先模式,开发板将不会自动息屏了。

不过这个修改电源模式的结果不保存,会在系统重启后恢复默认的正常模式,需要再次执行 power-shell 命令进行设置。

power-shell 的实现代码见://base/powermgr/power_manager/utils/shell/

## 3. hdc 推送电源配置到开发板

首先本地复制一份 power_mode_config.xml 文件,将电源管理中的 101 项的value值改为 -1, 保存备用。

### 3.1 方法1

将上述修改后的 power_mode_config.xml 文件复制到U盘根目录下,再将U盘插入DAYU200开发板。

开发板开机后,可以查看块设备信息:

```
ls /dev/block
......
loop1      loop7    mmcblk0p11    mmcblk0p6  sda
loop2      mmcblk0  mmcblk0p12    mmcblk0p7  sda1
```

可以看到 sda1 就是插入开发板的U盘,可以创建挂载点并挂载U盘到  /mnt/udisk :

```
# 创建U盘挂载点,挂载U盘,并查看U盘上的内容
mkdir /mnt/udisk
mount -t vfat /dev/block/sda1 /mnt/udisk
ls /mnt/udisk

# 默认 /vendor 分区是只读的,重新以rw模式挂载该分区
# 再将U盘中的 power_mode_config.xml 文件复制到开发板中 /vendor/etc/power_config/ 目录下
# 最后确认该文件的内容与是自己修改的内容
mount -o rw,remount /vendor
cp -r /mnt/udisk/power_config /vendor/etc/
ls /vendor/etc/
ls /vendor/etc/power_config/
cat /vendor/etc/power_config/power_mode_config.xml
```

之后,重启开发板就可以了。

系统会读取和解析该文件,在默认的正常模式不再息屏。

### 3.2 方法2

windows下通过hdc工具连接开发板,将修改后的 power_mode_config.xml 文件推送到开发板中即可。

```
# 默认 /vendor 分区是只读的,重新以rw模式挂载该分区
# 再将 power_mode_config.xml 文件推送到开发板中 /vendor/etc/power_config/ 目录下
# 最后确认该文件的内容与是自己修改的内容
mount -o rw,remount /vendor
hdc file send power_mode_config.xml /vendor/etc/power_config/
```

之后,重启开发板就可以了。

系统会读取和解析该文件,在默认的正常模式不再息屏。

王开发板中复制或者通过hdc推送  power_mode_config.xml 文件到开发板中这种方式,只要不重新烧录开发板的vendor分区,即使开关机开发板,效果都是持续的。

如果重新烧录了开发板的 vendor 分区,则会恢复到默认的30s自动息屏的效果。

## 4. 修改源代码

对于需要经常烧录开发板 vendor 分区的开发者,建议直接修改源代码,将上述修改后的 power_mode_config.xml 文件编译进vendor.img镜像中,即可保证每次烧录vendor镜像后,不息屏的效果仍能保持。

将上述修改后的 power_mode_config.xml 文件复制到 //vendor/hihope/rk3568/power_config/ 目录下即可,电源管理模块的相关脚本在编译阶段,识别到存在该文件,就会将其自动复制到vendor烧录镜像的对应目录下。

这里的修改只对rk3568这个开发板有效,对于其他运行标准系统的开发版,也可以参考这种办法进行修改。

如果想要一次性修改,对所有的标准系统项目都生效,那就直接去//base/..../目录下修改 power_mode_config.xml 文件即可。


[/md]




欢迎光临 OpenHarmony开发者论坛 (https://forums.openharmony.cn/) Powered by Discuz! X3.5