很多初學者搞不清Arnduino、arm、樹莓派、 單片機這幾個的區別。 其實拿這4者來比較本身就是一件錯誤的事。 這四者就像:大眾、12缸發動機、保時捷、小汽車的區別。 從一開始方向就走錯了,以為學習嵌入式,以上的所有東西都要學。 好不容易熬了幾個月,感覺還是一無所成,做不出什麼項目,經常會感覺懂了,又好像什麼都不懂。 這就是定位不夠精準導致的,把精力都分散出去了,最後沒一個能拿得出手的。 這四者都是屬於嵌入式技術範疇,嵌入式涉及的技術知識體係非常龐大。 理論上一個人不可能全部都吃得下,除非你從大學開始把談戀愛、打遊戲、刷視頻的時間都奉獻出來。 對於大多數普通人來說,專注於嵌入式某個細分方向深耕足夠了。 下麵分別對這4者來分析下: 單片機有很多不同的品牌和型號,Arduino是單片機的一種。 一般來說是以AVR單片機為首的 集成電路板就叫Arduino(當然後麵還有用STM32或者其他單片機開發的非官方版,這裏就不一一闡述了)。 Arduino用專業的術語說就是開源的硬件開發學習平台,包含了多種型號的Arduino電路板和專用編程開發工具(Arduino IDE)。 Arduino SKD有很多現成的庫函數,用於對硬件層的控製。 開發者通過調用庫函數就能輕易地使用AVR這個芯片的功能,然後通過不同程序去實現不同的硬件控製,比如說控製燈、 繼電器、電機、蜂鳴器之類的。 而不需要像單片機開發那樣要看芯片數據手冊去配置寄存器使用芯片功能。 雖然用Arduino開發 電子產品效率像開掛一樣,不過實際產品卻很少用。 因為實際的產品在成本、尺寸、性能、功耗等方麵都有特定的要求。 Arduino一般是用於給你學習和提升c語言用的,通過這個平台你可以快速了解c語言是如何控製硬件的。 還有就是一些創客需要快速去實現某些奇特的想法。 所以,如果是走Linux軟件方向的,從Arduino入手比較合適,如果你想從事單片機開發偏硬件方向,我建議直接從51單片機入手。 2. arm 前麵我們把Arduino比作是大眾,樹莓派是保時捷,那arm就是一個V12發動機。 Arm本身就是一家英國公司名簡稱(Advanced RISC Machines),arm也是一種芯片內核技術。 我們單片機一般都是有內核的,比如說51內核,以前因特爾設計的,主要針對一些控製和運算比較簡單的電子產品。 還有ARM內核的,主要針對運算和控製比較複雜的電子產品。 Arduino的AVR單片機正好介於這兩者之間,比51內核強大,比ARM內核菜。 單純的內核不能直接應用在產品,需要進行二次開發,所以,ARM公司一般會把這種內核技術賣給半導體公司做二次設計。 一般ARM公司有3種授權級別: ①.架構層授權 這個級別是指可以對ARM內核架構進行大量改造,包括彙編指令集的擴展和縮減,像蘋果就是在ARMV7-A架構基礎上,擴展出swift架構。 除了蘋果以外,還有海思麒麟、聯發科、三星、高通等cpu大多都是ARM架構。 ②.內核層授權 這個級別是可以在這個內核基礎上可以加自己需要的外設,比如說GPIO、USART、ADC、DMA等等,最後做成自己的單片機。 像STM32就是這樣幹的,類似的芯片還有巨多,大多數出SOC單片機的都是屬於這層。 ③.使用層授權 這個層級權限最低,相當於你隻能使用它,不能對它進行修改。 ARM內核也分很多個版本,ARM7、ARM9、ARM11,到了ARM11以後就是以Cortex命名了。 Cortex架構也分三個係列性能從低到高:M、R、A。 Cortex-M定位是中低端市場,也就是我們的單片機,也叫微控製器,我們最常用的STM32F103就是Cortex-M3的內核。 Cortex-R定位高端實時係統,比如說醫療、工業、汽車、基帶等等領域。 Cortex-A定位是通用市場,典型的就是平板 電腦、手機、數字電視、機頂盒、服務器、打印機等領域。 3.樹莓派 樹莓派和Arduino有點像,不是某個芯片,而是一個集成的電路板。 樹莓派性能比Arduino要強悍很多,樹莓派用的是ARM內核處理器,接上鼠標和鍵盤就可以當迷你電腦一樣用。 不過電腦一般是window係統,而樹莓派大多是Linux。 很多想學習Linux,想從事嵌入式純軟件方向的就是基於樹莓派這個平台來學習的。 4.單片機 這個我是最熟悉的,畢竟自己幹了10年。 單片機就是一個芯片,品牌和型號都很多,比如GD、ST、TI、STC、新唐、NXP等等太多了。 單片機需要做電路和程序的二次開發才能實現一個完整的電子產品功能。 這個方向的職位有幾個:單片機工程師、STM32工程師、嵌入式工程師。 學習的知識體係也更多,總體來說基礎部分有3個:基礎電路、C語言、單片機(51,STM32)。 更加詳細的學習路徑和步驟可以通過無際單片機編程了解。 Arduino就是相當於用AVR的單片機幫你做好底層硬件和基礎單片機寄存器配置程序,你直接使用就能實現。 從難度來說單片機開發更難,Arduino更簡單。 從產品的角度,單片機也比Arduino應用更加廣泛。 單純學Arduino基本沒什麼就業方向,Arduino打c語言基礎,需要繼續往樹莓派學習,主要往Linux應用開發。 |