再說單晶片和 ARM 及 DSP 的關係,單晶片是“單片式微型計算機”的簡稱;ARM 是 Advanced RISC Machines 的簡稱,它是一家 RISC 微處理器設計公司的名字,因此 ARM 是他們設定的微處理器的統稱,ARM 不是單晶片是一個嵌入式的實時操作系統,ARM 將技術授權給半導體廠得到一套獨一無二的 ARM 相關技術及服務,廠家購買 IP 內核 core 後根據自己晶片應用方向的不同,自己添加不同的外掛 module,同樣的內核提供的功能是不同的;DSP 是 Digital Signal Processing 的簡稱,即數位信號處理。了解了這些,我們可以說單晶片是所有 MCU(微型控制單元)的統稱,ARM 和 DSP 是不同的一種選項。ARM 屬於用公司名稱的一種稱呼,而 DSP 則是根據功能(數位處理)命名的一種稱呼。但是,在行業內,單晶片一般特指 8 bit 或 16 bit 的 MCU,在本文中仍採用大家熟悉的叫法,把單晶片和 ARM 放在並列的位置。
8051 單晶片過時了嗎?要了解這是怎麼一個問題,首先得搞清楚 8051 單晶片在市場中的應用情況以及將來的發展情況。眾所皆知,自從 ARM 出現以來,短短的幾年內便出現了 ARM7、ARM9、M3、M4、A8、A9、A10 等等多個系列,其性能也得到了迅速發展,以其高性能,低價格,低功耗等優勢迅速佔領了 MCU 的江山,比起當年的 8051 有過之而無不及。作為 32 bit,其性能是毋庸置疑的,即便是相同的時鐘頻率,32 bit 的處理一些資料的速度也要快於 8 bit,如一個 32 bit 的加法運算,8 bit 至少需要4個週期,而 32 bit 只需要一個週期即可完成。ARM 的優勢在於較高的處理速度,還有豐富的周邊資源,還有就是較大的資料和程式儲存記憶體空間。相比之下,8051 單晶片就沒有優勢了嗎?當然不是,8051 單晶片的優勢在於小巧的內核,成熟的技術(其實現在 ARM 的技術也很成熟),還有就是 bit 操作。在相當多的應用場合,我們並不需要 ARM 如此強大的處理功能和速度,而是只需要簡單的控制,8051 單晶片已經完全可以滿足實際的需求,這樣一來,ARM 的優勢便顯得不在重要,而 8051 的 bit 操作則是 ARM 達不到的,也許你會說 ARM 同樣可以實現 bit 操作,但如果你了解的比較深的話會發現,ARM 的 bit 操作是通過移位,AND 或 OR 操作之後實現的,而 8051 單晶片則是 bit 定址空間 ( RAM 位址 20H ~ 2FH ),是真正的 bit 操作。再一個就是價格,在價格上最便宜的ARM好像已經降到了 0.5 美元,而最便宜的 8051 可能是 NT$ 40 元。但一些中檔的 ARM 則要比高檔的 8051 單晶片便宜了。ARM 的性能是同價格的 8051 單晶片無法比擬的。此外,由於 8051 內核簡單,一些高檔的 8051 增加的功能使得它們的 8051 單晶片操作起來變得異常複雜,而且不同廠家的操作也完全不同,這樣就增加了使用者的難度。綜合看來,在高檔或者中檔應用方面,8051 單晶片已經沒有了任何優勢,其市場主要是一些老產品或者不想學新東西的老工程師還有莘莘學生在支撐,其淘汰也是必然的。然而在低檔應用方面,8051 仍然可以佔有一席之地,除了操作和價格上的微弱優勢,其更大的優勢在於學習簡單。
從學習角度來講,衡量是否學會一個 MCU 的標準應該是你寫的程式,你應該知道它是怎麼執行的,應該具體到某一個指令所涉及到的暫存器,看到一個指令之後腦子裡應該是一串 0 1 運算才行,而不是可以簡單的應用了。雖然現在很多公司推出的新產品也都提供了函數庫 API,可以使工程師更快的進行編程使用。但是,這樣的結果是使更多的硬體工程師變成純軟體工程師而已。你會對一個晶片編程,但你並不了解它。也許有人說,反正我能用就行了,幹嘛非要了解它呢 ? 其實這樣就錯了!要想真正的用好一個晶片。不了解它是不行的,甚至不深入全面的了解都是不行的,一些硬體上的簡單更動有可能使系統的性能發生很大的變化。因此要想設計一個比較好的產品,必須對晶片本身有一個很深入的了解。在這方面,8051 單晶片由於內核簡單,很容易上手並且容易深入了解。學習起來比較簡單。熟練掌握了 8051,再學習其它的晶片,如 ARM 也是很簡單的,因為所有的微控制器的功能結構框架都是一樣的,了解了一種之後再學習另一種會是比較簡單。相對複雜的 ARM 結構,8051 結構就顯得很簡單了,甚至可以認為,ARM 是在 8051 的結構上增加了許多功能模組構成的,雖然二者的結構並不是真的相同。
有一些人呼籲,別學 8051 了,改學 ARM 吧!從台南到台北搭統聯客運非常便宜,若是改搭高鐵會縮短交通時間但費用昂貴!兩者終究還是同樣抵達台北;二者的區別和關聯性應適性選用。同時有學過 8051 和 ARM 學習經驗的人應該知道,精通了 8051 再學 ARM 所用的時間只不過是看一遍晶片手冊的時間(有些誇張),而直接以 ARM 作為 MCU 入門的話則要費很大的勁。對於一個從來沒有接觸過單晶片的人來說,面對複雜的 ARM 手冊往往會感到無從下手。可以這樣比喻一下,學 ARM 是一口氣登上一座高山,而學 8051 相當於到了半山腰。在半山腰上的風景雖不及山頂,卻仍可有所作為。而再從半山腰的高度上山,難度自然減小了。至於有人抱怨說找工作的時候沒人要只會 8051 的,我覺得應該這樣看這個問題,學 8051 和學 ARM 並不存在衝突,了解了 8051 之後當然可以再學 ARM。