<li id="wkceg"></li>
<rt id="wkceg"><delect id="wkceg"></delect></rt>
<bdo id="wkceg"></bdo>
<strike id="wkceg"><acronym id="wkceg"></acronym></strike>

  • 帳號:
    密碼:
    智動化 / 文章 /

    對於8位元、32位元MCU的選擇
    探索IoT應(yīng)用中
    [作者 Josh Norem]   2017年08月23日 星期三 瀏覽人次: [23831]


    該如何對8位元以及32位元的MCU進(jìn)行選擇?8位元和32位元MCU在功能上仍是互為輔助、各有千秋,這其中的訣竅就在於,需先了解什麼樣的應(yīng)用適合什麼樣的MCU架構(gòu)。


    本文對比了8位元MCU和32位元MCU的使用案例,也可作為如何選擇這兩種MCU架構(gòu)的指南使用。本文中大部分32位元MCU的範(fàn)例將關(guān)注ARM Cortex-M,Cortex-M在不同MCU供應(yīng)商產(chǎn)品組合中表現(xiàn)得非常相似。鑒於8位元MCU有很多種架構(gòu),所以很難對8位元供應(yīng)商產(chǎn)品進(jìn)行類似的比較。為了便於進(jìn)行比較,我們將使用廣泛應(yīng)用、易於理解的8051 架構(gòu),該架構(gòu)深受嵌入式開發(fā)人員的青睞。


    8位元和32位元MCU該如何選擇?

    有時,當(dāng)我對比人們所熟知的事物(例如ARM和8051)時,感覺就像在物聯(lián)網(wǎng)論壇上發(fā)出「《星際爭霸戰(zhàn)》比《星際大戰(zhàn)》好看」的帖子一樣,很快就能火起來。


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


    對不同的設(shè)備進(jìn)行比較,需要對其進(jìn)行測量。有很多構(gòu)建工具可供選擇,我們儘量選擇一些場景,我認(rèn)為其能夠進(jìn)行最公平的比較,且最能代表開發(fā)人員的真實體驗。


    並非所有的MCU都是一樣的

    在開始對架構(gòu)進(jìn)行比較之前,要注意到並非所有生產(chǎn)的MCU都是一樣的,這一點非常重要。如果將基於ARM CortexM0+處理器的現(xiàn)代MCU與30年前的8051 MCU進(jìn)行對比,8051 MCU在性能對比上不會勝出。幸運的是,依然有許多供應(yīng)商一直在對8位元處理器持續(xù)投資。在許多應(yīng)用中,8位元內(nèi)核能依然能夠彌補M0+或M3內(nèi)核不利的地方,甚至在一些方面性能更佳。


    開發(fā)工具也很重要。現(xiàn)代嵌入式韌體開發(fā)需要全功能IDE、現(xiàn)成的韌體庫、豐富的範(fàn)例、完整的評估和入門套件以及助手應(yīng)用以簡化硬體設(shè)定、庫管理和量產(chǎn)程式設(shè)計之類的工作。當(dāng)MCU有了現(xiàn)代化的8位元內(nèi)核和開發(fā)環(huán)境後,在很多情況下,這樣的MCU將超越基於ARM Cortex的類似MCU。


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

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


    易用性vs.成本和尺寸

    對於中等規(guī)模的系統(tǒng)來說,使用任何一種架構(gòu)都可以完成工作,需要權(quán)衡的是選擇ARM內(nèi)核帶來的易用性,還是8051設(shè)備帶來的成本和物理尺寸優(yōu)勢。ARM Cortex-M架構(gòu)具有統(tǒng)一的存儲映射模式,並且在所有常見編譯器中支持完整的C99,這使得這種架構(gòu)非常易於寫韌體。此外,還可得到一系列庫和協(xié)力廠商代碼。當(dāng)然,這種易用性的代價就是成本。對於高複雜性、上市時間較短的應(yīng)用或缺乏經(jīng)驗的韌體開發(fā)人員來說,易用性是個重要因素。


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


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


    通用代碼和RAM效率

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


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


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


    代碼空間效率

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


    儘管訊號量在嵌入式軟體中並非常見,但簡單的計數(shù)器和標(biāo)誌訊號量卻廣泛應(yīng)用於控制導(dǎo)向的應(yīng)用中並起著相同的作用。許多常見的MCU代碼都屬於這一類型。


    另一個原因是,ARM處理器比8051內(nèi)核擁有更多的自由使用棧空間。通常情況下,8051設(shè)備針對每次函式呼叫僅在棧上存儲返回位址(2位元組),通常通過分配給棧的靜態(tài)變數(shù)處理大量的任務(wù)。


    在某些情況下,這會產(chǎn)生問題,因為這會造成函數(shù)預(yù)設(shè)不可重入。然而,這也意味著必須保留的棧空間很小,且完全可預(yù)測,這在RAM容量有限的MCU中至關(guān)重要。



    圖一 : 不同的任務(wù)需要使用不同的工具,我們的目的是要瞭解「如何才能更好地運用我們所擁有的工具」,包括8位元和32位元MCU。 (Source:Yola)
    圖一 : 不同的任務(wù)需要使用不同的工具,我們的目的是要瞭解「如何才能更好地運用我們所擁有的工具」,包括8位元和32位元MCU。 (Source:Yola)

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

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


    (1) 延時

    兩種架構(gòu)的中斷和函式呼叫延時存在很大差異,8051比ARM Cortex-M內(nèi)核更快。此外,高級外設(shè)匯流排(APB)配備的外設(shè)也會影響延時,這是因為資料必須通過APB和AMBA高性能匯流排(AHB)傳輸。最後,當(dāng)使用高頻內(nèi)核時鐘時,許多基於Cortex-M的MCU需要分配APB時鐘,這也增加了外設(shè)延時。


    我做了1個簡單的實驗,實驗中的中斷是通過I/O引腳觸發(fā)的。該中斷對引腳發(fā)出一些信號,並根據(jù)引發(fā)中斷的引腳更新標(biāo)誌。然後我測量了一些參數(shù)顯示了32位元的實現(xiàn)。


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


    (2) 控制vs處理

    8051內(nèi)核的基本功能是控制代碼,其中對於變數(shù)的訪問是分散的,並且使用了許多控制邏輯(if、case等)。8051內(nèi)核在處理8位元資料時也是非常有效的,而ARM Cortex-M內(nèi)核擅長資料處理和32位元運算。此外,32位元資料通道使得ARM MCU複製大包的資料更加有效,因為它每次可以移動4個位元組,而8051每次僅能夠移動1個位元組。因此,那些主要把資料從一個地方移動到另一個地方(例如UART到CRC或者到USB)的流資料處理的應(yīng)用更適合選擇基於ARM處理器的系統(tǒng)。


    這並不意味著有大量資料移動或32位元運算的應(yīng)用不應(yīng)該選擇8051內(nèi)核完成。在許多情況下,其他方面的考慮將超過ARM內(nèi)核的效率優(yōu)勢,或者說這種優(yōu)勢是不相關(guān)的。考慮使用UART到SPI橋接器,該應(yīng)用花費大部分時間在外設(shè)之間複製資料,而ARM內(nèi)核會更高效地完成該任務(wù)。


    然而,這也是一個非常小的應(yīng)用,可能小到足以放入一個僅有2 KB存儲容量的器件就足夠合適。儘管8051內(nèi)核效率較低,但它仍然有足夠的處理能力去處理該應(yīng)用中的高資料速率。對於ARM設(shè)備來說,可用的額外週期可能處於空閒迴圈或「WFI」(等待中斷),等待下一個可用的資料片到來。在這種情況下,8051內(nèi)核仍然最有意義,因為額外的CPU週期是微不足道的,而較小的Flash封裝會節(jié)約成本。如果我們要利用額外的週期去做些有意義的工作,那麼額外的效率將是至關(guān)重要的,且效率越高可能越有利於ARM內(nèi)核。這個例子說明,清楚被開發(fā)系統(tǒng)所關(guān)注的環(huán)境中的各種架構(gòu)優(yōu)勢是何等重要。做出這個最佳的決定是簡單但卻重要的一步。


    (3) 指針

    8051設(shè)備沒有像ARM設(shè)備那樣的統(tǒng)一的存儲映射,而是對存取碼(Flash)、IDATA(內(nèi)部RAM)和XDATA(外部RAM)有不同的指令。為了生成高效的代碼,8051代碼的指標(biāo)會說明它指向什麼空間。然而,在某些情況下,使用通用指標(biāo)可以指向任何空間,但是這種類型的指標(biāo)是低效的訪問。例如,將指標(biāo)指向緩衝區(qū)並將該緩衝區(qū)資料輸出到UART的函數(shù)。如果指標(biāo)是XDATA指標(biāo),那麼XDATA陣列能被發(fā)送到UART,但在代碼空間中的陣列首先需要被複製到XDATA。通用指標(biāo)能同時指向代碼和XDATA空間,但速度較慢,並且需要更多的代碼來訪問。


    專用區(qū)域指標(biāo)在大多情況下能發(fā)揮作用,但是通用指標(biāo)在編寫使用情況未知的可重用代碼時非常靈活。如果這種情況在應(yīng)用中很常見,那麼8051就失去了其效率優(yōu)勢。


    (4) 通過選擇完成工作

    我已經(jīng)注意到多次,運算傾向於選擇ARM,而控制傾向於選擇8051,但沒有應(yīng)用僅僅著眼於計算或控制。我們怎樣才能表徵廣義上的應(yīng)用,並計算出它的合適範(fàn)圍呢?讓我們考慮一個由10%的32位元計算、25%的控制代碼和65%的一般代碼構(gòu)成的假定的應(yīng)用,它不能明確地歸於8位元或32位元類別。


    這個應(yīng)用也更注重代碼空間而不是執(zhí)行速度,因為它並不需要所有可用MIPS,並且必須為成本進(jìn)行優(yōu)化。成本比應(yīng)用速度更為重要的事實在一般代碼情形下將給8051內(nèi)核帶來微弱優(yōu)勢。此外,8051內(nèi)核在控制代碼中有中間等級的優(yōu)勢。ARM內(nèi)核在32位元計算上占上風(fēng),但是這並非是很多應(yīng)用所考慮的。考慮到所有這些因素,這個特殊的應(yīng)用選擇8051內(nèi)核更加合適。


    如果進(jìn)行細(xì)微的改變,假設(shè)該應(yīng)用更關(guān)心執(zhí)行速度而非成本,那麼通用代碼不會傾向於哪種架構(gòu),並且ARM內(nèi)核在計算代碼中全面占優(yōu)勢。在這種情況下,雖然有比計算更多的控制代碼,但是總的結(jié)果將相當(dāng)均衡。顯然,在這個過程中有很多的評估,但是分解應(yīng)用,然後評估每一元件的技術(shù)將?明並確保我們瞭解在哪種情況下哪種架構(gòu)有更顯著的優(yōu)勢。


    功耗

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


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


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



    圖二 : 雖然睡眠模式和工作模式電流性能在某些類型MCU上更優(yōu),但是這一評估可能會非常具有誤導(dǎo)性。(Source:NBC News)
    圖二 : 雖然睡眠模式和工作模式電流性能在某些類型MCU上更優(yōu),但是這一評估可能會非常具有誤導(dǎo)性。(Source:NBC News)

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

    如果考慮到所有這些變數(shù)後,仍然不清楚哪些MCU架構(gòu)是最好的選擇,會怎樣?那好吧!這說明,它們都是很好的選擇,你使用哪種體系結(jié)構(gòu)並不是緊要的事情。如果沒有明確的技術(shù)優(yōu)勢,那麼過去的經(jīng)驗和個人喜好在你的MCU架構(gòu)決定中也起到了很大的作用。


    此外,你也可以利用這個機會去評估可能的未來項目,如果大多數(shù)未來專案更適合ARM設(shè)備,那麼選擇ARM,如果未來項目更側(cè)重於降低成本和尺寸,那麼就選擇8051。


    這到底意味著什麼呢?

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


    實際上的難題是,不能僅僅依賴於一些演示文件中的一兩個要點,就得出選擇MCU架構(gòu)的結(jié)論。然而,一旦你有正確的資訊,並願意花一點時間應(yīng)用它,就不難作出最佳選擇。


    (本文作者為Silicon Labs微控制器和無線產(chǎn)品系統(tǒng)工程師)


    @刊頭圖來源(Source:Enterprise IoT Insights)


    相關(guān)文章
    ? 意法半導(dǎo)體的邊緣AI永續(xù)發(fā)展策略:超越MEMS迎接真正挑戰(zhàn)
    ? 嵌入式系統(tǒng)的創(chuàng)新:RTOS與MCU的協(xié)同運作
    ? STM32MP25系列MPU加速邊緣AI應(yīng)用發(fā)展 開啟嵌入式智慧新時代
    ? STM32 MCU產(chǎn)品線再添新成員 STM32H7R/S與STM32U0各擅勝場
    ? STM32WBA系列推動物聯(lián)網(wǎng)發(fā)展 多協(xié)定無線連接成效率關(guān)鍵
    comments powered by Disqus
      相關(guān)新聞
    » Discovery《臺灣無比精采:AI 科技島》即將首播 外宣臺灣科技實力
    » 應(yīng)材攜手全球45個非營利組織扎根STEAM教育 賦能新世代人才科技創(chuàng)造力
    » 工研院 VLSI TSA國際研討會登場 聚焦高效能運算、矽光子、量子計算
    » 經(jīng)濟部與顯示業(yè)瞄準(zhǔn)先進(jìn)封裝需求 首創(chuàng)面板級全濕式解決方案
    » SEMI:2025年全球晶圓廠設(shè)備投資破千億 晶背供電、2nm技術(shù)可望量產(chǎn)
      相關(guān)產(chǎn)品
    » 意法半導(dǎo)體推出適用M2M及與GSMA相容的eSIM卡晶片
    » ADI新款Nanopower一次電池健康狀態(tài)監(jiān)視器整合精密庫侖計數(shù)器
    » 意法半導(dǎo)體8x8區(qū)測距飛行時間感測器創(chuàng)新應(yīng)用
    » 意法半導(dǎo)體 LED電視200W數(shù)位電源解決方案滿足節(jié)能設(shè)計高標(biāo)準(zhǔn)
    » 意法半導(dǎo)體通用微控制器STM32U5通過PSA 3級和SESIP 3安全認(rèn)證

    ?
    刊登廣告 新聞信箱 讀者信箱 著作權(quán)聲明 隱私權(quán)聲明 本站介紹

    Copyright ©1999-2025 遠(yuǎn)播資訊股份有限公司版權(quán)所有 Powered by O3
    地址:臺北數(shù)位產(chǎn)業(yè)園區(qū)(digiBlock Taipei) 103臺北市大同區(qū)承德路三段287-2號A棟204室
    電話 (02)2585-5526 #0 轉(zhuǎn)接至總機 / E-Mail: webmaster@hope.com.tw
    主站蜘蛛池模板: 达尔| 锦屏县| 和政县| 穆棱市| 汉沽区| 会理县| 罗平县| 工布江达县| 延长县| 福海县| 兴义市| 南京市| 宽城| 扎鲁特旗| 芦溪县| 社旗县| 海宁市| 临江市| 东阿县| 金寨县| 乌兰浩特市| 尼勒克县| 正宁县| 天长市| 乐安县| 铜川市| 呈贡县| 周口市| 宝山区| 明星| 衡山县| 方山县| 娱乐| 襄樊市| 日土县| 铁岭县| 陇南市| 三穗县| 赤峰市| 定边县| 岑巩县|