8位以及32位的MCU如何進(jìn)行選擇?
現(xiàn)在在嵌入式開(kāi)發(fā)MCU中,八塊MCU仍占據(jù)三分之一以上的份額,在工業(yè)控制,安全,物聯(lián)網(wǎng),消費(fèi)電子等諸多領(lǐng)域,八塊MCU依然隨處可見(jiàn)。 根據(jù)IHS預(yù)測(cè),2018年8臺(tái)MCU的市場(chǎng)規(guī)模將增長(zhǎng)到78億$,市場(chǎng)份額繼續(xù)超過(guò)MCU市場(chǎng)收入的三分之一以上,因?yàn)樵S多人認(rèn)為8臺(tái)未來(lái)將繼續(xù)增長(zhǎng)。
然而,隨著智能時(shí)代的到來(lái)和安全意識(shí)的提高,8位 mcu 的成長(zhǎng)將逐漸進(jìn)入弩的末端。今年以來(lái),32位微控制器取代了8位微控制器,呈現(xiàn)出加速發(fā)展的趨勢(shì),32位微控制器取代了8位微控制器在指紋識(shí)別領(lǐng)域的應(yīng)用。其主要原因是32位單片機(jī)利用其較高的處理能力縮短了算法的執(zhí)行時(shí)間,最終反映了算法的響應(yīng)速度。同時(shí),32的高處理能力允許更多的功能集成,如加密認(rèn)證、輔助傳感器等。
一些基于ARMCortex-M4 MCU芯提供了一個(gè)完整的DSP指令集和專(zhuān)用浮點(diǎn)單元(FPU的),可以直接支持復(fù)雜的三角計(jì)算,卷積篩選處理等,以加速該指紋算法的執(zhí)行速度。性能在超過(guò)200 DMIPS頻率最高,可以支持全指紋識(shí)別處理操作前進(jìn),包括指紋圖像預(yù)處理,分割剪接,數(shù)據(jù)特征提取,特征匹配,交叉引用,識(shí)別和解鎖的一系列指令,而且還改善了顯著指紋登記和匹配效率。因此,許多8位MCU指紋識(shí)別程序32分別改變?yōu)閬G棄方案。
另外還有一些企業(yè)基于8位MCU的遙控器設(shè)計(jì)方案也因?yàn)?2位MCU成本下降到與其持平而遭到拋棄。所以32位MCU需求旺盛以及一些管理公司出現(xiàn)缺貨將成為一種常態(tài)化。
該如何對(duì)8位以及32位的MCU進(jìn)行選擇?8位和32位MCU在功能上仍是互為輔助、各有千秋,這其中的訣竅就在于,需先了解什么樣的應(yīng)用適合什么樣的MCU架構(gòu)。
本文對(duì)比了8位MCU和32位MCU的使用案例,也可作為如何選擇這兩種MCU架構(gòu)的指南使用。本文中大部分32位MCU的范例將關(guān)注ARM Cortex-M,Cortex-M在不同MCU供應(yīng)商產(chǎn)品組合中表現(xiàn)得非常相似。鑒于8位MCU有很多種架構(gòu),所以很難對(duì)8位供應(yīng)商產(chǎn)品進(jìn)行類(lèi)似的比較。為了便于進(jìn)行比較,我們將使用廣泛應(yīng)用、易于理解的8051 架構(gòu),該架構(gòu)深受嵌入式開(kāi)發(fā)人員的青睞。
有時(shí),當(dāng)我對(duì)比人們所熟知的事物(例如ARM和8051)時(shí),感覺(jué)就像在物聯(lián)網(wǎng)論壇上發(fā)出「《星際爭(zhēng)霸戰(zhàn)》比《星際大戰(zhàn)》好看」的帖子一樣,很快就能火起來(lái)。
事實(shí)上,ARM Cortex和8051哪個(gè)更好并不是個(gè)邏輯問(wèn)題,就像是在問(wèn):吉他和鋼琴哪個(gè)更好?真正要解決的問(wèn)題應(yīng)是哪種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)。
并非所有的MCU都是一樣的
在開(kāi)始對(duì)架構(gòu)進(jìn)行比較之前,要注意到并非所有生產(chǎn)的MCU都是一樣的,這一點(diǎn)非常重要。如果將基于ARM CortexM0+處理器的現(xiàn)代MCU與30年前的8051 MCU進(jìn)行對(duì)比,8051 MCU在性能對(duì)比上不會(huì)勝出。幸運(yùn)的是,依然有許多供應(yīng)商一直在對(duì)8位處理器持續(xù)投資。在許多應(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)化硬體設(shè)定、庫(kù)管理和量產(chǎn)程式設(shè)計(jì)之類(lèi)的工作。當(dāng)MCU有了現(xiàn)代化的8位內(nèi)核和開(kāi)發(fā)環(huán)境后,在很多情況下,這樣的MCU將超越基于ARM Cortex的類(lèi)似MCU。
系統(tǒng)規(guī)模
一般性原則是,ARM CortexM內(nèi)核更適用于較大的系統(tǒng)規(guī)模,而8051設(shè)備適用于較小的系統(tǒng)規(guī)模。中等規(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ù)和協(xié)力廠(chǎng)商代碼。當(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ì)。例如,某些MCU的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)滿(mǎn)足限制要求。
通用代碼和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位組、2位組或3位組指令,而ARM內(nèi)核使用2位組或4位組指令。通常情況下,8051指令更小,但這一優(yōu)勢(shì)因?qū)嶋H上花費(fèi)許多時(shí)間而受到削弱,ARM內(nèi)核比8051在一條指令下能做更多工作,32位運(yùn)算就是這樣一個(gè)范例。實(shí)踐起來(lái),指令寬度是能在8051上產(chǎn)生適度的更密集代碼。