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