999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

VxWorks實(shí)時(shí)操作系統(tǒng)的定制方法

2016-04-09 02:03:26中國(guó)科學(xué)院軟件研究所李麗穎李彥峰山東農(nóng)村信用社聯(lián)合社韓廣志金陵科技學(xué)院苗麗娟
電子世界 2016年5期

中國(guó)科學(xué)院軟件研究所 李麗穎 李彥峰山東農(nóng)村信用社聯(lián)合社 韓廣志金陵科技學(xué)院 苗麗娟

?

VxWorks實(shí)時(shí)操作系統(tǒng)的定制方法

中國(guó)科學(xué)院軟件研究所 李麗穎 李彥峰
山東農(nóng)村信用社聯(lián)合社 韓廣志
金陵科技學(xué)院 苗麗娟

【摘要】VxWorks實(shí)時(shí)操作系統(tǒng)具有良好的可裁剪性和可擴(kuò)展性,在Tornado集成開(kāi)發(fā)環(huán)境下,開(kāi)發(fā)者可以根據(jù)應(yīng)用程序的需要,選擇VxWorks系統(tǒng)的組成。利用Tornado定制VxWorks的方法,簡(jiǎn)單方便,但具有局限性——不能擴(kuò)展組件選項(xiàng)、不能修改組件源碼、不能細(xì)粒度裁剪等。針對(duì)以上缺陷,本文系統(tǒng)地提出一種定制VxWorks的方法,包括對(duì)VxWorks的擴(kuò)展、修改、裁剪,操作簡(jiǎn)便、安全可靠。

【關(guān)鍵詞】VxWorks映像編譯;組件靜態(tài)庫(kù)庫(kù)編譯;cdf文件規(guī)則;細(xì)粒度裁剪

0 引言

VxWorks實(shí)時(shí)操作系統(tǒng)采用精心設(shè)計(jì)的三層結(jié)構(gòu)——最小內(nèi)核、基本內(nèi)核和基本操作系統(tǒng),以簡(jiǎn)潔的微內(nèi)核作為最底層,逐層擴(kuò)展到完整的VxWorks配置。因此,VxWorks具有良好的可裁剪性和可擴(kuò)展性,開(kāi)發(fā)者可以根據(jù)應(yīng)用程序的需要選擇VxWorks系統(tǒng)的組成。尤其在Tornado集成開(kāi)發(fā)環(huán)境下,開(kāi)發(fā)者在界面中的VxWorks選項(xiàng)卡中,exclude不需要的組件,include需要的組件,即可達(dá)到定制系統(tǒng)的目的,操作簡(jiǎn)單方便。

但是,以上定制方法也具有局限性。使用Tornado界面操作時(shí),只能在現(xiàn)有選項(xiàng)的基礎(chǔ)上include或exclude組件,不能在界面中添加新的組件選項(xiàng),用戶(hù)定制系統(tǒng)的自由性被局限;VxWorks映像生成所需要的組件都是以預(yù)先編譯好的靜態(tài)庫(kù)的形式存在的,修改、裁剪組件對(duì)應(yīng)的源碼,并不會(huì)對(duì)VxWorks映像產(chǎn)生影響;如果通過(guò)重新編譯靜態(tài)庫(kù)的方式實(shí)現(xiàn)修改組件源碼,需涉及makefile、rules.library、rules.bsp等多個(gè)編譯文件的使用,難度大、步驟多,且手動(dòng)編譯的靜態(tài)庫(kù)穩(wěn)定性、安全性難以保障;無(wú)論是downloadable型工程還是bootable型工程,默認(rèn)編譯選項(xiàng)下生成的文件都過(guò)大。

鑒于現(xiàn)有VxWorks實(shí)時(shí)操作系統(tǒng)定制方法的缺陷,本文提出一種對(duì)VxWorks實(shí)時(shí)操作系統(tǒng)進(jìn)行擴(kuò)展、修改、裁剪的定制方法。此方法操作簡(jiǎn)單方便,保證定制靈活性的同時(shí),兼顧安全性、穩(wěn)定性。

1 Tornado編譯VxWorks映像的基本原理

1.1Tornado編譯VxWorks映像的流程

在Tornado集成開(kāi)發(fā)環(huán)境下編譯VxWorks映像時(shí),首先新建一個(gè)bootable型工程,則在“Files”選項(xiàng)卡中會(huì)按默認(rèn)配置、自動(dòng)生成prjConfig.c、linkSym.c等源文件;在界面中的VxWorks選項(xiàng)卡中,用戶(hù)根據(jù)項(xiàng)目需要,exclude不需要的組件、include需要的組件;點(diǎn)擊“rebuild all”,則Tornado會(huì)根據(jù)當(dāng)前組件選擇,以00vxWorks.cdf、00bsp.cdf文件為規(guī)則,修改prjConfig.c、linkSym.c等源文件的源代碼,然后編譯鏈接。編譯鏈接過(guò)程中,prjConfig.c、linkSym.c等源文件首先被編譯為o格式目標(biāo)文件,然后與已經(jīng)編譯好的libXXX.a庫(kù)鏈接,生成VxWorks映像。

生成VxWorks映像所需要的組件源碼,全部來(lái)源于預(yù)先編譯好的靜態(tài)庫(kù)libXXX.a。prjConfig.c、linkSym.c等源文件,只是根據(jù)用戶(hù)選擇調(diào)用了所需組件的初始化函數(shù),以提示連接器從靜態(tài)庫(kù)libXXX.a中,選擇需要的o文件鏈接到VxWorks映像。因此,靜態(tài)庫(kù)libXXX.a非常重要,下面詳細(xì)闡述。

1.2靜態(tài)庫(kù)的重要作用

在tornado編譯bootable型工程前,Tornado argetlib文件夾里的libXXX.a文件已經(jīng)編譯好,它是由src文件夾里的.c源文件、遵循rules.library等編譯文件的規(guī)則編譯、鏈接而成的,里面包含了VxWorks支持的全部庫(kù)函數(shù)。

libXXX.a是預(yù)先編譯好的、不變的,它內(nèi)部哪些.o文件會(huì)參與鏈接生成VxWorks,是由prjConfig.c、linkSyms. c這些生成代碼直接決定的。比如,memPartLib.o已鏈接在libSPARCgnuvx.a中,如果界面中選擇了組件“minimal memory allocator”,則會(huì)在prjConfig.c文件中生成調(diào)用函數(shù)memPartLibInit()的代碼;鏈接器查找每個(gè).o文件的符號(hào)表,發(fā)現(xiàn)memPartLibInit()函數(shù)是在memPartLib.o中實(shí)現(xiàn)的,就會(huì)把memPartLib.o文件鏈接進(jìn)VxWorks映像。

1.3基于Tornado編譯原理的定制方法概述

通過(guò)以上分析可知:由cdf文件規(guī)則生成prjConfig. c、linkSyms.c代碼的原理,可以實(shí)現(xiàn)Tornado界面中組件選項(xiàng)的擴(kuò)展、修改;利用Tornado集成開(kāi)發(fā)環(huán)境對(duì)VxWorks裁剪的支持,可以實(shí)現(xiàn)對(duì)VxWorks映像的粗粒度裁剪;根據(jù)a格式靜態(tài)庫(kù)的編譯原理與作用,可以完成對(duì)VxWorks映像的細(xì)粒度裁剪。下面幾個(gè)小節(jié)將分別介紹,應(yīng)用這些原理實(shí)現(xiàn)定制VxWorks映像的方法。

2 基于Tornado編譯原理的細(xì)粒度裁剪方法

VxWorks的可裁剪性特點(diǎn)使開(kāi)發(fā)者可以根據(jù)自己應(yīng)用程序的需要,在Tornado的VxWorks選項(xiàng)卡中,include需要的組件,exclude不需要的組件,達(dá)到對(duì)VxWorks粗粒度裁剪的目的。但是,這樣的裁剪方法也具有局限性:某個(gè)組件,只能整體保留或刪除,不能選擇性保留一個(gè)模塊中的部分代碼。所以,有必要對(duì)VxWorks映像進(jìn)行細(xì)粒度裁剪。

2.1細(xì)粒度裁剪的意義

tornado新建的bootable型映像,一般包含prjConfig. c、linkSyms.c、usrAppInit.c等文件。在組件選項(xiàng)中,不同的選擇方式會(huì)在prjConfig.c和linkSyms.c中生成不同的代碼。這些代碼調(diào)用了哪些函數(shù),在鏈接生成vxWorks映像時(shí),會(huì)從libXXX.a中選擇這些函數(shù)所在的.o文件,把整個(gè).o文件鏈接進(jìn)vxWorks映像。

有一些函數(shù),比如fioLib.c文件中的sprintf()函數(shù),是一個(gè)非常常用的函數(shù)。但是,同樣在fioLib.c中的scanf()函數(shù)用戶(hù)就有可能不使用。但是,fioLib.o會(huì)作為一個(gè)整體從libSPARCgnuvx.a中被鏈接到vxWorks映像中,造成vxWorks映像體積有一些沒(méi)必要的增加。

如果能把fioLib.c文件中的scanf()等不使用的函數(shù)刪除,然后編譯成.o,再鏈接進(jìn).a,那么bootable型映像編譯鏈接時(shí),就能避免把沒(méi)必要的函數(shù)加入映像,起到體積裁剪的效果。所以,函數(shù)級(jí)裁剪時(shí)非常必要的,如果對(duì)適合的文件做函數(shù)級(jí)裁剪,效果是非常顯著的。

2.2細(xì)粒度裁剪的流程

以fioLib.c文件的函數(shù)級(jí)裁剪為例:

(1)在fioLib.c文件中裁減掉不適用的函數(shù)。

(2)用downloadable型工程,編譯fioLib.c文件,生成fioLib.o。

注意:必須手工修改編譯選項(xiàng)“-g”為“-O3”

(3)使用命令行,把libSPARCgnuvx.a中原來(lái)的fioLib.o替換為已經(jīng)裁剪的fioLib.o。

使用命令為:ar -r libSPARCgnuvx.a fioLib.o

(4)重新編譯bootable型映像,會(huì)發(fā)現(xiàn)映像變小了,說(shuō)明裁剪有效。

2.3細(xì)粒度裁剪的效果演示

2.3.1memPartLib.c的裁剪:減小3.6%

首先,做內(nèi)存的細(xì)粒度裁剪。vxWorks內(nèi)存文件已經(jīng)分為memPartLib.c和memLib.c,對(duì)應(yīng)著tornado組件選項(xiàng)中的“minimal memory allocator”和“full featured memory allocator”。其中,memLib.c在粗粒度裁剪中已經(jīng)被exclude。

由此可見(jiàn),memPartLib.c已經(jīng)是一個(gè)很基本、小巧的內(nèi)存管理文件了,可裁剪掉空間不大。對(duì)memPartLib. c做函數(shù)級(jí)裁剪時(shí),去掉了可以創(chuàng)建多個(gè)分區(qū)的功能,即memPartCreate()和memPartDestroy()兩個(gè)函數(shù),其他函數(shù)必須保留。經(jīng)過(guò)這個(gè)裁剪后的效果如下:

裁剪前 裁剪后 減小比例memPartLib.c 6,989 6,736 3.6%

2.3.2fioLib.c的裁剪:減小45.2%

由于memPartLib.c文件的裁剪效果不明顯,不能體現(xiàn)函數(shù)級(jí)裁剪的必要性,所以又做了fioLib.c文件的裁剪。fioLib. c是格式化輸入輸出模塊,在tornado中include組件“formatted IO”,會(huì)自動(dòng)include組件“IO system”(對(duì)應(yīng)文件為ioLib.c)。

fioLib.c文件裁剪前比較大(14KB),且各個(gè)函數(shù)間耦合性弱,許多函數(shù)用戶(hù)并不需要,所以此文件裁剪空間比較大。裁減掉了sscanf()函數(shù)相關(guān)的函數(shù)(如下圖所示),printf()、sprintf()、fioRead()、fioRdString()等函數(shù)仍然可以正常使用。

裁剪后的效果,如下表所示:

裁剪前 裁剪后 比較fioLib.o大小 14KB(13,418) 8KB(7,349) 減小比例45.2% vxWorks大小 92KB(93,249) 88KB(89,294) 減小比例4.2%

3 總結(jié)

本文在明確Tornado編譯VxWorks映像原理的基礎(chǔ)上,詳細(xì)闡述了擴(kuò)展組件選項(xiàng)、粗粒度裁剪、細(xì)粒度裁剪的方法,實(shí)現(xiàn)了對(duì)VxWorks定制的方法。既保障了操作的簡(jiǎn)便性、靈活性,又保障了VxWorks映像的安全性、穩(wěn)定性。

參考文獻(xiàn)

[1]張芊,趙宇.計(jì)算機(jī)的現(xiàn)狀及關(guān)鍵技術(shù)[J].企業(yè)導(dǎo)報(bào),2011(17).

[2]王戩.云計(jì)算關(guān)鍵技術(shù)及其發(fā)展的分析[J].科技創(chuàng)新與應(yīng)用,2013(28).

[3]張曉洲.云計(jì)算關(guān)鍵技術(shù)及發(fā)展現(xiàn)狀研究[J].網(wǎng)絡(luò)與信息,2011(09).

李麗穎(1987-),女,黑龍江齊齊哈爾人,碩士研究生,助理工程師,研究方向:操作系統(tǒng)分析與優(yōu)化。

作者簡(jiǎn)介:

主站蜘蛛池模板: 国产真实自在自线免费精品| 成人毛片免费在线观看| 国产91透明丝袜美腿在线| 亚洲天堂啪啪| 中文字幕有乳无码| 亚洲品质国产精品无码| 国产午夜福利在线小视频| 成人免费午夜视频| 日韩福利在线观看| 拍国产真实乱人偷精品| 国产丝袜无码精品| 国产午夜人做人免费视频中文| 3344在线观看无码| 国产国产人免费视频成18| 伊人成人在线| 国产99久久亚洲综合精品西瓜tv| 亚洲狼网站狼狼鲁亚洲下载| 亚洲国产高清精品线久久| 伊人91视频| 免费看a毛片| 国产真实乱人视频| 国模视频一区二区| 国产高清在线丝袜精品一区| 亚洲精品大秀视频| 色天天综合| 欧美在线精品一区二区三区| 久久99精品久久久久纯品| 国产一在线| 国产91视频免费观看| 成年av福利永久免费观看| 国产精品jizz在线观看软件| 在线永久免费观看的毛片| 精品夜恋影院亚洲欧洲| 亚洲a级在线观看| 91成人免费观看| 在线亚洲精品自拍| 精品久久香蕉国产线看观看gif| 日韩在线视频网| 亚洲成人网在线观看| 伊人久久精品无码麻豆精品| 精品日韩亚洲欧美高清a| 亚洲欧美成人在线视频| 在线观看视频一区二区| 精品无码专区亚洲| 日韩视频精品在线| 成年女人a毛片免费视频| 伊人国产无码高清视频| 国产精品99一区不卡| 成人伊人色一区二区三区| 一本色道久久88亚洲综合| 婷婷综合色| 免费播放毛片| 国产成人精品一区二区三区| 91毛片网| 99精品这里只有精品高清视频| 成人av专区精品无码国产| 亚洲区欧美区| 97精品国产高清久久久久蜜芽| 中文字幕一区二区人妻电影| 中文字幕亚洲电影| 久久黄色影院| 国产新AV天堂| 国产小视频免费| 国产日韩欧美在线视频免费观看| 中文字幕啪啪| 无码内射在线| 在线看片中文字幕| 欧美亚洲国产精品久久蜜芽| 免费又爽又刺激高潮网址| 在线看片中文字幕| 色综合久久综合网| 国产成人毛片| 一本大道香蕉久中文在线播放| 久久精品无码国产一区二区三区| 色窝窝免费一区二区三区 | 日韩大片免费观看视频播放| 蝌蚪国产精品视频第一页| 欧美国产精品拍自| 这里只有精品免费视频| 国产精品九九视频| 2021国产v亚洲v天堂无码| 国产人免费人成免费视频|