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

基于VXWORKS系統的熱補丁技術研究

2017-03-29 04:52:46劉立康
計算機技術與發展 2017年3期

姜 文,劉立康

(西安電子科技大學 通信工程學院,陜西 西安 710071)

基于VXWORKS系統的熱補丁技術研究

姜 文,劉立康

(西安電子科技大學 通信工程學院,陜西 西安 710071)

軟件產品交付用戶使用后,需要解決軟件產品在使用過程中的各類問題與缺陷。對于VXWORKS操作系統開發的軟件產品,通常采用熱補丁技術,可以在不影響系統正常運行的情況下完成對軟件產品錯誤的修復。為了解決軟件在使用過程中的各類問題與缺陷,需要深入研究熱補丁技術。結合工作實踐,敘述了VXWORKS操作系統的特點和熱補丁制作過程中的各種相關技術。以ClearCase作為配置管理工具,ICP-CI作為持續集成工具,進行熱補丁包制作;詳細敘述了基于VXWORKS系統的軟件熱補丁包制作過程,包括熱補丁代碼的編寫和靜態檢查、模塊熱補丁文件的制作、熱補丁包打包、熱補丁版本包的測試與發布。最后介紹了一個典型工作案例。工作實踐表明,熱補丁技術具有實時修復,且不影響嵌入式系統正常運行的優點,提高了系統可靠性,降低了軟件開發成本。

嵌入式操作系統;熱補丁;持續集成;靜態檢查

0 引 言

VXWORKS是實時嵌入式操作系統軟件,可以為開發人員提供高效實時的任務調度、中斷管理、系統資源管理和任務間通信。VXWORKS經過廣泛驗證,已成功應用在航天、航空、艦船、通信、醫療等關鍵領域。

軟件產品交付用戶使用后,需要解決軟件產品在使用過程中的各類問題與缺陷[1]。對于VXWORKS平臺開發的軟件產品,采用熱補丁技術,可以在不影響系統正常運行的情況下完成對系統錯誤的修復,從而提高了軟件的安全性和可靠性,高質量完成軟件維護工作,延續軟件的使用壽命,降低軟件開發成本。

文中采用軟件配置管理工具ClearCase和持續集成工具ICP-CI進行熱補丁包制作。詳細敘述了熱補丁代碼的編寫和靜態檢查、模塊熱補丁文件的制作、熱補丁包打包、熱補丁版本包的測試與發布。最后介紹了一個典型工作案例。工作實踐表明,采用持續集成技術有利于提高軟件熱補丁制作的效率與質量。

1 熱補丁相關技術

軟件產品交付用戶使用過程中會出現的各種問題或缺陷,導致軟件產品部分功能不可用,或者影響軟件產品的性能,有時軟件可能會出現安全問題。需要在原有的軟件系統上實施補丁來修復這些問題。

1.1 補丁分類

軟件補丁的分類有多種,根據待實施的軟件可以分為操作系統補丁、應用軟件補丁;根據修復的軟件缺陷的危害程度可以分為高危補丁、普通補丁;根據實施補丁的方式可以分為冷補丁、熱補丁。

1.1.1 冷補丁

冷補丁[2-3],是修改軟件模塊的源代碼之后,對該模塊對應的整個工程文件進行重新編譯,將編譯之后的所有可執行文件重新加載到設備上執行,在這個過程中需要在設備上停掉原有的軟件產品,再重新安裝一遍軟件產品。

1.1.2 熱補丁

熱補丁[4-6],是在軟件系統正常運行的過程中進行熱補丁安裝,熱補丁的實質就是替換原有軟件系統中的一個或多個函數。執行熱補丁安裝的過程中,并不需要停止軟件系統,而且執行熱補丁安裝的過程操作起來也很快。通常,熱補丁適用的軟件系統是一個內核非搶占式的實時操作系統,它具有可伸縮、可裁剪和高可靠性等特點,是一個可以同時適用于主流 CPU(如MIPS、PPC、X86和ARM等)目標平臺的實時操作系統。

1.2 VXWORKS系統的特點

VXWORKS系統[4,7-8]提供了以下功能:

(1)任務管理。

操作系統執行的每個程序都被稱之為任務,VXWORKS系統模塊的運行一般是以任務的形式進行調度和運行;操作系統可以動態啟動或停止某一指定任務。

(2)符號表管理。

VXWORKS系統在軟件編譯時可以將所有的全局變量和外部函數都編譯到一個全局符號表中,軟件系統啟動后,該符號表可以通過操作系統提供的相關函數通過變量或函數名查找變量存儲地址或函數的入口地址。

(3)模塊動態加載。

操作系統支持將模塊軟件編譯成ELF格式的可執行文件,在系統運行過程中動態加載該文件。

由于VXWORKS系統具有上述三種功能,有利于采用熱補丁的方式修復軟件模塊存在的各種缺陷。基于VXWORKS操作系統的軟件產品熱補丁具有繼承性,即后一個版本的熱補丁需要將前一個版本的熱補丁所修改的缺陷收編進來,在熱補丁的制作過程中需要注意這一點。

1.3 熱補丁制作過程中的文件類型

Tornado是VXWORKS應用系統的集成開發環境。Tornado IDE采用C/C++語言編程,支持GNU的C/C++編譯器。GNU編譯器生成的目標文件缺省為ELF(Executable and Linking Format)格式[4-5]。

1.3.1 目標文件*.obj的文件格式

目標文件*.obj為ELF格式[5-6],文件格式如圖1所示。

圖1 目標文件*.obj的文件格式

目標文件包括文件頭、代碼段、符號段、重定位段和段表。其中,代碼段存放二進制代碼指令;數據段中分類存儲數據;符號段中存放該文件中定義的各個全局函數和全局變量的名字以及它們加載后在內存中的地址;在重定位段中存放引用外部符號“名字”以及“在何處引用”等信息。文件頭對段表進行索引,段表中包括代碼段的段頭、數據段的段頭、重定義段的段頭,這些段頭包含對應段的相關信息。

1.3.2 熱補丁文件*.pat的文件格式

熱補丁文件*.pat的文件格式[5-6]如圖2所示。

在補丁文件中每個補丁單元對應一個補丁函數。每個補丁單元包括代碼段、數據段和函數替換表三部分。其中,代碼段和數據段存放的是補丁函數的實際指令;函數替換表中包括被補丁函數的地址和補丁函數地址。每個補丁單元對應相應的補丁單元頭,補丁單元頭中包含補丁函數名稱、函數尺寸和函數地址。

1.3.3 文件類型

熱補丁制作過程中涉及以下文件類型。

(1)*.c或*.cpp文件,采用C/C++語言編寫的熱補丁源程序。

圖2 熱補丁*.pat的文件格式

(2)目標文件*.obj,采用gcc或g++將*.c或*.cpp文件編譯生成的目標文件,具有ELF格式的二進制文件。

(3)模塊目標文件*.elf,將軟件模塊中的所有目標文件*.obj連接在一起生成模塊的目標文件(模塊名.elf),通常稱為模塊基線文件。

(4)熱補丁文件*.pat,由熱補丁函數組成的文件,可以加載到系統中應用。

(5)符號表信息文件*.SYM,在目標文件中刪除符號信息以外的所有內容得到的文件。文件中以符號為單位存放各個全局函數和全局變量的名字和它們加載后在內存中的地址。

1.4 熱補丁包制作流程圖

采用持續集成技術制作熱補丁,可以高效率和高質量完成熱補丁包的制作[4-6,9-12]。文中采用的軟件配置管理工具是ClearCase,持續集成工具是ICP-CI,進行熱補丁包制作。熱補丁的制作流程如圖3所示。

2 熱補丁代碼的編寫和靜態檢查

2.1 熱補丁代碼編寫

制作熱補丁之前,開發工程師需要通過軟件產品的配置管理工程師(CMO)確認需要制作熱補丁的軟件代碼基線。同時確認目前加載在軟件基線上的熱補丁包版本。開發人員從版本庫下載相關的軟件基線代碼文件和補丁包代碼文件,編寫新的熱補丁代碼。

對于補丁開發首先需要定位存在源代碼缺陷函數(因為熱補丁的原理就是函數替換),定位之后修改相關的函數源代碼,修改函數相應的功能代碼。

開發工程師進行補丁開發與通常的軟件開發有區別,需要注意如下事項:

(1)對*.h文件的處理。

對補丁開發過程中涉及的代碼缺陷,定位到需要修改的函數源代碼后,修改相應的功能代碼時,不能修改對應的*.h文件中的內容。

圖3 熱補丁的制作流程圖

(2)對函數的處理。

修改缺陷對應的*.c文件的源代碼時,只保留需要修改的函數。去掉所有無關的函數,可以直接刪掉或者用#if 0 #endif注釋掉。

(3)對全局變量的處理。

修改缺陷對應的*.c文件時,需要將所有的全局變量都改用extern聲明,并把在定義全局變量時的賦值都去掉;對于用const聲明的全局常變量(常變量,只允許讀不允許寫),如果開發工程師所修改的函數中未用到該全局變量則在該全局變量前加extern聲明,還要將其后面的賦值去掉;若所修改的函數中用到了該全局變量,就需要將該全局變量改成別的變量名,并重新定義,其初始化與原全局變量一致,同時在要修改的函數中用新的變量名替換老的變量名;若該全局變量是static聲明的,如果需要修改的函數中未用到該變量,可直接加extern聲明。

(4)對靜態函數的處理。

若修改的函數是靜態函數,可通過修改該函數的上層函數,即修改完缺陷對應的函數之后,不能注釋掉調用該函數的上層函數,另外,所有的上層函數要調用的靜態函數都不能注釋掉。

(5)加入返回補丁版本號的函數。

修改的*.c文件中加入一個返回補丁版本號的函數,其返回值為補丁版本號。

開發工程師完成補丁代碼編寫后,對代碼進行單元測試,靜態走碼檢查,最后將評審過的代碼合入版本庫。開發工程師向版本庫提交代碼時,要添加注釋、說明、CR單號、修改原因等,以保證可追溯。

2.2 ClearCase版本庫的代碼更新

持續集成工具ICP-CI需要在版本庫鎖庫之后完成源代碼更新。ICP-CI工具執行代碼更新時,需要編寫代碼更新的批處理腳本code_update.bat,把代碼更新的腳本配置在任務中。

2.3 代碼靜態檢查

為了確保熱補丁文件的源代碼質量,需要對開發工程師修改的源代碼進行靜態檢查。采用持續集成工具ICP-CI調用靜態檢查工具PC-Lint和Coverity Prevent[13]對補丁代碼進行靜態檢查。PC-Lint通常用于C、C++源代碼的靜態檢查,是最常用的靜態檢查工具。重量級靜態檢查工具Coverity Prevent是檢測和解決C、C++、Java和C#源代碼中嚴重缺陷的領先自動化方法。另外,為了提高熱補丁的安全性,還需要對補丁源代碼進行危險函數檢查,避免出現諸如strcpy等函數。發現代碼問題反饋給開發工程師,其對代碼進行修改,直到存在的問題全部解決。

3 熱補丁的制作過程

熱補丁分為三個層級:函數熱補丁,模塊熱補丁(由多個函數熱補丁組成),熱補丁包(包含多個模塊熱補丁)。基于持續集成[7]的熱補丁開發通常是制作熱補丁包。

3.1 模塊熱補丁目錄結構

制作模塊熱補丁時,需要創建“產品名_版本號_BASEVXWORKS模塊名”文件夾,用于存放相關文件與熱補丁文件。以UPE模塊為例,文件夾目錄結構如表1所示。

表1 UPE模塊熱補丁文件夾目錄結構

3.2 模塊熱補丁文件制作過程

以UPE模塊為例,敘述模塊熱補丁文件制作過程。

3.2.1 集成到ICP-CI工具進行熱補丁文件編譯

首先創建一個構建工程:“產品名_版本號_PatchBuild”。在ICP-CI的任務管理頁面上配置編譯任務完成熱補丁源程序代碼編譯。配置任務以模塊為單位,在任務欄上選擇“compile”任務。具體配置如表2所示。

表2 UPE模塊在ICP-CI頁面上配置“compile”任務

持續集成工程師編寫相關的*.ini配置文件、Makefile文件、補丁編譯腳本和ANT腳本,啟動相關程序完成補丁源程序代碼的編譯工作。將編譯生成的*.obj文件歸檔到UPEobj目錄下。

3.2.2 模塊熱補丁文件的制作

編譯工作完成之后,制作補丁中間文件和模塊UPE熱補丁文件。

(1)根據*.obj文件的個數,在UPEobj文件夾中生成從HP0001到HP000X的子目錄。熱補丁中間文件制作工具makepatch.exe通過補丁目標文件*.obj生成與其對應的熱補丁文件、符號表信息文件和制作熱補丁文件的過程日志文件。*.obj文件和生成的熱補丁中間文件存放在對應的文件夾中。以HP 0001文件夾為例,文件夾中存放的文件如表3所示。

表3 補丁中間文件的文件目錄

(2)編寫批處理腳本,通過熱補丁中間文件生成模塊熱補丁文件。由于模塊熱補丁文件具有繼承性,即包含上一個版本熱補丁修復的產品缺陷,因此對非首次編譯的熱補丁文件而言,需要將前一個熱補丁版本的熱補丁中間文件與本次編譯生成的熱補丁中間文件合并起來生成目前版本的模塊熱補丁文件。模塊UPE的熱補丁文件是upe_patch.pat。該補丁文件歸檔到UPE elease文件夾中。

3.3 熱補丁包打包

軟件的所有模塊熱補丁文件制作完成后,將這些模塊熱補丁文件打包。由于熱補丁版本包也具有繼承性,即后一個版本的熱補丁版本包收編包含前一個版本包編譯生成的熱補丁文件。同時要更新熱補丁包版本號。

(1)創建熱補丁包文件夾。

熱補丁文件制作完成后,需要創建熱補丁包的文件夾。將各模塊熱補丁文件*.pat拷貝到熱補丁包文件夾的bin/new目錄下。若模塊補丁文件已經更新,拷貝更新后模塊熱補丁文件;若沒有更新,拷貝原來的模塊熱補丁文件。將其他相關的文件拷貝到相應的目錄下。

(2)熱補丁包打包。

修改打包配置文件autorun.ini:填寫本次版本號、基線版本號、源文件目錄和目的文件目錄。運行打包工具packer.exe完成熱補丁版本包打包。熱補丁包制作完成后,補丁版本包的文件名為:產品名 版本號 loadfiles.rar。

4 熱補丁版本包的測試和發布

熱補丁版本包制作完成后由產品經理提交轉測試流程。測試經理安排測試工程師與測試環境對補丁版本包進行測試[14-16]。

測試工程師根據該補丁版本需要修復的缺陷列表,設計相應的測試用例,測試新增與待改進的特性是否符合設計規格;還要根據基本測試用例完成補丁的基本功能測試,測試工作完成后,測試工程師提供測試報告。

熱補丁測試分為三個層次:補丁函數測試、補丁模塊測試和補丁包測試。

(1)補丁函數測試是最基礎的測試,補丁函數測試是函數缺陷修復、新增與待改進的特性的測試。對于UPE模塊,通過基線文件upe.elf和四類中間文件(熱補丁文件patchHP000X.pat,符號表信息patchHP000X.SYM,日志文件patchHP000X.txt和編譯目標文件*.obj)測試補丁函數。通過這四類文件可以方便測試補丁函數,將測試結果及時反饋給補丁源程序代碼的開發人員,修改代碼存在的各種問題。這四類文件也有利于補丁包測試和補丁模塊測試中各種缺陷問題的定位。

(2)補丁模塊測試,對于UPE模塊,通過基線文件upe.elf和upe_patch.pat,對補丁模塊進行功能、性能和兼容性的綜合測試。

(3)補丁包測試,熱補丁包的測試是補丁包加載后綜合技術指標的全面測試。

完成熱補丁測試工作后,將相關文件和熱補丁版本包歸檔。產品經理發布熱補丁包。

5 熱補丁版本包的安裝和管理

熱補丁通常有4個基本狀態:加載,激活,去激活和卸載。基于VXWORKS系統的熱補丁包可以采用LMT(Local Maintenance Terminal)客戶端工具安裝和管理。LMT工具是指安裝了“本地維護終端”的軟件組,通過LMT工具的MML(Man-Machine Language)命令,可以對網元進行相應操作和維護。

將熱補丁版本包解壓之后,使用FTP工具,打開客戶端工具連接到主版本的單板,執行MML命令進行補丁熱的安裝和管理。執行LOD TOBAM將熱補丁版本加載到硬盤,執行LOD TOBP將熱補丁版本加載到FLASH。加載完成之后激活補丁,執行CHK VERSION與DSP PATCH查看補丁版本號,表示加載相應的熱補丁版本成功。

常用的補丁管理MML命令如下:

DSP PATCH顯示補丁

ACT PATCH 激活補丁

DEA PATCH 去激活補丁

CON PATCH 確認補丁

RVW PATCH 刪除補丁

6 典型案例

某公司采用軟件配置管理工具ClearCase和持續集成工具ICP-CI進行基于VXWORKS系統的軟件熱補丁的制作。

補丁包版本編號為V2.11.0_SPC101,共制作了10個模塊的熱補丁文件,收編了若干個來自各局點和內部測試發現的軟件產品缺陷,并完成了熱補丁包打包以及所有的結果文件歸檔任務。補丁包發布后在各局點安裝使用,解決了存在的問題。

7 結束語

熱補丁技術為嵌入式系統升級軟件和嵌入式系統進行錯誤動態修復提供了一種技術方法。工作實踐表明,熱補丁技術具有實時修復,且不影響嵌入式系統正常運行的優點,對于VXWORKS系統的軟件采用熱補丁技術,可以提高軟件的安全性和可靠性,同時降低軟件開發成本。文中采用持續集成技術開發熱補丁包,可以提高軟件熱補丁的質量和開發效率,可以快速向開發工程師反饋軟件源代碼的缺陷,便于開發工程師及時修復源代碼的缺陷,同時也給項目的管理提供了很好的保證。

[1] Grubb P,Takang A A.軟件維護:概念與實踐[M].韓 柯,孟海軍,譯.第2版.北京:電子工業出版社,2004.

[2] 姜 文,劉立康.現代應用軟件的維護與技術支持[J].計算機技術與發展,2015,25(4):116-120.

[3] 姜 文,劉立康.應用軟件維護中的補丁開發與管理[J].計算機技術與發展,2015,25(11):11-16.

[4] 程友清.嵌入式網絡設備軟件熱補丁技術研究[J].微電子學與計算機,2013,30(1):28-31.

[5] 常莉莉.分布式系統熱補丁技術的研究與實現[D].廣州:中山大學,2006.

[6] 雷震宇.嵌入式網絡設備在線熱升級的研究及實現[D].武漢:武漢郵電科學研究院,2012.

[7]RiverW.Vxworks程序員指南[M].北京:清華大學出版社,2003.

[8] 陳智育,溫彥軍,陳 琪.Vxworks程序開發實踐[M].北京:人民郵電出版社,2004.

[9]MehdiG.Contributorstoqualityduringsoftwaremaintenance[J].DecisionSupportSystems,1998,23(4):361-369.

[10]HauptmannS,WaselJ.On-linemaintenancewithon-the-flysoftwarereplacement[C]//Internationalconferenceonconfigurabledistributedsystems.[s.l.]:IEEEComputerSociety,1996:70-80.

[11] 姜 文,劉立康.Oracle數據庫補丁問題研究[J].電子設計工程,2014,22(20):10-13.

[12]ShahR.Oracleondemandbestpractices:criticalpatchupdate[R].[s.l.]:OracleCorporation,2008.

[13] 姜 文,劉立康.基于VxWorks平臺的軟件重量級靜態檢查[J].微型機與應用,2016,35(6):79-81.

[14] 蔡建平.嵌入式軟件測試實用技術[M].北京:清華大學出版社,2010.

[15]MichalikB,WeynsD,BouckeN,etal.Supportingonlineupdatesofsoftwareproductlines:acontrolledexperiment[C]//2011internationalsymposiumonempiricalsoftwareengineeringandmeasurement.WashingtonDC:IEEEComputerSociety,2011:187-196.

[16]ChenXuhui,ZhangDengyi,YangHongyun.Researchonkeytechnologiesofon-lineprogramminginembeddedsystem[C]//2009thirdinternationalsymposiumonintelligentinformationtechnologyapplication.WashingtonDC:IEEEComputerSociety,2009:45-47.

Research on Hot Patch Technology Based on VXWORKS

JIANG Wen,LIU Li-kang

(School of Telecommunication Engineering,Xidian University,Xi’an 710071,China)

After the software is delivered to customers,all kinds of problems and defects are needed to be solved during the use of software.The software developed by the VXWORKS operating system is usually used the hot-patch technology,which can solve the software errors with the system operated normally.In order to solve kinds of questions and defects,the technique of hot patch is needed to be researched deeply.With the practice of the work,the characteristics of VXWORKS operating system and the types of files during the process of hot patch making are described.With ClearCase as the configuration management tool and ICP-CI as the continuous integration tool to produce hot patches,the process of software hot patches based on the VXWORKS operating system is described in detail,including writing and static checking the code of hot patch,making the hot patch files for modules,packing the hot patches,and testing and releasing the version package of hot patches.Finally,a typical work case is introduced.Practice shows that the technique of hot patch has the advantages of real-time repair,and will not affect the normal operation of the embedded system,improving system reliability,reducing the cost of software development.

embedded operating system;hot patch;continuous integration;static check

2016-04-17

2016-08-11

時間:2017-02-17

國家部委基礎科研計劃:國防預研基金項目(A1120110007)

姜 文(1986-),女,碩士研究生,工程師,CCF會員,研究方向為圖像處理、數據庫應用和軟件工程等;劉立康,副教授,研究方向為數字通信、圖像處理、嵌入式應用技術等。

http://www.cnki.net/kcms/detail/61.1450.TP.20170217.1628.022.html

TP311.53

A

1673-629X(2017)03-0018-05

10.3969/j.issn.1673-629X.2017.03.004

主站蜘蛛池模板: 欧美自慰一级看片免费| 久久国产精品无码hdav| 人妻精品久久无码区| 日本高清在线看免费观看| a级毛片一区二区免费视频| 呦女亚洲一区精品| 麻豆AV网站免费进入| 青青青国产视频手机| 制服无码网站| 国产精欧美一区二区三区| 成人精品午夜福利在线播放| 日韩二区三区无| 国产欧美日韩一区二区视频在线| 亚洲精品无码抽插日韩| 国产高清又黄又嫩的免费视频网站| 在线国产91| 欧美精品伊人久久| 国产又黄又硬又粗| 国产91无码福利在线| 在线观看视频一区二区| 无码精油按摩潮喷在线播放 | 亚洲欧洲日韩久久狠狠爱 | 一级黄色欧美| 国产亚洲欧美另类一区二区| 67194在线午夜亚洲| 亚洲第一视频网站| 99re视频在线| 天天躁狠狠躁| 手机在线国产精品| 青青草a国产免费观看| 色妞永久免费视频| 国产主播一区二区三区| 福利视频久久| 国产精品香蕉在线| 婷婷开心中文字幕| 日韩免费视频播播| 国产精品无码制服丝袜| 黄色网站不卡无码| 免费不卡视频| 成人亚洲国产| 一级毛片网| 国内精品小视频在线| 国产欧美日韩另类| 一级毛片高清| 成人一级免费视频| 中文字幕丝袜一区二区| 欧美国产日韩另类| 成人亚洲国产| 欧美精品影院| 4虎影视国产在线观看精品| 一级爱做片免费观看久久| 自慰网址在线观看| 夜精品a一区二区三区| 国产专区综合另类日韩一区 | 亚洲伊人电影| 亚洲人成网7777777国产| 91精品啪在线观看国产91| 最新痴汉在线无码AV| 国产女人喷水视频| 蜜桃臀无码内射一区二区三区| 亚洲网综合| 国产免费久久精品99re不卡| 中文字幕亚洲专区第19页| 国产午夜人做人免费视频中文| 亚洲一区无码在线| 1024你懂的国产精品| 亚洲成人一区在线| 国产在线小视频| 国产拍揄自揄精品视频网站| 国产一级妓女av网站| 中文天堂在线视频| 特级做a爰片毛片免费69| 天堂成人av| 精品国产电影久久九九| AV熟女乱| 亚洲精品自拍区在线观看| 五月婷婷精品| 亚洲乱码精品久久久久..| 九九视频免费在线观看| 亚洲精品国偷自产在线91正片| 成人午夜网址| 欧美区国产区|