0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

按键如何唤醒系统官方demo

麦辣鸡腿堡 来源:嵌入式Linux系统开发 作者:嵌入式Linux系统开 2023-07-30 15:43 次阅读

在消费类电子中,功耗是很重要的,甚至项目后期一直在调功耗,看看哪里还可以再省电。由此就有了 Linux电源管理子系统,该子系统包含很多方面:什么时候可以降帧、什么时候可以关掉其他 CPU core、系统运行时如果某外设很少用需要让它运行时休眠、系统休眠时要保证哪些外设可以唤醒系统。

博主今天要讨论的,就是一个按键如何唤醒系统,类似于手机电源键。

这个功能并不是新功能,所以 Linux 内部有一个 demo 可以使用,先教大家如何使用该demo,然后较大家如何撰写中断唤醒系统驱动。

官方 demo

demo 目录:/kernel4.14/drivers/input/keyboard/gpio_keys.c

该驱动是专门为按键准备的,是一个身经百战的驱动,任何时候测试按键中断或者中断唤醒系统都可以用它,很多时候比自己写的驱动靠谱。

要想使用该驱动,首先在该目录的 Makefile 中增加:

obj-y  += gpio_keys.o

设备树中增加:

gpio-keys {
  compatible = "gpio-keys";
  #address-cells = < 1 >;
  #size-cells = < 0 >;
  autorepeat;
  key0 {
   label = "GPIO Key Enter";
   linux,code = < KEY_ENTER >;
   gpios = < &gpio1 18 GPIO_ACTIVE_LOW >;
   gpio-key,wakeup;
  };
};

compatible 属性是 “gpio-keys”,gpio_keys.c文件的674行会匹配这个属性,匹配到了该驱动就会运行。

linux,code 属性是按键值,Linux 对所有按键事件都有编号,所以KEY_ENTER实际是一个数字,是驱动向上层报告的一个按键值。

gpios 属性是标明哪一个 GPIO 口,低电平触发,大家可以自己选一个 GPIO。

gpio-key,wakeup是代表此GPIO支持中断唤醒,你也可以写成:wakeup-source。新老版本而已。

修改就是这么简单,不过语法要符合各位手中的开发板平台。然后编译出内核和设备树文件,下载到板子中。(Linux内核根目录会有 .config 文件,确保 CONFIG_PM_SLEEP=y 有打开)

如果驱动加载成功,在 /proc/interrupts 中可以看到:

图片

从左往右第一列是软件中断号(唯一)。

第二列是 CPU,表示该中断在该CPU上触发了多少次,多核会有多列。

第三列是中断控制器,imx6ull开发板根中断控制器是GPC,外部中断控制器是gpio-mxc,两者是级联关系。

第四列是硬件中断号,也就是GPIO口编号。

第五列表示该中断是边沿触发还是电平触发。

第六列是中断名称,可以找到一个 GPIO Key Enter,如果驱动加载成功就能看到,如果失败就看不到。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 嵌入式
    +关注

    关注

    4984

    文章

    18299

    浏览量

    288632
  • 驱动
    +关注

    关注

    11

    文章

    1718

    浏览量

    84359
  • Linux
    +关注

    关注

    87

    文章

    10993

    浏览量

    206748
  • 按键
    +关注

    关注

    4

    文章

    220

    浏览量

    57346
收藏 人收藏

    评论

    相关推荐

    触摸按键 唤醒

    全是触摸按键单片机停机休眠 如何 唤醒{:1:}
    发表于 09-27 12:02

    为什么官方的移植DEMO要下载到FLASH?STlink仿真模式问题?

    我最近在做STM32F107移植uCOSii,遇到几个问题,为什么官方的移植DEMO要下载到FLASH?在用STlink仿真时,使用JATG模式出现错误,而使用SWD就正常运行呢?备注:编译器
    发表于 03-27 15:04

    【OneNET麒麟座试用体验】2.按键与点灯(Demo按键扫描有错喔)

    对于一款单片机来说,最简单就是I/O操作,本次测评按键和点灯~ 官方给出的Demo地址:http://pan.baidu.com/s/1pKKPgPt 就以按键
    发表于 03-29 16:07

    【Thunderboard Sense试用体验】之(四)体验官方Demo

    体验】之(五)探索图形化监控【Thunderboard Sense试用体验】之(结项报告)隧道状态感知系统本节介绍官方Demo,希望通过这些Demo的介绍,为快速入门提供帮助。
    发表于 07-02 23:08

    应广单片机休眠和按键唤醒介绍

    对应电池供电的产品,在不使用的时候,单片机和外设都应该进入休眠状态,用于减少对电池电量消耗.在使用的时候又能够通过按键,或是其他信号唤醒系统,然后进入正常工作状态.在电压V3.3V的情况下,应广
    发表于 07-21 09:12

    请问一下ch573有没有单独的rtc唤醒demo

    请问ch573有没有单独的rtc唤醒demo?是在不使用ble的情况下。573/571/582三款的rtc唤醒是相同的套路吗?
    发表于 07-26 06:10

    求个简单的单个触摸按键Demo

    哪位大佬能给个简单的单个触摸按键Demo让俺瞧瞧,已有CH582d的触摸按键库, 有点看不懂啊,求大佬指条路,非常感谢!
    发表于 08-10 07:08

    esp32-c3进入light-sleep模式后,用按键唤醒,长时间睡眠用按键唤醒不了怎么解决?

    esp32-c3进入light-sleep模式后,用按键唤醒,但长时间(大概20分钟)睡眠用按键唤醒不了,会卡死,短时间就可以用按键
    发表于 02-14 07:04

    常用的通过按键唤醒休眠的系统怎么实现?

    请教各位高人,实测新唐N76E003 的外部中断INT0及INT1好像跟TIME0和TIME1有联系,在空闲模式和掉电模式下,关掉TIME0和TIME1 外部中断INT0及INT1也跟着关掉了。 那么问题来了:常用的通过按键唤醒休眠的
    发表于 06-14 07:18

    k210官方demo有最新的吗?

    k210官方demo有最新的吗,我看这里都是三年前的,有些demo怎么进行测试描述的不是很清晰想问下
    发表于 09-14 07:24

    蓝牙芯片休眠唤醒是外部按键中断还是软件唤醒效率更高?

    蓝牙芯片休眠唤醒是外部按键中断,还是软件唤醒效率更高?
    发表于 10-17 08:25

    cc2530 按键唤醒功耗模式PM3例程

    功能描述cc2530 按键唤醒功耗模式PM3//CC2530的休眠和低功耗
    发表于 11-29 20:36 5次下载
    cc2530 <b class='flag-5'>按键</b><b class='flag-5'>唤醒</b>功耗模式PM3例程

    APM32F030C8T6_软件问题_进入stop模式之后无法使用按键唤醒

    APM32F030C8T6_软件问题_进入stop模式之后无法使用按键唤醒
    发表于 11-09 21:03 2次下载
    APM32F030C8T6_软件问题_进入stop模式之后无法使用<b class='flag-5'>按键</b><b class='flag-5'>唤醒</b>

    按键唤醒系统验证方法

    I/O设备,将它们置于低功耗状态,使处理器进入空闲状态,唤醒最快,耗电比其它standby, mem, disk方式高 standby:除了冻结I/O设备外,还会暂停系统,唤醒较快,耗电比其它 mem
    的头像 发表于 07-30 15:53 556次阅读
    <b class='flag-5'>按键</b><b class='flag-5'>唤醒</b><b class='flag-5'>系统</b>验证方法

    中断唤醒系统demo

    博主写的 demo 博主下面给的是简化版,并且自测OK,分享给大家,以后如果需要可以copy xxx.c # include # include # include # include
    的头像 发表于 07-30 16:06 437次阅读