{eval=Array;=+count(Array);}
嵌入式系統(tǒng)是一個(gè)計(jì)算機(jī)系統(tǒng),在一個(gè)較大的機(jī)械或電氣系統(tǒng)中具有專用功能,通常具有實(shí)時(shí)計(jì)算約束,作為一個(gè)完整的設(shè)備的一部分被嵌入,通常包括硬件和機(jī)械部件。嵌入式系統(tǒng)控制著今天常用的許多設(shè)備, 98%的微處理器都是作為嵌入式系統(tǒng)的組件制造的。
典型的嵌入式計(jì)算機(jī)與通用相對應(yīng)的計(jì)算機(jī)屬性的例子是低功耗,小尺寸,穩(wěn)定的操作范圍和低單位成本。這是以有限的處理資源為代價(jià)的,這使得編程和交互更加困難。然而,通過在硬件之上構(gòu)建智能機(jī)制,利用可能存在的傳感器和嵌入式單元網(wǎng)絡(luò)的存在,既可以優(yōu)化管理單元和網(wǎng)絡(luò)級別的可用資源,又可以提供增強(qiáng)的功能,遠(yuǎn)遠(yuǎn)超越那些可用。例如,可以設(shè)計(jì)智能技術(shù)來管理嵌入式系統(tǒng)的功耗。 數(shù)字信號(hào)處理器(DSP)是一種常見的標(biāo)準(zhǔn)專用處理器。
由于嵌入式系統(tǒng)專用于特定任務(wù),設(shè)計(jì)工程師可以對其進(jìn)行優(yōu)化,以減少產(chǎn)品的尺寸和成本,并提高可靠性和性能。一些嵌入式系統(tǒng)是大規(guī)模生產(chǎn)的,受益于規(guī)模經(jīng)濟(jì)。
嵌入式系統(tǒng)的范圍從便攜式設(shè)備(如數(shù)字手表和MP3播放器)到大型固定安裝(如交通信號(hào)燈,工廠控制器以及復(fù)雜系統(tǒng),如混合動(dòng)力車輛,MRI和航空電子設(shè)備)。復(fù)雜性從單個(gè)微控制器芯片的低端到具有多個(gè)單元的高端設(shè)備,外圍設(shè)備和網(wǎng)絡(luò)安裝在大型機(jī)箱或機(jī)箱內(nèi)。
了解更多硅谷前沿深度訊息請看 硅發(fā)布 微信公眾號(hào)
所謂嵌入式系統(tǒng),指的是為特定應(yīng)用而設(shè)計(jì)的專用計(jì)算機(jī)系統(tǒng),嵌入式系統(tǒng)由硬件+軟件構(gòu)成。我們分別從硬件和軟件這兩個(gè)方面來講述。
一、我們來看硬件部分:
我們都有使用個(gè)人桌面電腦的經(jīng)歷,而個(gè)人電腦系統(tǒng)屬于通用計(jì)算機(jī)系統(tǒng)。那嵌入式系統(tǒng)跟通用系統(tǒng)在硬件設(shè)計(jì)上有什么區(qū)別呢?
1. 通用計(jì)算機(jī)系統(tǒng)
這里所講的通用計(jì)算機(jī)系統(tǒng),主要指的是intel x86系統(tǒng)。這種系統(tǒng)基本由intel cpu + 南北橋芯片組成。cpu通過南橋連接到低速外設(shè),比如:實(shí)時(shí)時(shí)鐘、usb、以太網(wǎng)、wifi、藍(lán)牙等;通過北橋連接到高速外設(shè),比如:內(nèi)存,顯卡等。
這樣設(shè)計(jì)的通用系統(tǒng)性能非常強(qiáng)大。比如,我們可以在個(gè)人電腦上辦公、運(yùn)行大型軟件、玩游戲、運(yùn)行photoshop等。
我們在使用個(gè)人PC的時(shí)候也從來不關(guān)注能耗的問題,反正我們玩電腦都要插電源的。
以上是通用系統(tǒng)(以個(gè)人電腦為例)的硬件架構(gòu)和使用場景。
2. 嵌入式系統(tǒng)
跟通用計(jì)算機(jī)系統(tǒng)不同,嵌入式系統(tǒng)使用所謂的soc實(shí)現(xiàn)硬件的最大集成。具體來講就是把cpu和外設(shè)都封裝在同一個(gè)芯片上,也叫soc,或者叫片上系統(tǒng)。
這樣設(shè)計(jì)有什么好處呢?最大的好處就是減小系統(tǒng)尺寸、節(jié)能省電。
尺寸問題好理解,因?yàn)楹芏嗲度胧皆O(shè)備是手持的,甚至是可穿戴的。
為什么要考慮節(jié)能省電的問題呢?因?yàn)榍度胧较到y(tǒng)一般都無法做到像個(gè)人pc一樣持續(xù)供電。舉個(gè)例子:大疆的無人機(jī),就是一個(gè)典型的嵌入式系統(tǒng),你能想象讓它拖著一根電源線上天嗎?顯然不可能。所以,無人機(jī)系統(tǒng)必須要考慮電能的供給和消耗的問題。供給靠電池,消耗就是系統(tǒng)的事情了,所以低功耗的硬件才能工作更長的時(shí)間,而只有嵌入式專用系統(tǒng)才能做到低功耗。能耗和性能是嵌入式系統(tǒng)設(shè)計(jì)者需要不斷優(yōu)化和改善的兩個(gè)指標(biāo)。
另外有些外設(shè)和接口也是傳統(tǒng)的通用系統(tǒng)所不支持的,所以就需要嵌入式系統(tǒng)來做定制了。
二、再來看軟件部分:
嵌入式系統(tǒng)一般采用linux系統(tǒng)(也有wince,vxworks,ucos等),開發(fā)語言一般用c語言。因?yàn)閏語言的效率高、性能優(yōu),這樣可以最大程度的節(jié)省能耗、提升性能。我們在PC上做開發(fā)的時(shí)候可以選擇java,c#等開發(fā)語言,這些語言在開發(fā)上給我們提供了很大的便利性,但是代碼的執(zhí)行效率并不高。但是,在嵌入式系統(tǒng)上開發(fā)應(yīng)用軟件需要考慮的最大的因素就是性能,所以最佳的開發(fā)語言是c語言。這也是嵌入式系統(tǒng)和通用系統(tǒng)在軟件開發(fā)上的的差異。
以上,我從硬件和軟件這兩個(gè)方面解釋了什么是嵌入式系統(tǒng),希望對你有所幫助!
嵌入式分為嵌入式硬件和嵌入式軟件。所謂嵌入式,就是指軟件在特定的嵌入式硬件開發(fā)完成后,最后被固化在此硬件平臺(tái)中,當(dāng)硬件啟動(dòng)后,自動(dòng)執(zhí)行軟件,完成特定的功能。
嵌入式系統(tǒng)啟動(dòng)后,一般是沒有人機(jī)交互界面的,但會(huì)留有調(diào)試接口,如RS232串口、網(wǎng)口,可以通過終端工具檢測軟件運(yùn)行狀態(tài)、下發(fā)控制指令等。
嵌入式硬件工程師,主要掌握的是基于CPU設(shè)計(jì)計(jì)算主板的電路知識(shí)。所以模電、數(shù)電、EDA知識(shí)是這類工程師的基本功!除此之外,熟悉常用通信協(xié)議和總線,如CAN、SPI、I2C、PCIe、DDR,也是硬件工程師應(yīng)該掌握的技能。
嵌入式軟件工程師,編程語言、數(shù)據(jù)結(jié)構(gòu)是其基本功,除此之外,還應(yīng)該熟練掌握以下技能:
從這里可以看出,嵌入式軟件工程師與其他類型軟件工程師有一個(gè)很大的不同點(diǎn),就是需要掌握很多硬件知識(shí),這是由嵌入式開發(fā)的特點(diǎn)來決定的。
【醫(yī)械測試楊先生】來回答什么是嵌入式系統(tǒng):嵌入式系統(tǒng)是依據(jù)不同角度有不同定義的一種系統(tǒng),往下看:
曾在知乎上看到一篇20萬贊文章,回答的是厲害的人是怎么分析問題的,我覺得對我們會(huì)特別有用,其中提到當(dāng)你講了一大段話后問大家:大家有沒有問題?大家可能會(huì)沉默或者回答沒有問題,這時(shí)你千萬不要以為大家都聽懂了,更大的可能是:他不知道什么是真正的聽懂以及為什么要聽你說這么一大段話,他沒有一個(gè)期望值;不知道自己聽懂了什么,沒聽懂什么,處在游離狀態(tài)找不到自己的現(xiàn)狀…因此,不是他完全聽懂了,沒有問題,而是不知道自己有沒有聽懂,不知道什么算是完全聽懂,因而找不到這個(gè)落差在哪里,沒有發(fā)現(xiàn)落差也就沒有發(fā)現(xiàn)問題,所以就沉默或者回答:沒有問題。
那么仔細(xì)思考下,我覺得這是很多人都會(huì)有的一種現(xiàn)象,既然了解了,我們可以避免這種現(xiàn)象發(fā)生,至少我自己應(yīng)該想著如何去改變,基于此,對于這個(gè)問題:我覺得可以加深一步提問,什么是嵌入式系統(tǒng)?嵌入式系統(tǒng)有哪些特點(diǎn)?嵌入式系統(tǒng)有哪些應(yīng)用?如何學(xué)習(xí)嵌入式系統(tǒng)? 下面一一展開。
從技術(shù)的角度定義:以應(yīng)用為中心,以計(jì)算機(jī)技術(shù)為基礎(chǔ),軟件硬件可裁剪,適應(yīng)應(yīng)用系統(tǒng)對功能、可靠性、成本、體積、重量、功耗嚴(yán)格要求的專用計(jì)算機(jī)系統(tǒng)。簡而言之,是含有處理器的專用軟硬件系統(tǒng),具有自主的信息處理能力( 信息裝備)。
從系統(tǒng)的角度定義:嵌入式系統(tǒng)是設(shè)計(jì)完成復(fù)雜功能的硬件和軟件,并使 其緊密耦合在一起的計(jì)算機(jī)系統(tǒng)。術(shù)語嵌入式反映了這些系統(tǒng)通常是更大系統(tǒng)中的一個(gè)完整的部分,稱為嵌入的系統(tǒng)。嵌入的系統(tǒng)中可以共存多個(gè)嵌入式系統(tǒng)。
英國電機(jī)工程師協(xié)會(huì)的定義– Devices used to control, monitor, or assist theoperation of equipment, machinery or plants(用于控制、監(jiān)視或者輔助操作機(jī)器和設(shè)備的裝置)。
微機(jī)學(xué)會(huì)的定義– 嵌入式系統(tǒng)是以嵌入式應(yīng)用為目的的計(jì)算機(jī)系統(tǒng),可分為系統(tǒng)級、 模塊級、 芯片級。
系統(tǒng)級:各種類型的工控機(jī) 以標(biāo)準(zhǔn)總線互聯(lián)(背板結(jié)構(gòu))的工控機(jī): CPCI、 PCI-ISA、 VME 等。
模塊級:各種類型的帶CPU的模塊,嵌入式CPU模塊: PC104模塊、 Biscuit板。
芯片級:各種以微控制器、 DSP、嵌入式微處理器為核心的產(chǎn)品。
主要有以下幾個(gè)特點(diǎn):
嵌入專用:嵌入式處理器只嵌入在針對特定應(yīng)用設(shè)計(jì)的系統(tǒng)中;
綜合性強(qiáng):嵌入式系統(tǒng)是將計(jì)算機(jī)技術(shù)、半導(dǎo)體技術(shù)和電子技術(shù)與各個(gè)行業(yè)的具體應(yīng)用相結(jié)合后的產(chǎn)物;
設(shè)計(jì)高效:嵌入式系統(tǒng)的硬件和軟件都必須高效率的設(shè)計(jì),量體裁衣、取出冗余;
程序固化:軟件一般都固化在存儲(chǔ)器芯片或處理器本身中,提高了系統(tǒng)的執(zhí)行速度和可靠性;
需要獨(dú)立的開發(fā)系統(tǒng):嵌入式系統(tǒng)本身不具備開發(fā)能力,必須有一套開發(fā)工具和環(huán)境才能進(jìn)行開發(fā);
生命周期長:嵌入式系統(tǒng)和具體應(yīng)用結(jié)合在一起,其升級換代一般與具體產(chǎn)品同步進(jìn)行,因此具有較長的生命周期
其他如可靠性高、成本低、功耗低等。
應(yīng)用十分廣泛,例如坦克、導(dǎo)彈、飛機(jī)、軍艦、雷達(dá)、DVD機(jī)、電視機(jī)、微波爐、洗衣機(jī)、電冰箱、熱水器、手機(jī)、 MP3播放器、數(shù)碼相機(jī)、數(shù)碼攝像機(jī)、機(jī)頂盒、鍵盤、鼠標(biāo)、閃存盤、 CD-ROM、交換機(jī)、路由器,幾乎我們生活中用到的方方面面都有嵌入式系統(tǒng)的“嵌入”。
嵌入式系統(tǒng)看似可以簡單分為硬件與軟件,然而其中卻包含著異常龐大的知識(shí)量,也因此令許多新手望而卻步,學(xué)習(xí)嵌入式系統(tǒng)大致分為三個(gè)階段:基礎(chǔ)篇、進(jìn)階篇、大咖篇。
此階段主要是前期的入門過程,一定要打好基礎(chǔ),主要學(xué)習(xí)一下幾個(gè)方面
(1)電路知識(shí)
首先要學(xué)習(xí)電路、模電、數(shù)電,認(rèn)識(shí)電阻、電容、電感等基礎(chǔ)器件,放大電路、集成運(yùn)放、時(shí)序電路基本電路能看懂,不然看電路圖一定是云里霧里,也就無法進(jìn)行后續(xù)的工作。硬件產(chǎn)品的設(shè)計(jì)實(shí)現(xiàn),包括器件選型、原理圖和PCB設(shè)計(jì)、電路調(diào)試,都需要過硬的電路基礎(chǔ)。
(2)C語言
C語言嵌入式開發(fā)中最重要的編程語言,掌握本的數(shù)據(jù)類型、數(shù)組、指針、結(jié)構(gòu)體,鏈表、文件操作等都要會(huì),掌握基本語法和語句,保證自己會(huì)寫程序的同時(shí)也能看懂別人寫的程序。
(3)單片機(jī)
單片機(jī)入門相對簡單,通過單片機(jī)的學(xué)習(xí)可以熟悉單片機(jī)的硬件結(jié)構(gòu),包括I/O口、AD轉(zhuǎn)換、通信(串口、并口、I2C、CAN、USB、以太網(wǎng)、ZigBee技術(shù)等)、顯示(LED、LCD等)、控制(PWM等控制技術(shù))、數(shù)據(jù)處理(圖形、圖像、語音、視頻等的處理或識(shí)別)等,學(xué)好單片機(jī)可以為采用嵌入式系統(tǒng)奠定良好的基礎(chǔ)。
(4)Linux基礎(chǔ)
Linux的源碼和架構(gòu)都是開放的,在嵌入式系統(tǒng)中應(yīng)用尤為廣泛,學(xué)習(xí)Linux對于系統(tǒng)的開發(fā)會(huì)有很大的幫助。詳細(xì)了解Linux下的目錄結(jié)構(gòu)、基本命令、編輯器VI、編譯器GCC、調(diào)試器GDB和 Make 項(xiàng)目管理工具,Shell Makefile腳本編寫等知識(shí),以及嵌入式開發(fā)環(huán)境的搭建。
經(jīng)過第一個(gè)階段的學(xué)習(xí),你已經(jīng)可以進(jìn)行嵌入式開發(fā)工作了,但是要進(jìn)階依舊還有很多知識(shí)要學(xué),而這個(gè)階段也將是第一個(gè)分水嶺,使得優(yōu)秀的嵌入式工程師得以脫穎而出。此階段雖然只有三項(xiàng),但涉及的知識(shí)非常廣,要想學(xué)好需要花費(fèi)大量的精力。
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ū)動(dòng)、通信協(xié)議及各種引擎開發(fā)中得到了廣泛的應(yīng)用,語言編譯要使用棧、散列表以及語法樹;操作系統(tǒng)中用隊(duì)列、存儲(chǔ)管理表及目錄樹等;數(shù)據(jù)庫系統(tǒng)運(yùn)用線型表、多鏈表及索引表進(jìn)行數(shù)據(jù)管理等等,對其掌握的好壞直接影響程序的效率、簡潔及健壯性。
3.QT、DSP、FPGA
Linux沒有自己界面,學(xué)習(xí)QT編程可以創(chuàng)建藝術(shù)級的圖形用戶界面所需的所有功能,從而更好的實(shí)現(xiàn)人機(jī)交互控制。而如今用戶對于圖形圖像的要求也越來越高,這就需要DSP、FPGA技術(shù)來設(shè)計(jì)開發(fā)更好的嵌入式視覺系統(tǒng)。
學(xué)習(xí)了前兩個(gè)階段的知識(shí),你已經(jīng)可以勝任大部分嵌入式工作了,但是距離大咖仍有一定的差距,其實(shí)已經(jīng)到了第二個(gè)分水嶺。這部分更多涉及系統(tǒng)層面,沒有全方位的知識(shí)將會(huì)很難下手。
1操作系統(tǒng)平臺(tái)開發(fā)
除了Linux外,嵌入式操作系統(tǒng)還有ARM、WINCE、uC/OS II、Vxworks、uClinux等,不同的系統(tǒng)有著不同的使用環(huán)境,你需要學(xué)習(xí)掌握系統(tǒng)的各個(gè)模塊,為底層平臺(tái)搭建做好準(zhǔn)備。熟悉各個(gè)操作系統(tǒng)的特點(diǎn)以及系統(tǒng)的內(nèi)核移植,確保操作系統(tǒng)能在某個(gè)微處理器或微控制器上運(yùn)行。隨著手機(jī)智能硬件的快速興起,Android操作系統(tǒng)開發(fā)也越來越重要。
2驅(qū)動(dòng)開發(fā)
驅(qū)動(dòng)程序設(shè)計(jì)是嵌入式Linux開發(fā)工作中非常重要的一部分。不僅要熟悉Linux的內(nèi)核機(jī)制、驅(qū)動(dòng)程序與用戶級應(yīng)用程序的接口,掌握系統(tǒng)對設(shè)備的并發(fā)操作。還要具備ARM硬件接口的基礎(chǔ)知識(shí),熟悉ARM Cortex處理器各資源、掌握Linux設(shè)備驅(qū)動(dòng)原理框架,以及工程中常見Linux高級字符設(shè)備、塊設(shè)備、網(wǎng)絡(luò)設(shè)備、USB設(shè)備的驅(qū)動(dòng)開發(fā)。
當(dāng)你學(xué)完以上所有的時(shí)候,那么恭喜你,可以說你已經(jīng)是一個(gè)嵌入式系統(tǒng)的大咖了。
但學(xué)如逆水行舟,不進(jìn)則退!活到老,學(xué)到老!學(xué)無止境...切記大咖也不能止步不前哦!
所以問一句,你聽懂了嗎?
覺得不錯(cuò)的話點(diǎn)個(gè)贊然后關(guān)注一下,關(guān)注評論交流@
談到什么是嵌入式系統(tǒng),那就要從什么是最小系統(tǒng)開始說起。
何為最小系統(tǒng)?
包含一個(gè)芯片的復(fù)位,電源,時(shí)鐘。也就是說,一個(gè)程序能夠跑起來的所需要的最小基本設(shè)施。
對于嵌入式系統(tǒng),就目前來說,其實(shí)有很多種不同的理解。拿安卓應(yīng)用來說,有人說這是嵌入式開發(fā)。但從我個(gè)人10年的嵌入式開發(fā)經(jīng)驗(yàn)來看。對于嵌入式系統(tǒng)的理解是,非運(yùn)行在PC架構(gòu)上的系統(tǒng)都可以稱之為嵌入式系統(tǒng)。
形象點(diǎn)可以說,單片機(jī),嵌入式Linux,F(xiàn)reeos,ucos,安卓等,這些系統(tǒng)都可以稱之為嵌入式系統(tǒng)。
嵌入式系統(tǒng)的定義很多,這也是困擾嵌入式系統(tǒng)學(xué)習(xí)的一個(gè)因素。多年和嵌入式設(shè)備及開發(fā)人員的接觸,提出了嵌入式系統(tǒng)的簡單定義:嵌入式系統(tǒng)是嵌入式計(jì)算機(jī)系統(tǒng)的簡稱,這個(gè)定義突出嵌入式計(jì)算機(jī)系統(tǒng)和普通計(jì)算機(jī)系統(tǒng)的共性。現(xiàn)在隨著邊緣計(jì)算的越來越火熱,嵌入式開發(fā)也會(huì)逐漸成為新型科技市場的熱門領(lǐng)域,雖然這是一個(gè)幾十年就存在的技術(shù)和崗位。
如果題主真想入坑想學(xué)好嵌入式我查詢了一些資料供您參考一下,注定是一場攻堅(jiān)之旅,成為一位合格厲害的嵌入式開發(fā)工程師需要逐級掌握以下這些開發(fā)知識(shí)(升級之路):
第一階段:打基礎(chǔ)階段即初級工程師或工程師助理
1.電路知識(shí) 首先你要學(xué)習(xí)電路、模電,認(rèn)識(shí)電阻、電容、三極管,基礎(chǔ)器件,放大電路、集成運(yùn)放、時(shí)序電路基本電路能看懂,不然看電路圖一定是云里霧里,也就無法進(jìn)行后續(xù)的工作。硬件產(chǎn)品的設(shè)計(jì)實(shí)現(xiàn),包括器件選型、原理圖和PCB設(shè)計(jì)都需要過硬的電路基礎(chǔ)。
2.C語言
C語言是嵌入式開發(fā)中最重要的編程語言,要對這門語言有深入的理解,畢竟不僅僅要會(huì)寫程序,看懂他人程序也很重要。最基本的數(shù)據(jù)類型、數(shù)組、指針、結(jié)構(gòu)體,鏈表、文件操作等都要會(huì),掌握基本語法和語句,不然你要能區(qū)分指針數(shù)組與數(shù)組指針嗎?
3.單片機(jī)
單片機(jī)入門相對簡單,通過單片機(jī)的學(xué)習(xí)可以熟悉單片機(jī)的硬件結(jié)構(gòu),包括I/O口、AD轉(zhuǎn)換、通信(串口、并口、I2C、CAN、USB、以太網(wǎng)、ZigBee技術(shù)等)、顯示(LED、LCD等)、控制(PWM等控制技術(shù))、數(shù)據(jù)處理等,學(xué)好單片機(jī)可以為采用嵌入式系統(tǒng)奠定良好的基礎(chǔ)。
4Linux基礎(chǔ)
Linux的源碼和架構(gòu)都是開放的,在嵌入式系統(tǒng)中應(yīng)用尤為廣泛,學(xué)習(xí)Linux對于系統(tǒng)的開發(fā)會(huì)有很大的幫助。詳細(xì)了解Linux下的目錄結(jié)構(gòu)、基本命令、編輯器、編譯器、調(diào)試器,Shell Makefile腳本編寫等知識(shí),以及嵌入式開發(fā)環(huán)境的搭建。
第二階段:相當(dāng)于中級工程師需要掌握的技術(shù)
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ū)動(dòng)、通信協(xié)議及各種引擎開發(fā)中得到了廣泛的應(yīng)用,語言編譯要使用棧、散列表以及語法樹;操作系統(tǒng)中用隊(duì)列、存儲(chǔ)管理表及目錄樹等;數(shù)據(jù)庫系統(tǒng)運(yùn)用線型表、多鏈表及索引表進(jìn)行數(shù)據(jù)管理等等,對其掌握的好壞直接影響程序的效率、簡潔及健壯性。
3.QT、DSP、FPGA
Linux沒有自己界面,學(xué)習(xí)QT編程可以創(chuàng)建藝術(shù)級的圖形用戶界面所需的所有功能,從而更好的實(shí)現(xiàn)人機(jī)交互控制。
第三階段:高級工程師
學(xué)習(xí)了前兩個(gè)階段的知識(shí),你已經(jīng)可以勝任大部分嵌入式工作了,但是距離大咖仍有一定的差距,其實(shí)已經(jīng)到了第二個(gè)分水嶺。這部分更多涉及系統(tǒng)層面,沒有全方位的知識(shí)將會(huì)很難下手。
1操作系統(tǒng)平臺(tái)開發(fā)
除了Linux外,嵌入式操作系統(tǒng)還有ARM、WINCE、uClinux等,不同的系統(tǒng)有著不同的使用環(huán)境,你需要學(xué)習(xí)掌握系統(tǒng)的各個(gè)模塊,為底層平臺(tái)搭建做好準(zhǔn)備
2驅(qū)動(dòng)開發(fā)
驅(qū)動(dòng)程序設(shè)計(jì)是嵌入式Linux開發(fā)工作中非常重要的一部分。不僅要熟悉Linux的內(nèi)核機(jī)制、驅(qū)動(dòng)程序與用戶級應(yīng)用程序的接口,熟悉ARM Cortex處理器各資源、掌握Linux設(shè)備驅(qū)動(dòng)原理框架,以及工程中常見Linux高級字符設(shè)備、塊設(shè)備、網(wǎng)絡(luò)設(shè)備、USB設(shè)備的驅(qū)動(dòng)開發(fā)。
嵌入式系統(tǒng)是指由硬件和軟件組成并且能夠移植到硬件設(shè)備的操作系統(tǒng)。而相比較于普通的PC操作系統(tǒng),嵌入式操作系統(tǒng)不能存儲(chǔ)大容量的內(nèi)存和程序。所以嵌入式操作系統(tǒng)的移植必須要進(jìn)行裁剪工作才能夠成功在嵌入式設(shè)備進(jìn)行運(yùn)作,目前嵌入式操作系統(tǒng)已經(jīng)廣泛運(yùn)用在生活中的各種各樣的設(shè)備上。如智能電表、藍(lán)牙手環(huán)、車載系統(tǒng)、機(jī)器人、軍事設(shè)備等等。
而嵌入式系統(tǒng)大致由三大部分組成硬件、驅(qū)動(dòng)、軟件。首先來說下硬件:嵌入式的硬件和普通的電腦硬件沒有太大區(qū)別,也是由CPU、存儲(chǔ)器、I/O接口、GPU(有些系統(tǒng)沒有圖形設(shè)備)、串口、網(wǎng)口等部分組成。但是嵌入式操作系統(tǒng)在速度、功耗、存儲(chǔ)等方面和普通的PC設(shè)備有較大的區(qū)別,由于嵌入式操作系統(tǒng)基本上都是運(yùn)用在中小型設(shè)備上。所以這類操作系統(tǒng)不可能采用慢的存儲(chǔ)介質(zhì)、而是采用高速、快速的存儲(chǔ)設(shè)備,比方說NAND FLASH、EPROM等。
接著我們來說下驅(qū)動(dòng)層:嵌入式的驅(qū)動(dòng)層一般所指的是操作系統(tǒng)和硬件的橋梁,操作系統(tǒng)必須要通過這個(gè)橋梁才能夠正??刂朴布?。而驅(qū)動(dòng)層一般提供一整套完成的API程序,讓對應(yīng)的開發(fā)者編寫相對應(yīng)的驅(qū)動(dòng)程序使其硬件能夠正常工作。在嵌入式操作系統(tǒng)中,驅(qū)動(dòng)層包含了:Flash驅(qū)動(dòng)、串口驅(qū)動(dòng)、網(wǎng)口驅(qū)動(dòng)、鍵盤驅(qū)動(dòng)、RTC驅(qū)動(dòng)、DMA驅(qū)動(dòng)等等。
最后是嵌入式操作系統(tǒng)的應(yīng)用層:嵌入式的應(yīng)用層基本上屬于整個(gè)嵌入式操作系統(tǒng)的最上層,換言之應(yīng)用層的程序基本上不會(huì)和硬件層、驅(qū)動(dòng)層打交道。而是針對某個(gè)特定的應(yīng)用場景和應(yīng)用領(lǐng)域完成這些應(yīng)用場景的需求,而應(yīng)用層通常包括:多線程、多進(jìn)程、網(wǎng)絡(luò)編程、數(shù)據(jù)庫、音視頻編解碼等等。
而各位小伙伴們覺得,嵌入式系統(tǒng)還運(yùn)用在哪些方面呢?
看完別忘了點(diǎn)個(gè)關(guān)注喲?[ * ? ▽ ? * ]?,您的支持是對M君最大的鼓勵(lì)。
首先,我們來看看什么是嵌入式。
嵌入式,一般是指嵌入式系統(tǒng),英文叫作:embedded system。嵌入式開發(fā),其實(shí)就是對嵌入式系統(tǒng)的開發(fā)。
IEEE(美國電氣和電子工程師協(xié)會(huì))對嵌入式系統(tǒng)的定義是:“用于控制、監(jiān)視或者輔助操作機(jī)器和設(shè)備的裝置”。
國內(nèi)學(xué)術(shù)界的定義更為具體一些,也更容易理解:
嵌入式系統(tǒng),是以應(yīng)用為中心,以計(jì)算機(jī)技術(shù)為基礎(chǔ),軟件硬件可裁剪,適用于對功能、可靠性、成本、體積、功耗有嚴(yán)格要求的專用計(jì)算機(jī)系統(tǒng)。
以應(yīng)用為中心,說明嵌入式系統(tǒng)是有明確實(shí)際用途的。以計(jì)算機(jī)技術(shù)為基礎(chǔ),說明它其實(shí)就是一種特殊的計(jì)算機(jī)。軟硬件可裁剪,說明它有很強(qiáng)的靈活性和可定制能力。
專用計(jì)算機(jī)系統(tǒng),“專用”所對應(yīng)的,就是“通用”。我們常用的個(gè)人PC、筆記本電腦、數(shù)據(jù)中心服務(wù)器,可以用于多種用途,就是“通用計(jì)算機(jī)系統(tǒng)”。
嵌入式系統(tǒng)究竟具體應(yīng)用于哪些“專用”方向呢?
舉例如下:
嵌入式系統(tǒng)的應(yīng)用領(lǐng)域
上述這些領(lǐng)域,都使用了嵌入式系統(tǒng)。這還只是冰山一角。
可以說,嵌入式系統(tǒng)完完全全地包圍了我們,時(shí)刻影響著我們的工作和生活。
嵌入式系統(tǒng),既然是一個(gè)計(jì)算機(jī)系統(tǒng),那么肯定離不開硬件和軟件。
一個(gè)嵌入式系統(tǒng)的典型架構(gòu)如下:
注意,最重要的就是嵌入式操作系統(tǒng)和嵌入式微處理器。
從硬件角度來看,嵌入式系統(tǒng)就是以處理器(CPU)為核心,依靠總線(Bus)進(jìn)行連接的多模塊系統(tǒng):
和個(gè)人PC是一樣的方式
下面這張圖,就是一個(gè)嵌入式系統(tǒng)的實(shí)物樣例:
中間偏左上角,S3C2440,是CPU,中間是RAM,然后還有ROM、網(wǎng)卡、串口、電源等等??梢钥闯?,嵌入式系統(tǒng)麻雀雖小,五臟俱全。
嵌入式系統(tǒng)是是一個(gè)功能完備、幾乎不依賴其他外部裝置就可以獨(dú)立運(yùn)行的系統(tǒng)。該系統(tǒng)包含軟件和硬件,以應(yīng)用為中心,以計(jì)算機(jī)為基礎(chǔ),能夠根據(jù)需求靈活選取軟硬件模塊的專業(yè)計(jì)算機(jī)系統(tǒng)。
其中系統(tǒng)的軟件部分包含軟件運(yùn)行環(huán)境以及操作系統(tǒng),硬件部分包含信號(hào)處理器、存儲(chǔ)器以及通信模塊等多方面內(nèi)容。與傳統(tǒng)的計(jì)算機(jī)系統(tǒng)相比,嵌入式系統(tǒng)與之相差很大,它并不能實(shí)現(xiàn)大容量的存儲(chǔ)功能,軟件部分則以API接口為平臺(tái)核心。
嵌入式系統(tǒng)具備定制性強(qiáng)、體積小型、實(shí)時(shí)性好、可裁剪性好、可靠性高、功耗低等優(yōu)勢。由于嵌入式系統(tǒng)是為特定用戶而專門定制的,所以一般嵌入式系統(tǒng)通常都具備專用性。并且嵌入式系統(tǒng)的集成性非常高,所以它的功耗、身材都非常小,可靠性非常高。
嵌入式系統(tǒng)主要功能是以CPU為核心,而在不同的系統(tǒng)中,嵌入的形式和程序是不同的。根據(jù)嵌入式系統(tǒng)與計(jì)算機(jī)的連接的密切程度,將嵌入形式分為全嵌入形式和半嵌入形式。全嵌入形式可以不依賴計(jì)算機(jī)系統(tǒng),即可多帶帶工作,如手機(jī)、音樂播放器等設(shè)備都是此類型設(shè)備。而半嵌入式方式則必須與計(jì)算機(jī)相結(jié)合,才可以發(fā)揮作用。
當(dāng)前嵌入式系統(tǒng)的應(yīng)用場景十分廣泛,包含工業(yè)生產(chǎn)、日常生活、航空航天等多個(gè)領(lǐng)域,并且隨著計(jì)算機(jī)和制造工藝的發(fā)展,嵌入式系統(tǒng)將以最大限度的協(xié)同軟硬件能力,優(yōu)化設(shè)計(jì)方案,逐漸拓展至其他領(lǐng)域。
最后,希望大家點(diǎn)個(gè)贊給個(gè)關(guān)注吧,日常分享干貨知識(shí)。
嵌入式就是“嵌”在硬件里面的程序,有些公司叫它底層固件。
舉個(gè)栗子????,我們每天用的手機(jī),就是一個(gè)非常典型并且復(fù)雜的嵌入式系統(tǒng)。首先是硬件部分,它有一個(gè)核心CPU,這是嵌入式設(shè)備的大腦。那還有一些連接到CPU上的外設(shè),比如屏幕,揚(yáng)聲器,攝像頭等等,這些是嵌入式設(shè)備的四肢。那嵌入式程序就是要燒錄進(jìn)CPU的程序,這段程序首先驅(qū)動(dòng)屏幕等外部設(shè)備,使他們能夠工作。第二決定整個(gè)設(shè)備完成哪些工作。再舉個(gè)更簡單的????,比如一個(gè)智能溫度計(jì),它有這樣的功能,監(jiān)測環(huán)境溫度,然后每隔一個(gè)小時(shí)進(jìn)行一次語音播報(bào)。那這個(gè)產(chǎn)品主要會(huì)有一個(gè)CPU,一個(gè)溫度傳感器,一個(gè)揚(yáng)聲器。嵌入式程序就可以控制溫度傳感器監(jiān)測溫度,然后設(shè)置一個(gè)定時(shí)器,每隔一個(gè)小時(shí)再驅(qū)動(dòng)揚(yáng)聲器進(jìn)行一次語音播報(bào)。
嵌入式要學(xué)什么?
1,基本硬件電路。
一般大公司硬件和嵌入式軟件是分開的崗位,而小公司硬件和嵌入式是合并在一起的。就單純嵌入式開發(fā)而言,至少得能看得懂電路圖。知道硬件電路部分的連接和基本原理。單純嵌入式可以不會(huì)硬件開發(fā),但至少要能看得懂,否則CPU使用哪個(gè)引腳去控制都不懂得話,就完全沒辦法進(jìn)行嵌入式開發(fā)。
2,C語言或者C++語言
一般而言嵌入式開發(fā)都使用這兩種語言。一方面是靈活性高,執(zhí)行快。另一方面是很多MCU的廠商對于C語言的支持會(huì)比較好,有相當(dāng)多的集成庫可以使用。最快的是匯編語言,但是這個(gè)學(xué)習(xí)難度非常高,在現(xiàn)在商業(yè)環(huán)境中已經(jīng)很少有精通的工程師了。但是不可否認(rèn)會(huì)匯編的都是大牛。當(dāng)然其他語言也能進(jìn)行嵌入式開發(fā),但是很多會(huì)有支持問題。
3,英語。很多講嵌入式的不會(huì)講到這個(gè)。但是英語在嵌入式開發(fā)中很重要。因?yàn)楝F(xiàn)在主流的嵌入式芯片基本都是國外的。做嵌入式開發(fā)難免要參考數(shù)據(jù)手冊,用戶參考手冊,應(yīng)用信息等資料,而這些基本都是英文的,很少有中文的。
以上三點(diǎn)學(xué)好了基本搞嵌入式?jīng)]什么問題。工業(yè)中很多嵌入式系統(tǒng)比較簡單,用的8位MCU,程序也很簡單。稍微復(fù)雜一點(diǎn)的可能用個(gè)32位的芯片。再復(fù)雜一點(diǎn)的就類似手機(jī)平板這種,必須得上系統(tǒng)了。安卓就是一個(gè)嵌入式系統(tǒng)。一些簡單的應(yīng)用不需要完成安卓這么復(fù)雜的功能,那么一般嵌入式工程師會(huì)自己寫一個(gè)狀態(tài)機(jī),也就是一個(gè)很簡單的系統(tǒng)。嵌入式入門還算簡單,但是要精通比較困難。如果想學(xué)的話,我建議從STM32開始,一方面應(yīng)用非常廣泛,另一方面資料也多網(wǎng)上課程也多,價(jià)格還不貴。
0
回答0
回答0
回答0
回答0
回答0
回答0
回答0
回答0
回答0
回答