樹莓派、 Arduino 、傳統單片機開發板該如何選擇?


幾十年前的電子愛好者,最喜歡的就是電烙鐵、面包板和收音機;十幾年前,出現了單片機,於是玩具就成了電烙鐵、面包板和單片機;到了2015年,貼片技術的不斷普及,讓面包板不再那么有用武之地,經濟的發展也讓現成的板卡價格降到了一個合理的范圍,購買現成的電路板,甚至自己打樣電路板來使用,已經成為了一個趨勢。現在,我們面前的選擇就空前的豐富,一方面,是以Arduino和樹莓派為首的開源硬件陣營,另一方面,則是以STM32、51和S3C2440為首的傳統單片機開發板陣營。筆者根據自己的使用體驗,與讀者簡單談一談它們在開發應用上的區別。

 

分類無論屬於哪個陣營,它們用的CPU都得分成MCU(微控制器,或者稱為單片機)和MPU(微處理器)兩類,它們的本質區別在於MMU(內存管理單元),也就是對於虛擬內存空間的支持。樹莓派和S3C2440就屬於MPU類的,而Arduino和STM32就屬於MCU類的。它們在運算能力上有巨大的差距。

 

△  樹莓派

 

△ 傳統單片機

△ Arduino

基於上面的分類,如果把它放到一個天梯圖內,我們就能得到這樣一**源硬件的比較圖。
性能天梯圖
需要注意的是,這張圖只比較了它們的純運算性能,越靠上的,運算性能越強,但是這張圖並不是按照比例畫的,實際上,樹莓派的運算性能可以達到Arduino的100倍。接下來,我就根據上面的兩種分類方法來講講它們的區別。

性能的差距廣大的電子愛好者可能一直有一個疑問,那就是樹莓派和單片機或者樹莓派和Arduino的選擇問題,其實也就是MPU和MCU的選擇問題。 這里又得分兩種情況討論,一類是沒有學過任何東西,想直接拿樹莓派入門的,另一類是在玩過Arduino或者51單片機之后想要玩玩更高端平台發。

 

先講講第一類。對於第一類玩家,如果已經有了編程基礎,可以直接試着玩樹莓派,如果只是把樹莓派當成一個小型PC或者低功耗服務器,完全沒有問題。對於編程水平好的,我更推薦CubieBoard CC80或者Jetson TK1,因它們的性能會強大很多,玩起來會更加舒服。如果沒有編程基礎或者想要玩軟硬結合的,還是建議從PC編程或者Arduino、單片機開始學**。 對於第二類,選擇就不那么簡單了。首先要知道,在過去(其實拋開開源硬件,現在也是一樣),MPU是一種很復雜的東西,一般得熟練掌握單片機之后才能去接觸MPU。而且MPU通常涉及到Linux內核的修改、Linux驅動的開發、Linux軟件的編寫這類事情,需要的知識儲備很多。對於一般愛好者來說,玩MPU完全就是天方夜譚。但是MPU又是那么吸引人,數百兆的主頻,數十兆的存儲空間,是MCU根本無法想象的。MPU就像是一台真正的PC,而MCU只能算個玩具。國外的開源硬件大佬自然也看見了這一點,於是就有了樹莓派這樣的產品。樹莓派就是融合了開源硬件易用性和MPU強大功能的產品。現在,對於想要玩高端平台的愛好者,最主要的選擇就是樹莓派和STM32(雖然它們根本不是一個量級的東西,但是由於2440類的東西開發難度太大,業余愛好者一般較少涉足)。那么我們就來對比下,樹莓派和STM32分別能做什么,都能做的東西開發起來有什么區別。
1. 只有樹莓派能做的:機器視覺、視頻解碼、3D游戲等。
2. STM32和樹莓派都能做的:飛控、3D打印控制、音頻解碼、網絡監控、物聯網傳感器等等。
3. 只有STM32能做的:基本沒有。
小結STM32能做的,樹莓派都能做樹莓派能做的,STM32不一定能做
再來看看對於都可以做的東西,兩者開發上有什么區別。以網絡視頻監控為例吧。STM32的開發流程是這樣的:硬件選型→設計PCB→焊接→調試硬件→編寫DCMI和RMII驅動→移植TCP/IP協議棧→調整攝像頭驅動→編寫網頁服務器程序→完成。其中涉及的代碼量非常大,不過好在都比較基礎,愛好者還能應付一下。而樹莓派的開發流程則完全不一樣:買一台樹莓派和一個攝像頭→把攝像頭連接到樹莓派上→在樹莓派上安裝一個監控軟件→完成,簡直就像玩一樣,半個小時就能完成。 對於愛好者來說,樹莓派確實是利器,不用很長的時間就能實現很棒的效果,自己寫程序也不是太復雜,就參考PC上的Linux程序編寫教程就可以,因為網絡協議、圖形庫這些都是現成的,省去了很多麻煩。不過,有利也有弊,樹莓派是個高度封裝的東西,如果想要借此學**ARM Linux的基礎開發,我還是勸你轉投2440的懷抱,因為樹莓派說是開源硬件,但是實際上它的底層Bootloader和核心數據手冊是閉源的,對於應用開發沒有影響,但是學**原理就要命了。另一點,就是成本。如果你做的這個東西要量產,那么成本就變得很重要,基於STM32的網絡監控方案可以比基於樹莓派的方案成本低一半以上,這可是十分吸引人的。當然我只是舉個例子,實際上,目前市場上網絡監控用的既不是STM32,也不是樹莓派,而是專門定制的ARM9。 那么對於愛好者,STM32有什么意義呢?看起來似乎上面提到的兩個弊端都沒什么關系啊。讓我說的話,STM32的優點就是更為基礎,這個理由和上面對於51單片機的觀點是類似的,玩STM32可以學到更多基礎的知識,腳踏實地慢慢來,路上的風景也很精彩啊,從零開始,看着自己的作品一點點完善,難道不是一件很有趣的事情嗎?功利地說,如果要從事電子工程師的工作,這些知識和經驗將會十分有用,因為工作也是和基礎的東西打交道,無論是MCU還是MPU都一樣,將要面對的,是**裸的原理圖和源代碼,而不是apt-get install。
總結講了那么多,不知道大家對於這些東西的區別有沒有一個大概的了解。我寫這篇文章,並不是想告訴你“STM32好”、“樹莓派超級棒”這種觀點,而是希望大家能根據自己的愛好和需要,選擇合適的產品,而不是盲目跟風。最后,祝大家玩得開心!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM