1. 程式人生 > >樹莓派、 Arduino 、傳統微控制器開發板該如何選擇?

樹莓派、 Arduino 、傳統微控制器開發板該如何選擇?

2016-10-31 16:41 | 《無線電》雜誌

幾十年前的電子愛好者,最喜歡的就是電烙鐵、麵包板和收音機;十幾年前,出現了微控制器,於是玩具就成了電烙鐵、麵包板和微控制器;到了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好”、“樹莓派超級棒”這種觀點,而是希望大家能根據自己的愛好和需要,選擇合適的產品,而不是盲目跟風。最後,祝大家玩得開心!