ARM Cortex M3/M4微控制器最大效率設計三秘訣
大部分采用Cortex-M3/M4 MCU的目標應用是便攜式的,并且供電電源來(lái)自電池或能源收集系統,因此我們所探討的大部分概念涉及如何減少系統整體能耗的技術(shù)。然而,在許多情況下,這些節能技術(shù)也是處理器應用設計的有力工具,可提供:
本文引用地址:http://dyxdggzs.com/article/201609/303515.htm●更符合成本效益的解決方案
●更大的升級和采用新特性的設計冗余
●有助于產(chǎn)品在激烈競爭市場(chǎng)上脫穎而出的性能和特性
小知識:Cortex-M3對比Cortex-M4
Cortex-M3架構背后的指導思路是設計一種既要滿(mǎn)足應用的成本效益又要提供高性能計算和控制1的處理器。類(lèi)似的應用包括汽車(chē)車(chē)身系統、工業(yè)控制系統和無(wú)線(xiàn)網(wǎng)絡(luò )/傳感器產(chǎn)品等。M3系列為32位的ARM處理器架構引進(jìn)了多項重要特性,包括:
●不可屏蔽式中斷
●高度確定性、嵌套、向量式中斷
●原子位操作
●可選的存儲保護(MPU)
除了絕佳的計算性能,Cortex-M3處理器先進(jìn)的中斷結構還能確保系統迅速響應真實(shí)世界的事件,同時(shí)仍然提供極低的動(dòng)態(tài)與靜態(tài)功耗。

圖1 ARM Cortex M3和M4對比
進(jìn)入正題
SWO接口節省I/O引腳并加速調試
除了傳統的串行調試(Serial Wire Debug)功能之外,基于ARM Cortex-M的MCU還可以通過(guò)它的單引腳串行監視器輸出(Serial Wire Viewer Output,SWO)3提供指令跟蹤接口,如圖2所示。這個(gè)接口可以直接把“printf格式的”調試信息傳遞給應用代碼。SWO允許調試信息直接在任何標準的IDE中瀏覽。此外,這些信息也可以用獨立的SWO監視器(例如,Segger的J-Link SWO Viewer軟件4,或是Silicon Labs的energyAware Commander 4)進(jìn)行瀏覽。由于SWO輸出內建于內核硬件本身,因此它是Cortex-M內核與生俱來(lái)的優(yōu)點(diǎn)。SWO不占用MCU的任何UART接口,這些接口它們可能早已被分配給了應用。

圖2 專(zhuān)用ARM Cortex SWO接口節省I/O引腳并加速調試
基于SWO的調試還有一個(gè)重要的優(yōu)勢在于,它讓微控制器在進(jìn)入最低的休眠模式時(shí),保持調試連接有效,而在大多數情況下,傳統的調試連接這時(shí)是不能正常工作的。SWO的指令追蹤還可以用于跟蹤程序計數器,以幫忙IDE統計出程序各項功能所占用的時(shí)間。這些統計數字能夠與電流測量結合起來(lái),幫助開(kāi)發(fā)人員對設計功耗進(jìn)行微調。
目前一些供應商正在開(kāi)始重新認識這項優(yōu)點(diǎn),而且有些廠(chǎng)商已經(jīng)為了這個(gè)目的而把功耗模式和電流測量硬件納入到本身的開(kāi)發(fā)平臺。例如,Silicon Labs的EFM32 Gecko MCU入門(mén)級和開(kāi)發(fā)級工具包都包含功耗測量輸出,并可搭配energyAware Profiler工具6中的程序代碼追蹤功能。圖3顯示了如何讓設計人員精確定位到哪個(gè)程序功能塊最耗費能源,并且能夠快速調試其它與能源有關(guān)的問(wèn)題。

圖3 軟硬件工具精確定位耗能最大的功能,無(wú)需示波器和萬(wàn)用表,快速排除問(wèn)題
智能休眠節省每一微瓦
ARM Cortex-M處理器的Sleep-on-Exit(中斷完成時(shí)直接進(jìn)入休眠)是另一項“一箭雙雕”的功能,可同時(shí)節省CPU周期和能耗。這點(diǎn)在由中斷所驅動(dòng)的應用中格外有用,因為處理器的大部分時(shí)間不是在執行中斷處理,就是在中斷事件之間休眠。在進(jìn)入中斷服務(wù)例程(ISR)時(shí),MCU必須花費好幾個(gè)指令周期把當前線(xiàn)程狀態(tài)入棧,然后在退出中斷處理返回時(shí)恢復原有線(xiàn)程狀態(tài),即“出棧”。當應用需要處理器在退出ISR后直接進(jìn)入休眠狀態(tài)時(shí),傳統MCU仍然必須恢復原先存儲的狀態(tài)信息,然后線(xiàn)程代碼才能讓MCU進(jìn)入休眠狀態(tài)。同樣地,當下次的中斷喚醒MCU時(shí),它的狀態(tài)必須再次入棧。
而當使能ARM Cortex-M微控制器上的Sleep-on-Exit功能后,MCU就會(huì )在中斷處理完成后直接進(jìn)入休眠狀態(tài),而不用先返回到原有線(xiàn)程上(見(jiàn)圖4)。這會(huì )使處理器仍然保持在中斷狀態(tài),因為消除了喚醒再入棧過(guò)程,因而節省下許多寶貴的機器周期。消除入棧出棧過(guò)程既節省了時(shí)間也節省了能耗,否則電能就會(huì )被不必要的指令周期白白消耗,也包括哪些傳統MCU在休眠和喚醒之間管理堆棧的代碼。而且,當處理器被中止調試請求(Halt Debug Request)喚醒時(shí),出棧過(guò)程將會(huì )自動(dòng)進(jìn)行。


圖4:ARM Cortex-M的Sleep-on-Exit功能通過(guò)避免不必要的代碼執行和減少出棧入棧操作降低功耗
ARM Cortex-M4運行更快、休眠功耗更低
像許多MCU一樣,Cortex-M3/4處理器通常能夠采用高時(shí)鐘速率的方法在中斷驅動(dòng)的應用中節省能耗。如果處理器大部分時(shí)間處于休眠狀態(tài),這種看似違背直覺(jué)但普遍采用的節能策略就會(huì )很好,因為運行時(shí)間減少所節省的能耗遠遠大于稍高的操作電流。簡(jiǎn)單來(lái)說(shuō),多花10%的電可以省掉 20%的時(shí)間,總體來(lái)說(shuō)是節能了。
這種技術(shù)可以應用在任何Cortex-M系列的處理器上,而涉及密集運算任務(wù)的應用也能從Cortex-M4處理器的額外能力中受益。它的單周期DSP指令和可選的浮點(diǎn)加速器能大大減少諸如數字信號處理、過(guò)濾、分析或波形合成等功能所需要的執行周期數。
上面提及的節能特性也能帶來(lái)其它優(yōu)勢。例如,在超音波/聲學(xué)水表之類(lèi)的應用中,它們必須在小電池供電下運行多年,需要MCU盡可能長(cháng)的保持在休眠狀態(tài)。除了有助于減少MCU喚醒時(shí)間之外,Cortex-4 DSP和浮點(diǎn)算術(shù)指令也能使用成熟的濾波功能從廉價(jià)聲學(xué)傳感器輸出中獲得所需的信息,從而避免采用昂貴的超聲波流量傳感器。在這個(gè)應用實(shí)例中,Wonder Gecko MCU的外設還能夠作為模擬狀態(tài)機提供額外的能量節省,它僅僅在需要時(shí)才喚醒Cortex-M4處理器。
評論