2016年1月10日 星期日

你不得不知的Cortex-M3和M4微控製器使用秘訣

Source-- http://3g.autooo.net/utf8-classid88-id131465.html
http://www.2cm.com.tw/coverstory_content.asp?sn=1311050001

你不得不知的Cortex-M3和M4微控製器使用秘訣

2014-08-08

許多嵌入式開發人員對ARM Cortex處理器架構頗為熟悉,但很少有人能夠對這種流行架構了如指掌,從而可以充分發揮它獨特的特性和性能。ARM Cortex-M4處理器尤為如此,它擁有引以為豪的增強架構、天生的數字信號處理(DSP)能力和可選的浮點加速器,使精於此道的程序設計人員或硬件工程師可以充分發揮它的優勢。本文接下來將就Cortex-M3/M4微控製器(MCU)的一些更有趣的(但經常遭到忽視的)特性展開詳細的論述。
  大部分采用Cortex-M3/M4 MCU的目標應用是便攜式的,並且供電電源來自電池或能源收集係統,因此我們所探討的大部分概念涉及如何減少係統整體能耗的技術。然而,在許多情況下,這些節能技術也是處理器應用設計的有力工具,可提供:
  ● 更符合成本效益的解決方案
  ● 更大的升級和采用新特性的設計冗餘
  ● 有助於產品在激烈競爭市場上脫穎而出的性能和特性
  
ARM Cortex基本介紹
  就像Advanced RISC Machines(ARM)公司在20世紀80年代所推出的第一代16位處理器內核一樣,ARM Cortex係列以哈佛式RISC架構為基礎,采用適度的矽封裝工藝獲得更高性能,以及代碼和內存效率。該架構在過去十年間大有進展,擴展出了三種不同的子係列,以滿足特定應用的需求:
  ● A型係列處理器針對高效能開放應用平台而優化設計。
  ● R型係列處理器注重提升實時應用的性能和可靠度。
  ● M型係列處理器特別為采用嵌入式MCU的應用而設計,其性能必須在能源效率和降低解決方案成本之間加以平衡。適用於Cortex M係列的常見應用包括智能電表、人機接口設備、汽車與工業控製係統、白色家電、消費電子產品和醫療器材等。
  
Cortex-M3對比Cortex-M4
  Cortex-M3架構背後的指導思路是設計一種既要滿足應用的成本效益又要提供高性能計算和控製1的處理器。類似的應用包括汽車車身係統、工業控製係統和無線網絡/傳感器產品等。M3係列為32位的ARM處理器架構引進了多項重要特性,包括:
  ● 不可屏蔽式中斷
  ● 高度確定性、嵌套、向量式中斷
  ● 原子位操作
  ● 可選的存儲保護(MPU)
  除了絕佳的計算性能,Cortex-M3處理器先進的中斷結構還能確保係統迅速響應真實世界的事件,同時仍然提供極低的動態與靜態功耗2。
  圖1:Cortex-M3與M4處理器內核的比較。
  圖1:Cortex-M3與M4處理器內核的比較。
  Cortex-M3和M4處理器共享許多相同的設計要素,包括先進的片內調試特性,以及執行完整ARM指令集或ARM指令子集(用於THUMB2處理器)的能力。Cortex-M4處理器的指令集具有增強的高效DSP特性庫,包括擴展的單周期16/32位乘法累加器(MAC)、雙16位MAC指令、優化的8/16位SIMD運算及飽和運算指令。總體來說,M3與M4最顯著的差別在於,M4具有可選的單精度(IEEE-754)浮點單元(FPU)。
  
多項秘訣造就巧妙解決方案
  嵌入式設計的成敗經常取決於如何在係統性能、能耗和解決方案成本之間找到適當的平衡。許多情況下,開發人員可以采用Cortex-M處理器上的獨特特性來優化產品成本或能源需求,同時維持、甚至提升它的性能。例如,Cortex-M內核天生的串行I/O能力能夠用於節省能源、簡化開發、釋放外設以用於其它應用任務。
  除了傳統的串行調試(Serial Wire Debug)功能之外,基於ARM Cortex-M的MCU還可以通過它的單引腳串行監視器輸出(Serial Wire Viewer Output,SWO)3提供指令跟蹤接口,如圖2所示。這個接口可以直接把“printf格式的”調試信息傳遞給應用代碼。SWO允許調試信息直接在任何標準的IDE中瀏覽。此外,這些信息也可以用獨立的SWO監視器(例如,Segger的J-Link SWO Viewer軟件4,或是Silicon Labs的energyAware Commander 4)進行瀏覽。由於SWO輸出內建於內核硬件本身,因此它是Cortex-M內核與生俱來的優點。SWO不占用MCU的任何UART接口,這些接口它們可能早已被分配給了應用。
  圖2:專用ARM Cortex SWO接口節省I/O引腳並加速調試。
  圖2:專用ARM Cortex SWO接口節省I/O引腳並加速調試。
  基於SWO的調試還有一個重要的優勢在於,它讓微控製器在進入最低的休眠模式時,保持調試連接有效,而在大多數情況下,傳統的調試連接這時是不能正常工作的。SWO的指令追蹤還可以用於跟蹤程序計數器,以幫忙IDE統計出程序各項功能所占用的時間。這些統計數字能夠與電流測量結合起來,幫助開發人員對設計功耗進行微調。
  基於Cortex-M的微控製器供應商正在開始重新認識這項優點,而且有些廠商已經為了這個目的而把功耗模式和電流測量硬件納入到本身的開發平台。例如,Silicon Labs的EFM32 Gecko MCU入門級和開發級工具包都包含功耗測量輸出,並可搭配energyAware Profiler工具6中的程序代碼追蹤功能。圖3顯示了如何讓設計人員精確定位到哪個程序功能塊最耗費能源,並且能夠快速調試其它與能源有關的問題。
  圖3:軟硬件工具精確定位耗能最大的功能,無需示波器和萬用表,快速排除問題。
  圖3:軟硬件工具精確定位耗能最大的功能,無需示波器和萬用表,快速排除問題。
  
智能休眠節省每一微瓦
  ARM Cortex-M處理器的Sleep-on-Exit(中斷完成時直接進入休眠)是另一項“一箭雙雕”的功能,可同時節省CPU周期和能耗。這點在由中斷所驅動的應用中格外有用,因為處理器的大部分時間不是在執行中斷處理,就是在中斷事件之間休眠。在進入中斷服務例程(ISR)時,MCU必須花費好幾個指令周期把當前線程狀態入棧,然後在退出中斷處理返回時恢複原有線程狀態,即“出棧”。當應用需要處理器在退出ISR後直接進入休眠狀態時,傳統MCU仍然必須恢複原先存儲的狀態信息,然後線程代碼才能讓MCU進入休眠狀態。同樣地,當下次的中斷喚醒MCU時,它的狀態必須再次入棧。
  而當使能ARM Cortex-M微控製器上的Sleep-on-Exit功能後,MCU就會在中斷處理完成後直接進入休眠狀態,而不用先返回到原有線程上(見圖4)。這會使處理器仍然保持在中斷狀態,因為消除了喚醒再入棧過程,因而節省下許多寶貴的機器周期。消除入棧出棧過程既節省了時間也節省了能耗,否則電能就會被不必要的指令周期白白消耗,也包括哪些傳統MCU在休眠和喚醒之間管理堆棧的代碼。而且,當處理器被中止調試請求(Halt Debug Request)喚醒時,出棧過程將會自動進行。
  ARM Cortex-M處理器
  ARM Cortex-M的Sleep-on-Exit功能通過避免不必要的代碼執行和減少出棧入棧操作降低功耗。
  圖4:ARM Cortex-M的Sleep-on-Exit功能通過避免不必要的代碼執行和減少出棧入棧操作降低功耗。(引自:《The Definitive Guide to the ARM Cortex-M31》)
  
ARM Cortex-M4運行更快、休眠功耗更低
  像許多MCU一樣,Cortex-M3/4處理器通常能夠采用高時鍾速率的方法在中斷驅動的應用中節省能耗。如果處理器大部分時間處於休眠狀態,這種看似違背直覺但普遍采用的節能策略就會很好,因為運行時間減少所節省的能耗遠遠大於稍高的操作電流。簡單來說,多花10%的電可以省掉20%的時間,總體來說是節能了。
  這種技術可以應用在任何Cortex-M係列的處理器上,而涉及密集運算任務的應用也能從Cortex-M4處理器的額外能力中受益。它的單周期DSP指令和可選的浮點加速器能大大減少諸如數字信號處理、過濾、分析或波形合成等功能所需要的執行周期數。
  一些應用僅僅需要DSP處理能力。例如,有些安全係統采用一種以聲學分析來感測玻璃破損的裝置。玻璃破損時會發出一連串獨特的聲音和振動,並且在玻璃特有的固有頻率時達到最大,在這個例子中是13kHz。大多數采用傳感器接口的係統隻有在所監測的頻率被監測到時,才喚醒處理器。但是當設計中使用帶DSP功能的Cortex-M4時就能額外節能,因為它在執行實際的玻璃破損分析時比軟件解決方案更快。
  甚至,這些使用基於M4微控製器的應用可以更加節能,因為MCU中所包含的高級休眠模式和自治外設可以在CPU休眠時執行許多日程任務。例如,以Cortex-M4為內核的Wonder Gecko MCU7具有五種不同的低功耗模式,包括20nA的關機狀態和950nA的深度休眠模式(實時時鍾有效、RAM和寄存器內容保持、使能掉電檢測)。
  上麵提及的節能特性也能帶來其它優勢。例如,在超音波/聲學水表之類的應用中,它們必須在小電池供電下運行多年,需要MCU盡可能長的保持在休眠狀態。除了有助於減少MCU喚醒時間之外,Cortex-4 DSP和浮點算術指令也能使用成熟的濾波功能從廉價聲學傳感器輸出中獲得所需的信息,從而避免采用昂貴的超聲波流量傳感器。在這個應用實例中,Wonder Gecko MCU的外設還能夠作為模擬狀態機提供額外的能量節省,它僅僅在需要時才喚醒Cortex-M4處理器。
  
結論
  雖然並不完備,但這些林林總總的秘訣與妙方應該能讓各位產生好的思路,可以在下一次設計中充分利用Cortex-M係列中一些較不為人知的特性所帶來的好處

沒有留言:

張貼留言