什么是嵌入式系統(tǒng)?
【醫(yī)械測試楊先生】來回答什么是嵌入式系統(tǒng):嵌入式系統(tǒng)是依據(jù)不同角度有不同定義的一種系統(tǒng),往下看:
曾在知乎上看到一篇20萬贊文章,回答的是厲害的人是怎么分析問題的,我覺得對我們會特別有用,其中提到當你講了一大段話后問大家:大家有沒有問題?大家可能會沉默或者回答沒有問題,這時你千萬不要以為大家都聽懂了,更大的可能是:他不知道什么是真正的聽懂以及為什么要聽你說這么一大段話,他沒有一個期望值;不知道自己聽懂了什么,沒聽懂什么,處在游離狀態(tài)找不到自己的現(xiàn)狀…因此,不是他完全聽懂了,沒有問題,而是不知道自己有沒有聽懂,不知道什么算是完全聽懂,因而找不到這個落差在哪里,沒有發(fā)現(xiàn)落差也就沒有發(fā)現(xiàn)問題,所以就沉默或者回答:沒有問題。
那么仔細思考下,我覺得這是很多人都會有的一種現(xiàn)象,既然了解了,我們可以避免這種現(xiàn)象發(fā)生,至少我自己應(yīng)該想著如何去改變,基于此,對于這個問題:我覺得可以加深一步提問,什么是嵌入式系統(tǒng)?嵌入式系統(tǒng)有哪些特點?嵌入式系統(tǒng)有哪些應(yīng)用?如何學習嵌入式系統(tǒng)? 下面一一展開。
什么是嵌入式系統(tǒng)?從技術(shù)的角度定義:以應(yīng)用為中心,以計算機技術(shù)為基礎(chǔ),軟件硬件可裁剪,適應(yīng)應(yīng)用系統(tǒng)對功能、可靠性、成本、體積、重量、功耗嚴格要求的專用計算機系統(tǒng)。簡而言之,是含有處理器的專用軟硬件系統(tǒng),具有自主的信息處理能力( 信息裝備)。
從系統(tǒng)的角度定義:嵌入式系統(tǒng)是設(shè)計完成復(fù)雜功能的硬件和軟件,并使 其緊密耦合在一起的計算機系統(tǒng)。術(shù)語嵌入式反映了這些系統(tǒng)通常是更大系統(tǒng)中的一個完整的部分,稱為嵌入的系統(tǒng)。嵌入的系統(tǒng)中可以共存多個嵌入式系統(tǒng)。
英國電機工程師協(xié)會的定義– Devices used to control, monitor, or assist theoperation of equipment, machinery or plants(用于控制、監(jiān)視或者輔助操作機器和設(shè)備的裝置)。
微機學會的定義– 嵌入式系統(tǒng)是以嵌入式應(yīng)用為目的的計算機系統(tǒng),可分為系統(tǒng)級、 模塊級、 芯片級。
系統(tǒng)級:各種類型的工控機 以標準總線互聯(lián)(背板結(jié)構(gòu))的工控機: CPCI、 PCI-ISA、 VME 等。
模塊級:各種類型的帶CPU的模塊,嵌入式CPU模塊: PC104模塊、 Biscuit板。
芯片級:各種以微控制器、 DSP、嵌入式微處理器為核心的產(chǎn)品。
嵌入式系統(tǒng)有那些特點?主要有以下幾個特點:
嵌入專用:嵌入式處理器只嵌入在針對特定應(yīng)用設(shè)計的系統(tǒng)中;
綜合性強:嵌入式系統(tǒng)是將計算機技術(shù)、半導體技術(shù)和電子技術(shù)與各個行業(yè)的具體應(yīng)用相結(jié)合后的產(chǎn)物;
設(shè)計高效:嵌入式系統(tǒng)的硬件和軟件都必須高效率的設(shè)計,量體裁衣、取出冗余;
程序固化:軟件一般都固化在存儲器芯片或處理器本身中,提高了系統(tǒng)的執(zhí)行速度和可靠性;
需要獨立的開發(fā)系統(tǒng):嵌入式系統(tǒng)本身不具備開發(fā)能力,必須有一套開發(fā)工具和環(huán)境才能進行開發(fā);
生命周期長:嵌入式系統(tǒng)和具體應(yīng)用結(jié)合在一起,其升級換代一般與具體產(chǎn)品同步進行,因此具有較長的生命周期
其他如可靠性高、成本低、功耗低等。
嵌入式系統(tǒng)有哪些應(yīng)用?應(yīng)用十分廣泛,例如坦克、導彈、飛機、軍艦、雷達、DVD機、電視機、微波爐、洗衣機、電冰箱、熱水器、手機、 MP3播放器、數(shù)碼相機、數(shù)碼攝像機、機頂盒、鍵盤、鼠標、閃存盤、 CD-ROM、交換機、路由器,幾乎我們生活中用到的方方面面都有嵌入式系統(tǒng)的“嵌入”。
如何學習嵌入式系統(tǒng)?嵌入式系統(tǒng)看似可以簡單分為硬件與軟件,然而其中卻包含著異常龐大的知識量,也因此令許多新手望而卻步,學習嵌入式系統(tǒng)大致分為三個階段:基礎(chǔ)篇、進階篇、大咖篇。
基礎(chǔ)篇:此階段主要是前期的入門過程,一定要打好基礎(chǔ),主要學習一下幾個方面
(1)電路知識
首先要學習電路、模電、數(shù)電,認識電阻、電容、電感等基礎(chǔ)器件,放大電路、集成運放、時序電路基本電路能看懂,不然看電路圖一定是云里霧里,也就無法進行后續(xù)的工作。硬件產(chǎn)品的設(shè)計實現(xiàn),包括器件選型、原理圖和PCB設(shè)計、電路調(diào)試,都需要過硬的電路基礎(chǔ)。
(2)C語言
C語言嵌入式開發(fā)中最重要的編程語言,掌握本的數(shù)據(jù)類型、數(shù)組、指針、結(jié)構(gòu)體,鏈表、文件操作等都要會,掌握基本語法和語句,保證自己會寫程序的同時也能看懂別人寫的程序。
(3)單片機
單片機入門相對簡單,通過單片機的學習可以熟悉單片機的硬件結(jié)構(gòu),包括I/O口、AD轉(zhuǎn)換、通信(串口、并口、I2C、CAN、USB、以太網(wǎng)、ZigBee技術(shù)等)、顯示(LED、LCD等)、控制(PWM等控制技術(shù))、數(shù)據(jù)處理(圖形、圖像、語音、視頻等的處理或識別)等,學好單片機可以為采用嵌入式系統(tǒng)奠定良好的基礎(chǔ)。
(4)Linux基礎(chǔ)
Linux的源碼和架構(gòu)都是開放的,在嵌入式系統(tǒng)中應(yīng)用尤為廣泛,學習Linux對于系統(tǒng)的開發(fā)會有很大的幫助。詳細了解Linux下的目錄結(jié)構(gòu)、基本命令、編輯器VI、編譯器GCC、調(diào)試器GDB和 Make 項目管理工具,Shell Makefile腳本編寫等知識,以及嵌入式開發(fā)環(huán)境的搭建。
進階篇經(jīng)過第一個階段的學習,你已經(jīng)可以進行嵌入式開發(fā)工作了,但是要進階依舊還有很多知識要學,而這個階段也將是第一個分水嶺,使得優(yōu)秀的嵌入式工程師得以脫穎而出。此階段雖然只有三項,但涉及的知識非常廣,要想學好需要花費大量的精力。
1.Linux編程
系統(tǒng)編程可以直接跟內(nèi)核及核心系統(tǒng)程序庫對話,深入了解Linux內(nèi)核。掌握Linux系統(tǒng)編程主要提升對Linux應(yīng)用開發(fā)的理解和代碼調(diào)試的能力。由于網(wǎng)絡(luò)應(yīng)用開發(fā)越來越廣泛,通過Linux網(wǎng)絡(luò)發(fā)展、TCP/IP協(xié)議、socket編程、TCP網(wǎng)絡(luò)編程、UDP網(wǎng)絡(luò)編程、Web編程開發(fā)等方面入手,可以全面了解Linux網(wǎng)絡(luò)應(yīng)用程序開發(fā)。
2數(shù)據(jù)結(jié)構(gòu)與算法
數(shù)據(jù)結(jié)構(gòu)及算法在嵌入式底層驅(qū)動、通信協(xié)議及各種引擎開發(fā)中得到了廣泛的應(yīng)用,語言編譯要使用棧、散列表以及語法樹;操作系統(tǒng)中用隊列、存儲管理表及目錄樹等;數(shù)據(jù)庫系統(tǒng)運用線型表、多鏈表及索引表進行數(shù)據(jù)管理等等,對其掌握的好壞直接影響程序的效率、簡潔及健壯性。
3.QT、DSP、FPGA
Linux沒有自己界面,學習QT編程可以創(chuàng)建藝術(shù)級的圖形用戶界面所需的所有功能,從而更好的實現(xiàn)人機交互控制。而如今用戶對于圖形圖像的要求也越來越高,這就需要DSP、FPGA技術(shù)來設(shè)計開發(fā)更好的嵌入式視覺系統(tǒng)。
大咖篇學習了前兩個階段的知識,你已經(jīng)可以勝任大部分嵌入式工作了,但是距離大咖仍有一定的差距,其實已經(jīng)到了第二個分水嶺。這部分更多涉及系統(tǒng)層面,沒有全方位的知識將會很難下手。
1操作系統(tǒng)平臺開發(fā)
除了Linux外,嵌入式操作系統(tǒng)還有ARM、WINCE、uC/OS II、Vxworks、uClinux等,不同的系統(tǒng)有著不同的使用環(huán)境,你需要學習掌握系統(tǒng)的各個模塊,為底層平臺搭建做好準備。熟悉各個操作系統(tǒng)的特點以及系統(tǒng)的內(nèi)核移植,確保操作系統(tǒng)能在某個微處理器或微控制器上運行。隨著手機智能硬件的快速興起,Android操作系統(tǒng)開發(fā)也越來越重要。
2驅(qū)動開發(fā)
驅(qū)動程序設(shè)計是嵌入式Linux開發(fā)工作中非常重要的一部分。不僅要熟悉Linux的內(nèi)核機制、驅(qū)動程序與用戶級應(yīng)用程序的接口,掌握系統(tǒng)對設(shè)備的并發(fā)操作。還要具備ARM硬件接口的基礎(chǔ)知識,熟悉ARM Cortex處理器各資源、掌握Linux設(shè)備驅(qū)動原理框架,以及工程中常見Linux高級字符設(shè)備、塊設(shè)備、網(wǎng)絡(luò)設(shè)備、USB設(shè)備的驅(qū)動開發(fā)。
當你學完以上所有的時候,那么恭喜你,可以說你已經(jīng)是一個嵌入式系統(tǒng)的大咖了。
但學如逆水行舟,不進則退!活到老,學到老!學無止境...切記大咖也不能止步不前哦!
所以問一句,你聽懂了嗎?
覺得不錯的話點個贊然后關(guān)注一下,關(guān)注評論交流@