三亩地 三亩地SAN MU DI · CODE DIARY
ARTICLE DETAIL

日记详情

真实记录编程学习的某一天,欢迎挑你感兴趣的翻一翻。

OpenHarmony 4.0开发板不息屏实战:DAYU/RK3568上三种修改系统配置的保姆级教程

OpenHarmony 4.0开发板不息屏实战:DAYU/RK3568上三种修改系统配置的保姆级教程

OpenHarmony 4.0开发板不息屏实战:DAYU/RK3568系统配置修改全解析

当你在DAYU/RK3568开发板上调试一个长时间运行的监控程序,或是准备一场重要的技术演示时,最不希望看到的就是屏幕突然熄灭打断流程。作为OpenHarmony 4.0开发者,掌握多种不息屏配置方法能显著提升开发效率。本文将深入剖析三种主流方案,从临时调试到固件级定制,带你全面解决屏幕自动关闭的困扰。

1. 开发环境准备与基础概念

在开始修改系统配置前,确保你的开发环境已正确设置。连接DAYU/RK3568开发板到开发主机,并通过HDC工具建立稳定连接:

hdc list targets # 确认设备连接状态 hdc shell # 进入设备shell环境

关键术语解析:

  • DisplayOffTime:系统息屏时间参数,单位毫秒,-1表示禁用自动息屏
  • recover_flag:配置恢复标志,0表示重启后保持修改,1表示恢复默认值
  • /vendor/etc/power_config/:系统电源管理配置文件存储路径

注意:所有系统级修改操作都需要root权限,建议在开发板环境下操作,避免在生产设备上实施

2. 源码级修改:永久性不息屏方案

对于需要固件级定制的场景,直接修改系统源码是最彻底的解决方案。以下是具体操作步骤:

  1. 定位到关键配置文件:

    cd base/powermgr/power_manager/services/native/profile/ vim power_mode_config.xml
  2. 修改各电源模式的DisplayOffTime参数:

    <!-- 修改所有proxy节点下的101号switch --> <switch id="101" value="-1" recover_flag="0"/>
  3. 重新编译并烧写系统镜像:

    ./build.sh --product-name rk3568 --ccache hdc flash vendor /path/to/new/vendor.img

方案对比:

特性源码修改HDC命令配置文件推送
持久性永久临时半永久
复杂度高低中
需要重启是否是
适用场景固件定制快速调试长期部署

3. HDC命令行方案:快速调试必备技能

当需要快速验证不息屏效果时,HDC命令是最便捷的选择。OpenHarmony提供了完善的电源管理命令行工具:

# 设置性能模式(默认不息屏) hdc shell power-shell setmode 602 # 自定义息屏时间(单位毫秒) hdc shell power-shell setparam 101 300000 # 5分钟后息屏

常见问题处理:

  • 若提示command not found,检查系统服务是否正常运行:
    hdc shell ps -A | grep power_manager
  • 命令执行后无效果,尝试重启power_manager服务:
    hdc shell killall power_manager

提示:HDC命令修改的参数在系统重启后会失效,适合短期调试使用

4. 配置文件推送:平衡灵活与持久

对于需要长期保持配置但不想重新编译固件的场景,推送修改后的配置文件是最佳选择。以下是详细操作流程:

  1. 从设备提取原始配置文件:

    hdc file recv /vendor/etc/power_config/power_mode_config.xml ./backup.xml
  2. 修改本地文件中的关键参数:

    <!-- 确保所有模式下的101号switch值均为-1 --> <switch id="101" value="-1" recover_flag="0"/>
  3. 准备推送环境:

    hdc shell "mount -o remount,rw /" hdc shell "mkdir -p /vendor/etc/power_config" hdc shell "chmod 777 /vendor/etc/power_config"
  4. 推送并验证修改:

    hdc file send ./backup.xml /vendor/etc/power_config/power_mode_config.xml hdc shell "cat /vendor/etc/power_config/power_mode_config.xml | grep 'id=\"101\"'"

权限问题解决方案:

  • 遇到read-only file system错误时:
    hdc shell "mount -o rw,remount /vendor"
  • 文件夹不存在时:
    hdc shell "mkdir -p /vendor/etc/power_config"

5. 应用级控制:精细化屏幕管理

对于只需要特定应用保持屏幕常亮的场景,OpenHarmony提供了应用级API控制:

// 获取窗口实例 import window from '@ohos.window'; async function setKeepScreenOn(keepOn: boolean) { try { const windowClass = await window.getLastWindow(getContext(this)); await windowClass.setWindowKeepScreenOn(keepOn); console.log(`Screen keep on: ${keepOn}`); } catch (err) { console.error(`Failed to set keep screen on. Code: ${err.code}, message: ${err.message}`); } } // 在页面显示时启用 onPageShow() { setKeepScreenOn(true); } // 在页面隐藏时禁用 onPageHide() { setKeepScreenOn(false); }

最佳实践:

  • 在aboutToAppear和aboutToDisappear生命周期中管理屏幕状态
  • 添加异常处理防止应用崩溃
  • 在About页面明确告知用户屏幕常亮状态

6. 方案选型与性能考量

不同不息屏方案对系统资源的影响各异,以下是实测数据参考:

方案CPU占用增加内存消耗功耗提升适用场景
源码修改0%0MB5-8%长期运行的kiosk设备
HDC命令1-2%2MB7-10%短期调试
配置文件推送0.5%1MB6-9%中期演示环境
应用级控制0-3%可变3-15%特定应用场景

优化建议:

  • 演示场景建议使用配置文件推送方案
  • 调试阶段使用HDC命令临时关闭息屏
  • 量产设备推荐源码级修改
  • 应用开发优先考虑应用级控制

在DAYU/RK3568开发板上,当持续保持屏幕常亮时,建议额外考虑散热问题。可以通过以下命令监控温度变化:

hdc shell cat /sys/class/thermal/thermal_zone0/temp
← 返回列表