当前位置: 首页 > 知识库问答 >
问题:

如何使用gpio键中断从睡眠中唤醒系统

葛桐
2023-03-14

更新:我将键盘布局文件(gpio-keys.kl)更改为以下内容:

key 115   POWER     WAKE
key 114   POWER     WAKE

如图所示,我现在在Android中将音量按钮注册为POWER键,它会唤醒系统。但是,我希望任何通用 gpio 键都能唤醒系统。如上所述更改密钥布局文件的事实告诉我,也许问题出在Android端,而不是Linux内核端。不确定。也许在Android中有一些文件(策略文件等),我可以在其中为所选的gpio密钥提供唤醒功能,这与POWER密钥具有此唤醒功能的方式大致相同。

请让我知道你的想法。

原始:至于一些背景,我的硬件是三星Galaxy S2-i777,它运行在Exynos4210 SoC(基于ARM的处理器)上。操作系统是LineageOS 14.1。我试图使用gpio-key中断从睡眠中唤醒我的系统,但我没有成功。

我已经在我的板文件中配置了gpio键(没有旧内核版本的设备树)。我定义gpio键的片段如下:

struct gpio_keys_button u1_buttons[] = {
{
    .code = KEY_VOLUMEUP,
    .gpio = GPIO_VOL_UP,
    .active_low = 1,
    .type = EV_KEY,
    .wakeup = 1,
    .isr_hook = sec_debug_check_crash_key,
    .debounce_interval = 10,
},  
};

我省略了注册平台部分等,但如果需要可以显示。如上所述,我将布尔属性wakeup设置为1,以使我的gpio gpio_VOL_UP充当唤醒源。同样如图所示,我想将音量按钮用作gpio键。我还修改了密钥布局文件(gpio keys.kl),如下所示:

key 115   VOLUME_UP       WAKE
key 114   VOLUME_DOWN     WAKE

当我在天堂操作系统中检查我的本地终端时,我看到我的gpio密钥被定义为wakeup_sources,并且wakeup被启用。我还看到我的音量按钮正在生成中断(cat/proc/interrupts)。

当我的系统进入睡眠状态时,音量按钮(gpio键)无法唤醒我的系统。唯一能唤醒我的系统的是电源按钮(它似乎也是一个gpio键)。

您认为问题可能是什么?使用 gpio 键中断唤醒系统所需的一般步骤是什么?即使它不是特定于我的硬件,也许这些步骤的一般布局或某些注意事项也会对我有所帮助,因为我可能缺少一些东西。谢谢!

共有1个答案

边意
2023-03-14

首先,我建议在挂起状态下按下音量按钮时检查控制台是否有任何日志消息。

第二,我建议您探测硬件线路,以检查当系统处于深度睡眠状态时,每当您按下音量按钮时,是否实际生成中断。

如果未生成中断,则在低功耗模式下可能会禁用硬件部分,您将无法唤醒系统。

 类似资料:
  • 下面我们来看看睡眠和醒来的基本模型。假设有两个系统调用作为睡眠和唤醒。呼叫睡眠的过程将被阻止,而调用的过程将被唤醒。 有一个叫做生产者消费者问题的流行例子,它是模拟睡眠和唤醒机制的最流行的问题。 睡眠和觉醒的概念非常简单。如果关键部分不是空的,那么该过程将进入休眠状态。它将被临界区内正在执行的其他进程唤醒,以便进程可以进入临界区。 在生产者消费者问题中,让我们说有两个过程,一个过程写某事,而另一个

  • 我目前正在将Android 4.4(Kitkat)移植到嵌入式系统(基于Freescale I.MX6)。为了开始我的开发,我使用了一些开发套件(Wandboard、Boundary Device的BD-SL)。 在处理自定义板的电源管理时,我没有遇到暂停开发套件的问题。但是,我找不到如何将它们从睡眠中唤醒(除了电源循环它们)。唤醒系统的预期方式是在GPIO上获得中断(例如,基于Android的手

  • 休眠与唤醒 [HW,ACPI] acpi_sleep={s3_bios,s3_mode,s3_beep,s4_nohwsig,old_ordering,nonvs,sci_force_enable} ACPI休眠选项。 (1)s3_bios和s3_mode与显卡有关。计算机从S3状态(挂起到内存)恢复时,硬件需要被正确的初始化。这对大多数硬件都不是问题,但因为显 卡是由BIOS初始化的,内核无法获

  • 问题内容: 例如,有没有一种我可以执行的方法 然后在需要时“唤醒”睡眠的goroutine? 我看到里面有一个,但是我无法调用它。有什么想法吗? 问题答案: 没有办法中断,但是,您可以使用和语句来获取所需的功能。 一个简单的例子来展示基本思想: http://play.golang.org/p/7uKfItZbKG 在此示例中,我们生成了一个信令goroutine来告知main停止暂停。主要是在两

  • 本文向大家介绍HTML5如何唤醒APP?相关面试题,主要包含被问及HTML5如何唤醒APP?时的应答技巧和注意事项,需要的朋友参考一下 有以下几种方式 URL Scheme:最常见 Intent: // :Android Universal Link : iOS, 通过传统的 HTTP 链接即可打开 APP 唤醒途径 iframe的src a标签的src window.location 参考资料:

  • 问题内容: 我正在用C++编写程序。我注意到,它获得了许多线程,它们的目的是定期执行某项操作,其中有3或4个线程。我决定通过编写一个调度程序服务来重构,以便使用这些线程的其他地方可以预订该服务,这应该将我随时运行的额外事件线程的数量减少到一个。 我还没有使用此代码的代码。在开始编写之前,我想知道是否有可能,并获得有关我的设计的一些反馈。我要完成的任务的简要说明是这样的: 添加事件 呼叫者提供事件和