51微控制器真的過時了嗎?

到這個問題,相信大家很多人都在問,也有很多人想知道,還有很多人有自己的看法,今天我在這裡發表一下自己的觀點。

現在在大學裡,51微控制器仍是電子類專業必修的課程,然而這幾年隨著ARM的火爆,很多51的學習者有了專業一個疑問:既然大家都在用ARM,我們為什麼還要學51?而且找工作的時候人家也比較關注有過ARM使用經驗的。

為了解決這個疑問,我們首先需要分清下面幾個概念:微控制器、ARM、DSP、FPGA/CPLD,這幾個關鍵詞是學習電子的人常見的幾種晶片(我不知道該統稱什麼,姑且這麼叫吧)。這幾個詞要分類的話首先要把FPGA/CPLD和其他的分開,因為FPGA/CPLD的原理和微控制器、ARM、DSP不同。

FPGA/CPLD 是通過硬體實現功能的,FPGA是Field-Programmable Gate Array的縮寫,即現場可程式設計門陣列;CPLD是Complex Programmable Logic Device的縮寫,即複雜可程式設計邏輯器件。通過名字可以看出,二者都是可程式設計的邏輯器件,即實實在在的硬體,通過對硬體程式設計以實現某種特定功能。說直白 一些,二者就是一個與非門或者或非門陣列。由於所有的邏輯式子都可以變換成與非結構或者或非結構,因此所有的邏輯功能都可以通過FPGA/CPLD實現, 程式設計後的晶片相當於一個數字晶片,如加法器,移位暫存器等。二者的區別在於FPGA是基於RAM結構的,CPLD是基於ROM機構的,這些不是本次討論的 重點,不再贅述。

再說微控制器和ARM及DSP的關係,微控制器是“單片微型計算機”的簡稱;ARM是Advanced RISC Machines的簡稱,它只是一家微處理器設計企業的名字,因此ARM是他們設定的微處理器的統稱;DSP是Digital Signal Processing的簡稱,即數字訊號處理。瞭解了這些,我們可以說微控制器是所有所有MCU(微型控制單元)的統稱,ARM是DSP只是他們的一 種,ARM屬於用公司名稱的一種稱呼,而DSP則是根據功能(數字處理)命名的一種稱呼。但是,在行業內,微控制器一般特指8位或16位的MCU,在本文中 仍採用大家熟悉的叫法,把微控制器和ARM放在並列的位置。

瞭解了這些,我們還需要了解一個問題,什麼是51微控制器。這個問題本不想說,可是 看到有人說51是AT89C51的簡稱,所有覺得有必要提一下。1980年,Intel推出了首款微控制器8051(這個8051有可能是公司內部的設計編 號,我沒有找到為什麼叫這個),之後又陸續推出了與8051指令完全相同的8031、8032、8052等系列的微控制器,初步形成了MCS-51系列。 1984年,Intel出售了51核,此後,世界上出現了上千種51微控制器,如愛特梅爾、飛利浦,華邦,還有國內的巨集晶等。51微控制器泛指所有相容 8051指令的微控制器。當然,一些公司購買51核後增加了一些功能或者暫存器等,增加的這些東西是不相容的。於51微控制器處於並列關係的有AVR系 列,PIC系列等,他們的區別在於雖然都屬於8位機(PIC系列的有16位的),但所使用的指令集不同,這也就是區別一個微控制器系列的一種方法。

51 微控制器過時了嗎?要了解怎麼一個問題,首先得搞清楚51微控制器在市場中的應用情況以及將來的發展情況。眾所周知,自從ARM出現以來,短短的幾年內便出現 了ARM7、ARM9、M3、M4、A8、A9、A10等等多個系列,其效能也得到了飛速發展,以其高效能,低價格,低功耗等優勢迅速佔領了MCU的江 山,比起當年的51有過之而無不及。作為32位機,其效能是毋庸置疑的,即便是相同的時鐘速率,32位機的處理一些資料的速度也要快於8位機,如一個32 位的加法運算,8位機至少需要4個週期,而32位機只需要一個週期即可完成。ARM的優勢在於較高的處理速度,還有豐富的外設資源,還有就是較大的資料和 程式儲存空間。相比之下,51微控制器就沒有優勢了嗎?當然不是,51微控制器的優勢在於小巧的核心,成熟的技術(其實現在ARM的技術也很成熟),還有就是 位操作。在相當多的應用場合,我們並不需要ARM如此強大的處理功能和速度,而是隻需要簡單的控制,51微控制器已經完全可以滿足實際的需求,這樣一 來,ARM的優勢便顯的不再重要,而51的位操作則是ARM達不到的,也許你會說ARM同樣可以實現位操作,但如果你瞭解的比較深的話會發現,ARM的位 操作是通過移位,與或等操作之後實現的,而51微控制器則又位定址空間,是真正的位操作。再一個就是價格,在價格上最便宜的ARM好像已經降到了0.5美元 (可能是這個價格,記不清了),而最便宜的51可能是0.5RMB。但一些中檔的ARM則要比高階的51微控制器便宜了。十幾或者幾十RMB的ARM的效能 是同價格的51微控制器無法比擬的。此外,由於51核心簡單,一些高階的51增加的功能使得他們的51微控制器操作起來變得異常複雜,而且不同廠家的操作完全 不同,這樣就增加是使用的難度。綜合看來,在高階或者中端應用方面,51微控制器已經沒有了任何優勢,其市場主要是一些老產品或者不想學新東西的老工程師在 支撐,其消亡也是必然的。然而在低端應用方面,51仍然可以佔有一席之地,除了操作和價格上的微弱優勢,其更大的優勢在於學習簡單。.

從學習角度來講,衡量是否學會一個MCU的標準應該是你寫的程式你應該知道他是怎麼執行的,應該具體到某一個指令所涉及到的暫存器,看到一個指令之後腦子裡應 該是一串01運算才行,而不是可以簡單的應用了。雖然現在很多公司推出的新產品都給出了韌體庫,可以使工程師更快的進行程式設計使用。但是,這樣的結果是使更 多的硬體工程師變成純軟體工程師而已。你會對一個晶片程式設計,但你並不瞭解他。也許有人說,反正我能用了就行了,幹嘛非要了解它呢。其實這樣想就錯了,要想 真正的用好一個晶片。不瞭解他是不行的,甚至不深入全面的瞭解都是不行的,一些硬體上的簡單改動有可能使系統的效能發生很大的變化。因此要想設計一個比較 好的產品,必須對晶片本身有一個深入的瞭解。在這方面,51微控制器由於核心簡單,很容易上手並容易深入瞭解。學習起來比較簡單。熟練掌握了51,再學習其 他的晶片,如ARM也是很簡單的,因為所有的微控制器的功能結構框架都是一樣的,瞭解了一種之後再學習另一種很簡單。相比複雜的ARM結構,51結構就顯 的很簡單了,甚至可以認為,ARM是在51的結構上增加的許多功能模組構成的,雖然二者的結構並不真的相同。

前幾天在論壇裡 看到有人呼籲,別學51了,改學ARM吧。我覺得這樣的人應該屬於二者都沒有學好的人,二者的區別和聯絡肯定不清楚才這樣喊的,同時有過51和ARM學習 經驗的人應該知道,學精了51再學ARM所用的時間只不過是看一遍晶片手冊的時間(有些誇張),而直接以ARM作為MCU入門的話則要費很大的勁。對於一 個從來沒有接觸過微控制器的人來說,面對複雜的ARM手冊往往會感到無從下手。可以這樣比喻一下,學ARM是一口氣登上一座高山,而學51相當於到了半山 腰。在半山腰上的風景雖不及山頂,卻仍可有所作為。而再從半山腰的高度上山,難度自然減小了。至於有人抱怨說找工作的時候沒人要只會51的,我覺得應該這 樣看這個問題,學51和學ARM並不存在衝突,瞭解了51只後當然可以再學ARM。

我覺得,即便將來51的應用沒落了,學習51仍是一種不錯的入門手段,就行學計算機的一直在學X86一樣。我不反對直接選擇ARM入門,但卻反對那些不瞭解51就呼籲大家放棄51的人。作為電子產品的設計者,如何在種類繁多的MCU中選擇自己合適的一款才是最重要的。

雖然不可否認51微控制器越來越多的被高階產品,尤其是ARM所替代,但我仍覺得51微控制器沒有過時,學習51微控制器也沒有過時!

相關問題答案