ARTICLE DETAIL

资讯详情

深耕编程入门与网站建设的一线实战洞察。

151、Zephyr RTOS电源管理基础:电源管理调试与测试

151、Zephyr RTOS电源管理基础:电源管理调试与测试 Zephyr RTOS电源管理基础:电源管理调试与测试去年冬天在做一个工业传感器节点项目,设备部署在东北某工厂的室外管道上。客户反馈说设备在凌晨3点到5点之间会莫名其妙重启,白天却一切正常。我远程抓了一周的日志,发现每次重启前PM_STATE_SUSPEND_TO_IDLE的退出时间都异常——从正常的2ms飙到了800ms。更诡异的是,这个现象只在环境温度低于-10°C时出现。后来排查到是某个外设在低温下唤醒延迟,但电源管理子系统根本没报错,因为Zephyr的PM框架默认认为“设备成功退出了低功耗状态”就算完成任务,压根不检查退出耗时。这个坑让我意识到:Zephyr的电源管理调试,远不是“调个API、看个功耗”那么简单。今天这篇笔记,就从真实调试场景出发,聊聊电源管理调试与测试的那些“暗礁”。电源管理调试的“三把刀”:日志、钩子、状态机Zephyr的电源管理子系统(PM)在subsys/pm/下,核心是状态机加设备约束。调试时最怕的是“设备睡着了但叫不醒”或者“叫醒了但行为异常”。我的调试三板斧如下:第一刀:打开PM的详细日志prj.conf里别只写CONFIG_PM=y,加上这几行:CONFIG_PM_DEBUG=y CONFIG_PM_LOG_LEVEL_DBG
返回列表