《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 其他 > 設(shè)計應(yīng)用 > 嵌入式操作系統(tǒng)定制的通用性研究
嵌入式操作系統(tǒng)定制的通用性研究
中國自動化網(wǎng)
摘要: 目前嵌入式系統(tǒng)開發(fā)已經(jīng)成為了計算機工業(yè)最熱門的領(lǐng)域之一,,嵌入式系統(tǒng)應(yīng)用滲透到信息家電、工業(yè)控制,、通信與電子設(shè)備、人工智能設(shè)備等諸多領(lǐng)域,。嵌入式操作系統(tǒng)的引入大大提高了嵌入式系統(tǒng)的功能,,方便了嵌入式應(yīng)用軟件的設(shè)計,但相應(yīng)也占用了寶貴的嵌入式系統(tǒng)資源,。
Abstract:
Key words :

引言
目前嵌入式系統(tǒng)開發(fā)已經(jīng)成為了計算機工業(yè)最熱門的領(lǐng)域之一,,嵌入式系統(tǒng)應(yīng)用滲透到信息家電、工業(yè)控制,、通信與電子設(shè)備,、人工智能設(shè)備等諸多領(lǐng)域。嵌入式操作系統(tǒng)" title="嵌入式操作系統(tǒng)">嵌入式操作系統(tǒng)的引入大大提高了嵌入式系統(tǒng)的功能,,方便了嵌入式應(yīng)用軟件的設(shè)計,,但相應(yīng)也占用了寶貴的嵌入式" title="的嵌入式">的嵌入式系統(tǒng)資源。同時,,因為嵌入式應(yīng)用系統(tǒng)配置差別較大,,I/O操作也沒有標準化,這部分驅(qū)動軟件常常由應(yīng)用程序" title="應(yīng)用程序">應(yīng)用程序提供,,這就要求在開發(fā)環(huán)境" title="開發(fā)環(huán)境">開發(fā)環(huán)境中能夠?qū)τ脩暨x定的實時操作系統(tǒng)進行剪裁和擴展,,并和應(yīng)用程序綁定在一起生成一個可運行在目標環(huán)境下的應(yīng)用系統(tǒng)。所以針對不同應(yīng)用需求裁減掉不需要的操作系統(tǒng)模塊,,配置特定的嵌入式操作系統(tǒng)是降低系統(tǒng)硬件成本,, 減少系統(tǒng)資源消耗,提高系統(tǒng)靈活性的關(guān)鍵,。
嵌入式操作系統(tǒng)大多采用構(gòu)件化,、模塊化的設(shè)計思想,以搭積木的方式通過互連構(gòu)造軟件因而是可配置的,。但是由于操作系統(tǒng)的多樣性,,不同操作系統(tǒng)提供的配置方式迥異且繁簡不一。例如:風(fēng)河公司的VxWoks操作系統(tǒng),,其開發(fā)環(huán)境Tornado提供的配置工具可以對操作系統(tǒng)模塊進行選擇和刪除,,但其配置主要還是通過用戶對目標系統(tǒng)目錄樹下相關(guān)配置文件進行手工編輯和修改來完成的;科銀京成公司,。Delta OS的配套開發(fā)環(huán)境Lambda Tool,,可以簡單對內(nèi)核參數(shù)、文件系統(tǒng)參數(shù)和網(wǎng)絡(luò)系統(tǒng)參數(shù)進行設(shè)定,。由于硬 件平臺的多樣性,,即使是相同操作系統(tǒng),其配置也是有差別的,。應(yīng)用程序開發(fā)者必須熟悉不同的硬件平臺和不同的操作系統(tǒng)才能進行可行的應(yīng)用的開發(fā),,增加了應(yīng)用開發(fā)的難度,。
對于嵌入式應(yīng)用的行業(yè)開發(fā),往往提供了多種操作系統(tǒng)供應(yīng)用開發(fā)者選擇,。如果能提供一套統(tǒng)一的操作系統(tǒng)配置工具,,那么應(yīng)用開發(fā)者不必因為選擇不同的操作系統(tǒng)而重新學(xué)習(xí)使用新的配置環(huán)境,必然能提高開發(fā)效率,,這在行業(yè)開發(fā)中有著重要意義,。
本文將軟件復(fù)用技術(shù)用于嵌入式操作系統(tǒng)的定制過程,提出了一個嵌入式操作系統(tǒng)定制過程的通用模型(OSTAILOR),,并在此基礎(chǔ)上研究設(shè)計了基于嵌入式Linux的配置剪裁器,。


1 嵌入式操作系統(tǒng)配置通用化模型
以操作系統(tǒng)抽象模塊作為操作系統(tǒng)配置的基本單位,在此基礎(chǔ)上得到了嵌入式操作系統(tǒng)配置通用化模型OSCFG,。
1.1 模型概述
如圖1所示,,虛線框表示建立的操作系統(tǒng)配置模型。左邊的兩個實線框表示對于操作系統(tǒng)配置模型的輸入:選擇配置的操作系統(tǒng)類型和選擇配置的操作系統(tǒng)抽象模塊,。右邊的實線框表示輸出的配置生成結(jié)果:特定的配置文件,。

操作系統(tǒng)配置模型的關(guān)鍵在于通用性,,即對不同的操作系統(tǒng),,能夠在邏輯上對操作系統(tǒng)所劃分出來的物理模塊保持透明性,因而,,建模要點在于以下兩點:
①對各式各樣的操作系統(tǒng)模塊進行抽象,,使之成為對應(yīng)于配置模型的抽象模塊。抽象模塊以模塊屬性文件的形式存放在構(gòu)件庫" title="構(gòu)件庫">構(gòu)件庫,,供配置選用,。
②抽象模塊最后能映射為對應(yīng)于不同操作系統(tǒng)的實體信息。

在上述前提下,,構(gòu)建了如圖2所示的操作系統(tǒng)配置過程模型 OSTAILOR,。圖中陰影部分實現(xiàn)了配置的操作系統(tǒng)無關(guān)性,可以稱為操作系統(tǒng)抽象層,。 圖2 O$1AII一0R過程模型對于具體的操作系統(tǒng)模塊實體,,首先經(jīng)過模塊抽象,封裝成對應(yīng)用可見的操作系統(tǒng)抽象模塊,。每一個操作系統(tǒng)模塊包含兩個關(guān)鍵屬性:①抽象出來的模塊名,。根據(jù)此模塊名,應(yīng)用開發(fā)人員可以知道此操作系統(tǒng)模塊具有的基本功能,。②模塊層次,,隸屬于不同層次的模塊具有不同的模塊粒度。一般而言,,越靠近底層的模塊,,粒度越細,。在配置完成以后,根據(jù)用戶輸入選擇需要映射的特定操作系統(tǒng),,根據(jù)此輸入選擇,,模塊配置完成以后,才能選擇特定的操作系統(tǒng)映射算法將抽象的模塊映射到具體的操作系統(tǒng)功能上,。

圖2中抽象模塊配置層完成的功能還包括可根據(jù)用戶選擇,,將操作系統(tǒng)抽象模塊配置成更高層次,更大粒度的模塊,,供本次操作系統(tǒng)生成或下次定制使用,。在這個操作系統(tǒng)定制模型中,抽象模塊配置層以下層次完成的功能是根據(jù)模塊配置層的配置結(jié)果和用戶對操作系統(tǒng)類型的選擇,,完成對具體操作系統(tǒng)的映射,。這部分因為與具體嵌入式操作系統(tǒng)相關(guān),因而具有特殊性,。為了實現(xiàn)配置的通用性,,也就需要考慮如何把特殊性降低到最小。
1.2基本工作原理
1.2.1配置基本流程
定制的基本流程如圖3所示,。用戶瀏覽器查詢構(gòu)件庫,,并對用戶顯示出可選模塊,然后接收用戶對模塊的選擇,,將選擇結(jié)果送至文件解析器,。從構(gòu)件庫獲得對應(yīng)模塊的屬性文件。通過解析,,將解析結(jié)果生成模塊結(jié)構(gòu)映射關(guān)系圖,。模塊結(jié)構(gòu)關(guān)系圖中的模塊均以抽象邏輯形式存在,可以通過查找構(gòu)件庫得到它以文件形式存在物理實體信息,。根據(jù)模塊結(jié)構(gòu)映射關(guān)系圖和每一個模塊的物理實體信息,。生成對應(yīng)的Makefile或其它一些相關(guān)配置文件,把它提供給對應(yīng)的Make工具 (編譯器,、鏈接器等),,最后生成系統(tǒng)的可執(zhí)行文件。

1.2.2模塊抽象的層次劃分
一般說來,,模塊的粒度越大,,每一個模塊所包含的功能越多,其可配置性就越低,;而模塊粒度越小,,配置復(fù)雜度越高〔5〕。為了達到配置的靈活性和方便性,,并將配置中涉及到操作系統(tǒng)特殊性的地方降到最小,,我們將模塊抽象出來,,并將其劃分為多級結(jié)構(gòu),不同層次的模塊封裝其下層模塊,,形成不同的配置粒度?,F(xiàn)以3層結(jié)構(gòu)進行描述,如圖4所示,。

圖4中最下層是原子級模塊,,它抽象了操作系統(tǒng)的基本功能,包括任務(wù)(task),、I/O驅(qū)動(driver),、定時器(timel)、信號量 (sernaphore),、消息隊列(quecue),、事件(event group)、郵箱(mailBox),、管道(pipe)等,。除此之外,還包括一些基本的應(yīng)用功能,。之所以取名為原子級模塊,,是為了表明它是不可再分的基本模塊,是配置其它層次模塊的基礎(chǔ),。
原子級模塊的粒度存在于目標代碼或庫文件級,,因為它映射的物理實體以目標代碼或庫文件存在,。雖然在圖4的層次結(jié)構(gòu)中,,它也是作為抽象的邏輯模塊存在,但是它是和物理實體聯(lián)系最緊密的一層,,也是模塊粒度最細的一層,。因而在配置過程結(jié)束以后,通過這層映射到不同的文件,,產(chǎn)生不同格式的配置文件,,達到配置不同操作系統(tǒng)的目的。原子級模塊完成的只是某一特定功能的一部分,,或者只是某一特定功能一個子功能,,必須和其它原子級模塊相結(jié)臺才能發(fā)揮應(yīng)有的作用。因而在它的上層提出了功能級模塊的概念,。
功能級模塊由原子級模塊配置生成,。通過把不同的原子級模塊結(jié)合在一起,完成某一特定功能,,并加大了模塊粒度,。例如,,配置無線上網(wǎng)的功能模塊,除了要選擇無線上網(wǎng)本身這個原子級模塊,,還需要選擇操作系統(tǒng)中支持上網(wǎng)功能的原子級模塊,,比如TCP/IP協(xié)議棧。
通過把功能級模塊組裝在一起,,完成更強大的功能,,就構(gòu)成了應(yīng)用級模塊。每一個應(yīng)用級模塊都是一個功能模塊集,,也是粒度最大的一層模塊,。對于應(yīng)用程序開發(fā)者,為了開發(fā)特定的應(yīng)用程序,,如果不想選擇細粒度的模塊,,可以直接選擇應(yīng)用級模塊來配置操作系統(tǒng)。
這種模塊化的分層結(jié)構(gòu),,能為開發(fā)者提供不同的模塊粒度,,使用戶可以根據(jù)需要,選擇不同層次的模塊,,以便增強定制過程的靈活性,;而其最大的優(yōu)點是,對于每一次定制需求的改變,,不必由最細粒度的原子級模塊配置重新做起,,而是可以對需求改變進行分析,替換掉恰當粒度的模塊,,保持其它部分不變,,簡化了配置過程,減少了配置時間,。
1.2.3模塊層次的解析
模塊解析和模塊配置過程正好相反,。模塊配置是從最底層開始,逐層構(gòu)建出高層模塊,;而模塊解析則從最上層開始,,層層向下,直到尋找到最下層的映射關(guān)系,,同時構(gòu)造出對應(yīng)的關(guān)系圖,。
基于對模塊的封裝,每層模塊只關(guān)心和它緊密聯(lián)系的下層模塊的映射關(guān)系,,即它是由下層的什么模塊所構(gòu)成的,。為此,我們在配置生成每一個模塊時,,將它對下層的映射關(guān)系保存在數(shù)據(jù)庫中,。
逐層解析時,,我們把模塊名作為關(guān)系圖的頂層結(jié)點,并在數(shù)據(jù)庫中查找它對下層模塊的映射關(guān)系,。根據(jù)映射關(guān)系中涉及的下層模塊,,如果關(guān)系圖中不存在它對應(yīng)的結(jié)點,在關(guān)系圖中添加新的結(jié)點,,每個新結(jié)點對應(yīng)一個下層模塊名,。根據(jù)映射關(guān)系,添加圖中的拓撲關(guān)系,。再將每個新結(jié)點作為一個新的頂層結(jié)點,,重復(fù)剛才的過程,直至最終映射到原子級構(gòu)件,,則構(gòu)造出一個完整的關(guān)系圖,。可以說,,關(guān)系圖生成的過程也就是整個映射的過程,。算法描述如圖5所示。

1.2.4配置的最終完成
到模塊層次解析過程完成為止,,所有的操作均屏了操作系統(tǒng)的特殊性,;但嵌入式系統(tǒng)是多樣的,不僅體現(xiàn)在操作系統(tǒng)的多樣性上,,而且,,即使相同的操作系統(tǒng),對應(yīng)不同的處理器,,其組成也是千差萬別的,。為了生成用戶定制的具體操作系統(tǒng),根據(jù)用戶輸入選擇的操作系統(tǒng)類型,,在上面解析處理生成的關(guān)系圖中,,選擇出度為O的結(jié)點(即為原子級模塊對應(yīng)的結(jié)點)映射到不同的操作系統(tǒng)實體,再根據(jù)不同編譯器,、鏈接器能識別的規(guī)則,生成不同的makefile文件,、 config文件和資源文件,。可以說,,各種配置文件的生成標志著操作系統(tǒng)定制過程的完成,。

2 基于嵌入式Linux的配置剪裁器的實現(xiàn)

使用定制過程的通用模型,我們實現(xiàn)了一個嵌入式Linux的配置剪裁器,。該配置剪裁器作為一個工具集成到基于嵌入式Linux的PDA手機開發(fā)平臺中,。配置剪裁器使用構(gòu)件庫管理器" title="管理器">管理器作為其可選抽象模塊的容器,,而其輸出的配置文件則提供給項目管理器,由后者提交給編譯器和鏈接器進行操作系統(tǒng)生成,。三者的關(guān)系如圖6所示,。

下面是三個工具的功能說明。

(1)配置剪裁器
①顯示從構(gòu)件庫獲得的已有模塊信息,。
②根據(jù)用戶選擇,,配置新的模塊,并將模塊信息存入構(gòu)件庫,,供下次定制時作為已有模塊使用,。
③定制特定應(yīng)用開發(fā)所需的操作系統(tǒng):用戶可以選擇構(gòu)件庫中已存在的不同粒度的模塊進行配置。在需要編譯連接生成可下載到目標機的目標代碼時,,生成對應(yīng)的配置文件,,傳給項目管理器。


(2)構(gòu)件庫管理器
保存操作系統(tǒng)抽象模塊信息,,供配置剪裁器查詢和使用,。查詢內(nèi)容包括:①可以配置的模塊名,供配置剪裁器提取出顯示在用戶界面上,,供用戶配置選擇,;②每個模塊對它下一層的映射信息。根據(jù)此映射信息,,可以進行遞歸往下查找,,因而支持配置剪裁器中對每個模塊的層次解析和操作系統(tǒng)映射功能。
(3)項目管理器
項目管理器管理應(yīng)用程序的開發(fā),,因而項目管理器向配置剪裁器提供應(yīng)用開發(fā)者編制的應(yīng)用程序的源文件路徑信息,。嵌入式軟件的最大特點就是應(yīng)用程序往往不是獨立存在的,它最終和操作系統(tǒng)一道作為二進制目標代碼下載到目標機,。所以,,配置剪裁器需把從項目管理器獲得的源文件路徑信息寫入對應(yīng)的 Makefile文件中。
以用戶的應(yīng)用程序開發(fā)配置所需的應(yīng)用級模塊為例,,將配置剪裁器工作步驟說明如下:
①選擇構(gòu)件庫中已有的應(yīng)用級模塊,,定制操作系統(tǒng),將配置文件路徑保存在構(gòu)件庫管理器中,。
②當收到項目管理器獲得具體操作系統(tǒng)配置文件的請求時,,查找構(gòu)件庫,得到保存的特定應(yīng)用的配置文件路徑,。根據(jù)此路徑和文件名,,打開文件進行解析,獲得應(yīng)用所包含的應(yīng)用級模塊的個數(shù)和模塊名,生成初始的關(guān)系圖,。
③根據(jù)應(yīng)用級模塊的個數(shù)和模塊名,,查找構(gòu)件庫,得到每個應(yīng)用級模塊的配置文件名和路徑,。解析文件得到對應(yīng)的功能級模塊,,將功能級模塊和對應(yīng)拓撲關(guān)系添加在關(guān)系圖中。
④以此類推,,直到找到對應(yīng)的原子級模塊,,最終生成一個完整的關(guān)系圖。
⑤根據(jù)關(guān)系圖查找構(gòu)件庫,,把原子級模塊映射到定制的操作系統(tǒng)實體上,。本系統(tǒng)利用Linux自帶配置系統(tǒng),通過修改Linux的源碼系統(tǒng)中已有的 Makefile和kconfig文件,,來編譯內(nèi)核,,生成用戶定制的操作系統(tǒng)內(nèi)核。因此原子級模塊對應(yīng)于特定操作系統(tǒng)的實體信息就是kconfig文件中需添加的配置項,,如選擇了網(wǎng)絡(luò)模塊對應(yīng)的實體信息,,即“CONFIG_NET=y”配置項。


結(jié)語
通過對操作系統(tǒng)定制技術(shù)進行研究,,抽象出操作系統(tǒng)定制過程通用模型OSTAILOR,,并結(jié)合863項目“面向PDA手機的嵌入式軟件開發(fā)平臺”實現(xiàn)了一個嵌入式Linux的配置剪裁器。用戶可以使用本工具友好的圖形化界面對Linux內(nèi)核組件及應(yīng)用模塊進行操作系統(tǒng)定制,,自動生成各種配置中間文件,,避免了手工編寫修改這些文件的繁瑣,從而演示了使用此模型來實現(xiàn)嵌入式操作系統(tǒng)定制過程的通用化的可行性,。但是在本模型中,,應(yīng)用開發(fā)者定制了特定的操作系統(tǒng),就必須使用該操作系統(tǒng)提供的應(yīng)用編程接口(API),。若需修改定制的操作系統(tǒng),,就必須替換應(yīng)用程序中對應(yīng)的API。如何在操作系統(tǒng)定制過程中,,滿足應(yīng)用開發(fā)的操作系統(tǒng)無關(guān)性,,將是本課題進一步研究的方向。

此內(nèi)容為AET網(wǎng)站原創(chuàng),,未經(jīng)授權(quán)禁止轉(zhuǎn)載,。