linux - 通过 GPIO 信号启用从 sleep 模式唤醒

标签 linux arm gpio

我需要通过 GPIO 信号将运行 Angstrom 操作系统的 BeagleBone 设备从 sleep 模式唤醒。

我读到使用 /sys/class/gpio/gpioXX/power/wakeup 是可行的方法。问题是电源目录下没有任何“唤醒”文件。那么,我应该如何进行激活呢?有没有不重新编译内核的解决方案?

我可以很好地读取 GPIO 值,所以 GPIO sysfs 正在工作。

最佳答案

OMAP4xxx 内核中的 GPIO 驱动程序内部存在问题,当 GPIO bank 在 mux 子系统初始化之前被初始化时。这有效地防止了在 GPIO 模式下被引脚唤醒。

您可以通过阅读gpio_bank 结构的mux[] 字段(文件 drivers/omap/gpio-omap.c)来检查这一点。它们不应包含 NULL 值。

void omap_gpio_mod_init(struct gpio_bank *bank) 函数末尾有一个 for 循环。 您需要删除它,并在 static int omap_gpio_request(struct gpio_chip *chip, unsigned offset) 函数的末尾初始化 mux 指针。

这将确保它会被正确初始化。

此外,据我所知,去抖动时钟存在一些问题。如果我的第一个建议不起作用,请尝试禁用该引脚的去抖动。

关于linux - 通过 GPIO 信号启用从 sleep 模式唤醒,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14582518/

相关文章:

linux - 使用 net.tcp 绑定(bind)时 MONO 返回连接被拒绝

python - 当有 UTF-8 字符时,如何将输出定向到文件?

linux - 用于日志过滤的 RSYSLOG 自定义配置

linux -/proc/net/tcp 中 tx_queue & rx_queue 的单位

c - STM32F103 Timer2不中断

linux-kernel - 如何在 linux 内核设备树中定义时钟多路复用器

c - ASF4 Microchip API定时器驱动复位函数

linux - 为 BBB 交叉编译应用程序的工具链

python - 树莓派 GPIO :s 上的奇怪 python 错误

linux - 更改 gpio 值时通知