嵌入式開發(fā)是指什么?如何入門?
本文中,小編將對(duì)嵌入式開發(fā)予以介紹,如果你想對(duì)它的詳細(xì)情況有所認(rèn)識(shí),或者想要增進(jìn)對(duì)它的了解程度,不妨請(qǐng)看以下內(nèi)容哦。
嵌入式開發(fā)是指利用分立元件或集成器件進(jìn)行電路設(shè)計(jì)、結(jié)構(gòu)設(shè)計(jì),再進(jìn)行軟件編程(通常是高級(jí)語(yǔ)言),實(shí)驗(yàn),經(jīng)過(guò)多輪修改設(shè)計(jì)、制作,最終完成整個(gè)系統(tǒng)的開發(fā)。這種嵌入式開發(fā),適用于未來(lái)產(chǎn)品比較單一,產(chǎn)量比較大,產(chǎn)品開發(fā)周期比較長(zhǎng),成本控制比較嚴(yán)格的系統(tǒng)。
嵌入式技術(shù)不是單純的軟件技術(shù),也不是單純的硬件技術(shù),是一門如何在一個(gè)特定的硬件環(huán)境上開發(fā)與構(gòu)建特定的可編程軟件系統(tǒng)的綜合技術(shù)。嵌入式技術(shù)是在嵌入式系統(tǒng)的發(fā)展中應(yīng)運(yùn)而生的,它是依附于嵌入式系統(tǒng),并推動(dòng)嵌入式系統(tǒng)不斷向前發(fā)展的核心動(dòng)力。嵌入式是一種專用的計(jì)算機(jī)系統(tǒng),作為裝置或設(shè)備的一部分。通常,嵌入式系統(tǒng)是一個(gè)控制程序存儲(chǔ)在ROM中的嵌入式處理器控制板。事實(shí)上,所有帶有數(shù)字接口的設(shè)備,如手表、微波爐、錄像機(jī)、汽車等,都使用嵌入式系統(tǒng),有些嵌入式系統(tǒng)還包含操作系統(tǒng),但大多數(shù)嵌入式系統(tǒng)都是是由單個(gè)程序?qū)崿F(xiàn)整個(gè)控制邏輯。嵌入式技術(shù)近年來(lái)得到了飛速的發(fā)展,但是嵌入式產(chǎn)業(yè)涉及的領(lǐng)域非常廣泛,彼此之間的特點(diǎn)也相當(dāng)明顯。例如,很多行業(yè):手機(jī)、PDA、車載導(dǎo)航、工控、軍工、多媒體終端、網(wǎng)關(guān)、數(shù)字電視等。
標(biāo)準(zhǔn)嵌入式開發(fā)架構(gòu)有兩大體系:CISC(Complex Instruction Set Computer,復(fù)雜指令集計(jì)算機(jī))和RISC(Reduced Instruction Set Computer,精簡(jiǎn)指令集計(jì)算機(jī))。
早期的CPU全部是CISC架構(gòu),它的設(shè)計(jì)目的主要用最少的機(jī)器語(yǔ)言指令來(lái)完成所需的計(jì)算任務(wù)。這種架構(gòu)會(huì)增加CPU結(jié)構(gòu)的復(fù)雜性和對(duì)CPU工藝的要求,但對(duì)于編譯器的開發(fā)十分有利。只有Intel及其兼容CPU還在使用CISC架構(gòu)。RISC架構(gòu)要求軟件來(lái)指定各個(gè)操作步驟,可以降低CPU的復(fù)雜性以及允許在同樣的工藝水平下生產(chǎn)功能更強(qiáng)大的CPU,但對(duì)于編譯器的設(shè)計(jì)有更高的要求。占主要地位的是RISC處理器。
RISC體系的陣營(yíng)非常廣泛,從ARM、MIPS到PowerPC、ARC、Tensilica等,都是屬于RISC處理器范疇。不過(guò)這些處理器雖然同樣是屬于RISC體系,但是在指令設(shè)計(jì)與處理單元的結(jié)構(gòu)上都各有不同,因此彼此完全不能兼容,在特定平臺(tái)上所開發(fā)的軟件無(wú)法直接為另一硬件平臺(tái)所用,而必須重新經(jīng)過(guò)編譯。CISC和RISC正在逐步走向融合,Pentium Pro、Nx586、K5就是一個(gè)明顯的例子,它們的內(nèi)核都是基于RISC體系結(jié)構(gòu)的,它們接受CISC指令后將其分類成RISC指令以便在同一時(shí)間內(nèi)能夠執(zhí)行多余指令。
二、嵌入式開發(fā)如何入門
嵌入式系統(tǒng)專業(yè)是綜合了計(jì)算機(jī)硬件技術(shù),計(jì)算機(jī)軟件技術(shù)以及電子電路技術(shù)的一門綜合學(xué)科,所涉及的內(nèi)涵和知識(shí)非常廣泛。
1. C語(yǔ)言基礎(chǔ)
在開始學(xué)習(xí)嵌入式之前,首先要打好基礎(chǔ),其中最重要的是C語(yǔ)言基礎(chǔ),要至少達(dá)到能單獨(dú)編寫調(diào)試一個(gè)500行的小項(xiàng)目(大概是一個(gè)本地員工管理系統(tǒng)的代碼量),能夠了解C語(yǔ)言的基本語(yǔ)法規(guī)則,基本語(yǔ)句的使用,理解指針概念并能靈活使用各種指針。在學(xué)習(xí)C語(yǔ)言的過(guò)程中,指針的概念比較難理解,但是如果對(duì)計(jì)算機(jī)組成原理有了解的話,地址和 指針,源碼和可執(zhí)行程序,軟件通過(guò)寄存器控制硬件這些概念都會(huì)變得很清晰。
2. MCU和CPU
所有編程學(xué)習(xí)都是在單一的環(huán)境下進(jìn)行的。即開發(fā)環(huán)境和運(yùn)行環(huán)境都是一樣的都在Ubuntu下進(jìn)行。難道嵌入式開發(fā)就是如此嗎,說(shuō)好的軟硬件可裁剪呢?別急,緊接著我們就需要加入MCU和CPU的學(xué)習(xí),要學(xué)習(xí)ARM是什么,不同系列的MCU開發(fā)方式不同,ARM Cortex?-A 系列應(yīng)用型處理器,可向托管豐富OS平臺(tái)和用戶應(yīng)用程序的設(shè)備提供全方位的解決方案,從超低成本手機(jī)、智能手機(jī)、移動(dòng)計(jì)算平臺(tái)、數(shù)字電視和機(jī)頂盒到企業(yè)網(wǎng)絡(luò)、打印機(jī)和服務(wù)器解決方案,是作為學(xué)習(xí)嵌入式的合適的素材。現(xiàn)在嵌入式的學(xué)習(xí)資源豐富,選擇合適的Cortex?-A 系列的開發(fā)板后,根據(jù)裸板開發(fā)、系統(tǒng)移植、驅(qū)動(dòng)開發(fā)這樣的順序?qū)W習(xí)。裸板開發(fā)的學(xué)習(xí)主要是感受一下如何通過(guò)編程實(shí)現(xiàn)控制硬件。系統(tǒng)移植中我們會(huì)發(fā)現(xiàn)搭載Linux操作系統(tǒng)的板子功力大增,交叉編譯工具鏈的出現(xiàn)使得我們對(duì)架構(gòu)兩個(gè)字有了更深入的認(rèn)識(shí)。剛剛還在懷念在Ubuntu下編寫C代碼運(yùn)指如飛的感覺(jué),現(xiàn)在可以繼續(xù)編寫Linux風(fēng)格的C代碼了。
3. 驅(qū)動(dòng)開發(fā)
前面裸板開發(fā)和驅(qū)動(dòng)移植的學(xué)習(xí)目的是面對(duì)接下來(lái)的驅(qū)動(dòng)大魔頭,學(xué)習(xí)驅(qū)動(dòng)開發(fā)我們需要有一個(gè)空杯心態(tài),需要有主動(dòng)理解Linux內(nèi)核設(shè)計(jì)理念的意識(shí)(但是不要鉆牛角尖),時(shí)刻把握Linux下一切皆文件的宗旨和分層的思想。當(dāng)我們?cè)谶@一階段點(diǎn)亮開發(fā)板上的一盞明燈,恭喜你,一只腳踏進(jìn)嵌入式開發(fā)的大門了。
4. C++和Qt
體會(huì)了最基本的驅(qū)動(dòng)開發(fā)后,嵌入式學(xué)習(xí)還未結(jié)束,但是之后的學(xué)習(xí)我們有了一些選擇的主動(dòng)權(quán),當(dāng)我們看到一些有意思的嵌入式小項(xiàng)目,我們可以理解它的實(shí)現(xiàn)思路。而最好的學(xué)習(xí)方法是自己實(shí)踐完成一些小項(xiàng)目,你也許不滿足之前所學(xué),為什么不能把黑乎乎的命令行終端優(yōu)化成精美的液晶屏顯示,C++和Qt的學(xué)習(xí)就在所難免了。不過(guò)還好,有C語(yǔ)言的加持,C++的學(xué)習(xí)變得比較順利,最大的困難應(yīng)該在于面向過(guò)程到面向?qū)ο笏季S的轉(zhuǎn)變。
最后,小編誠(chéng)心感謝大家的閱讀。你們的每一次閱讀,對(duì)小編來(lái)說(shuō)都是莫大的鼓勵(lì)和鼓舞。希望大家對(duì)嵌入式開發(fā)已經(jīng)具備了初步的認(rèn)識(shí),最后的最后,祝大家有個(gè)精彩的一天。