自從半導(dǎo)體制造商將產(chǎn)品遷移32位架構(gòu)到微控制器,一些技術(shù)社區(qū)中的人們就已經(jīng)開始預(yù)測8位器件的滅亡。現(xiàn)實(shí)中,8位器件的使用量確實(shí)已經(jīng)下降,他們可能不再占據(jù)主導(dǎo)地位,但8位真的離滅亡不遠(yuǎn)了嗎?答案是否定的,實(shí)際上,現(xiàn)在的制造商仍然一直開發(fā)和擴(kuò)展他們的8位器件系列產(chǎn)品,甚至包括那些正在提供32位產(chǎn)品的供應(yīng)商。 當(dāng)提及如何在8位和32位MCU之間選擇時,或許爭論的焦點(diǎn)其實(shí)就在于他們的靈活性;畢竟,單個設(shè)備就有許許多多應(yīng)用。但是如果MCU被設(shè)計(jì)得如此靈活,為什么仍然有如此多的變種呢?對于該問題的多數(shù)答案將是外設(shè)而非內(nèi)核,但是實(shí)際上內(nèi)核和它的外設(shè)有著千絲萬縷的聯(lián)系。 還有一種看法是—8位架構(gòu)和相應(yīng)的32位架構(gòu)相較之下是過時的,但是實(shí)際上的比較結(jié)果或許出人意料。雖然他們的指令集可能已經(jīng)被完好構(gòu)建,但是大多數(shù)8位內(nèi)核在他們的生命周期中有不止一次的“升級”,同時就像任何其他設(shè)備一樣,他們也受益于制造工藝的發(fā)展。因此,認(rèn)為這兩種架構(gòu)在某個方面具有可比性,這應(yīng)當(dāng)是合理的。 基本差異 除了明顯的總線寬度差異之外,8位器件通常比32位器件更加“少”,特別是和內(nèi)核集成在一起的存儲容量,以及相關(guān)的平均售價。類似地,如果需要完全集成系統(tǒng)級功能(例如LCD控制器/驅(qū)動器),那么這些功能更可能出現(xiàn)在32位解決方案中。 通常而言,如果系統(tǒng)需要的代碼存儲容量大于65kbyte,那么需要選擇32位解決方案,如果需要的代碼存儲容量小于8kbyte,那么8位解決方案更可行。當(dāng)然,就其本質(zhì)而言,8位器件對于簡單操作可能需要更少的代碼空間,但是32位指令集的單條指令可以完成更多的工作,因此,在較大和更復(fù)雜的應(yīng)用中,更復(fù)雜的指令集實(shí)際上可能獲得更好的整體代碼密度。 對于代碼容量在這兩個極端之間的應(yīng)用,或者僅僅需要“標(biāo)準(zhǔn)”MCU外設(shè),選擇判斷標(biāo)準(zhǔn)不再顯而易見,需要基于實(shí)際的應(yīng)用選擇。通過花些時間分析應(yīng)用,工程師能夠快速確定哪種架構(gòu)最適合他們的需求。 基準(zhǔn)性能 當(dāng)然,大多數(shù)工程師可能會說8位和32位的主要區(qū)別完全在于性能,但這只能根據(jù)具體的情況才能這樣說,要看具體的要求。“應(yīng)用性能”才是真正要考慮的問題。 舉例來說,對比8051和Cortex-M0+;8051是完全著眼于8位應(yīng)用領(lǐng)域的架構(gòu),這也是大多數(shù)工程師可能要進(jìn)行的對比,因?yàn)樗糜?a href="http://www.qingdxww.cn/keyword/嵌入式" target="_blank" class="relatedlink">嵌入式領(lǐng)域。脫離具體環(huán)境直接進(jìn)行數(shù)據(jù)手冊對比將是沒有意義的;在大多數(shù)情況下,Cortex-M0+設(shè)備可能會“勝出”,但在真實(shí)的場景中,結(jié)果可能會大相徑庭。 ![]() 圖1:Silicon Labs基于8051內(nèi)核的EFM8 Busy Bee 2亮點(diǎn)及應(yīng)用領(lǐng)域 較大內(nèi)核的一個特點(diǎn)是不用太在意它們的資源使用情況;而在嵌入式系統(tǒng)中,這會引發(fā)問題,包括8位架構(gòu)開發(fā)人員一直避免的問題。舉例來說,考慮圖1中的代碼。在基于Cortex-M0+的設(shè)備上編譯和執(zhí)行代碼時,我們發(fā)現(xiàn)棧需要48字節(jié),而在8051上編譯和執(zhí)行相同的代碼時僅需16字節(jié)。盡管區(qū)別不是很大,但在RAM有限的系統(tǒng)中,這一點(diǎn)就變得非常重要了。 int main(void){ funcA(0xACED); while (1); } voidfuncA(uint32_t a){ uint8_ti, j=0; for (i=0; i} uint16_tfuncB(uint16_t testA, uint16_t testB){ return (testA * testB)/(testA - testB) } 由于8051最初設(shè)計(jì)的原因,它一直采用非統(tǒng)一的存儲映射。在大多數(shù)情況下,這能夠提高效率,因?yàn)樗褂貌煌闹噶钪赶虿煌愋偷拇鎯^(qū)(例如:Flash、內(nèi)部RAM或外部存儲)。不過,指令集還允許通用指針指向任何類型的存儲區(qū),這能夠提高代碼的可重用性,代價是這會稍稍影響執(zhí)行的效率。ARM架構(gòu)有統(tǒng)一的存儲區(qū)管理,這意味著無需使用特殊指針,從而工作可能會變得更簡單。 低效是困擾嵌入式開發(fā)人員的一大問題,開發(fā)人員會想盡一切辦法避免這個問題,這凸顯了另一個問題—延遲。直覺上,工程師可能會認(rèn)為Cortex-M0+對中斷和函數(shù)調(diào)用有更快的反應(yīng)時間,但實(shí)際上8051架構(gòu)更快。ARM內(nèi)核通過AMBA高性能總線(AHB)在高級外設(shè)總線(APB)上 訪問外設(shè)的事實(shí)使得情況變得更糟。 基于此原因,在簡單的系統(tǒng)中,8051能夠顯示出其在中斷服務(wù)程序進(jìn)/出時間上的優(yōu)勢,但在更加復(fù)雜的系統(tǒng)或執(zhí)行時間更長的服務(wù)程序中,優(yōu)勢變得不再明顯。 應(yīng)用適用性 一般來說,8位和32位內(nèi)核的另一個重要差異是處理控制任務(wù)時各自內(nèi)在的優(yōu)勢和劣勢,尤其是8051和Cortex-M0+。8051指令集在計(jì)算比特和字節(jié)時表現(xiàn)卓越,而Cortex-M架構(gòu)的優(yōu)勢在于能夠流暢處理較大的數(shù)據(jù)塊,或使用廣泛的數(shù)學(xué)函數(shù)執(zhí)行復(fù)雜的邏輯算法。 在判斷何種架構(gòu)最適合應(yīng)用時,這種“控制vs.處理”的對比尤為有用,但這并不是一成不變的規(guī)則;雖然在一個主要實(shí)現(xiàn)UART-to-SPI橋接器的應(yīng)用中,采用ARM器件可能會表現(xiàn)的更高效,但是8位器件也能輕而易舉的處理這種情況,而且可能會非常適合僅僅有2kbyte集成存儲容量的器件。 舉例來說,在一個應(yīng)用中,它10%的時間用于執(zhí)行32位數(shù)學(xué)函數(shù),25%的時間用于處理控制函數(shù),剩余的65%處理時間則用于執(zhí)行一般目的的活動。如果沒有清晰顯著的優(yōu)先考慮的架構(gòu),并且如果系統(tǒng)級要求是更小的代碼空間而不是執(zhí)行速度,那么可能更適合選用8位產(chǎn)品。但是,如果要優(yōu)先考慮執(zhí)行速度,那可能就要選用32位產(chǎn)品了。 評估整體功耗時,也可做同樣的對比,一般情況是整體評估兩種選擇方案的占空比、活動功耗和休眠電流。現(xiàn)在,許多供應(yīng)商提供硬件和軟件工具來幫助工程師評估這些參數(shù),尤其是那些同時有8位和32位器件產(chǎn)品組合的供應(yīng)商,比如Silicon Labs。 最后,如果在為某個應(yīng)用選擇8位或32位產(chǎn)品時,如果沒有明顯優(yōu)于對方的益處,那么情況很有可能是,即使做出“錯誤”選擇,也真的不會有什么大問題。8位架構(gòu)在嵌入式開發(fā)中仍占有重要位置,這就繼續(xù)要求工程師們仔細(xì)評估其選擇,而不是在今后一段時間里默認(rèn)選擇單一的通用架構(gòu)。 以下我們用一個實(shí)例來說明Silicon Labs基于8051的新型EFM8 MCU的應(yīng)用 ![]() 圖2:EFM8 MCU 比如,Silicon Labs的EFM8SB1系列MCU可以成功應(yīng)用在智能水杯的方案中。智能水杯主要用來測量液位或者液量,并累計(jì)計(jì)算一定時間內(nèi)用戶的飲水量,提醒用戶適時飲水。傳統(tǒng)的智能水杯使用壓力傳感器測量液位,有的還要加入重力或者加速度傳感器檢測杯體的傾斜。EFM8SB1的電容感應(yīng)測量模塊可以實(shí)現(xiàn)同樣的功能。該系列MCU具有多個通道的12位精度高速電容數(shù)字轉(zhuǎn)換測量能力,無需外圍附加器件,并為用戶提供了一系列用戶友好的軟件庫和調(diào)試工具。 除了液量測量,EFM8SB1中的其他功能模塊也可以實(shí)現(xiàn)智能水杯的其他功能。12位的ADC可以測量水溫,PCA可以驅(qū)動LED或者蜂鳴器提供簡單的用戶顯示界面,而UART或者SPI可以用來連接無線模塊,和其他智能設(shè)備比如手機(jī)交換數(shù)據(jù),在功能更強(qiáng)大的設(shè)備上提供更豐富的應(yīng)用和客戶體驗(yàn)。 |