<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 發(fā)揮ARM Cortex-M3和M4微控制器最大作用的要訣

          發(fā)揮ARM Cortex-M3和M4微控制器最大作用的要訣

          作者: 時(shí)間:2014-01-21 來(lái)源:網(wǎng)絡(luò) 收藏

          多項(xiàng)秘訣造就巧妙解決方案

          本文引用地址:http://www.ex-cimer.com/article/256977.htm


          嵌入式設(shè)計(jì)的成敗經(jīng)常取決于如何在系統(tǒng)性能、能耗和解決方案成本之間找到適當(dāng)?shù)钠胶狻TS多情況下,開(kāi)發(fā)人員可以采用Cortex-M處理器上的獨(dú)特特性來(lái)優(yōu)化產(chǎn)品成本或能源需求,同時(shí)維持、甚至提升它的性能。例如,Cortex-M內(nèi)核天生的串行I/O能力能夠用于節(jié)省能源、簡(jiǎn)化開(kāi)發(fā)、釋放外設(shè)以用于其它應(yīng)用任務(wù)。


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


          圖2:專(zhuān)用 Cortex SWO接口節(jié)省I/O引腳并加速調(diào)試。

          基于SWO的調(diào)試還有一個(gè)重要的優(yōu)勢(shì)在于,它讓在進(jìn)入最低的休眠模式時(shí),保持調(diào)試連接有效,而在大多數(shù)情況下,傳統(tǒng)的調(diào)試連接這時(shí)是不能正常工作的。SWO的指令追蹤還可以用于跟蹤程序計(jì)數(shù)器,以幫忙IDE統(tǒng)計(jì)出程序各項(xiàng)功能所占用的時(shí)間。這些統(tǒng)計(jì)數(shù)字能夠與電流測(cè)量結(jié)合起來(lái),幫助開(kāi)發(fā)人員對(duì)設(shè)計(jì)功耗進(jìn)行微調(diào)。


          基于Cortex-M的供應(yīng)商正在開(kāi)始重新認(rèn)識(shí)這項(xiàng)優(yōu)點(diǎn),而且有些廠商已經(jīng)為了這個(gè)目的而把功耗模式和電流測(cè)量硬件納入到本身的開(kāi)發(fā)平臺(tái)。例如,Silicon Labs的EFM32 Gecko MCU入門(mén)級(jí)和開(kāi)發(fā)級(jí)工具包都包含功耗測(cè)量輸出,并可搭配energyAware Profiler工具6中的程序代碼追蹤功能。圖3顯示了如何讓設(shè)計(jì)人員精確定位到哪個(gè)程序功能塊最耗費(fèi)能源,并且能夠快速調(diào)試其它與能源有關(guān)的問(wèn)題。



          圖3:軟硬件工具精確定位耗能最大的功能,無(wú)需示波器和萬(wàn)用表,快速排除問(wèn)題。


          智能休眠節(jié)省每一微瓦


          Cortex-M處理器的Sleep-on-Exit(中斷完成時(shí)直接進(jìn)入休眠)是另一項(xiàng)“一箭雙雕”的功能,可同時(shí)節(jié)省CPU周期和能耗。這點(diǎn)在由中斷所驅(qū)動(dòng)的應(yīng)用中格外有用,因?yàn)樘幚砥鞯拇蟛糠謺r(shí)間不是在執(zhí)行中斷處理,就是在中斷事件之間休眠。在進(jìn)入中斷服務(wù)例程(ISR)時(shí),MCU必須花費(fèi)好幾個(gè)指令周期把當(dāng)前線程狀態(tài)入棧,然后在退出中斷處理返回時(shí)恢復(fù)原有線程狀態(tài),即“出棧”。當(dāng)應(yīng)用需要處理器在退出ISR后直接進(jìn)入休眠狀態(tài)時(shí),傳統(tǒng)MCU仍然必須恢復(fù)原先存儲(chǔ)的狀態(tài)信息,然后線程代碼才能讓MCU進(jìn)入休眠狀態(tài)。同樣地,當(dāng)下次的中斷喚醒MCU時(shí),它的狀態(tài)必須再次入棧。


          而當(dāng)使能ARM Cortex-M上的Sleep-on-Exit功能后,MCU就會(huì)在中斷處理完成后直接進(jìn)入休眠狀態(tài),而不用先返回到原有線程上(見(jiàn)圖4)。這會(huì)使處理器仍然保持在中斷狀態(tài),因?yàn)橄藛拘言偃霔_^(guò)程,因而節(jié)省下許多寶貴的機(jī)器周期。消除入棧出棧過(guò)程既節(jié)省了時(shí)間也節(jié)省了能耗,否則電能就會(huì)被不必要的指令周期白白消耗,也包括哪些傳統(tǒng)MCU在休眠和喚醒之間管理堆棧的代碼。而且,當(dāng)處理器被中止調(diào)試請(qǐng)求(Halt Debug Request)喚醒時(shí),出棧過(guò)程將會(huì)自動(dòng)進(jìn)行。

          圖4:ARM Cortex-M的Sleep-on-Exit功能通過(guò)避免不必要的代碼執(zhí)行和減少出棧入棧操作降低功耗。(引自:《The Definitive Guide to the ARM 1》)



          關(guān)鍵詞: ARM Cortex-M4 Cortex-M3 微控制器 SWO

          評(píng)論


          相關(guān)推薦

          技術(shù)專(zhuān)區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();