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

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

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

詳解ARM WFI和WFE指令

安芯教育科技 ? 來(lái)源:老秦談芯 ? 2023-06-07 17:32 ? 次閱讀

今天來(lái)看兩個(gè)特殊的指令,WFI(Wait For Interrupt)和WFE(Wait For Event)。這兩條指令的語(yǔ)法非常簡(jiǎn)單,不需要帶任何參數(shù)。如果大家讀過(guò)前面文章,肯定對(duì)中斷(interrupt)不陌生。至于事件(event),與中斷有點(diǎn)像,不同的是處理器對(duì)二者的處理方式不一樣??梢韵葘⑹录斫獬商厥獾闹袛唷?/p>

先看WFI,首先,我們研究一下ARM處理器進(jìn)入低功耗狀態(tài)的機(jī)制。當(dāng)一個(gè)處理器核的工作負(fù)載不高時(shí),可以通過(guò)降壓降頻(DVFS)的方式來(lái)讓處理器運(yùn)行在較低的頻率,從而降低整個(gè)芯片的功耗。如果處理器的沒(méi)有工作負(fù)載,完全空閑下來(lái),這時(shí)就需要其它方法讓處理器進(jìn)入更低的功耗模式。如果大家對(duì)ACPI有一些了解,就知道其中定義的“睡眠(sleep)”模式就有好幾種,每種模式對(duì)應(yīng)的電源時(shí)鐘狀態(tài)不同。處理器芯片進(jìn)入空閑狀態(tài)的大體順序應(yīng)該是這樣的,應(yīng)用處理器(Application Processor)判斷是否具備進(jìn)入空閑狀態(tài)的條件,如果滿足條件則進(jìn)行一些準(zhǔn)備工作;發(fā)消息給系統(tǒng)控制器(System control processor);等待全部操作執(zhí)行完;執(zhí)行WFI進(jìn)入空閑狀態(tài);等待系統(tǒng)控制器做出下一步動(dòng)作,或者關(guān)閉時(shí)鐘,或者關(guān)閉電源等等。

從WFI這個(gè)名字可以看出,喚醒(wake up)處理器的一個(gè)機(jī)制就是發(fā)送中斷給處理器。與A系列處理器搭配的中斷處理器是GIC,這在前面介紹過(guò)。GIC接到中斷后,產(chǎn)生喚醒信號(hào)給系統(tǒng)控制器或者是電源管理模塊(PowerManagement Unit),系統(tǒng)控制器或者PMU根據(jù)處理器核的狀態(tài)以及系統(tǒng)狀態(tài),決定下一步的動(dòng)作。如果喚醒信號(hào)是給系統(tǒng)控制器,則可以考慮接到系統(tǒng)控制器的中斷處理接口,比如,采用M系列作為系統(tǒng)控制器時(shí),可以接到NVIC(Nested Vectored Interrupt Controller)。喚醒機(jī)制要根據(jù)具體情況具體分析,法無(wú)定法。

WFE與WFI很像,只不過(guò)等待的是事件,也就是說(shuō)系統(tǒng)可以通過(guò)發(fā)送事件來(lái)喚醒應(yīng)用處理器。WFE的一個(gè)典型應(yīng)用場(chǎng)景是自旋鎖。當(dāng)多個(gè)應(yīng)用處理器競(jìng)爭(zhēng)同一個(gè)臨界區(qū)資源時(shí),只有一個(gè)應(yīng)用處理器能獲得權(quán)限,其它的應(yīng)用處理器需要等待臨界區(qū)資源被釋放,也就是這些應(yīng)用處理器“自旋”。當(dāng)然操作系統(tǒng)也可以采取其它的處理方式,比如把時(shí)間片分給其它的應(yīng)用程序,不過(guò)這不在今天的研究范疇。顯然,應(yīng)用處理器簡(jiǎn)單的“自旋”對(duì)于功耗不友好,一個(gè)解決辦法就是讓這些“自旋”的應(yīng)用處理器進(jìn)入一種低功耗模式,獲得臨界區(qū)資源的應(yīng)用處理器在完成當(dāng)前進(jìn)程后,喚醒這些應(yīng)用處理器去重新競(jìng)爭(zhēng)臨界區(qū)資源。這時(shí)的喚醒機(jī)制不宜采取中斷方式,因?yàn)樾什桓?。ARM中采用的是事件方式,即通過(guò)執(zhí)行SEV(Send Event)指令向其它應(yīng)用處理器發(fā)送喚醒的事件。

WFI和WFE還有一種變體形式,WFIT和WFET,其中的T是超時(shí)(timeout)的意思,也就是說(shuō),喚醒機(jī)制多了一種超時(shí)的方式,沒(méi)有中斷或者事件產(chǎn)生,時(shí)間到了也會(huì)發(fā)出喚醒。

審核編輯:湯梓紅

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

    關(guān)注

    68

    文章

    19286

    瀏覽量

    229852
  • 指令
    +關(guān)注

    關(guān)注

    1

    文章

    607

    瀏覽量

    35714
  • 中斷
    +關(guān)注

    關(guān)注

    5

    文章

    898

    瀏覽量

    41502
  • wfi
    wfi
    +關(guān)注

    關(guān)注

    0

    文章

    2

    瀏覽量

    1464

原文標(biāo)題:ARM系列 -- WFI和WFE

文章出處:【微信號(hào):Ithingedu,微信公眾號(hào):安芯教育科技】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    STM32F0 stop模式WFIWFE區(qū)別是什么?

    同題:STM32F0 stop模式WFIWFE區(qū)別?求大神指點(diǎn),謝謝!
    發(fā)表于 04-16 06:39

    L138-arm不能進(jìn)入wfi模式

    ?? 在L138的arm中執(zhí)行一個(gè)小程序,希望執(zhí)行完成之后進(jìn)入wfi,因此寫了一個(gè)匯編 .global?? _armidle _armidle: mcr p15,#0,r0,c7,c0,#4
    發(fā)表于 06-21 07:00

    ARM 無(wú)法進(jìn)入WFI 模式

    我們的是使用OMAP138, ARM使用linux系統(tǒng), DSP 是BIOS系統(tǒng) 現(xiàn)在想要讓ARM 的linux 系統(tǒng)進(jìn)入WFI 模式(?ARM Wait-For-Interrupt
    發(fā)表于 06-21 12:51

    STM32低功耗模式有哪幾種

    方式:**內(nèi)核寄存器SLEEPDEEP = 0,調(diào)用WFIWFE進(jìn)入睡眠模式。SLEEPONEXIT = 0 立即睡眠,SLEEPONEXIT = 1,退出睡眠。喚醒方式:_WFI任意中斷喚醒。_
    發(fā)表于 08-02 08:06

    一文詳解ARM指令ARM匯編

    1、2、3、ARM嵌入式開發(fā)之ARM指令ARM匯編入門4、ARM嵌入式開發(fā)之ARM匯編高級(jí)教程
    發(fā)表于 12-23 06:45

    ARM是怎樣使用多種低功耗模式來(lái)節(jié)省功耗的

    1. 簡(jiǎn)介本文STM32 為例, Crotex 系列屬于 ARMv7 架構(gòu)。ARMv7-M 支持使用等待中斷 (WFI) 和等待事件 (WFE) 指令作為系統(tǒng)電源管理的一部分;ARMv7-M 本身有
    發(fā)表于 02-11 07:26

    求分享基于WFE的睡眠示例

    你好 ,我想獲得一些基于 WFE 的睡眠示例。在 stm32cube 示例中,我看到它們中的大多數(shù)都類似于基于 WFI 的示例。請(qǐng)求某人幫助我獲取此信息。提前致謝。
    發(fā)表于 02-08 07:05

    arm匯編指令詳解

    arm匯編指令詳解
    發(fā)表于 02-11 10:51 ?216次下載
    <b class='flag-5'>arm</b>匯編<b class='flag-5'>指令</b><b class='flag-5'>詳解</b>

    arm指令詳解手冊(cè)(精華)

    arm指令詳解手冊(cè)
    發(fā)表于 03-03 16:30 ?242次下載
    <b class='flag-5'>arm</b><b class='flag-5'>指令</b><b class='flag-5'>詳解</b>手冊(cè)(精華)

    ARM指令詳解

    ARM指令詳解 內(nèi)容提要 ARM指令ARM指令
    發(fā)表于 03-09 09:39 ?263次下載
    <b class='flag-5'>ARM</b><b class='flag-5'>指令</b>集<b class='flag-5'>詳解</b>

    詳解ARM常用的偽指令資料下載

    電子發(fā)燒友網(wǎng)為你提供詳解ARM常用的偽指令資料下載的電子資料下載,更有其他相關(guān)的電路圖、源代碼、課件教程、中文資料、英文資料、參考設(shè)計(jì)、用戶指南、解決方案等資料,希望可以幫助到廣大的電子工程師們。
    發(fā)表于 04-11 08:54 ?13次下載
    <b class='flag-5'>詳解</b><b class='flag-5'>ARM</b>常用的偽<b class='flag-5'>指令</b>資料下載

    ARM系列-WFIWFE指令介紹

    今天來(lái)看兩個(gè)特殊的指令WFI(Wait For Interrupt)和WFE(Wait For Event)。這兩條指令的語(yǔ)法非常簡(jiǎn)單,不需要帶任何參數(shù)。
    發(fā)表于 05-29 17:47 ?4427次閱讀

    ARM系列—WFIWFE特殊指令

    今天來(lái)看兩個(gè)特殊的指令,WFI(Wait For Interrupt)和WFE(Wait For Event)。
    發(fā)表于 06-07 17:32 ?1089次閱讀

    處理器是如何處理WFIWFE的?

    先看WFI,首先,我們研究一下ARM處理器進(jìn)入低功耗狀態(tài)的機(jī)制。
    發(fā)表于 06-28 12:35 ?921次閱讀

    STM32的三種低功耗模式介紹

    接下來(lái)我們就詳細(xì)的看一下這三者有何區(qū)別。 1、睡眠(Sleep)模式 ● 進(jìn)入睡眠模式 進(jìn)入睡眠模式有兩種指令WFI(等待中斷)和WFE(等待事件)。根據(jù)Cortex-M內(nèi)核的SCR(系統(tǒng)控制
    的頭像 發(fā)表于 07-30 11:14 ?7272次閱讀
    STM32的三種低功耗模式介紹