SOGO論壇
  登入   註冊   找回密碼
查看: 27343|回覆: 6
列印 上一主題 下一主題

[技術討論] 學習 8051 過時了嗎 ? 學習 AVR 正是時候 ! [複製連結]

Rank: 4

數位軟體勳章

狀態︰ 離線
跳轉到指定樓層
1
發表於 2012-9-3 21:13:10 |只看該作者 |倒序瀏覽 | x 3
學校裡 ( MCU 微控制器 ) 單晶片微電腦 8051 仍是微處理機實習熱門的課題,然而這幾年隨著 ARM 的火爆竄紅,很多 8051 的學習者有了專業一個疑問:既然大家都在談論 ARM,我們為什麼還要學習 8051 ? 而且找工作的時候人家也比較關注有 ARM 使用經驗的人,目前最熱門的智慧型手機就是 ARM 的應用。為了解決這個疑問,我們首先需要分清下面幾個概念:單晶片、ARM、DSP、FPGA/CPLD,這幾個關鍵詞是學習電子的人常見的幾種晶片。這幾個詞要分類的話首先要把 FPGA/CPLD 和其他的分開,因為 FPGA/CPLD 的原理和單片機、ARM、DSP不同。

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

再說單晶片和 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 是 ATMEL AT89S51 的簡稱,所以 覺得有必要提一下。1980 年,Intel 推出了首款單晶片 8051,之後又陸續推出了與 8051 指令完全相同的 8031、8032、8052等系列的單晶片,初步形成了 MCS-51 系列。1984 年,Intel 出售了 8051 內核 core,此後,世界上出現了上千種 8051 單晶片,如 ATMEL 、飛利浦,華邦等。8051 單晶片泛指所有相容 8051 指令的單晶片。當然,一些公司購買 8051 內核後增加了一些功能或者暫存器等,增加的這些東西是不相容的。於 8051 單晶片處於進階系列相關的有 AVR 系列,PIC 系列等,它們的區別在於雖然都屬於 8 bit(PIC系列的有 16 bit),但所使用的指令集不同,這也就是區別一個單晶片系列的一種方法。

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。

我覺得,即便將來 8051 的應用沒落了,學習 8051 仍是一種不錯的入門手段,就像學習微型計算機一樣從 X86 開始一樣。我不反對直接選擇 ARM入門,但卻反對那些不了解 8051 就呼籲大家放棄 8051 的人。作為電子產品的設計者,如何在種類繁多的 MCU 中選擇自己合適的一款才是最重要的。 雖然不可否認 8051 單晶片的應用越來越多難於應付更複雜更智慧型的高檔產品,尤其是 ARM 所替代,但我仍覺得 8051 單晶片沒有過時,學習 8051 單晶片也沒有過時!每一個人都想成為一顆大樹,但這大地尚需要小草來覆蓋著。

8051 有 5 個中斷,8052 有 6 個中斷,ATMEL AVR ATmega16A 有 21 個中斷,Flash ROM 16KB,EEPROM 512 byte,SRAM 1KB;一個新思維用新技術為未來定基調,同樣是 DIP 40 pin 8 bit CPU 32 I/O,承先啟後學習 AVR 正是時候。
喜歡嗎?分享這篇文章給親朋好友︰
               感謝作者     

Rank: 3Rank: 3

狀態︰ 離線
2
發表於 2012-9-4 04:06:12 |只看該作者
我大大同意板大的看法~
謝謝板大的無私分享

Rank: 2

狀態︰ 離線
3
發表於 2013-3-9 22:34:45 |只看該作者
說得不錯
我也是因不同的需求選用不同MCU

狀態︰ 離線
4
發表於 2013-10-3 15:04:03 |只看該作者
冒昧請教一下
這一段  “在價格上最便宜的ARM好像已經降到了 0.5 美元,而最便宜的 8051 可能是 NT$ 40 元。但一些中檔的 ARM 則要比高檔的 8051 單晶片便宜了。ARM 的性能是同價格的 8051 單晶片無法比擬的。”

那和這一段“ 有一些人呼籲,別學 8051 了,改學 ARM 吧!從台南到台北搭統聯客運非常便宜,若是改搭高鐵會縮短交通時間但費用昂貴!兩者終究還是同樣抵達台北;二者的區別和關聯性應適性選用。 ”

前段的描述是ARM比8051價錢便宜許多
這樣顯然跟後段ARM是價格昂貴的比喻有衝突

Rank: 10Rank: 10Rank: 10

狀態︰ 離線
5
發表於 2013-10-3 19:19:25 |只看該作者
直接學 ARM 了
因為只會 8bit、16bit 的 MCU 工作超級難找...

請注意︰利用多帳號發表自問自答的業配文置入性行銷廣告者,將直接禁訪或刪除帳號及全部文章!
您需要登錄後才可以回覆 登入 | 註冊


本論壇為非營利自由討論平台,所有個人言論不代表本站立場。文章內容如有涉及侵權,請通知管理人員,將立即刪除相關文章資料。侵權申訴或移除要求:abuse@oursogo.com

GMT+8, 2024-4-25 18:59

© 2004-2024 SOGO論壇 OURSOGO.COM
回頂部