01 問題
很多同學(xué)一直在糾結(jié):我是學(xué)單片機(jī)呢還是學(xué)嵌入式呢?
還有人說單片機(jī)也是嵌入式,到底對不對?
嵌入式是不是就是linux?
今天咱們說說這個問題。
單片機(jī)的本質(zhì)是一種計算機(jī)。
計算機(jī)就是一個硬件上包含了CPU、內(nèi)存和一定外設(shè)(IO引腳、網(wǎng)口、I2C接口、串口等),并且可以運(yùn)行一定的程序的電子系統(tǒng)。
計算機(jī)有很多種。大的如超算,幾間房那么大。小的如個人電腦臺式機(jī)、筆記本電腦大家都很熟,再小的如平板和手機(jī),這些都是計算機(jī)。再小的如智能手表也是計算機(jī)。
只要符合上面定義,硬件上有以CPU為首的幾大件,軟件上能運(yùn)行程序他就是計算機(jī)。
而單片機(jī)是一種計算機(jī),這種計算機(jī)的特點(diǎn)就是“單片”。
下圖 左邊是一個電腦主板,右圖是一個單片機(jī)。
明顯可以看出,電腦主板很復(fù)雜,而單片機(jī)很簡單。
如果你見過電腦主板,就知道這東西核心是一塊PCB板,上面焊接了眾多的芯片。而每一個芯片其實就是一個“單片”,所以電腦這臺計算機(jī)就是個“多片機(jī)”。
而單片機(jī)就是只有一個芯片(本質(zhì)上是芯片內(nèi)只有一個半導(dǎo)體chip)的計算機(jī)系統(tǒng)。
那為什么都是計算機(jī),有些就要多片,而有些就單片呢?其實還是功能大小的問題。藏獒長那么大,寵物犬長那么小,但是它們都是狗,一樣的道理。
單片機(jī)其實是有清晰定義的,就是單個片(chip)上的計算機(jī)系統(tǒng)。而不同的單片機(jī)雖然配置不同,性能不同,廠家不同,甚至指令集和開發(fā)方式不同,但是都是在一個片上的完整的計算機(jī)系統(tǒng),這個定義不會錯。
而嵌入式就是個不清晰的定義了,并沒有非常明確的關(guān)于“嵌入式”這個詞的定義。他也不像單片機(jī)一樣,是個確定的“物”的名字。
嵌入式(英文是embeded)本質(zhì)上是一種電子設(shè)計方法,這種方法就是將微型計算機(jī)嵌入到電子產(chǎn)品內(nèi)部。只要符合這種設(shè)計方法的電子產(chǎn)品就可以稱為嵌入式系統(tǒng)。這有點(diǎn)像客家菜的釀(又寫為讓)苦瓜釀豆腐一樣,我剛到廣東只覺得這東西好吃名字奇怪,后來才知道讓其實就是一種操作手法,就是把肉餡塞進(jìn)苦瓜或者豆腐里,這個塞進(jìn)的設(shè)計方法就叫做讓。所以嵌入式系統(tǒng)和讓苦瓜其實是一類命名手法。
其實是歷史原因。因為早期的半導(dǎo)體工藝不發(fā)達(dá),計算機(jī)都是大塊頭。所以那時候的電子產(chǎn)品都是計算機(jī)獨(dú)立出來在外面,然后拉根線去電子產(chǎn)品里控制他。
大家你想想一下一臺空調(diào),空調(diào)是空調(diào)只管制冷,上面也沒有按鍵,然后空調(diào)拉根線出來接上一臺電腦上,然后通過電腦按鍵盤來控制空調(diào)。這種空調(diào)就叫非嵌入式系統(tǒng)。
而現(xiàn)實中你看到的空調(diào)都不是這樣,空調(diào)柜機(jī)上有按鈕可以直接按,本質(zhì)上是空調(diào)內(nèi)部集成了一個電路板,這個電路板其實就是一個嵌入式的計算機(jī),用來控制空調(diào)的。因為把計算機(jī)電路板“嵌入”到空調(diào)里了,所以叫嵌入式系統(tǒng)。
所以你現(xiàn)在明白了,現(xiàn)在你看到的所有的計算機(jī)系統(tǒng):
除了個人電腦(實際上還有服務(wù)器等專用電腦,但是大家都很少見)外其實都是嵌入式系統(tǒng)。
包括:空調(diào)、冰箱、洗衣機(jī)等家電,汽車火車飛機(jī)等大件,智能手機(jī)和智能手表和其他可穿戴智能硬件,攝像頭、智能門鎖、自助辦理機(jī)器等,太多了。
那單片機(jī)到底是不是嵌入式呢?簡單來說:是。
因為很多嵌入式產(chǎn)品中被嵌入的計算機(jī)系統(tǒng)就是單片機(jī),譬如空調(diào)中嵌入的控制板其實核心就是個單片機(jī)。實際上大部分家電產(chǎn)品中嵌入的計算機(jī)系統(tǒng)都是單片機(jī)。
因為單片機(jī)足夠簡單便宜而且夠用,所以使用單片機(jī)是最劃算最適合的。而單片機(jī)現(xiàn)在出貨量最大的領(lǐng)域也就是家電產(chǎn)品了,當(dāng)然未來IOT類的應(yīng)用會越來越多,會成為單片機(jī)的很大的增量市場。
嵌入式這個概念實際上很泛化,現(xiàn)在講嵌入式這個詞的人,可能想表達(dá)的意思并不相同。咱們上面講的嵌入式的概念是嵌入式本來的定義,也就是所謂廣義上的嵌入式。
而狹義的嵌入式,其實是“嵌入式linux系統(tǒng)”的簡稱。
這種狹義的嵌入式最初指的是運(yùn)行了linux系統(tǒng)的嵌入式計算機(jī)系統(tǒng)。后來也包括運(yùn)行了和linux同級別的其他嵌入式系統(tǒng)(譬如WinCE、Vxworks、Android等)的計算機(jī)。
這種能夠運(yùn)行l(wèi)inux的嵌入式計算機(jī)并不是單片機(jī),單片機(jī)限于資源和性能是運(yùn)行不了linux的。我們平時常見產(chǎn)品的智能手機(jī)、汽車中控大屏、工控HMI、網(wǎng)絡(luò)攝像機(jī)等就是這類狹義的嵌入式系統(tǒng)。
所以當(dāng)你和一個人討論單片機(jī)究竟算不算嵌入式的時候,你要先和他確認(rèn)下他所認(rèn)為的嵌入式到底具體是什么?
好了,現(xiàn)在我們可以給出結(jié)論了: 從廣義上講單片機(jī)屬于嵌入式,而從狹義上講單片機(jī)不屬于嵌入式(linux)。
其實關(guān)于單片機(jī)和嵌入式,還有很多經(jīng)常被問的問題,咱們后面逐個寫文章慢慢講吧,一篇文章解決一個問題。
我應(yīng)該學(xué)單片機(jī)還是學(xué)嵌入式?
單片機(jī)有什么優(yōu)勢和劣勢?嵌入式有什么優(yōu)勢和劣勢?
學(xué)嵌入式要先學(xué)單片機(jī)嗎?
學(xué)單片機(jī)(嵌入式)要學(xué)C(C++,Java,python)語言嗎?
做單片機(jī)(嵌入式)是青春飯嗎?35歲以后會沒飯吃嗎?
學(xué)單片機(jī)(嵌入式)必須要學(xué)硬件PCB畫板嗎?
學(xué)單片機(jī)要學(xué)RTOS(ucos、freertos)嗎?
學(xué)單片機(jī)(嵌入式)能掙多少錢?發(fā)展前途怎么樣?