🗒️[Code Snipaste] rtc定时器中断解决系统睡眠时的workqueue唤醒
2023-9-1
| 2023-9-1
字数 1458阅读时长 4 分钟
type
status
date
slug
summary
tags
category
icon
password
URL

一、问题背景

当手机进入睡眠后,插入充电器开始充电。由于电量的上报是通过workqueue的方式进行的,下面是当时的设计方案
当fg probe后启动延时工作队列soc_monitor_work, 当work function执行结束后,再次shedule soc_monitor_work, 达到10s循环调用,更新电池点亮。
 

二、设计方案

通过改写代码,通过RTC的定时器中断来避免睡眠因素导致的workqueue无法运行的问题。
补充一下RTC定时器中断的知识点:
RTC(实时时钟)定时器中断是一种用于处理与时间相关的任务的机制。RTC是计算机系统中的一种硬件设备,通常用于跟踪日期和时间,以及生成定时中断。下面是有关RTC定时器中断的介绍:
  1. RTC硬件:RTC通常是一种集成在计算机主板上的硬件设备,用于跟踪实际的日期和时间。它通常包括一个计时器,用于生成周期性的中断,以便操作系统或应用程序可以在特定的时间间隔内执行任务。
  1. 定时中断:RTC定时器生成的中断是一种定时触发的中断,通常以固定的时间间隔触发。这些中断可以用于各种目的,如定时任务、时间同步、电源管理等。
  1. 系统时钟:RTC通常还用于维护系统的时间。它可以提供一个稳定的时钟信号,用于操作系统和应用程序跟踪时间。当RTC计时器达到一定的时间间隔时,它将生成一个中断,以通知系统更新时间。
  1. 唤醒系统:RTC定时器中断还可以用于唤醒系统。在某些情况下,系统可以进入低功耗睡眠模式以节省能源。RTC定时器可以设置为在特定时间唤醒系统,以便执行必要的任务,然后再次进入睡眠模式。
  1. 操作系统中的处理:操作系统通常会注册一个中断处理程序来处理RTC定时器中断。当中断发生时,操作系统可以执行与时间相关的任务,例如更新系统时钟、触发定时任务或处理唤醒事件。
  1. 应用程序中的使用:应用程序也可以使用RTC定时器中断来执行特定的定时任务。例如,一个应用程序可以使用RTC中断来执行定时提醒或定时采集数据等任务。
总之,RTC定时器中断是一种重要的硬件机制,用于处理与时间相关的任务和事件。它可以用于操作系统和应用程序,以便在特定的时间间隔内执行任务、同步时间、管理电源和唤醒系统等。这对于许多计算机应用和嵌入式系统非常重要。
 

三、代码实现

四、log

我们可以从kernel log中看到 rtc_timer_callback函数每10s被调用一次,符合我们当前的设计。

五、总结

本文主要介绍了一种RTC定时器唤醒workqueue的方法,并提供了一份完整的demo。
  • Code Snipaste
  • rtc handler
  • 内存分配函数的区别MTK平台(Android T)根据硬件区分射频参数
    Loading...