嵌入式系統(tǒng)起源于半導(dǎo)體集成電路,該半導(dǎo)體集成電路分為晶體管和集成電路。20世紀(jì)70年代,集成電路產(chǎn)生了微處理器,微處理器是智能內(nèi)核,它有兩個功能,其一是運算處理功能,即高速海量的解算能力,它促使了計算機獨立的飛速發(fā)展至今;其二是控制功能,嵌入式系統(tǒng)屬控制功能,控制功能產(chǎn)生了微控制器,俗稱單片機,它促使了嵌入式系統(tǒng)的獨立發(fā)展至今。對應(yīng)于各種微處理器的硬件平臺一般都是通用的、固定的、成熟的,這就大大減少了由硬件系統(tǒng)引入錯誤的機會。此外,由于嵌入式 操作系統(tǒng)屏蔽了底層硬件的復(fù)雜性,使得開發(fā)者通過操作系統(tǒng)提供的API函數(shù)就可以完成大部分工作,因此大大簡化了開發(fā)過程,提高了系統(tǒng)的穩(wěn)定性。嵌入式系 統(tǒng)的開發(fā)者現(xiàn)在已經(jīng)從反復(fù)進行硬件平臺設(shè)計的過程中解脫出來,從而可以將主要精力放在滿足特定的需求上。
嵌入式系統(tǒng)通常是一個資源受限的系統(tǒng),因此直接在嵌入式系統(tǒng)的硬件平臺上編寫軟件比較困難,有時候甚至是不可能的。目前一般采用的解決辦法是首先在通用計算機上編寫程序,然后通過交叉編譯生成目標(biāo)平臺上可以運行的二進制代碼格式,再下載到目標(biāo)平臺上的特定位置上運行。
需要交叉開發(fā)環(huán)境(CrossDevelopmentEnvironment)的支持是嵌入式應(yīng)用軟件開發(fā)時的一個顯著特點,交叉開發(fā)環(huán)境是指編譯、鏈接和調(diào)試嵌入式應(yīng)用軟件的環(huán)境,它與運行嵌入式應(yīng)用軟件的環(huán)境有所不同,通常采用宿主機/目標(biāo)機模式。
宿主機(Host)是一臺通用計算機(如PC機或者工作站),它通過串口或者以太網(wǎng)接口與目標(biāo)機通信。宿主機的軟硬件資源比較豐富,不但包括功能強 大的操作系統(tǒng)(如Windows和Linux),而且還有各種各樣的開發(fā)工具(如WindRiver的Tornado、Microsoft的 Embedded Visual C++等),能夠大大提高嵌入式應(yīng)用軟件的開發(fā)速度和效率。
目標(biāo)機(Target)一般在嵌入式應(yīng)用軟件開發(fā)期間使用,用來區(qū)別與嵌入式系統(tǒng)通信的宿主機,它可以是嵌入式應(yīng)用軟件的實際運行環(huán)境,也可以是能 夠替代實際運行環(huán)境的仿真系統(tǒng),但軟硬件資源通常都比較有限。嵌入式系統(tǒng)的交叉開發(fā)環(huán)境一般包括交叉編譯器、交叉調(diào)試器和系統(tǒng)仿真器,其中交叉編譯器用于 在宿主機上生成能在目標(biāo)機上運行的代碼,而交叉調(diào)試器和系統(tǒng)仿真器則用于在宿主機與目標(biāo)機間完成嵌入式軟件的調(diào)試。在采用宿主機/目標(biāo)機模式開發(fā)嵌入式應(yīng) 用軟件時,首先利用宿主機上豐富的資源和良好的開發(fā)環(huán)境開發(fā)和仿真調(diào)試目標(biāo)機上的軟件,然后通過串口或者以網(wǎng)絡(luò)將交叉編譯生成的目標(biāo)代碼傳輸并裝載到目標(biāo) 機上,并在監(jiān)控程序或者操作系統(tǒng)的支持下利用交叉調(diào)試器進行分析和調(diào)試,目標(biāo)機在特定環(huán)境下脫離宿主機單獨運行。
建立交叉開發(fā)環(huán)境是進行嵌入式軟件開發(fā)的步,目前常用的交叉開發(fā)環(huán)境主要有開放和商業(yè)兩種類型。開放的交叉開發(fā)環(huán)境的典型代表是GNU工具鏈、 目前已經(jīng)能夠支持x86、ARM、MIPS、PowerPC等多種處理器。商業(yè)的交叉開發(fā)環(huán)境則主要有Metrowerks CodeWarrior、ARM Software Development Toolkit、SDS Cross compiler、WindRiver Tornado、Microsoft Embedded Visual C++等。