<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > 如何讓微控制器性能發(fā)揮極限

如何讓微控制器性能發(fā)揮極限

作者: 時(shí)間:2010-03-29 來(lái)源:網(wǎng)絡(luò ) 收藏
如今微需要執行廣大范圍的任務(wù),包括管理實(shí)時(shí)控制算法、解碼高速通信協(xié)定,以及處理高頻傳感器發(fā)出的信號。輪詢(xún)方法(如檢查端口以確定新數據是否經(jīng)已到達)會(huì )消耗過(guò)多的CPU周期,而且對可靠服務(wù)I/O與外設的最大響應時(shí)間也往往太長(cháng)。對于大多數嵌入式應用而言,開(kāi)發(fā)人員以中斷來(lái)滿(mǎn)足對外設管理的實(shí)時(shí)要求。但中斷只能夠確定實(shí)時(shí)事件何時(shí)發(fā)生,開(kāi)發(fā)人員仍然必須在數據丟失之前讓CPU直接參與讀取I/O和外設。處理一個(gè)中斷可能需要同時(shí)中斷其它對延時(shí)敏感的任務(wù),帶來(lái)任務(wù)轉換支出,并引發(fā)一系列棘手問(wèn)題,諸如管理多個(gè)中斷同時(shí)發(fā)生時(shí)的延時(shí),所有這些都會(huì )降低系統可預測性和處理器的效率。

要想處理實(shí)時(shí)I/O和外設的高數據速率和頻率,便必須擁有更高的處理效率。但這個(gè)效率不能通過(guò)提高時(shí)鐘頻率來(lái)獲得(因為需要更大功耗),而是要通過(guò)微架構的內部改進(jìn)來(lái)實(shí)現。實(shí)際上,微控制器已經(jīng)開(kāi)始集成用來(lái)卸載特殊任務(wù)模塊的協(xié)處理器、可加快無(wú)懲罰型(penalty-free)內存訪(fǎng)問(wèn)速度的多信道DMA控制器,以及能在內部子系統之間發(fā)送信號以卸載I/O和外設管理任務(wù)的集成式事件系統。

卸載CPU任務(wù)還有很多方法

集成式協(xié)處理器在嵌入式微控制器中已獲得相當廣泛的應用,其中比較常見(jiàn)的協(xié)處理器是加密和TCP/IP卸載引擎。協(xié)處理器可高效卸載整個(gè)任務(wù),或幫助執行復雜算法中的密集計算部分。例如,一個(gè)加密引擎可以把CPU上的AES計算任務(wù)從每次運算數千個(gè)周期縮減為數百個(gè)周期,而一個(gè)TCP/IP卸載引擎可以極小的CPU運行支出來(lái)終止一個(gè)以太網(wǎng)連接。此外,卸載引擎還能簡(jiǎn)化這些任務(wù)的實(shí)現過(guò)程,使開(kāi)發(fā)人員無(wú)需編寫(xiě)擴充代碼,便可以通過(guò)使用簡(jiǎn)單的API來(lái)加入先進(jìn)的功能。

DMA和事件系統技術(shù)對開(kāi)發(fā)人員來(lái)說(shuō)是比較陌生的,因此并不常使用。DMA控制器通過(guò)執行數據訪(fǎng)問(wèn)(如在后臺執行外設寄存器到內部或外部SRAM的數據訪(fǎng)問(wèn)),從CPU卸載數據移動(dòng)管理任務(wù)。例如,開(kāi)發(fā)人員可以配置DMA控制器,把一個(gè)數據塊預載入片上RAM中,這樣在CPU需要它之前就可以快速訪(fǎng)問(wèn),從而消除了等待狀態(tài)和相關(guān)延時(shí)。另外,DMA控制器還能夠承擔通信外設管理的大部分工作(見(jiàn)表1)。

表1 DMA控制器能夠承擔通信外設管理的大部分工作



利用DMA控制器所節省的周期數可以十分可觀(guān):許多嵌入式開(kāi)發(fā)人員都已發(fā)現自己無(wú)法以有限的微控制器資源來(lái)滿(mǎn)足應用的需求,直到認識了DMA,才突然明白原來(lái)還有大量額外的周期可用,數目有時(shí)甚至多達整個(gè)系統的30%到50%左右。許多開(kāi)發(fā)人員都是在遇到處理方面的困難時(shí),才首次發(fā)現這種未開(kāi)發(fā)的潛力,盡管實(shí)際上這種潛力從一開(kāi)始就可以使用。

熟知事件系統(event system)的開(kāi)發(fā)人員就更少了。事件系統與DMA制器協(xié)同工作,可進(jìn)一步減少CPU周期的負擔,并降低總體功耗。事件系統是一條總線(xiàn),能夠將從微控制器上的一個(gè)外設發(fā)出的內部信號連接到另一個(gè)外設。當有事件在外設上發(fā)生時(shí),它就可以在一個(gè)雙周期的延時(shí)內觸發(fā)其它外設采取行動(dòng),整個(gè)過(guò)程無(wú)需CPU參與,就和人體在手碰到火時(shí)無(wú)需大腦命令就自然做出反射動(dòng)作的把手抽出來(lái)一樣。

更確切地說(shuō),事件系統利用一個(gè)連接了CPU、數據總線(xiàn)和DMA控制器的專(zhuān)用網(wǎng)絡(luò )在整個(gè)微控制器上進(jìn)行信號路由(見(jiàn)圖1)。在正常情況下,外設必須中斷CPU來(lái)激活某個(gè)行動(dòng),包括讀取外設本身。而事件系統通過(guò)直接在外設之間發(fā)送相關(guān)事件,便可有效地使CPU擺脫這些中斷所帶來(lái)的負擔。開(kāi)發(fā)人員可以靈活配置外設來(lái)使用不同的事件通道,從而定義特定的事件路由,以滿(mǎn)足應用的某些需求。


圖1 一個(gè)事件系統

靈活的卸載

DMA和事件系統配合工作,就可讓開(kāi)發(fā)人員卸載整個(gè)任務(wù),這與協(xié)處理器的作用很類(lèi)似,但兩者間的關(guān)鍵區別是協(xié)處理器不是可編程的。協(xié)處理器采用硬件來(lái)執行一個(gè)已詳細定義的任務(wù),有時(shí)甚至是可配置的;而DMA控制器配合事件系統的可編程性使其適用于從最簡(jiǎn)單的到極復雜的各類(lèi)任務(wù)。在采用DMA和事件系統的情況下,DMA負責管理整個(gè)微處理器架構上的數據傳輸;至于事件系統則控制這些低延時(shí)、高精度傳輸發(fā)生的時(shí)間。換言之,事件系統負責確保由DMA管理的數值在正確的時(shí)間/頻率下被采樣或輸出。

圖2所示為事件系統與DMA共同工作的原理模塊示意圖。ADC連接一個(gè)傳感器,并會(huì )采集信號樣本。內部計數器被設置為與采樣頻率相匹配,用以提供規律且精確的時(shí)間間隔。事件系統可以直接激活ADC的采樣,而無(wú)需中斷CPU,使采樣頻率比利用微控制器的時(shí)鐘更為精確。當ADC停止并完成轉換時(shí),ADC便會(huì )觸發(fā)DMA通過(guò)事件系統存儲這些轉換值。



圖2 DMA控制器配合事件系統

事件管理可擴展為包含多個(gè)事件、連接多個(gè)外設的更復雜的配置。例如一個(gè)輸入信號(事件1)可觸發(fā)ADC采樣(事件2),并把數值存儲到DMA中(事件3),直到DMA緩沖器溢滿(mǎn)(事件4)。在這種配置中,CPU只有在緩沖器數據溢滿(mǎn)需要處理時(shí)才會(huì )被中斷。

DMA控制器和事件系統還支持多通道,使開(kāi)發(fā)人員能夠配置一個(gè)與主CPU并行工作的互連結構,因此,可采用一種固定性方式來(lái)對多個(gè)并行實(shí)時(shí)任務(wù)進(jìn)行協(xié)調。

固定性和延時(shí)

固定性在限制延時(shí)和管理實(shí)時(shí)嵌入式系統的響應性方面扮演著(zhù)關(guān)鍵的角色。系統的固定性越高,它的響應性也就越穩定。影響固定性的主要因素在于系統必須同時(shí)處理的中斷的數目。一般而言,系統里中斷的數量愈大,愈容易破壞系統的固定性。

假設一個(gè)系統只有一個(gè)中斷,并在50個(gè)周期內完成。這樣一個(gè)中斷的延時(shí)相應地在50個(gè)周期左右。要注意的是,即使最簡(jiǎn)單的中斷,微控制器也需要約50個(gè)周期的時(shí)間來(lái)保存有限寄存器數目的環(huán)境信息,而且還需訪(fǎng)問(wèn)外設、保存數據、存儲環(huán)境信息及清除管線(xiàn)。

然而,在固定性和延時(shí)方面,開(kāi)發(fā)人員遇到的大多數問(wèn)題并非處理單個(gè)中斷這么簡(jiǎn)單,而是當眾多中斷同時(shí)發(fā)生時(shí),應在即時(shí)滿(mǎn)足所有要求。例如,如果有一個(gè)在75個(gè)周期內完成而優(yōu)先權更高的中斷進(jìn)入系統,前一個(gè)中斷的延時(shí)就會(huì )受到影響,因為它將被優(yōu)先權更高的任務(wù)中斷。這時(shí),優(yōu)先權較低之任務(wù)的延時(shí)便會(huì )變?yōu)?0到125個(gè)周期。

當更多的中斷出現時(shí),優(yōu)先權較低之中斷的延時(shí)隨固定性的下降而增加。一個(gè)50周期的任務(wù)可能多次被中斷,并最終需要數百乃至數千個(gè)周期來(lái)完成。這一點(diǎn)十分重要,因為并非所有的中斷都具有高優(yōu)先權,一切都是相對性的。

固定性直接影響到響應性、可靠性和精度。當開(kāi)發(fā)人員確切知道延時(shí)是50或500個(gè)周期,便可以在處理時(shí)可將之考慮在內。不過(guò),如果延時(shí)介于50到500個(gè)周期之間,即便是最優(yōu)秀的開(kāi)發(fā)人員,所能做的也不過(guò)是假設一個(gè)典型延時(shí)(如200個(gè)周期)數值,然后把所有的偏離視為誤差。此外,最壞的延時(shí)情況有可能出現在瀕臨實(shí)時(shí)期限的極值,威脅到系統的可靠性。

通過(guò)DMA控制器和事件系統來(lái)減少同時(shí)發(fā)生的中斷(即便是低頻中斷),可以大大提高系統的固定性并減小延時(shí),而更高的固定性還有助于精度等其它重要因素的提升。

上一頁(yè) 1 2 下一頁(yè)

評論


相關(guān)推薦

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

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>