0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

按鍵如何喚醒系統(tǒng)官方demo

麥辣雞腿堡 ? 來源:嵌入式Linux系統(tǒng)開發(fā) ? 作者:嵌入式Linux系統(tǒng)開 ? 2023-07-30 15:43 ? 次閱讀

在消費(fèi)類電子中,功耗是很重要的,甚至項目后期一直在調(diào)功耗,看看哪里還可以再省電。由此就有了 Linux電源管理子系統(tǒng),該子系統(tǒng)包含很多方面:什么時候可以降幀、什么時候可以關(guān)掉其他 CPU core、系統(tǒng)運(yùn)行時如果某外設(shè)很少用需要讓它運(yùn)行時休眠、系統(tǒng)休眠時要保證哪些外設(shè)可以喚醒系統(tǒng)。

博主今天要討論的,就是一個按鍵如何喚醒系統(tǒng),類似于手機(jī)電源鍵。

這個功能并不是新功能,所以 Linux 內(nèi)部有一個 demo 可以使用,先教大家如何使用該demo,然后較大家如何撰寫中斷喚醒系統(tǒng)驅(qū)動。

官方 demo

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

該驅(qū)動是專門為按鍵準(zhǔn)備的,是一個身經(jīng)百戰(zhàn)的驅(qū)動,任何時候測試按鍵中斷或者中斷喚醒系統(tǒng)都可以用它,很多時候比自己寫的驅(qū)動靠譜。

要想使用該驅(qū)動,首先在該目錄的 Makefile 中增加:

obj-y  += gpio_keys.o

設(shè)備樹中增加:

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行會匹配這個屬性,匹配到了該驅(qū)動就會運(yùn)行。

linux,code 屬性是按鍵值,Linux 對所有按鍵事件都有編號,所以KEY_ENTER實(shí)際是一個數(shù)字,是驅(qū)動向上層報告的一個按鍵值。

gpios 屬性是標(biāo)明哪一個 GPIO 口,低電平觸發(fā),大家可以自己選一個 GPIO。

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

修改就是這么簡單,不過語法要符合各位手中的開發(fā)板平臺。然后編譯出內(nèi)核和設(shè)備樹文件,下載到板子中。(Linux內(nèi)核根目錄會有 .config 文件,確保 CONFIG_PM_SLEEP=y 有打開)

如果驅(qū)動加載成功,在 /proc/interrupts 中可以看到:

圖片

從左往右第一列是軟件中斷號(唯一)。

第二列是 CPU,表示該中斷在該CPU上觸發(fā)了多少次,多核會有多列。

第三列是中斷控制器,imx6ull開發(fā)板根中斷控制器是GPC,外部中斷控制器是gpio-mxc,兩者是級聯(lián)關(guān)系。

第四列是硬件中斷號,也就是GPIO口編號。

第五列表示該中斷是邊沿觸發(fā)還是電平觸發(fā)。

第六列是中斷名稱,可以找到一個 GPIO Key Enter,如果驅(qū)動加載成功就能看到,如果失敗就看不到。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 嵌入式
    +關(guān)注

    關(guān)注

    5054

    文章

    18917

    瀏覽量

    300996
  • 驅(qū)動
    +關(guān)注

    關(guān)注

    12

    文章

    1814

    瀏覽量

    85058
  • Linux
    +關(guān)注

    關(guān)注

    87

    文章

    11182

    瀏覽量

    208522
  • 按鍵
    +關(guān)注

    關(guān)注

    4

    文章

    223

    瀏覽量

    57542
收藏 人收藏

    評論

    相關(guān)推薦

    觸摸按鍵 喚醒

    全是觸摸按鍵單片機(jī)停機(jī)休眠 如何 喚醒{:1:}
    發(fā)表于 09-27 12:02

    為什么官方的移植DEMO要下載到FLASH?STlink仿真模式問題?

    我最近在做STM32F107移植uCOSii,遇到幾個問題,為什么官方的移植DEMO要下載到FLASH?在用STlink仿真時,使用JATG模式出現(xiàn)錯誤,而使用SWD就正常運(yùn)行呢?備注:編譯器
    發(fā)表于 03-27 15:04

    【OneNET麒麟座試用體驗(yàn)】2.按鍵與點(diǎn)燈(Demo按鍵掃描有錯喔)

    對于一款單片機(jī)來說,最簡單就是I/O操作,本次測評按鍵和點(diǎn)燈~ 官方給出的Demo地址:http://pan.baidu.com/s/1pKKPgPt 就以按鍵
    發(fā)表于 03-29 16:07

    【Thunderboard Sense試用體驗(yàn)】之(四)體驗(yàn)官方Demo

    體驗(yàn)】之(五)探索圖形化監(jiān)控【Thunderboard Sense試用體驗(yàn)】之(結(jié)項報告)隧道狀態(tài)感知系統(tǒng)本節(jié)介紹官方Demo,希望通過這些Demo的介紹,為快速入門提供幫助。
    發(fā)表于 07-02 23:08

    應(yīng)廣單片機(jī)休眠和按鍵喚醒介紹

    對應(yīng)電池供電的產(chǎn)品,在不使用的時候,單片機(jī)和外設(shè)都應(yīng)該進(jìn)入休眠狀態(tài),用于減少對電池電量消耗.在使用的時候又能夠通過按鍵,或是其他信號喚醒系統(tǒng),然后進(jìn)入正常工作狀態(tài).在電壓V3.3V的情況下,應(yīng)廣
    發(fā)表于 07-21 09:12

    求個簡單的單個觸摸按鍵Demo

    哪位大佬能給個簡單的單個觸摸按鍵Demo讓俺瞧瞧,已有CH582d的觸摸按鍵庫, 有點(diǎn)看不懂啊,求大佬指條路,非常感謝!
    發(fā)表于 08-10 07:08

    esp32-c3進(jìn)入light-sleep模式后,用按鍵喚醒,長時間睡眠用按鍵喚醒不了怎么解決?

    esp32-c3進(jìn)入light-sleep模式后,用按鍵喚醒,但長時間(大概20分鐘)睡眠用按鍵喚醒不了,會卡死,短時間就可以用按鍵
    發(fā)表于 02-14 07:04

    常用的通過按鍵喚醒休眠的系統(tǒng)怎么實(shí)現(xiàn)?

    請教各位高人,實(shí)測新唐N76E003 的外部中斷INT0及INT1好像跟TIME0和TIME1有聯(lián)系,在空閑模式和掉電模式下,關(guān)掉TIME0和TIME1 外部中斷INT0及INT1也跟著關(guān)掉了。 那么問題來了:常用的通過按鍵喚醒休眠的
    發(fā)表于 06-14 07:18

    k210官方demo有最新的嗎?

    k210官方demo有最新的嗎,我看這里都是三年前的,有些demo怎么進(jìn)行測試描述的不是很清晰想問下
    發(fā)表于 09-14 07:24

    藍(lán)牙芯片休眠喚醒是外部按鍵中斷還是軟件喚醒效率更高?

    藍(lán)牙芯片休眠喚醒是外部按鍵中斷,還是軟件喚醒效率更高?
    發(fā)表于 10-17 08:25

    cc2530 按鍵喚醒功耗模式PM3例程

    功能描述cc2530 按鍵喚醒功耗模式PM3//CC2530的休眠和低功耗
    發(fā)表于 11-29 20:36 ?5次下載
    cc2530 <b class='flag-5'>按鍵</b><b class='flag-5'>喚醒</b>功耗模式PM3例程

    APM32F030C8T6_軟件問題_進(jìn)入stop模式之后無法使用按鍵喚醒

    APM32F030C8T6_軟件問題_進(jìn)入stop模式之后無法使用按鍵喚醒
    發(fā)表于 11-09 21:03 ?2次下載
    APM32F030C8T6_軟件問題_進(jìn)入stop模式之后無法使用<b class='flag-5'>按鍵</b><b class='flag-5'>喚醒</b>

    【高云半導(dǎo)體Combat開發(fā)套件試用體驗(yàn)】Combat demo調(diào)試運(yùn)行及小建議

    ,但本人能夠真正能跑起來的 demo 沒有幾個,這里基于官方提供的 gw2a_test 例程一步一步調(diào)試修改了幾個基本的 demo ,按鍵、 LED 、 UART 。 為了后續(xù)方便添
    的頭像 發(fā)表于 11-10 14:47 ?966次閱讀
    【高云半導(dǎo)體Combat開發(fā)套件試用體驗(yàn)】Combat <b class='flag-5'>demo</b>調(diào)試運(yùn)行及小建議

    按鍵喚醒系統(tǒng)驗(yàn)證方法

    設(shè)備,將它們置于低功耗狀態(tài),使處理器進(jìn)入空閑狀態(tài),喚醒最快,耗電比其它standby, mem, disk方式高 standby:除了凍結(jié)I/O設(shè)備外,還會暫停系統(tǒng),喚醒較快,耗電比其它 mem
    的頭像 發(fā)表于 07-30 15:53 ?737次閱讀
    <b class='flag-5'>按鍵</b><b class='flag-5'>喚醒</b><b class='flag-5'>系統(tǒng)</b>驗(yàn)證方法

    中斷喚醒系統(tǒng)demo

    博主寫的 demo 博主下面給的是簡化版,并且自測OK,分享給大家,以后如果需要可以copy xxx.c # include # include # include # include
    的頭像 發(fā)表于 07-30 16:06 ?591次閱讀