對于電池供電的互連設備而言,能耗是至關重要的,降低能耗可以最大程度地延長電池的更換時間,甚至讓設備在沒有環境能量源的情況下運行。雖然很多嵌入式系統開發人員精通優化代碼,但要為物聯網 (IoT) 設備節省能源,還需要更加全面的方法。
此類方法不僅必須要考慮存儲容量、MCU 性能和功耗的因素,還必須考慮到無線電、模擬電路、電源轉換器和傳感器。雖然所有這些因素都會影響系統的整體能耗,但開發人員最好控制的主要因素是微控制器。
本文將描述如何為物聯網設備選擇低功耗微控制器,以及在板載外設方面要注意哪些問題。本文還將演示如何使用功率監測工具,并提供達到最佳功率及性能的技巧和訣竅。
選擇低功耗微控制器架構
要選擇低功耗微控制器,首先必須確定微控制器應該使用的合適處理器內核。目前行業中有很多專有微控制器內核,但從 ARM Cortex-M 微控制器入手是非常合理的選擇。業界的多家供應商都支持這些微控制器內核,從而形成了提供支持和資源的穩定生態環境。
為了最大程度地降低能耗,必須及早考慮到兩大因素:性能和能效。對于微控制器而言,這兩個指標很難量化,但開發人員可以使用兩種基準標準: EEMBC 的 CoreMark 和 ULPmark。
CoreMark 用于測量微控制器的處理能力,這個值越高,處理能力就越強。例如,STMicroelectronics STM32L053 處理器可使用 STM32L053 Nucleo 開發板進行測試,它的 CoreMark 值為 75.18。另一款 STMicroelectronics 零件 STM32F417 的 CoreMark 值為 501.85。初看起來,開發人員可能認為使用 STM32F417 是可取的,因為它的性能似乎出色得多。但是,在做出決定之前,還要考慮另外幾個因素。
圖 1: STMicroelectronics 的 STM32L053 Nucleo 板采用 ARM Cortex-M0+ 內核,專門針對低功耗、資源受限的應用而設計。(圖片來源:STMicroelectronics)
首先,CoreMark 只是告訴開發人員它能夠在一秒鐘內執行多少次基準測試迭代。在不同時鐘速率下運行的處理器將產生差異很大的值。對處理能力進行比較的更好方式是比較 CoreMark/MHz。在本例中,STM32L053 處理器得出的結果為 2.35,而 STM32F417 得出的結果為 2.98(數據來源: EEMBC)。兩款處理器在效率方面非常接近。
其次,開發人員必須關注內核架構。STM32L053 采用 ARM Cortex-M0+,該處理器經過優化,具有很低的功耗,而且調試模塊的數量最少。此外,它還舍棄了高性能處理器上的所有附加部件,這些也是功耗最高的部件。
而 STM32F417 采用 ARM Cortex-M4,該處理器是作為高性能處理器設計的,在 168 MHz 而不是 32 MHz 的時鐘速度下運行。該時鐘速度達到了 STM32L053 的五倍,但 CoreMark/MHz 值僅提高了 26%。
ULPmark 可測量微控制器執行操作(例如計算和存儲器操作)的效率高低。最新版本甚至可測量外設效率,讓開發人員能夠很好地從能源利用的視角,了解處理器的整體效率如何。
尋找合適的外設組合
微控制器內核只是開發人員在選擇低功耗微控制器時應該考慮的第一個因素。應該考慮的另外一個因素是板載外設。CPU 的能耗大小在很大程度上取決于外設。開發人員希望確保他們選擇的零件采用盡可能自動化的低功耗外設。
首先,開發人員應該尋找提供了不止一個直接存儲器訪問 (DMA) 通道的器件。利用 DMA,開發人員能夠在微控制器內部傳輸更多信息,而無需 CPU 干預。這意味著 CPU 能夠騰出手做其他工作,例如運行應用程序代碼,或者關閉或進入深度休眠模式以節省能耗。同時,DMA 通道還用于將數據從外設傳輸到存儲器,從存儲器傳輸到外設,甚至在存儲器的不同區域之間進行傳輸。
Texas Instruments 的 MSP430FR5994 就是專為低功耗工作設計的零件的很好例子,MSP430FR5994 Launchpad 開發套件包括了這種零件。MSP430FR5994 帶有內置的 DMA 控制器,它有六個單獨的通道,可以同時在后臺工作。
圖 2: Texas Instruments 的 MSP430FR5994 Launchpad 開發套件包含多個低功耗外設,例如用于信號處理的六通道 DMA 控制器和低功耗加速器,另外還提供多種低功耗模式。(圖片來源:Texas Instruments)
另一個例子是尋求多種低功耗模式。新型微控制器將提供多種功耗模式,可將 CPU 和外設置于不同狀態,從簡單的休眠狀態一直到深度休眠狀態,微控制器在深度休眠狀態下幾乎接近關閉。在這些深度休眠模式下,整個微控制器的工作電流僅為幾毫微安。
在了解微控制器的低功耗狀態時,還要評估工具鏈和生態系統功能。設置和配置低功耗模式以及喚醒這些模式的事件,可能是一項頗具挑戰性的工作,而且非常耗時。新型微控制器,例如 Renesas 提供的 Synergy,在開發環境內部包含了配置軟件,開發人員只需幾次點擊即可配置這些模式。對于低功耗應用,開發人員應該考慮使用帶有 64 或 128 KB 閃存的 S124 32 位 MCU。要快速啟動采用這些器件的開發工作,可以使用 Synergy DK-124 開發板。
圖 3: Renesas Synergy DK-124 開發板帶有低功耗模擬比較器,提供多種休眠模式,實現了低功耗運行。(圖片來源: Renesas)
測量和驗證微控制器功耗
選擇低功耗微控制器,只是確保系統能夠達到可能的最低功耗的第一步。為了真正達到最低功耗,開發人員必須在整個軟件開發過程中仔細地監控微控制器的能耗。開發人員可以采用多種不同方法來監控微控制器的能耗,包括電流探頭和能量感知調試器。
電流探頭的作用只是測量分流電阻器兩端的電壓,然后根據該電壓和分流電阻值來計算電流。如果您希望測量整個系統的電流消耗,那么這種解決方案的效果非常好,但如果您真正希望將微控制器執行的操作與它們消耗的能量關聯起來,則應使用能量感知調試器。這讓開發人員能夠確定哪些代碼區域需要進一步優化或返工。
市場上有多種適用于 ARM Cortex-M? 微控制器的能量感知調試器,例如 I-Jet 調試探頭的 IAR Systems I-Scope 電源探頭(圖 4)。
圖 4: 連接到 IAR I-Jet 時,I-Scope 可用于測量系統電壓、電流和微控制器電流,然后全部反向關聯到程序計數器 (PC),以確定哪些代碼區域消耗的能源最多。(圖片來源: IAR Systems Software)
I-Scope 工具帶有一個基于差分放大器的內部電壓監視器。它可以測量與微控制器電源軌串聯的分流電阻器兩端的壓降。這使得 I-Jet 調試探頭能夠測量電壓,同時對微控制器的 CPU 內核中的程序計數器 (PC) 進行采樣(圖 5)。
圖 5: I-Scope(突出顯示為黃色)與 I-Jet 調試探頭配合使用,將分流電阻器的電流與在特定時間執行的代碼關聯起來。(圖片來源: IAR Systems Software)
程序計數器準確告訴探頭:應用程序處于執行過程的什么位置。將 PC 計數器信息與電流測量值相關聯,可生成應用程序的能耗概況數據,以便開發人員能夠利用這些數據來優化和驗證代碼。
設計低功耗器件的技巧和訣竅
找到合適的微控制器并監控硬件,只是開發人員設計低功耗器件的第一個階段。此時的訣竅是了解如何充分利用微控制器來最大程度降低能耗。為了達到這個目標,開發人員可以遵循以下的一般技巧。其中包括:
預先制定電池預算,包括最小功耗、最大功耗和平均功耗的估算值。
使用低功耗定時器來驅動計劃程序或 RTOS 的任何內部系統節拍。
盡可能經常地將 CPU 置于休眠模式(對于實時應用,請務必考慮到喚醒和掉電時間)。
讓系統成為事件驅動型系統。可以利用中斷來喚醒系統并執行功能,然后立即返回到休眠模式。
將 DMA 控制器和任何自動化外設集成到軟件架構中,以實現“并行”處理。
根據需要管理微控制器時鐘頻率,以實現額外的能源節省。
監控軟件能耗,不要害怕試用不同的架構和配置。第一次嘗試的很可能不是功耗最低的配置。
適當時,請使用中斷的 Sleep-on-exit 功能,該功能可在中斷結束時將處理器置于休眠模式,每個事件節省幾十個時鐘周期。
總結
為物聯網設備選擇低功耗微控制器是一項非常棘手的工作。正如本文所述,我們必須考慮到諸多因素,從微控制器架構一直到板載外設功能。
選定了低功耗微控制器之后,并不能保證開發人員能夠實現最低功耗的目標。下一個階段是認真地設計架構,并在整個開發生命周期中監控軟件的性能。只有這樣,開發人員才能充分利用所選微控制器的低功耗特性和性能。
-
微控制器
+關注
關注
48文章
7542瀏覽量
151316 -
物聯網
+關注
關注
2909文章
44557瀏覽量
372779
原文標題:教你如何充分利用微控制器來最大程度降低功耗!
文章出處:【微信號:mcuworld,微信公眾號:嵌入式資訊精選】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論