隨著智能產(chǎn)品越來越多,應用到的MCU數(shù)量也隨之增長,有對MCU接觸過的朋友都知道,MCU有不同的位數(shù),如
8位MCU、24位MCU、32位MCU,每種MCU的應用都有不同領域產(chǎn)品,今天就來聊聊8位和32位的MCU,接下來看看8位MCU和32位MCU如何選擇,先從兩者的功能來區(qū)別。
本文比較了8位MCU和32位MCU 用例,也可用作如何在兩種 MCU 架構(gòu)之間進行選擇的指南,本文中的大多數(shù)32位MCU 示例都集中在 ARM Cortex-M 上,它在各種 MCU 供應商產(chǎn)品組合中的行為非常相似。8位MCU MCU 架構(gòu)種類繁多,因此很難對8位MCU供應商的產(chǎn)品進行類似比較。為了進行比較,我們將使用嵌入式開發(fā)人員首選的廣泛使用且易于理解的 8051 架構(gòu)。
8位MCU和32位MCU如何選擇?
事實上,ARM Cortex 和 8051 哪個更好,并不是像“吉他或鋼琴哪個更好?”這樣的邏輯問題,真正要解決的問題是哪種MCU能夠幫助我們更好地解決今天面臨的問題,不同的任務需要不同的工具,我們的目標是了解“如何更好地使用我們擁有的工具”,包括8位MCU和32位MCU,那些簡單地說“ARM 更好”或“8051 更好”的人幾乎肯定是在以自己的方式思考并試圖銷售產(chǎn)品。
要比較不同的設備,您需要測量它們,有許多構(gòu)建工具可供選擇,已嘗試進行公平的比較,并選擇我們認為能代表真實開發(fā)人員體驗的場景。
并非所有 MCU 都是一樣的
在我們開始比較架構(gòu)之前,請務必注意并非所有制造的 MCU 都是一樣的。將基于 ARM CortexM0+ 處理器的現(xiàn)代 MCU 與已有 30 年歷史的 8051 MCU 進行比較,8051 MCU 根本很難超越性能比較,幸運的是,仍有許多供應商繼續(xù)投資于8位MCU處理器。對于很多應用來說,8位MCU內(nèi)核可以彌補 M0+ 或 M3 內(nèi)核的不足,并且在某些方面表現(xiàn)更好。
開發(fā)工具也很重要,現(xiàn)代嵌入式固件開發(fā)包括功能完整的 IDE、現(xiàn)成的固件庫、大量示例、完整的評估和入門套件,以及用于簡化硬件設置、庫管理和生產(chǎn)編程等任務的工具。需要幫助應用程序。如果 MCU 具有現(xiàn)代8位MCU內(nèi)核和開發(fā)環(huán)境,則此類 MCU 的性能通常優(yōu)于類似的基于 ARM Cortex 的 MCU。
系統(tǒng)規(guī)模
作為一般原則,ARM CortexM 內(nèi)核適用于較大的系統(tǒng)規(guī)模,而 8051 器件適用于較小的系統(tǒng)規(guī)模。中型系統(tǒng)有兩種方法可供選擇,具體取決于系統(tǒng)執(zhí)行的任務。請注意,在大多數(shù)情況下,外圍設備的組合起著重要作用。如果您需要 3 個 UART、1 個 LCD 控制器、4 個時鐘和 2 個 ADC,則并非所有這些外設都在8位MCU MCU 上。
易用性與成本和尺寸
對于中型系統(tǒng),您可以使用任一架構(gòu)來完成工作。權(quán)衡是在 ARM 內(nèi)核提供的易用性和 8051 設備提供的成本和物理尺寸優(yōu)勢之間做出選擇。ARM Cortex-M 架構(gòu)在所有流行的編譯器中具有集成的內(nèi)存映射模式和完整的 C99 支持,使得這種架構(gòu)非常容易編寫固件。此外,還提供各種庫和第三方代碼。當然,這種易用性的代價是成本。對于上市時間短的復雜應用程序和缺乏經(jīng)驗的固件開發(fā)人員來說,易用性是一個關鍵因素。
盡管8位MCU組件比32位組件具有成本優(yōu)勢,但真正的區(qū)別在于成本等級。具有 2 KB/512 B(閃存/RAM)的小型8位MCU設備很常見,但小于 8 KB/2 KB 的32位設備很少見。對于不需要很多資源的系統(tǒng),這種存儲容量范圍允許系統(tǒng)開發(fā)人員實現(xiàn)成本顯著降低的解決方案。因此,對成本非常敏感或內(nèi)存要求低的應用程序傾向于選擇 8051 解決方案。
一般來說,8位MCU設備在物理尺寸方面也有優(yōu)勢。例如,一些MCU的32位QFN封裝為4mm x 4mm,而基于8051的8位MCU器件的QFN封裝可以小到2mm x 2mm。芯片級封裝 (CSP) 中的8位MCU和32位架構(gòu)之間的差異并不大,但成本更高且更難組裝??臻g受限的應用通常需要選擇 8051 MCU 來滿足這些限制。
通用代碼和 RAM 效率
8051 MCU 成本低的主要原因之一是它們通常比 ARM Cortex-M 內(nèi)核更有效地使用閃存和 RAM。更少的資源。系統(tǒng)越大,這種影響越小。
然而,8位MCU內(nèi)存資源的這種優(yōu)勢可能并不總是適用。在某些情況下,ARM 內(nèi)核的效率與 8051 內(nèi)核一樣,甚至更高。例如,32 位操作只需要一條 ARM 設備指令,而 8051 MCU 則需要多條8位MCU指令。顯然,這段代碼在 ARM 架構(gòu)上運行效率更高。
用于小型閃存/RAM 的 ARM 架構(gòu)的兩個主要缺點是代碼空間效率和 RAM 使用的可預估性。首個也是很明顯的問題是一般的代碼空間效率。8051 內(nèi)核使用 1 位、2 位或 3 位指令,而 ARM 內(nèi)核使用 2 位或 4 位指令。8051 指令通常更小,但它們實際上需要更多時間,因此這種優(yōu)勢減弱了。與 8051 相比,ARM 內(nèi)核每條指令可以完成更多工作,32位算術(shù)就是一個例子,實際上,指令寬度使得 8051 產(chǎn)生相當密集的代碼。
代碼空間效率
在具有分布式訪問變量的系統(tǒng)中,ARM 體系結(jié)構(gòu)的加載/存儲體系結(jié)構(gòu)通常比指令寬度更重要。考慮一個信號量實現(xiàn),它需要在代碼的不同位置遞減(賦值)或遞增(解除分配)一個變量。ARM 內(nèi)核需要將變量加載到寄存器中,對其進行操作并將其存儲回去,這需要三個指令。另一方面,8051 內(nèi)核可以只用一條指令直接操作內(nèi)存位置。隨著對變量所做的工作量每次都增加,加載/存儲開銷變得微不足道。但是如果一次要完成的工作較少,加載/存儲會產(chǎn)生很大的不同,8051 具有明顯的效率優(yōu)勢。
信號量在嵌入式軟件中并不常見,但簡單的計數(shù)器和標志信號量廣泛用于面向控制的應用程序中,并且具有相同的目的,常見的 MCU 代碼屬于這種類型。
另一個原因是 ARM 處理器比 8051 內(nèi)核有更多的空閑堆棧空間。8051 設備通常只在堆棧中為每個函數(shù)調(diào)用存儲返回地址(2 位),并且通常通過分配在堆棧上的靜態(tài)變量來完成大部分工作。
在某些情況下,默認情況下函數(shù)是不可重入的,這可能會導致問題。但是,這也意味著需要預留的??臻g很小,完全可以預估,這對于 RAM 有限的 MCU 很重要。
不同的任務需要不同的工具。我們的目標是了解如何充分利用我們擁有的工具,包括8位MCU和32位MCU。
架構(gòu)細節(jié)
現(xiàn)在讓我們談談基本場景。假設您有基于 ARM 和 8051 的 MCU 以及必要的外圍設備,ARM 設備非常適合大型系統(tǒng)或以易用性為優(yōu)先考慮的應用程序。如果低成本/小尺寸是看重的問題,那么 8051 器件是一個不錯的選擇,下面我們對每個架構(gòu)所擅長的應用進行更詳細的分析,并分離出一般原理。
(1) 延遲
兩種架構(gòu)在中斷和函數(shù)調(diào)用延遲方面存在很大差異,8051 比 ARM Cortex-M 內(nèi)核更快。此外,具有好的外圍總線 (APB) 的外圍設備也會影響延遲。這是因為數(shù)據(jù)需要通過 APB 和 AMBA 高性能總線 (AHB) 發(fā)送。后續(xù),許多基于 Cortex-M 的 MCU 在使用高頻內(nèi)核時鐘時需要 APB 時鐘分配,這也會增加外設延遲。
做了一個簡單的實驗,實驗中斷由 I/O 引腳觸發(fā),此中斷將向引腳發(fā)送信號并根據(jù)引起中斷的引腳更新標志,然后我測量了一些指示32位實現(xiàn)的參數(shù)。
簡而言之,實驗結(jié)果表明 8051 內(nèi)核在進入和退出中斷服務程序 (ISR) 方面具有優(yōu)勢。然而,隨著中斷服務例程 (ISR) 變得更大并且執(zhí)行時間更長,這些延遲變得微不足道。按照既定原則,系統(tǒng)越大,8051的優(yōu)勢就越小。此外,如果中斷服務例程 (ISR) 包含大量數(shù)據(jù)傳輸或大于8位MCU的整數(shù)數(shù)據(jù)操作,則執(zhí)行時間優(yōu)勢為中斷服務例程 (ISR) 遷移到 ARM 內(nèi)核。例如,使用新樣本更新 16 位或32位移動平均值的 ADC ISR 可能在 ARM 設備上運行得更快。
(2) 控制與處理
8051 內(nèi)核的基本功能是控制代碼,可以分布式訪問變量并使用大量控制邏輯(if、case 等)。8051 內(nèi)核在處理8位MCU數(shù)據(jù)方面也非常有效,而 ARM Cortex-M 內(nèi)核則擅長數(shù)據(jù)處理和32位運算。此外,32 位數(shù)據(jù)通道允許 ARM MCU 一次移動 4 個字節(jié),而 8051 一次只能移動 1 個字節(jié),從而可以更有效地復制大數(shù)據(jù)包。因此,主要通過將數(shù)據(jù)從一個地方移動到另一個地方(例如 UART 到 CRC 或 US B)來進行流式數(shù)據(jù)處理的應用程序更適合基于 ARM 處理器的系統(tǒng)。
這并不意味著您不應該運行在 8051 內(nèi)核上執(zhí)行大量數(shù)據(jù)移動或32位數(shù)學會運算的應用程序,在許多情況下,其他考慮因素超過了 ARM 內(nèi)核的效率優(yōu)勢,或者這些優(yōu)勢變得無關緊要,考慮使用 UART 轉(zhuǎn) SPI 橋。應用程序大部分時間都在外圍設備之間復制數(shù)據(jù),這是 ARM 內(nèi)核更有效地執(zhí)行的任務。
然而,這也是一個非常小的應用程序,可能小到可以安裝在只有 2 KB 內(nèi)存的設備上。8051 內(nèi)核效率較低,但具有足夠的處理能力來處理此應用中的高數(shù)據(jù)速率。對于 ARM 設備,可用的額外周期是在空閑循環(huán)或“WFI”(Wait for Interrupt)中,等待下一個可用數(shù)據(jù)到達。在這種情況下,8051 內(nèi)核是合適的,因為額外的 CPU 周期并不重要,而且較小的閃存封裝可以節(jié)省資金。如果額外的周期用于做有意義的工作,那么額外的效率就非常重要,并且提高的效率可以使 ARM 內(nèi)核受益。
(3)指針
8051 設備不像 ARM 設備那樣有統(tǒng)一的內(nèi)存映射,但它們對訪問代碼(閃存)、IDATA(內(nèi)部 RAM)和 XDATA(外部 RAM)有不同的指令。為了生成好的代碼,指向 8051 代碼的指針指示它指向的空間。然而,在某些情況下,可以使用泛型指針指向任意空間,但這種類型的指針訪問效率低下。例如,將指針指向緩沖區(qū)并將數(shù)據(jù)從該緩沖區(qū)輸出到 UART 的函數(shù)。如果指針是 XDATA 指針,XDATA 數(shù)組可以發(fā)送到 UART,但需要先將代碼空間中的數(shù)組復制到 XDATA。通用指針可以指向代碼和 XDATA 空間,但它們速度較慢并且需要更多代碼才能訪問。
特定于領域的指示符在大多數(shù)情況下很有用,但通用指示符在編寫用途未知的可重用代碼時非常靈活。如果這在您的應用中很常見,則 8051 將失去其效率優(yōu)勢。
(4) 選擇并完成作品
我多次注意到計算傾向于選擇 ARM 而控制傾向于選擇 8051,但沒有應用程序只專注于計算或控制。您如何大致描述您的應用程序并計算其良好范圍?假設考慮一個應用程序,它不能明確地分配給8位MCU或32位類別。
該應用程序不需要所有可用的 MIPS,并且需要優(yōu)化成本,因此代碼空間比執(zhí)行速度更重要。成本比應用程序的速度更重要這一事實使 8051 內(nèi)核在一般代碼情況下略有優(yōu)勢。此外,8051內(nèi)核在控制代碼方面也有一定的優(yōu)勢。ARM 內(nèi)核主導32位計算,但許多應用程序并未考慮到這一點。考慮到所有這些因素,8051 內(nèi)核是這個特定應用的不錯選擇。
假設應用程序更關心執(zhí)行速度而不是成本,則 ARM 內(nèi)核全面主導計算代碼,只需進行少量更改,通用代碼就不會被任何架構(gòu)所吸引。在這種情況下,控制代碼多于計算,但總體結(jié)果相當平衡。顯然,這個過程涉及很多評估,但是分解應用程序并評估每個組件的技術(shù)可以揭示哪些架構(gòu)在哪些情況下具有顯著優(yōu)勢。
功耗
通過查看數(shù)據(jù)表,很容易根據(jù)功耗數(shù)據(jù)得出哪種 MCU 更好,某些類型的 MCU 具有出色的睡眠和活動模式電流性能,但這種評級非常具有誤導性,占空比(在每種功耗模式下花費的時間)始終主導功耗,除非這兩個設備具有相同的占空比,否則數(shù)據(jù)表中的當前規(guī)格毫無意義,適合您的應用需求的重要架構(gòu)通常具有較低的功耗。
考慮一個系統(tǒng),該系統(tǒng)在喚醒設備后將 16 位 ADC 樣本添加到移動平均值,然后返回睡眠狀態(tài)并且在獲取下一個樣本之前不會再次喚醒。此任務涉及大量 16 位和32位計算。ARM 設備可以比 8051 設備更快地執(zhí)行計算和返回睡眠狀態(tài),因此 8051 具有更好的睡眠和活動模式電流,但消耗更少的系統(tǒng)功率。當然,如果您正在執(zhí)行的任務更適合 8051 設備,則出于同樣的原因,MCU 的功耗對您的系統(tǒng)有利。
8位MCU還是32位?怎么決定呢!
如果即使在考慮了所有這些變量之后,您仍然不確定哪種 MCU 架構(gòu)是很好選擇怎么辦? 也就是說,兩者都是不錯的選擇,使用哪種架構(gòu)并不重要。過去的經(jīng)驗和個人喜好即使不是直接的技術(shù)優(yōu)勢,也在決定 MCU 架構(gòu)方面發(fā)揮著重要作用。
此外,您還可以利用這個機會評估潛在的未來項目,如果您未來的大部分項目更適合ARM設備,請選擇ARM,如果未來的項目更注重降低成本和尺寸。