沈 正,粱鑒如,楊明來(lái)
(1.上海工程技術(shù)大學(xué)電子電氣工程學(xué)院,上海 201620;2.上海應(yīng)用技術(shù)大學(xué)軌道交通學(xué)院,上海 201418)
隨著信息化社會(huì)的發(fā)展,諸多計(jì)算機(jī)軟件開(kāi)發(fā)部門對(duì)嵌入式軟件應(yīng)用的關(guān)注度逐漸提高,嵌入式軟件與人們的日常生活及工作的聯(lián)系也越來(lái)越緊密。相關(guān)研究人員對(duì)嵌入式軟件進(jìn)行具體研究與分析時(shí),應(yīng)明確軟件應(yīng)用過(guò)程中存在的問(wèn)題及需要注意的事項(xiàng),從而為計(jì)算機(jī)軟件開(kāi)發(fā)工作提供參考。針對(duì)嵌入式軟件開(kāi)發(fā)與維護(hù),很多學(xué)者進(jìn)行了大量研究。如文獻(xiàn)[1]分析了嵌入式實(shí)時(shí)軟件在計(jì)算機(jī)領(lǐng)域的應(yīng)用;文獻(xiàn)[2]探討了嵌入式軟件開(kāi)發(fā)過(guò)程,提出嵌入式軟件的應(yīng)用可以提高軟件開(kāi)發(fā)效率;文獻(xiàn)[3]分析了我國(guó)嵌入式軟件發(fā)展現(xiàn)狀及趨勢(shì),并對(duì)促進(jìn)嵌入式軟件發(fā)展提出了合理建議;文獻(xiàn)[4]介紹了一種適合嵌入式軟件的單元測(cè)試方法,可提高嵌入式軟件的代碼質(zhì)量;文獻(xiàn)[5]提出一種基于模型的嵌入式軟件開(kāi)發(fā)方法,比較了不同建模工具,并對(duì)嵌入式軟件開(kāi)發(fā)流程進(jìn)行研究,驗(yàn)證了基于模型驅(qū)動(dòng)的軟件開(kāi)發(fā)方法能有效提高嵌入式軟件開(kāi)發(fā)效率;文獻(xiàn)[6]提出一種基于量子框架與Stateflow 模型的嵌入式系統(tǒng)軟件設(shè)計(jì)方法,兩者結(jié)合可以實(shí)現(xiàn)基于模型的嵌入式軟件開(kāi)發(fā)方法。
本文主要對(duì)嵌入式軟件的概念、類型及開(kāi)發(fā)過(guò)程中使用的相關(guān)技術(shù)進(jìn)行研究,分析了嵌入式軟件應(yīng)用過(guò)程中存在的實(shí)際問(wèn)題,從而為后續(xù)計(jì)算機(jī)軟件開(kāi)發(fā)工作提供參考。
嵌入式系統(tǒng)主要是指能夠幫助人們控制與監(jiān)測(cè)設(shè)備的裝置,是一套專用的計(jì)算機(jī)系統(tǒng)[7]。其涉及多種構(gòu)成部件,例如傳感器、微處理器、存儲(chǔ)器、微控制器以及定時(shí)器等,這些微電子芯片及器件與嵌入在存儲(chǔ)器中的控制應(yīng)用、微型操作系統(tǒng)有效融合,共同完成自動(dòng)化處理任務(wù)[8]。此外,嵌入式系統(tǒng)以應(yīng)用功能作為核心,以計(jì)算機(jī)技術(shù)、微電子技術(shù)、通訊技術(shù)及控制技術(shù)等作為基礎(chǔ),在一定程度上重點(diǎn)強(qiáng)化硬件系統(tǒng)、軟件系統(tǒng)的整合性及協(xié)同性,利用軟件系統(tǒng)及硬件系統(tǒng)可剪裁的性質(zhì),實(shí)現(xiàn)系統(tǒng)對(duì)成本、功耗等方面的要求[9]。
其中,簡(jiǎn)單的嵌入式系統(tǒng)僅具有設(shè)備控制功能,以單片機(jī)為例進(jìn)行分析,在只讀存儲(chǔ)器(ROM)中只包含具有簡(jiǎn)單控制功能的程序,而且不涉及微型操作系統(tǒng)。較復(fù)雜的嵌入式系統(tǒng)主要由諸多小型嵌入式系統(tǒng)組成,具備的功能與PC 基本一致,例如手持電腦及個(gè)人數(shù)字助理等。從根本上來(lái)說(shuō),復(fù)雜的嵌入式系統(tǒng)與PC 之間的主要區(qū)別為:嵌入式系統(tǒng)是將微型操作系統(tǒng)與應(yīng)用軟件嵌入到FLASH 存儲(chǔ)器、ROM 等部件中[10],而非將其儲(chǔ)存在磁盤等系列載體內(nèi)。
嵌入式軟件主要包括3 種類型,即嵌入式操作系統(tǒng)、嵌入式支撐軟件以及嵌入式應(yīng)用軟件。
1.2.1 嵌入式操作系統(tǒng)
嵌入式操作系統(tǒng)屬于應(yīng)用范圍相對(duì)較廣的系統(tǒng)軟件,以往該操作系統(tǒng)大多應(yīng)用于國(guó)防控制與工業(yè)生產(chǎn)領(lǐng)域。嵌入式操作系統(tǒng)需要完成以下工作:①對(duì)硬件或軟件的控制管理;②協(xié)調(diào)硬件及軟件相關(guān)工作;③對(duì)硬件或軟件進(jìn)行適度調(diào)整及改進(jìn)等。對(duì)于嵌入式操作系統(tǒng)而言,其在商業(yè)運(yùn)作中發(fā)揮的價(jià)值更加明顯,其中WindRiver、Microsoft以及QNX 是我國(guó)普遍應(yīng)用的軟件[11]。
1.2.2 嵌入式支撐軟件
嵌入式支撐軟件主要是指為軟件開(kāi)發(fā)提供幫助及支持的軟件,如開(kāi)發(fā)工具及數(shù)據(jù)庫(kù)等,其中數(shù)據(jù)庫(kù)占比相對(duì)較大。隨著移動(dòng)通信技術(shù)的不斷進(jìn)步,人們對(duì)移動(dòng)數(shù)據(jù)處理的需求逐漸增多,如今嵌入式數(shù)據(jù)庫(kù)技術(shù)已廣泛應(yīng)用于軍事、教育以及工業(yè)領(lǐng)域等。另外,嵌入式移動(dòng)數(shù)據(jù)庫(kù)也被稱為移動(dòng)數(shù)據(jù)庫(kù)[12],屬于一種特殊的數(shù)據(jù)庫(kù)管理系統(tǒng),與應(yīng)用系統(tǒng)及操作系統(tǒng)共同運(yùn)行在智能移動(dòng)設(shè)備中,在智能設(shè)備上進(jìn)行數(shù)據(jù)存儲(chǔ)與計(jì)算。
1.2.3 嵌入式應(yīng)用軟件
嵌入式應(yīng)用軟件主要針對(duì)某特定領(lǐng)域,在用戶提供的硬件平臺(tái)上運(yùn)行軟件。為滿足用戶相關(guān)需求,部分嵌入式軟件在應(yīng)用期間需要選擇指定的嵌入式操作系統(tǒng)[13]。相比普通軟件,嵌入式應(yīng)用軟件不僅需要具備優(yōu)化功能,同時(shí)還應(yīng)具有更強(qiáng)的穩(wěn)定性以及更高的精準(zhǔn)度,從而有效減少硬件投入成本以及系統(tǒng)資源占用?,F(xiàn)階段,社會(huì)上針對(duì)嵌入式應(yīng)用軟件的使用場(chǎng)景很多,如上位機(jī)軟件、辦公軟件等,這些軟件雖然規(guī)模較小,但是技術(shù)含量很高,因此得到了廣泛應(yīng)用。
嵌入式軟件主要為嵌入式系統(tǒng)提供服務(wù),因此與硬件設(shè)備聯(lián)系密切。嵌入式軟件屬于應(yīng)用系統(tǒng),所以其將應(yīng)用部分作為核心內(nèi)容,根據(jù)應(yīng)用需求實(shí)現(xiàn)定向開(kāi)發(fā)。其中,每種嵌入式軟件都有其專屬的應(yīng)用環(huán)境。
嵌入式軟件在一般情況下屬于模塊化軟件,可靈活應(yīng)用于各嵌入式系統(tǒng)中,而且不會(huì)對(duì)原有系統(tǒng)功能進(jìn)行破壞或更改。因其體積較為小巧,所以不會(huì)占用過(guò)多系統(tǒng)資源或空間。想要確保其具有更強(qiáng)的適用性,需要不斷調(diào)整與完善系統(tǒng)配置,降低其對(duì)系統(tǒng)整體的依賴。
嵌入式軟件在計(jì)算機(jī)軟件設(shè)計(jì)中的應(yīng)用可以提升計(jì)算機(jī)軟件設(shè)計(jì)質(zhì)量及可靠性,從而優(yōu)化計(jì)算機(jī)軟件設(shè)計(jì)開(kāi)發(fā)流程。當(dāng)應(yīng)用嵌入式軟件時(shí),應(yīng)該先明確其開(kāi)發(fā)流程,正確掌握計(jì)算機(jī)軟件及硬件結(jié)構(gòu),對(duì)其進(jìn)行有效分離,在一定程度上確保二者能夠獨(dú)立運(yùn)作,以增強(qiáng)計(jì)算機(jī)軟件的安全性以及可靠性[8]。此外,還應(yīng)對(duì)計(jì)算機(jī)系統(tǒng)中的數(shù)據(jù)結(jié)構(gòu)進(jìn)行格式化處理,從而保證計(jì)算機(jī)軟件設(shè)計(jì)工作的有效開(kāi)展。嵌入式軟件開(kāi)發(fā)步驟如圖1 所示。
Fig.1 Embedded software development steps圖1 嵌入式軟件開(kāi)發(fā)步驟
嵌入式軟件開(kāi)發(fā)步驟主要分為3 步:首先,明確計(jì)算機(jī)軟件相關(guān)需求,并對(duì)其進(jìn)行分析;其次,在全面掌握與了解計(jì)算機(jī)軟件需求的基礎(chǔ)上,操作人員編寫程序代碼;最后,檢測(cè)計(jì)算機(jī)軟件性能,同時(shí)對(duì)檢測(cè)結(jié)果進(jìn)行分析,從而進(jìn)一步調(diào)整與完善軟件設(shè)計(jì)工作。
嵌入式軟件組織框架主要應(yīng)用于桌面系統(tǒng)及網(wǎng)絡(luò)系統(tǒng)中,而嵌入式系統(tǒng)很少運(yùn)用組織框架,主要因?yàn)榍度胧较到y(tǒng)結(jié)構(gòu)相對(duì)簡(jiǎn)單,不具備重復(fù)性特征。如今嵌入式軟件逐漸朝系統(tǒng)化、復(fù)雜化等方向發(fā)展,需要對(duì)功能作進(jìn)一步完善。因此,在嵌入式基礎(chǔ)上制定軟件組織框架是很有必要的,甚至可以推動(dòng)計(jì)算機(jī)行業(yè)的發(fā)展。嵌入式軟件組織框架如圖2 所示。
Fig.2 Embedded software organization framework圖2 嵌入式軟件組織框架
為了實(shí)現(xiàn)對(duì)其它設(shè)備的監(jiān)視、管理及控制等功能,嵌入式系統(tǒng)分為4 大板塊,分別是嵌入式操作系統(tǒng)、嵌入式微處理器、用戶應(yīng)用程序以及外圍硬件設(shè)備。處理器技術(shù)與IC 技術(shù)則是嵌入式軟件的中樞技術(shù),各技術(shù)具體內(nèi)容如下:
2.3.1 處理器技術(shù)
處理器技術(shù)與用于實(shí)現(xiàn)系統(tǒng)功能的計(jì)算引擎結(jié)構(gòu)相互關(guān)聯(lián),由于不同處理器面向指定功能的專用化程度不同,致使其設(shè)計(jì)指標(biāo)也存在差異。
(1)通用處理器。首先,該類型的處理器無(wú)法用數(shù)字電路搭建程序,存儲(chǔ)程序無(wú)法適用于各種類型的應(yīng)用[15];其次,為滿足數(shù)據(jù)寄存的需求,需要使用大量寄存器以及建設(shè)一個(gè)或多個(gè)通用算術(shù)邏輯單元。
(2)單用途處理器。單用途處理器是指加速器、外設(shè)、處理器這種應(yīng)用于指定程序的數(shù)字電路,例如:壓縮或解壓視頻信息,可用JPEG 編碼解碼器執(zhí)行單一程序。嵌入式系統(tǒng)設(shè)計(jì)師可通過(guò)特有的數(shù)字電路搭建單用途處理器,也可使用事先制作好的單用途處理器。
(3)專用處理器。專用處理器是針對(duì)特定應(yīng)用且可進(jìn)行編程的處理器,也即專用指令集處理器(ASIP)。通過(guò)權(quán)衡速度、功耗、成本、靈活性等多個(gè)方面的設(shè)計(jì)約束,設(shè)計(jì)者可以定制ASIP 達(dá)到最好的平衡點(diǎn),從而適應(yīng)嵌入式系統(tǒng)的需要。
2.3.2 IC 技術(shù)
(1)全定制VLSI。設(shè)計(jì)師從晶體管的版圖連線、尺寸及位置開(kāi)始策劃,以確保其具有芯片面積小、功耗低、利用率高、速度快等優(yōu)越性能,同時(shí)需要根據(jù)指定的嵌入式系統(tǒng)完善各項(xiàng)功能,這就是全定制IC 技術(shù)。大規(guī)模集成電路設(shè)計(jì)通常也被稱為全定制的IC 設(shè)計(jì),其利用掩膜[18]在芯片制造廠制作芯片,需要花費(fèi)很長(zhǎng)時(shí)間,具有高昂的NRE成本,適用于對(duì)性能要求相對(duì)嚴(yán)苛的應(yīng)用。
(2)半定制ASIC[19]。一種限制型設(shè)計(jì)方法,包括標(biāo)準(zhǔn)單元設(shè)計(jì)法和門陣列設(shè)計(jì)法。設(shè)計(jì)師只需考慮電路各功能模塊的合理連接即可,因?yàn)槠涫切酒谱鬟^(guò)程中的通用性元件。
(3)可編程ASIC。由于可編程器件中所有各層都已存在,所以研發(fā)周期大幅縮短,設(shè)計(jì)完成后無(wú)需IC 廠家參與,即可將芯片在實(shí)驗(yàn)室制作出來(lái)??删幊藺SIC 的優(yōu)勢(shì)在于其消耗NRE 成本[20]較低,但其劣勢(shì)為功耗較大、速度較慢以及單位成本較高。
在嵌入式技術(shù)逐漸成熟和穩(wěn)定的條件下,相關(guān)產(chǎn)品也不斷應(yīng)用于各行各業(yè)中?,F(xiàn)階段,嵌入式軟件在汽車電子、互聯(lián)網(wǎng)、通訊等領(lǐng)域都發(fā)揮著重要作用。
在計(jì)算機(jī)軟件設(shè)計(jì)期間,嵌入式軟件可通過(guò)組建相關(guān)專業(yè)化技術(shù)模型,將硬件系統(tǒng)與軟件系統(tǒng)予以整合。嵌入式實(shí)時(shí)軟件可在一定程度上解決計(jì)算機(jī)軟件設(shè)計(jì)期間存在的問(wèn)題,并且達(dá)到遠(yuǎn)程操控計(jì)算機(jī)的目的[21]。因此,在計(jì)算機(jī)軟件設(shè)計(jì)中合理應(yīng)用嵌入式軟件系統(tǒng),不僅可以完善計(jì)算模式以及系統(tǒng)操作流程,而且可以提升軟件設(shè)計(jì)的實(shí)用性及安全性,定期對(duì)計(jì)算機(jī)系統(tǒng)進(jìn)行更新與優(yōu)化。
在嵌入式軟件設(shè)計(jì)過(guò)程中,應(yīng)根據(jù)相關(guān)任務(wù)對(duì)其予以有效劃分,以提高軟件使用率,在最大程度上發(fā)揮其核心價(jià)值。因?yàn)槿蝿?wù)組織方式之間存在邏輯關(guān)系,所以其對(duì)于優(yōu)化任務(wù)管理及組織功能發(fā)揮了重要作用[22]。嵌入式操作系統(tǒng)與計(jì)算機(jī)操作系統(tǒng)存在一定差異,對(duì)于嵌入式操作系統(tǒng)而言,其應(yīng)用程序主要存在于只讀內(nèi)存和交互矢量中,想要使嵌入式系統(tǒng)在運(yùn)行過(guò)程中始終保持穩(wěn)定,則需要對(duì)計(jì)算機(jī)軟件系統(tǒng)進(jìn)行全方位改進(jìn)與調(diào)整。軟件設(shè)計(jì)期間的存儲(chǔ)器布局與應(yīng)用屬于核心內(nèi)容,應(yīng)借助物理地址設(shè)置程序指令,同時(shí)編寫執(zhí)行代碼[23]。
嵌入式軟件系統(tǒng)在使用過(guò)程中具有較強(qiáng)的實(shí)時(shí)性,主要表現(xiàn)在兩個(gè)方面:硬件實(shí)時(shí)性及軟件實(shí)時(shí)性[24]。硬件實(shí)時(shí)性是指系統(tǒng)在規(guī)定時(shí)間內(nèi)達(dá)到任務(wù)要求,并且不存在延時(shí)的情況;軟件實(shí)時(shí)性是指軟件開(kāi)始運(yùn)行后,某個(gè)進(jìn)程在分配的響應(yīng)時(shí)間內(nèi)必須是可執(zhí)行的,并且必須在規(guī)定的響應(yīng)時(shí)間內(nèi)執(zhí)行完。通過(guò)操縱操作系統(tǒng)優(yōu)先級(jí)的調(diào)度方式,可在規(guī)定的時(shí)間范圍內(nèi)實(shí)現(xiàn)軟件的實(shí)時(shí)性。假如有若干個(gè)任務(wù)作為軟件策劃的優(yōu)先級(jí)任務(wù)核心,為了提升軟件整體響應(yīng)效率,保證重要任務(wù)的完成時(shí)間,需要分割出相應(yīng)任務(wù),根據(jù)任務(wù)的緊急程度增加原有的優(yōu)先級(jí)數(shù)[25]。
本文對(duì)嵌入式軟件概念、分類、開(kāi)發(fā)過(guò)程以及開(kāi)發(fā)技術(shù)等進(jìn)行研究,并介紹了嵌入式軟件在計(jì)算機(jī)系統(tǒng)中的應(yīng)用。但因嵌入式軟件應(yīng)用研究目前仍處于起步階段,所以還有諸多內(nèi)容需要不斷完善,例如嵌入式軟件體系結(jié)構(gòu)屬于較新的研究領(lǐng)域,在后續(xù)工作中還需要作進(jìn)一步研究。