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