国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

探索IoT應(yīng)用中對(duì)于8位、32位MCU的選擇

2016-05-27 08:46:23SiliconLabs微控制器和無(wú)線產(chǎn)品系統(tǒng)工程師JoshNorem
關(guān)鍵詞:外設(shè)開(kāi)發(fā)人員指針

Silicon Labs微控制器和無(wú)線產(chǎn)品系統(tǒng)工程師 Josh Norem

?

探索IoT應(yīng)用中對(duì)于8位、32位MCU的選擇

Silicon Labs微控制器和無(wú)線產(chǎn)品系統(tǒng)工程師Josh Norem

引言

該如何對(duì)8位、32位MCU進(jìn)行選擇?8位和32位MCU在功能上仍是互為補(bǔ)充,各有千秋,這其中的訣竅在于弄清什么樣的應(yīng)用適合什么樣的MCU架構(gòu)。本文對(duì)比了8位MCU和32位MCU的使用案例,也可作為如何選擇這兩種MCU架構(gòu)的指南使用。本文中大部分32位MCU示例將關(guān)注ARM Cortex-M設(shè)備,Cortex-M在不同MCU供應(yīng)商產(chǎn)品組合中表現(xiàn)得非常相似。鑒于8位MCU有很多種架構(gòu),所以很難對(duì)8位供應(yīng)商產(chǎn)品進(jìn)行類似的比較。為了便于進(jìn)行比較,我們將使用廣泛應(yīng)用的、易于理解的8051 架構(gòu),該架構(gòu)深受嵌入式開(kāi)發(fā)人員的青睞。

8位和32位MCU該如何選擇

有時(shí),當(dāng)我對(duì)比人們所熟知的事物(例如ARM和8051)時(shí),感覺(jué)就像在互聯(lián)網(wǎng)論壇上發(fā)出“《星際迷航》比《星球大戰(zhàn)》好看”的帖子一樣,很快就能火起來(lái)。

事實(shí)上,“ARM Cortex和8051哪個(gè)更好”并不是個(gè)邏輯問(wèn)題,就像是在問(wèn),“吉他和鋼琴哪個(gè)更好”一樣。真正要解決的問(wèn)題是“哪種MCU能幫我更好地解決當(dāng)下面臨的問(wèn)題”。不同的任務(wù)需要使用不同的工具,我們的目的是要了解“如何才能更好地運(yùn)用我們所擁有的工具”,包括8位和32位MCU。幾乎可以肯定地說(shuō),那些簡(jiǎn)單回答“ARM更好”或“8051更好”的人各有其目的,他們也許正在試圖銷(xiāo)售某種產(chǎn)品。

對(duì)不同的設(shè)備進(jìn)行比較,需要對(duì)其進(jìn)行測(cè)量。有很多構(gòu)建工具可供選擇,我們盡量選擇一些場(chǎng)景,我認(rèn)為其能夠進(jìn)行最公平的比較,且最能代表開(kāi)發(fā)人員的真實(shí)體驗(yàn)。以下ARM數(shù)據(jù)是通過(guò)GCC+nanoCLibrary和-03優(yōu)化選項(xiàng)所生成的。

我并不想為任何一種設(shè)備優(yōu)化代碼,只是簡(jiǎn)單地實(shí)現(xiàn)90%開(kāi)發(fā)人員都會(huì)使用的最顯而易見(jiàn)的“常規(guī)”代碼,更感興趣的是普通開(kāi)發(fā)人員所見(jiàn)到的結(jié)果,而不是理想狀態(tài)下的結(jié)果。當(dāng)然,花費(fèi)諸多時(shí)間、精力和財(cái)力去調(diào)整8051代碼使其表現(xiàn)得比ARM更好是可能的(反之亦然),但一開(kāi)始就選擇適合該項(xiàng)工作的最佳工具更為簡(jiǎn)易。

并非所有的MCU都是一樣的

在開(kāi)始對(duì)架構(gòu)進(jìn)行比較之前,要注意到并非所有生產(chǎn)的MCU都是一樣的,這一點(diǎn)非常重要。如果將基于ARM Cortex-M0+處理器的現(xiàn)代MCU與30年前的8051 MCU進(jìn)行對(duì)比,8051 MCU在性能對(duì)比上不會(huì)勝出。幸運(yùn)的是,依然有許多供應(yīng)商一直在對(duì)8位處理器進(jìn)行持續(xù)投資。例如:Silicon Labs一直更新基于8051內(nèi)核的EFM8 MCU產(chǎn)品線,比原來(lái)的8051架構(gòu)更為高效,而且開(kāi)發(fā)過(guò)程也已經(jīng)實(shí)現(xiàn)現(xiàn)代化。所以,在許多應(yīng)用中,8位內(nèi)核能夠容易彌補(bǔ)M0+或M3內(nèi)核不利的地方,甚至在一些方面性能更佳。

開(kāi)發(fā)工具也很重要?,F(xiàn)代嵌入式固件開(kāi)發(fā)需要全功能IDE、現(xiàn)成的固件庫(kù)、豐富的示例、完整的評(píng)估和入門(mén)套件,以及助手應(yīng)用,以簡(jiǎn)化硬件配置、庫(kù)管理和量產(chǎn)編程之類的工作。當(dāng)MCU有了現(xiàn)代化的8位內(nèi)核和開(kāi)發(fā)環(huán)境后,在很多情況下,這樣的MCU將超越基于ARM-Cortex的類似MCU。

一般性取舍

在深入探討內(nèi)核架構(gòu)和其他技術(shù)細(xì)節(jié)之前,我要和大家講一個(gè)故事,在我讀大學(xué)的時(shí)候,記得有一次考試,因?yàn)樘谝饪既『梅謹(jǐn)?shù)和比其他同學(xué)先完成考題,以至于沒(méi)有注意到在試卷的正反面都印有試題。不用說(shuō),我的確是第一個(gè)完成考卷的人,但卻是我不愿再想起的一次經(jīng)歷。如果一個(gè)應(yīng)用需要的只是256 KB的閃存或0.25美元的批量定價(jià),那么分析復(fù)雜的MCU特性和功能是沒(méi)有意義的。這些需求足以說(shuō)明何種MCU架構(gòu)才是最佳選擇。

系統(tǒng)規(guī)模

一般性原則是,ARM Cortex-M內(nèi)核更適用于較大的系統(tǒng)規(guī)模(>64 KB代碼),而8051設(shè)備適用于較小的系統(tǒng)規(guī)模(<8 KB代碼)。中等規(guī)模的系統(tǒng)可以選擇兩種方式,這取決于系統(tǒng)要執(zhí)行的任務(wù)。有必要注意一點(diǎn),在大多數(shù)情況下,外設(shè)組合將會(huì)發(fā)揮重要的作用。如果需要3個(gè)UART、1個(gè)LCD控制器、4個(gè)時(shí)鐘和2個(gè)ADC,你可能并不會(huì)在8位MCU上找到所有這些外設(shè)。

易用性vs成本和尺寸

對(duì)于中等規(guī)模的系統(tǒng)來(lái)說(shuō),使用任何一種架構(gòu)都可以完成工作,需要權(quán)衡的是選擇ARM內(nèi)核帶來(lái)的易用性,還是8051設(shè)備帶來(lái)的成本和物理尺寸優(yōu)勢(shì)。

ARM Cortex-M架構(gòu)具有統(tǒng)一的存儲(chǔ)映射模式,并且在所有常見(jiàn)編譯器中支持完整的C99,這使得這種架構(gòu)非常易于寫(xiě)固件。此外,還可得到一系列庫(kù)和第三方代碼。當(dāng)然,這種易用性的代價(jià)就是成本。對(duì)于高復(fù)雜性、上市時(shí)間較短的應(yīng)用或缺乏經(jīng)驗(yàn)的固件開(kāi)發(fā)人員來(lái)說(shuō),易用性是個(gè)重要因素。

盡管8位與32位部件相比有些成本上的優(yōu)勢(shì),但真正的區(qū)別就在于成本級(jí)別。大家經(jīng)常會(huì)發(fā)現(xiàn)具有2 KB/512 B(Flash/RAM)的小容量8位器件,而卻很少見(jiàn)低于8 KB/2 KB的32位器件。在不需要很多資源的系統(tǒng)中,該范圍的存儲(chǔ)容量能夠讓系統(tǒng)開(kāi)發(fā)人員獲得顯著降低成本的解決方案。因此,對(duì)成本極為敏感或僅需較小存儲(chǔ)容量的應(yīng)用會(huì)更傾向于選擇8051解決方案。

通常,8位器件也具有物理尺寸上的優(yōu)勢(shì)。例如:Silicon Labs提供的最小的32位QFN封裝為4 mm×4 mm,而基于8051的8位器件的QFN封裝可小至2 mm×2 mm。芯片級(jí)封裝(CSP)的8位和32位架構(gòu)之間的差異較小,但卻使成本增加,且組裝較難。對(duì)于空間嚴(yán)格受限的應(yīng)用來(lái)說(shuō),通常需要選擇8051 MCU來(lái)滿足限制要求。

通用代碼和RAM效率

8051 MCU成本較低的主要原因之一是,它通常比ARM Cortex-M內(nèi)核更高效地使用Flash和RAM,這允許系統(tǒng)采用更少資源實(shí)現(xiàn)。系統(tǒng)越大,這種影響就越小。

但這種8位存儲(chǔ)資源的優(yōu)勢(shì)并不總是如此,在某些情況下,ARM內(nèi)核會(huì)像8051內(nèi)核一樣高效或比其更高效。例如:32位運(yùn)算僅需要一條ARM設(shè)備指令,而在8051 MCU上則需要多條8位指令。顯然,這種代碼在ARM架構(gòu)上有更高的執(zhí)行效率。

ARM架構(gòu)在Flash/RAM尺寸較小時(shí)的兩個(gè)主要缺點(diǎn)是:代碼空間效率和RAM使用的可預(yù)測(cè)性。首要也是最明顯的問(wèn)題是通用代碼空間效率。8051內(nèi)核使用1字節(jié)、2字節(jié)或3字節(jié)指令,而ARM內(nèi)核使用2字節(jié)或4字節(jié)指令。通常情況下,8051指令更小,但這一優(yōu)勢(shì)因?qū)嶋H上花費(fèi)許多時(shí)間而受到削弱,ARM內(nèi)核比8051在一條指令下能做更多工作,32位運(yùn)算就是這樣一個(gè)示例。實(shí)踐起來(lái),指令寬度是能在8051上產(chǎn)生適度的更密集代碼。

代碼空間效率

在含有分布式訪問(wèn)變量的系統(tǒng)中,ARM架構(gòu)的加載/存儲(chǔ)架構(gòu)通常比指令寬度更為重要。試想信號(hào)量的實(shí)現(xiàn),一個(gè)變量需要在代碼周?chē)亩鄠€(gè)不同位置進(jìn)行減量(分配)或者增量(釋放)。ARM內(nèi)核必須將變量加載到寄存器,對(duì)其進(jìn)行操作并重新存儲(chǔ),這需要3條指令。另一方面,8051內(nèi)核可以直接在內(nèi)存位置上進(jìn)行操作,且僅需1條指令。隨著每次對(duì)變量完成工作量的增大,由于加載/存儲(chǔ)而產(chǎn)生的消耗就變得微不足道。但對(duì)于每次僅完成一點(diǎn)工作的情況來(lái)說(shuō),加載/存儲(chǔ)能產(chǎn)生重要影響,讓8051獲得明顯的效率優(yōu)勢(shì)。

盡管信號(hào)量在嵌入式軟件中并非常見(jiàn),但簡(jiǎn)單的計(jì)數(shù)器和標(biāo)志信號(hào)量卻廣泛應(yīng)用于控制導(dǎo)向的應(yīng)用中并起著相同的作用。許多常見(jiàn)的MCU代碼都屬于這一類型。

另一個(gè)原因是,ARM處理器比8051內(nèi)核擁有更多的自由使用棧空間。通常情況下,8051設(shè)備針對(duì)每次函數(shù)調(diào)用僅在棧上存儲(chǔ)返回地址(2字節(jié)),通常通過(guò)分配給棧的靜態(tài)變量處理大量的任務(wù)。在某些情況下,這會(huì)產(chǎn)生問(wèn)題,因?yàn)檫@會(huì)造成函數(shù)默認(rèn)不可重入。然而,這也意味著必須保留的??臻g很小,且完全可預(yù)測(cè),這在RAM容量有限的MCU中至關(guān)重要。

舉個(gè)簡(jiǎn)單的例子,我創(chuàng)建了以下程序,然后測(cè)量funcB內(nèi)部的棧深度,發(fā)現(xiàn)M0+內(nèi)核的棧用了48個(gè)字節(jié),而8051內(nèi)核的棧僅用了16個(gè)字節(jié)。當(dāng)然,8051內(nèi)核還靜態(tài)分配了8個(gè)字節(jié)的RAM,總共用了24個(gè)字節(jié)。在較大的系統(tǒng)中,這個(gè)差異顯得微不足道,但是在僅有256字節(jié)ARM的系統(tǒng)中,這就變得很重要。代碼示例如下:

int main(void){

fucA (0xACED)

while (1)

}

void funcA (uint32_t a){

uint8_t i,j=0

for (i=0;i<3; i++) {j = funcB(i,j);}

}

uint16_t funcB(uint16_t testA,uint16_t testB){

return (testA * testB) / (testA-testB)

}

架構(gòu)細(xì)節(jié)

現(xiàn)在,我們來(lái)說(shuō)基本情景。假設(shè)有基于ARM和基于8051的MCU各一個(gè),配有所需的外設(shè),那么對(duì)于較大的系統(tǒng)或需要重點(diǎn)考慮易用性的應(yīng)用來(lái)說(shuō),ARM設(shè)備是更好的選擇。如果首要考慮的是低成本/小尺寸,那么8051設(shè)備將是更好的選擇。下面我們對(duì)于每種架構(gòu)更擅長(zhǎng)的應(yīng)用進(jìn)行更詳細(xì)的分析,同時(shí)也劃分出一般原則。

(1) 延時(shí)

兩種架構(gòu)的中斷和函數(shù)調(diào)用延時(shí)存在很大差異,8051比ARM Cortex-M內(nèi)核更快。此外,高級(jí)外設(shè)總線(APB)配備的外設(shè)也會(huì)影響延時(shí),這是因?yàn)閿?shù)據(jù)必須通過(guò)APB和AMBA高性能總線(AHB)傳輸。最后,當(dāng)使用高頻內(nèi)核時(shí)鐘時(shí),許多基于Cortex-M的MCU需要分配APB時(shí)鐘,這也增加了外設(shè)延時(shí)。

我做了1個(gè)簡(jiǎn)單的實(shí)驗(yàn),實(shí)驗(yàn)中的中斷是通過(guò)I/O引腳觸發(fā)的。該中斷對(duì)引腳發(fā)出一些信號(hào),并根據(jù)引發(fā)中斷的引腳更新標(biāo)志。然后我測(cè)量了一些參數(shù),如表1所列。這里的列表顯示了32位的實(shí)現(xiàn)。

//Status var

volatile uint8_t hello;

//ISR

void GPIO_ODD_IRQHandler(void){

GPIO->P[gpioPortA]. DOUTSET = 0x03; //T1

GPIO->P[gpioPortA]. DOUTCLR = 0x01; //T2

if(GPIO->IF & 0x0100) {

hello = 4;

}

else{

hello = 5;

}

GPIO->IFC = 0xFFFF;//clear interrupt

GPIO->P[gpioPortA]. DOUTCLR =0x02;//T3

}

//Main loop

while (1){

hello = 0;

GPIO->P[gpioPortA]. DOUTSET = 0x04; //T0

while(!hello);

GPIO->P[gpioPortA]. DOUTCLR = 0x04; //T4

for(i=0; i<0x1000; 1++);

}

表1 參數(shù)比較

8051內(nèi)核在中斷服務(wù)程序(ISR)進(jìn)入和退出時(shí)顯示出優(yōu)勢(shì)。但是,隨著中斷服務(wù)程序(ISR)越來(lái)越大和執(zhí)行時(shí)間的增加,這些延遲將變得微不足道。和已有原則一致,系統(tǒng)越大,8051的優(yōu)勢(shì)越小。此外,如果中斷服務(wù)程序(ISR)涉及到大量數(shù)據(jù)遷移或大于8位的整數(shù)數(shù)據(jù)運(yùn)算,中斷服務(wù)程序(ISR)執(zhí)行時(shí)間的優(yōu)勢(shì)將轉(zhuǎn)向ARM內(nèi)核。例如,一個(gè)采用新樣本更新16位或32位移動(dòng)平均的ADC ISR可能在ARM設(shè)備上執(zhí)行得更快。

(2) 控制vs處理

8051內(nèi)核的基本功能是控制代碼,其中對(duì)于變量的訪問(wèn)是分散的,并且使用了許多控制邏輯(if、case等)。8051內(nèi)核在處理8位數(shù)據(jù)時(shí)也是非常有效的,而ARM Cortex-M內(nèi)核擅長(zhǎng)數(shù)據(jù)處理和32位運(yùn)算。此外,32位數(shù)據(jù)通道使得ARM MCU復(fù)制大包的數(shù)據(jù)更加有效,因?yàn)樗看慰梢砸苿?dòng)4個(gè)字節(jié),而8051每次僅能夠移動(dòng)1個(gè)字節(jié)。因此,那些主要把數(shù)據(jù)從一個(gè)地方移動(dòng)到另一個(gè)地方(例如UART到CRC或者到USB)的流數(shù)據(jù)處理的應(yīng)用,更適合選擇基于ARM處理器的系統(tǒng)。

來(lái)做1個(gè)簡(jiǎn)單的實(shí)驗(yàn),我們編譯以下兩種架構(gòu)的函數(shù),變量大小為uint8_t、uint16_t和uint32_t。

uint32_t funcB(uint32_t testA, uint32_t testB){

return (testA * testB)/(testA-testB)

}

|data type | 32bit(-o3) | 8bit |

| uint8_t | 20 | 13 | bytes

| uint16_t | 20 | 20 | bytes

| uint32_t | 16 | 52 | bytes

隨著數(shù)據(jù)量的增加,8051內(nèi)核需要越來(lái)越多的代碼來(lái)完成這項(xiàng)工作,最終超過(guò)了ARM函數(shù)的大小。16位的情況在代碼大小上幾乎類似,在執(zhí)行速度上稍好于32位內(nèi)核,因?yàn)橄嗤a通常需要更少周期。還有一點(diǎn)很重要,那就是要注意到,只有采用優(yōu)化的ARM編譯代碼,這種比較才有效。未優(yōu)化的代碼需要花費(fèi)幾倍長(zhǎng)的時(shí)間。

這并不意味著有大量數(shù)據(jù)移動(dòng)或32位運(yùn)算的應(yīng)用不應(yīng)該選擇8051內(nèi)核完成。在許多情況下,其他方面的考慮將超過(guò)ARM內(nèi)核的效率優(yōu)勢(shì),或者說(shuō)這種優(yōu)勢(shì)是不相關(guān)的??紤]使用UART到SPI橋接器,該應(yīng)用花費(fèi)大部分時(shí)間在外設(shè)之間復(fù)制數(shù)據(jù),而ARM內(nèi)核會(huì)更高效地完成該任務(wù)。然而,這也是一個(gè)非常小的應(yīng)用,可能小到足以放入一個(gè)僅有2 KB存儲(chǔ)容量的器件就足夠合適。盡管8051內(nèi)核效率較低,但它仍然有足夠的處理能力去處理該應(yīng)用中的高數(shù)據(jù)速率。對(duì)于ARM設(shè)備來(lái)說(shuō),可用的額外周期可能處于空閑循環(huán)或“WFI”(等待中斷),等待下一個(gè)可用的數(shù)據(jù)片到來(lái)。在這種情況下,8051內(nèi)核仍然最有意義,因?yàn)轭~外的CPU周期是微不足道的,而較小的Flash封裝會(huì)節(jié)約成本。如果我們要利用額外的周期去做些有意義的工作,那么額外的效率將是至關(guān)重要的,且效率越高可能越有利于ARM內(nèi)核。這個(gè)例子說(shuō)明,清楚被開(kāi)發(fā)系統(tǒng)所關(guān)注的環(huán)境中的各種架構(gòu)優(yōu)勢(shì)是何等重要。做出這個(gè)最佳的決定是簡(jiǎn)單但卻重要的一步。

(3) 指針

8051設(shè)備沒(méi)有像ARM設(shè)備那樣的統(tǒng)一的存儲(chǔ)映射,而是對(duì)訪問(wèn)代碼(Flash)、IDATA(內(nèi)部RAM)和XDATA(外部RAM)有不同的指令。為了生成高效的代碼,8051代碼的指針會(huì)說(shuō)明它指向什么空間。然而,在某些情況下,使用通用指針可以指向任何空間,但是這種類型的指針是低效的訪問(wèn)。例如,將指針指向緩沖區(qū)并將該緩沖區(qū)數(shù)據(jù)輸出到UART的函數(shù)。如果指針是XDATA指針,那么XDATA數(shù)組能被發(fā)送到UART,但在代碼空間中的數(shù)組首先需要被復(fù)制到XDATA。通用指針能同時(shí)指向代碼和XDATA空間,但速度較慢,并且需要更多的代碼來(lái)訪問(wèn)。專用區(qū)域指針在大多情況下能發(fā)揮作用,但是通用指針在編寫(xiě)使用情況未知的可重用代碼時(shí)非常靈活。如果這種情況在應(yīng)用中很常見(jiàn),那么8051就失去了其效率優(yōu)勢(shì)。

(4) 通過(guò)選擇完成工作

我已經(jīng)注意到多次,運(yùn)算傾向于選擇ARM,而控制傾向于選擇8051,但沒(méi)有應(yīng)用僅僅著眼于計(jì)算或控制。我們?cè)鯓硬拍鼙碚鲝V義上的應(yīng)用,并計(jì)算出它的合適范圍呢?讓我們考慮一個(gè)由10%的32位計(jì)算、25%的控制代碼和65%的一般代碼構(gòu)成的假定的應(yīng)用,它不能明確地歸于8位或32位類別。這個(gè)應(yīng)用也更注重代碼空間而不是執(zhí)行速度,因?yàn)樗⒉恍枰锌捎肕IPS,并且必須為成本進(jìn)行優(yōu)化。成本比應(yīng)用速度更為重要的事實(shí)在一般代碼情形下將給8051內(nèi)核帶來(lái)微弱優(yōu)勢(shì)。此外,8051內(nèi)核在控制代碼中有中間等級(jí)的優(yōu)勢(shì)。ARM內(nèi)核在32位計(jì)算上占上風(fēng),但是這并非是很多應(yīng)用所考慮的??紤]到所有這些因素,這個(gè)特殊的應(yīng)用選擇8051內(nèi)核更加合適。

如果進(jìn)行細(xì)微的改變,假設(shè)該應(yīng)用更關(guān)心執(zhí)行速度而非成本,那么通用代碼不會(huì)傾向于哪種架構(gòu),并且ARM內(nèi)核在計(jì)算代碼中全面占優(yōu)。在這種情況下,雖然有比計(jì)算更多的控制代碼,但是總的結(jié)果將相當(dāng)均衡。

顯然,在這個(gè)過(guò)程中有很多的評(píng)估,但是分解應(yīng)用,然后評(píng)估每一組件的技術(shù)將幫助并確保我們了解在哪種情況下哪種架構(gòu)有更顯著的優(yōu)勢(shì)。

功耗

當(dāng)查閱數(shù)據(jù)手冊(cè)時(shí),很容易根據(jù)功耗數(shù)據(jù)得出哪個(gè)MCU更優(yōu)的結(jié)論。雖然睡眠模式和工作模式電流性能在某些類型MCU上更優(yōu),但是這一評(píng)估可能會(huì)非常具有誤導(dǎo)性。占空比(在每個(gè)電源模式上分別占用多少時(shí)間)將始終占據(jù)功耗的主導(dǎo)地位。除非兩個(gè)器件的占空比相同,否則數(shù)據(jù)手冊(cè)中的電流規(guī)格幾乎是沒(méi)有意義的。最適合應(yīng)用需求的核心架構(gòu)通常具有更低的功耗。

假設(shè)有一個(gè)系統(tǒng),在設(shè)備被喚醒后添加一個(gè)16位ADC樣本到移動(dòng)平均,然后返回到休眠狀態(tài),直到獲取下一個(gè)樣本時(shí)才又被喚醒。該任務(wù)涉及到大量16位和32位計(jì)算。ARM設(shè)備將能夠進(jìn)行計(jì)算,并比8051設(shè)備更快返回到休眠狀態(tài),這會(huì)讓系統(tǒng)功耗更低,即使8051具有更好的睡眠和工作模式電流。當(dāng)然,如果進(jìn)行的任務(wù)更適合8051設(shè)備,那么MCU功耗由于相同的原因而對(duì)系統(tǒng)有利。

外設(shè)特性也能夠以這樣或那樣的方式影響功耗。例如,大多數(shù)Silicon Labs的EFM32 32位MCU具有低功耗的UART(LEUART),能夠在低功耗模式下接收數(shù)據(jù),而只有兩個(gè)EFM8 MCU具有此功能。這一外設(shè)影響電源的占空比,且在任何需要等待UART通信的應(yīng)用中都比缺乏LEUART的EFM8在很大程度上有利于EFM32 MCU。遺憾的是,除了讓MCU供應(yīng)商的本地應(yīng)用工程師利用EFM8來(lái)解決上述問(wèn)題之外,并沒(méi)有簡(jiǎn)單的指南來(lái)評(píng)估這些外設(shè)因素。系統(tǒng)設(shè)計(jì)人員還應(yīng)了解MCU各種功耗模式下,可完成的處理任務(wù)。

8位或32位?我仍然不能決定!

如果考慮到所有這些變量后,仍然不清楚哪些MCU架構(gòu)是最好的選擇,會(huì)怎樣?那好吧!這說(shuō)明,它們都是很好的選擇,你使用哪種體系結(jié)構(gòu)并不是緊要的事情。如果沒(méi)有明確的技術(shù)優(yōu)勢(shì),那么過(guò)去的經(jīng)驗(yàn)和個(gè)人喜好在你的MCU架構(gòu)決定中也起到了很大的作用。此外,你也可以利用這個(gè)機(jī)會(huì)去評(píng)估可能的未來(lái)項(xiàng)目,如果大多數(shù)未來(lái)項(xiàng)目更適合ARM設(shè)備,那么選擇ARM,如果未來(lái)項(xiàng)目更側(cè)重于降低成本和尺寸,那么就選擇8051。

這到底意味著什么呢?

8位MCU仍然可以為嵌入式開(kāi)發(fā)人員提供許多功能,并且越來(lái)越關(guān)注物聯(lián)網(wǎng)。當(dāng)開(kāi)發(fā)人員開(kāi)始設(shè)計(jì)時(shí),重要的是確保從工具箱中獲得合適的工具。雖然我還是很樂(lè)意把8051出售給可能更適合選擇32位設(shè)備的客戶,但是我不禁想象,如果開(kāi)發(fā)人員僅僅花費(fèi)1個(gè)小時(shí)思考就作出決定,那么他們的工作將會(huì)更加容易、最終的產(chǎn)品將會(huì)更好。

實(shí)際上的難題是,不能僅僅依賴于PowerPoint演示文稿中的一兩個(gè)要點(diǎn),就得出選擇MCU架構(gòu)的結(jié)論。然而,一旦你有正確的信息,并愿意花一點(diǎn)時(shí)間應(yīng)用它,就不難作出最佳選擇。

關(guān)于作者

Josh Norem是Silicon Labs微控制器和無(wú)線產(chǎn)品系統(tǒng)工程師。他于2006年加入Silicon Labs公司,任職產(chǎn)品和測(cè)試工程師,擔(dān)任過(guò)包括測(cè)試和應(yīng)用方面的多個(gè)技術(shù)職位,目前擔(dān)任系統(tǒng)工程師。在加入Silicon Labs公司之前,Josh就職于AMD公司,負(fù)責(zé)x86微處理器的系統(tǒng)級(jí)速度調(diào)試工作。此前,他就職于TI公司,負(fù)責(zé)DSP產(chǎn)品的開(kāi)發(fā)和存儲(chǔ)測(cè)試。Josh擁有伊利諾斯大學(xué)(University of Illinois)Urbana-Champaign分校電氣工程科學(xué)學(xué)士學(xué)位。

收稿日期:(責(zé)任編輯:楊迪娜2016-03-31)

猜你喜歡
外設(shè)開(kāi)發(fā)人員指針
偷指針的人
Semtech發(fā)布LoRa Basics 以加速物聯(lián)網(wǎng)應(yīng)用
為什么表的指針都按照順時(shí)針?lè)较蜣D(zhuǎn)動(dòng)
讓W(xué)indows 10進(jìn)入開(kāi)發(fā)者模式
電腦迷(2015年12期)2015-04-29 23:22:51
基于改進(jìn)Hough變換和BP網(wǎng)絡(luò)的指針儀表識(shí)別
后悔了?教你隱藏開(kāi)發(fā)人員選項(xiàng)
ARM Cortex—MO/MO+單片機(jī)的指針變量替換方法
Microchip推出具備雙ADC外設(shè)的全新器件,擴(kuò)展其低成本8位PIC?單片機(jī)產(chǎn)品線
貼身呵護(hù) 必不可少的PSP外設(shè)
外設(shè)天地行情
重庆市| 南宁市| 古浪县| 广平县| 平安县| 台东市| 祁阳县| 平乡县| 邵东县| 商洛市| 连城县| 兰州市| 太谷县| 木兰县| 惠安县| 通化市| 石柱| 行唐县| 佛教| 苏尼特右旗| 益阳市| 洛宁县| 隆尧县| 咸阳市| 临澧县| 永康市| 平陆县| 墨脱县| 无为县| 云南省| 平遥县| 浠水县| 景洪市| 新巴尔虎左旗| 荃湾区| 阿拉善左旗| 淮阳县| 镇赉县| 文安县| 潞城市| 隆林|