我需要通过 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/