DAYU200 关闭自动息屏的几种方式
作者:坚果
团队:坚果派
公众号:“大前端之旅”
润开鸿技术专家,华为 HDE,InfoQ 签约作者,OpenHarmony 布道师,擅长 HarmonyOS 应用开发、熟悉服务卡片开发,在“战码先锋”活动中作为大队长,累计培养三个小队长,带领 100+队员完成 Pr 的提交合入。欢迎通过主页或者私信联系我,加入坚果派,一起学习 OpenHarmony/HarmonyOS 应用开发。
由于 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 执行:
或者通过 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 文件即可。
评论