gpt4 book ai didi

android - 如何使用 GPIO 将 Android 嵌入式板从挂起状态唤醒

转载 作者:行者123 更新时间:2023-12-01 16:34:07 25 4
gpt4 key购买 nike

我目前正在致力于在嵌入式系统(基于 Freescale i.MX6)上移植 Android 4.4 (Kitkat)。为了开始我的开发,我使用了一些开发套件(Wandboard、Boundary Device 的 BD-SL)。

在对我的定制板进行电源管理时,我可以毫不费力地将开发套件置于挂起状态。但是,我找不到如何将它们从 sleep 中唤醒(除了重新启动它们之外)。唤醒系统的预期方式是通过 GPIO 获得中断(例如基于 Android 的手机上的开关按钮)。

我想知道使用 GPIO 中断将 Android 设备从挂起状态唤醒的常用方法是什么。尽管这个问题看起来微不足道,但我很难从谷歌和专门论坛上的各种搜索中收集我需要的所有信息。我找到了很多信息,但没有涵盖整个主题。可能是因为我缺少所需的背景,所以在没有代码示例的情况下我很难将所有内容放在一起。我猜我不是唯一遇到这种情况的人,因此写了这篇文章。

以下是我找到的一些信息:

最佳答案

最后,我挖得太深了。代码示例就在我眼皮子底下。我需要的一切都在 BD-SL devkit 的板特定代码中(可以在 mydroid/BD-SL-i.MX6/kernel_imx/arch/arm/mach-mx6/board- 的 BD-SL 源代码树中找到) mx6_nitrogen6x.c)

此代码特定于 Freescale i.MX6 提供的内核,但不同部分应该可以轻松移植/适应其他 Android 嵌入式平台。

GPIO 定义。为了简单起见,我跳过了 GPIO 引脚多路复用器。该引脚需要复用至 GPIO 功能:

#define GP_ONOFF_KEY        IMX_GPIO_NR(2, 3)

输入键的定义

#define GPIO_BUTTON(gpio_num, ev_code, act_low, descr, wake)    \
{ \
.gpio = gpio_num, \
.type = EV_KEY, \
.code = ev_code, \
.active_low = act_low, \
.desc = "btn " descr, \
.wakeup = wake, \
}

static struct gpio_keys_button buttons[] = {
GPIO_BUTTON(GP_ONOFF_KEY, KEY_POWER, 1, "key-power", 1),
};

对应平台数据和平台设备的定义:

static struct gpio_keys_platform_data button_data = {
.buttons = buttons,
.nbuttons = ARRAY_SIZE(buttons),
};

static struct platform_device button_device = {
.name = "gpio-keys",
.id = -1,
.num_resources = 0,
.dev = {
.platform_data = &button_data,
}
};

平台设备注册

static void __init add_device_buttons(void)
{
platform_device_register(&button_device);
}

/*!
* Board specific initialization.
*/
static void __init board_init(void)
{
//...

add_device_buttons();

//...
}

为了完整性,初始化数据结构指向主板特定的初始化

/*
* initialize data structure.
*/
MACHINE_START(MX6_NITROGEN6X, "Boundary Devices Nitrogen6X/SABRE Lite Board")
/* Maintainer: Boundary Devices */
.boot_params = MX6_PHYS_OFFSET + 0x100,
.fixup = fixup_mxc_board,
.map_io = mx6_map_io,
.init_irq = mx6_init_irq,
.init_machine = board_init,
.timer = &timer,
.reserve = reserve,
MACHINE_END

关于android - 如何使用 GPIO 将 Android 嵌入式板从挂起状态唤醒,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27251913/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com