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

VxWorks實時操作系統的定制方法

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

中國科學院軟件研究所 李麗穎 李彥峰山東農村信用社聯合社 韓廣志金陵科技學院 苗麗娟

?

VxWorks實時操作系統的定制方法

中國科學院軟件研究所 李麗穎 李彥峰
山東農村信用社聯合社 韓廣志
金陵科技學院 苗麗娟

【摘要】VxWorks實時操作系統具有良好的可裁剪性和可擴展性,在Tornado集成開發環境下,開發者可以根據應用程序的需要,選擇VxWorks系統的組成。利用Tornado定制VxWorks的方法,簡單方便,但具有局限性——不能擴展組件選項、不能修改組件源碼、不能細粒度裁剪等。針對以上缺陷,本文系統地提出一種定制VxWorks的方法,包括對VxWorks的擴展、修改、裁剪,操作簡便、安全可靠。

【關鍵詞】VxWorks映像編譯;組件靜態庫庫編譯;cdf文件規則;細粒度裁剪

0 引言

VxWorks實時操作系統采用精心設計的三層結構——最小內核、基本內核和基本操作系統,以簡潔的微內核作為最底層,逐層擴展到完整的VxWorks配置。因此,VxWorks具有良好的可裁剪性和可擴展性,開發者可以根據應用程序的需要選擇VxWorks系統的組成。尤其在Tornado集成開發環境下,開發者在界面中的VxWorks選項卡中,exclude不需要的組件,include需要的組件,即可達到定制系統的目的,操作簡單方便。

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

鑒于現有VxWorks實時操作系統定制方法的缺陷,本文提出一種對VxWorks實時操作系統進行擴展、修改、裁剪的定制方法。此方法操作簡單方便,保證定制靈活性的同時,兼顧安全性、穩定性。

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

1.1Tornado編譯VxWorks映像的流程

在Tornado集成開發環境下編譯VxWorks映像時,首先新建一個bootable型工程,則在“Files”選項卡中會按默認配置、自動生成prjConfig.c、linkSym.c等源文件;在界面中的VxWorks選項卡中,用戶根據項目需要,exclude不需要的組件、include需要的組件;點擊“rebuild all”,則Tornado會根據當前組件選擇,以00vxWorks.cdf、00bsp.cdf文件為規則,修改prjConfig.c、linkSym.c等源文件的源代碼,然后編譯鏈接。編譯鏈接過程中,prjConfig.c、linkSym.c等源文件首先被編譯為o格式目標文件,然后與已經編譯好的libXXX.a庫鏈接,生成VxWorks映像。

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

1.2靜態庫的重要作用

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

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

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

通過以上分析可知:由cdf文件規則生成prjConfig. c、linkSyms.c代碼的原理,可以實現Tornado界面中組件選項的擴展、修改;利用Tornado集成開發環境對VxWorks裁剪的支持,可以實現對VxWorks映像的粗粒度裁剪;根據a格式靜態庫的編譯原理與作用,可以完成對VxWorks映像的細粒度裁剪。下面幾個小節將分別介紹,應用這些原理實現定制VxWorks映像的方法。

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

VxWorks的可裁剪性特點使開發者可以根據自己應用程序的需要,在Tornado的VxWorks選項卡中,include需要的組件,exclude不需要的組件,達到對VxWorks粗粒度裁剪的目的。但是,這樣的裁剪方法也具有局限性:某個組件,只能整體保留或刪除,不能選擇性保留一個模塊中的部分代碼。所以,有必要對VxWorks映像進行細粒度裁剪。

2.1細粒度裁剪的意義

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

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

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

2.2細粒度裁剪的流程

以fioLib.c文件的函數級裁剪為例:

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

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

注意:必須手工修改編譯選項“-g”為“-O3”

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

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

(4)重新編譯bootable型映像,會發現映像變小了,說明裁剪有效。

2.3細粒度裁剪的效果演示

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

首先,做內存的細粒度裁剪。vxWorks內存文件已經分為memPartLib.c和memLib.c,對應著tornado組件選項中的“minimal memory allocator”和“full featured memory allocator”。其中,memLib.c在粗粒度裁剪中已經被exclude。

由此可見,memPartLib.c已經是一個很基本、小巧的內存管理文件了,可裁剪掉空間不大。對memPartLib. c做函數級裁剪時,去掉了可以創建多個分區的功能,即memPartCreate()和memPartDestroy()兩個函數,其他函數必須保留。經過這個裁剪后的效果如下:

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

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

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

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

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

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

3 總結

本文在明確Tornado編譯VxWorks映像原理的基礎上,詳細闡述了擴展組件選項、粗粒度裁剪、細粒度裁剪的方法,實現了對VxWorks定制的方法。既保障了操作的簡便性、靈活性,又保障了VxWorks映像的安全性、穩定性。

參考文獻

[1]張芊,趙宇.計算機的現狀及關鍵技術[J].企業導報,2011(17).

[2]王戩.云計算關鍵技術及其發展的分析[J].科技創新與應用,2013(28).

[3]張曉洲.云計算關鍵技術及發展現狀研究[J].網絡與信息,2011(09).

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

作者簡介:

主站蜘蛛池模板: 人妻无码中文字幕第一区| 亚洲婷婷在线视频| 久久精品国产免费观看频道| 亚洲伊人电影| 亚洲不卡av中文在线| 国产综合精品一区二区| 久久这里只有精品2| 精品伊人久久大香线蕉网站| 久久国产乱子| 午夜性刺激在线观看免费| 国产精品香蕉在线| 黄色网站不卡无码| 久久精品无码一区二区国产区| 久久精品最新免费国产成人| 一级毛片基地| 国产福利免费在线观看| 手机成人午夜在线视频| 青青草国产免费国产| 亚洲精品无码抽插日韩| 狠狠做深爱婷婷久久一区| 日韩免费无码人妻系列| 亚洲第一黄色网| 国产一区二区三区免费| 国产成人精品一区二区秒拍1o| 国产一区二区免费播放| 免费高清a毛片| 日韩资源站| 精品国产自在现线看久久| 蜜桃臀无码内射一区二区三区| 中国国产A一级毛片| 中文字幕佐山爱一区二区免费| 日韩国产黄色网站| 国产综合欧美| 最新无码专区超级碰碰碰| 国产成人综合网| 久久久91人妻无码精品蜜桃HD| 国产精品久久久久久久久久久久| 欧美黄网站免费观看| 日本伊人色综合网| 免费亚洲成人| 日本三级精品| 国产91小视频| 欧美一区中文字幕| 亚洲精品国产成人7777| 欧洲av毛片| 中文字幕无码电影| 日韩欧美色综合| 久久影院一区二区h| 欧日韩在线不卡视频| 国产在线麻豆波多野结衣| 97久久超碰极品视觉盛宴| 国产69精品久久| 亚洲有无码中文网| 少妇精品网站| 国产乱子伦一区二区=| 伊人色在线视频| 久久综合AV免费观看| 欧美一级片在线| 亚洲一级毛片免费观看| 久久中文字幕2021精品| 亚洲最大情网站在线观看 | 亚洲综合色吧| 国内老司机精品视频在线播出| 欧美中文字幕在线二区| 亚洲男人在线天堂| 婷婷综合缴情亚洲五月伊| 永久免费AⅤ无码网站在线观看| 22sihu国产精品视频影视资讯| 欧美精品色视频| 欧美日韩亚洲国产主播第一区| 丁香五月亚洲综合在线 | 亚洲国产欧美目韩成人综合| 国产国拍精品视频免费看| 制服丝袜一区二区三区在线| 亚洲精品欧美日韩在线| 成人免费网站久久久| 丁香婷婷在线视频| 自慰网址在线观看| 国产18页| 亚洲精品国产日韩无码AV永久免费网| 亚洲伊人久久精品影院| 亚洲人精品亚洲人成在线|