在Android开发板上,我试图根据GPIO上收到的中断唤醒AP,有人可以帮我吗?
我对此的理解是:
我们需要创建一个输入设备并根据收到的中断更新一个事件到这个设备。然后从应用程序中,我相信操作系统会发送一个事件发生通知,然后我们需要使用唤醒锁来唤醒 AP。
请让我知道我的理解是否正确?如果是,那你能告诉我需要注册哪种输入设备(EV_PWR,EV_KEY ..),应用程序如何获得通知,我们可以从驱动程序中唤醒AP吗?
在Android开发板上,我试图根据GPIO上收到的中断唤醒AP,有人可以帮我吗?
我对此的理解是:
我们需要创建一个输入设备并根据收到的中断更新一个事件到这个设备。然后从应用程序中,我相信操作系统会发送一个事件发生通知,然后我们需要使用唤醒锁来唤醒 AP。
请让我知道我的理解是否正确?如果是,那你能告诉我需要注册哪种输入设备(EV_PWR,EV_KEY ..),应用程序如何获得通知,我们可以从驱动程序中唤醒AP吗?
通用输入事件传播模型(简化):当输入发生时,内核会生成一个事件。输入事件由输入事件处理程序读取,并分派到前台应用程序。很少有密钥被发送到某个特定的应用程序,而不是被发送到前台应用程序。例如,键盘中的 Windows 按钮被发送到开始菜单,播放/暂停按钮被发送到媒体播放器应用程序,即使它不在前台。
在 Android system_server 从内核读取事件的情况下,它被传递到前台应用程序/视图。这适用于所有输入事件,除了由 Android 的窗口管理器或 systemui 处理的电源键、主页按钮等。PhoneWindowManager.java 有窗口管理器代码,当按下电源键时它会得到 KEYCODE_POWER 事件。在这种情况下,如果屏幕打开并且没有保持显示的唤醒锁定,则屏幕被锁定(通过在 PowerManager 中调用 goToSleep),类似地,如果屏幕关闭,则屏幕被打开(通过在 PowerManager 中调用 wakeUp)。
当按下电源按钮 &释放。代码将根据当前屏幕状态调用 wakeUp 或 goToSleep。