從技術的角度定義:以應用為中心,以計算機技術為基礎,軟體硬體可裁剪,適應應用系統對功能、可靠性、成本、體積、重量、功耗嚴格要求的專用計算機系統。簡而言之,是含有處理器的專用軟硬體系統,具有自主的資訊處理能力( 資訊裝備)。
從系統的角度定義:嵌入式系統是設計完成複雜功能的硬體和軟體,並使 其緊密耦合在一起的計算機系統。術語嵌入式反映了這些系統通常是更大系統中的一個完整的部分,稱為嵌入的系統。嵌入的系統中可以共存多個嵌入式系統。
英國電機工程師協會的定義– Devices used to control, monitor, or assist theoperation of equipment, machinery or plants(用於控制、監視或者輔助操作機器和裝置的裝置)。
微機學會的定義– 嵌入式系統是以嵌入式應用為目的的計算機系統,可分為系統級、 模組級、 晶片級。
系統級:各種型別的工控機 以標準匯流排互聯(背板結構)的工控機: CPCI、 PCI-ISA、 VME 等。
模組級:各種型別的帶CPU的模組,嵌入式CPU模組: PC104模組、 Biscuit板。
晶片級:各種以微控制器、 DSP、嵌入式微處理器為核心的產品。
主要有以下幾個特點:
嵌入專用:嵌入式處理器只嵌入在針對特定應用設計的系統中;
綜合性強:嵌入式系統是將計算機技術、半導體技術和電子技術與各個行業的具體應用相結合後的產物;
設計高效:嵌入式系統的硬體和軟體都必須高效率的設計,量體裁衣、取出冗餘;
程式固化:軟體一般都固化在儲存器晶片或處理器本身中,提高了系統的執行速度和可靠性;
需要獨立的開發系統:嵌入式系統本身不具備開發能力,必須有一套開發工具和環境才能進行開發;
生命週期長:嵌入式系統和具體應用結合在一起,其升級換代一般與具體產品同步進行,因此具有較長的生命週期
其他如可靠性高、成本低、功耗低等。
應用十分廣泛,例如坦克、導彈、飛機、軍艦、雷達、DVD機、電視機、微波爐、洗衣機、電冰箱、熱水器、手機、 MP3播放器、數碼相機、數碼攝像機、機頂盒、鍵盤、滑鼠、快閃記憶體盤、 CD-ROM、交換機、路由器,幾乎我們生活中用到的方方面面都有嵌入式系統的“嵌入”。
嵌入式系統看似可以簡單分為硬體與軟體,然而其中卻包含著異常龐大的知識量,也因此令許多新手望而卻步,學習嵌入式系統大致分為三個階段:基礎篇、進階篇、大咖篇。
此階段主要是前期的入門過程,一定要打好基礎,主要學習一下幾個方面
(1)電路知識
首先要學習電路、模電、數電,認識電阻、電容、電感等基礎器件,放大電路、整合運放、時序電路基本電路能看懂,不然看電路圖一定是雲裡霧裡,也就無法進行後續的工作。硬體產品的設計實現,包括器件選型、原理圖和PCB設計、電路除錯,都需要過硬的電路基礎。
(2)C語言
C語言嵌入式開發中最重要的程式語言,掌握本的資料型別、陣列、指標、結構體,連結串列、檔案操作等都要會,掌握基本語法和語句,保證自己會寫程式的同時也能看懂別人寫的程式。
(3)微控制器
微控制器入門相對簡單,透過微控制器的學習可以熟悉微控制器的硬體結構,包括I/O口、AD轉換、通訊(串列埠、並口、I2C、CAN、USB、乙太網、ZigBee技術等)、顯示(LED、LCD等)、控制(PWM等控制技術)、資料處理(圖形、影象、語音、影片等的處理或識別)等,學好微控制器可以為採用嵌入式系統奠定良好的基礎。
(4)Linux基礎
Linux的原始碼和架構都是開放的,在嵌入式系統中應用尤為廣泛,學習Linux對於系統的開發會有很大的幫助。詳細瞭解Linux下的目錄結構、基本命令、編輯器VI、編譯器GCC、偵錯程式GDB和 Make 專案管理工具,Shell Makefile指令碼編寫等知識,以及嵌入式開發環境的搭建。
經過第一個階段的學習,你已經可以進行嵌入式開發工作了,但是要進階依舊還有很多知識要學,而這個階段也將是第一個分水嶺,使得優秀的嵌入式工程師得以脫穎而出。此階段雖然只有三項,但涉及的知識非常廣,要想學好需要花費大量的精力。
1.Linux程式設計
系統程式設計可以直接跟核心及核心系統程式庫對話,深入瞭解Linux核心。掌握Linux系統程式設計主要提升對Linux應用開發的理解和程式碼除錯的能力。由於網路應用開發越來越廣泛,透過Linux網路發展、TCP/IP協議、socket程式設計、TCP網路程式設計、UDP網路程式設計、Web程式設計開發等方面入手,可以全面瞭解Linux網路應用程式開發。
2資料結構與演算法
資料結構及演算法在嵌入式底層驅動、通訊協議及各種引擎開發中得到了廣泛的應用,語言編譯要使用棧、散列表以及語法樹;作業系統中用佇列、儲存管理表及目錄樹等;資料庫系統運用線型表、多連結串列及索引表進行資料管理等等,對其掌握的好壞直接影響程式的效率、簡潔及健壯性。
3.QT、DSP、FPGA
Linux沒有自己介面,學習QT程式設計可以建立藝術級的圖形使用者介面所需的所有功能,從而更好的實現人機互動控制。而如今使用者對於圖形影象的要求也越來越高,這就需要DSP、FPGA技術來設計開發更好的嵌入式視覺系統。
學習了前兩個階段的知識,你已經可以勝任大部分嵌入式工作了,但是距離大咖仍有一定的差距,其實已經到了第二個分水嶺。這部分更多涉及系統層面,沒有全方位的知識將會很難下手。
1作業系統平臺開發
除了Linux外,嵌入式作業系統還有ARM、WINCE、uC/OS II、Vxworks、uClinux等,不同的系統有著不同的使用環境,你需要學習掌握系統的各個模組,為底層平臺搭建做好準備。熟悉各個作業系統的特點以及系統的核心移植,確保作業系統能在某個微處理器或微控制器上執行。隨著手機智慧硬體的快速興起,Android作業系統開發也越來越重要。
2驅動開發
驅動程式設計是嵌入式Linux開發工作中非常重要的一部分。不僅要熟悉Linux的核心機制、驅動程式與使用者級應用程式的介面,掌握系統對裝置的併發操作。還要具備ARM硬體介面的基礎知識,熟悉ARM Cortex處理器各資源、掌握Linux裝置驅動原理框架,以及工程中常見Linux高階字元裝置、塊裝置、網路裝置、USB裝置的驅動開發。
當你學完以上所有的時候,那麼恭喜你,可以說你已經是一個嵌入式系統的大咖了。
從技術的角度定義:以應用為中心,以計算機技術為基礎,軟體硬體可裁剪,適應應用系統對功能、可靠性、成本、體積、重量、功耗嚴格要求的專用計算機系統。簡而言之,是含有處理器的專用軟硬體系統,具有自主的資訊處理能力( 資訊裝備)。
從系統的角度定義:嵌入式系統是設計完成複雜功能的硬體和軟體,並使 其緊密耦合在一起的計算機系統。術語嵌入式反映了這些系統通常是更大系統中的一個完整的部分,稱為嵌入的系統。嵌入的系統中可以共存多個嵌入式系統。
英國電機工程師協會的定義– Devices used to control, monitor, or assist theoperation of equipment, machinery or plants(用於控制、監視或者輔助操作機器和裝置的裝置)。
微機學會的定義– 嵌入式系統是以嵌入式應用為目的的計算機系統,可分為系統級、 模組級、 晶片級。
系統級:各種型別的工控機 以標準匯流排互聯(背板結構)的工控機: CPCI、 PCI-ISA、 VME 等。
模組級:各種型別的帶CPU的模組,嵌入式CPU模組: PC104模組、 Biscuit板。
晶片級:各種以微控制器、 DSP、嵌入式微處理器為核心的產品。
嵌入式系統有那些特點?主要有以下幾個特點:
嵌入專用:嵌入式處理器只嵌入在針對特定應用設計的系統中;
綜合性強:嵌入式系統是將計算機技術、半導體技術和電子技術與各個行業的具體應用相結合後的產物;
設計高效:嵌入式系統的硬體和軟體都必須高效率的設計,量體裁衣、取出冗餘;
程式固化:軟體一般都固化在儲存器晶片或處理器本身中,提高了系統的執行速度和可靠性;
需要獨立的開發系統:嵌入式系統本身不具備開發能力,必須有一套開發工具和環境才能進行開發;
生命週期長:嵌入式系統和具體應用結合在一起,其升級換代一般與具體產品同步進行,因此具有較長的生命週期
其他如可靠性高、成本低、功耗低等。
嵌入式系統有哪些應用?應用十分廣泛,例如坦克、導彈、飛機、軍艦、雷達、DVD機、電視機、微波爐、洗衣機、電冰箱、熱水器、手機、 MP3播放器、數碼相機、數碼攝像機、機頂盒、鍵盤、滑鼠、快閃記憶體盤、 CD-ROM、交換機、路由器,幾乎我們生活中用到的方方面面都有嵌入式系統的“嵌入”。
如何學習嵌入式系統?嵌入式系統看似可以簡單分為硬體與軟體,然而其中卻包含著異常龐大的知識量,也因此令許多新手望而卻步,學習嵌入式系統大致分為三個階段:基礎篇、進階篇、大咖篇。
基礎篇:此階段主要是前期的入門過程,一定要打好基礎,主要學習一下幾個方面
(1)電路知識
首先要學習電路、模電、數電,認識電阻、電容、電感等基礎器件,放大電路、整合運放、時序電路基本電路能看懂,不然看電路圖一定是雲裡霧裡,也就無法進行後續的工作。硬體產品的設計實現,包括器件選型、原理圖和PCB設計、電路除錯,都需要過硬的電路基礎。
(2)C語言
C語言嵌入式開發中最重要的程式語言,掌握本的資料型別、陣列、指標、結構體,連結串列、檔案操作等都要會,掌握基本語法和語句,保證自己會寫程式的同時也能看懂別人寫的程式。
(3)微控制器
微控制器入門相對簡單,透過微控制器的學習可以熟悉微控制器的硬體結構,包括I/O口、AD轉換、通訊(串列埠、並口、I2C、CAN、USB、乙太網、ZigBee技術等)、顯示(LED、LCD等)、控制(PWM等控制技術)、資料處理(圖形、影象、語音、影片等的處理或識別)等,學好微控制器可以為採用嵌入式系統奠定良好的基礎。
(4)Linux基礎
Linux的原始碼和架構都是開放的,在嵌入式系統中應用尤為廣泛,學習Linux對於系統的開發會有很大的幫助。詳細瞭解Linux下的目錄結構、基本命令、編輯器VI、編譯器GCC、偵錯程式GDB和 Make 專案管理工具,Shell Makefile指令碼編寫等知識,以及嵌入式開發環境的搭建。
進階篇經過第一個階段的學習,你已經可以進行嵌入式開發工作了,但是要進階依舊還有很多知識要學,而這個階段也將是第一個分水嶺,使得優秀的嵌入式工程師得以脫穎而出。此階段雖然只有三項,但涉及的知識非常廣,要想學好需要花費大量的精力。
1.Linux程式設計
系統程式設計可以直接跟核心及核心系統程式庫對話,深入瞭解Linux核心。掌握Linux系統程式設計主要提升對Linux應用開發的理解和程式碼除錯的能力。由於網路應用開發越來越廣泛,透過Linux網路發展、TCP/IP協議、socket程式設計、TCP網路程式設計、UDP網路程式設計、Web程式設計開發等方面入手,可以全面瞭解Linux網路應用程式開發。
2資料結構與演算法
資料結構及演算法在嵌入式底層驅動、通訊協議及各種引擎開發中得到了廣泛的應用,語言編譯要使用棧、散列表以及語法樹;作業系統中用佇列、儲存管理表及目錄樹等;資料庫系統運用線型表、多連結串列及索引表進行資料管理等等,對其掌握的好壞直接影響程式的效率、簡潔及健壯性。
3.QT、DSP、FPGA
Linux沒有自己介面,學習QT程式設計可以建立藝術級的圖形使用者介面所需的所有功能,從而更好的實現人機互動控制。而如今使用者對於圖形影象的要求也越來越高,這就需要DSP、FPGA技術來設計開發更好的嵌入式視覺系統。
大咖篇學習了前兩個階段的知識,你已經可以勝任大部分嵌入式工作了,但是距離大咖仍有一定的差距,其實已經到了第二個分水嶺。這部分更多涉及系統層面,沒有全方位的知識將會很難下手。
1作業系統平臺開發
除了Linux外,嵌入式作業系統還有ARM、WINCE、uC/OS II、Vxworks、uClinux等,不同的系統有著不同的使用環境,你需要學習掌握系統的各個模組,為底層平臺搭建做好準備。熟悉各個作業系統的特點以及系統的核心移植,確保作業系統能在某個微處理器或微控制器上執行。隨著手機智慧硬體的快速興起,Android作業系統開發也越來越重要。
2驅動開發
驅動程式設計是嵌入式Linux開發工作中非常重要的一部分。不僅要熟悉Linux的核心機制、驅動程式與使用者級應用程式的介面,掌握系統對裝置的併發操作。還要具備ARM硬體介面的基礎知識,熟悉ARM Cortex處理器各資源、掌握Linux裝置驅動原理框架,以及工程中常見Linux高階字元裝置、塊裝置、網路裝置、USB裝置的驅動開發。
當你學完以上所有的時候,那麼恭喜你,可以說你已經是一個嵌入式系統的大咖了。