两个人的电影免费视频_国产精品久久久久久久久成人_97视频在线观看播放_久久这里只有精品777_亚洲熟女少妇二三区_4438x8成人网亚洲av_内谢国产内射夫妻免费视频_人妻精品久久久久中国字幕

基于elf的監(jiān)控系統(tǒng)版本識別方法

文檔序號:6377833閱讀:298來源:國知局

專利名稱::基于elf的監(jiān)控系統(tǒng)版本識別方法
技術(shù)領(lǐng)域
:本發(fā)明屬于計算機(jī)技術(shù)與電力系統(tǒng)自動化技術(shù)的綜合領(lǐng)域,涉及一種監(jiān)控系統(tǒng)版本識別方法。
背景技術(shù)
:由于監(jiān)控系統(tǒng)所依賴的操作系統(tǒng)及計算機(jī)硬件的不同,依賴數(shù)據(jù)庫及通信規(guī)約的更新,導(dǎo)致監(jiān)控系統(tǒng)的版本越來越多;由于地域及用戶要求的不同,導(dǎo)致同一版本的監(jiān)控系統(tǒng),其功能模塊都具有不同的版本。這導(dǎo)致現(xiàn)場運行監(jiān)控系統(tǒng)的程序升級和維護(hù)變得越來越復(fù)雜困難,對監(jiān)控系統(tǒng)的版本管理及現(xiàn)場版本的自動識別提出了迫切的要求。
發(fā)明內(nèi)容本發(fā)明的目的是提供一種基于ELF的監(jiān)控系統(tǒng)版本識別方法,以解決由于監(jiān)控系統(tǒng)版本難以識別而對現(xiàn)場運行監(jiān)控系統(tǒng)的程序升級和維護(hù)困難的問題。為實現(xiàn)上述目的,本發(fā)明的基于ELF的監(jiān)控系統(tǒng)版本識別方法的步驟如下(1)獲取監(jiān)控系統(tǒng)的模塊代碼,根據(jù)本地各個模塊的代碼路徑,創(chuàng)建包含模塊名稱、SVN版本號信息的模塊信息數(shù)據(jù)庫;(2)對獲取的模塊代碼進(jìn)行編譯鏈接生成目標(biāo)文件,根據(jù)目標(biāo)文件的路徑、名稱信息,直接從模塊信息數(shù)據(jù)庫中獲取各模塊的SVN版本號,基于ELF標(biāo)準(zhǔn)格式將版本數(shù)字標(biāo)識寫入到目標(biāo)文件中,并創(chuàng)建版本信息數(shù)據(jù)庫,將系統(tǒng)中所有模塊的版本標(biāo)識數(shù)據(jù)寫入其中;·(3)調(diào)取各個模塊版本數(shù)字標(biāo)識,顯示所有模塊當(dāng)前版本號,并與版本信息數(shù)據(jù)庫中相應(yīng)模塊的版本號比對,清晰顯示現(xiàn)場監(jiān)控系統(tǒng)的版本升級記錄信息。進(jìn)一步的,所述步驟(I)是從SVN版本管理系統(tǒng)服務(wù)器獲取監(jiān)控系統(tǒng)的模塊代碼到本地。進(jìn)一步的,所述步驟(I)中版本信息數(shù)據(jù)庫支持模塊名稱、版本號信息的在線修改。進(jìn)一步的,所述步驟(2)中版本數(shù)字標(biāo)識植入到目標(biāo)文件中是基于ELF,是將SVN版本號嵌入在ELF的e_ident數(shù)組的后9個字節(jié)的填充字段。進(jìn)一步的,所述步驟(3)中若某模塊需要功能擴(kuò)展,可根據(jù)此模塊目標(biāo)文件中的版本號,修改SVN中相應(yīng)版本號的源代碼。本發(fā)明的基于ELF的監(jiān)控系統(tǒng)版本識別方法,能識別現(xiàn)場運行監(jiān)控系統(tǒng)的版本,根據(jù)監(jiān)控系統(tǒng)版本信息數(shù)據(jù)庫和目標(biāo)文件中的版本數(shù)字標(biāo)識形成對比,清晰顯示現(xiàn)場升級記錄,以支撐現(xiàn)場監(jiān)控系統(tǒng)的升級和維護(hù),圓滿的解決現(xiàn)場升級或維護(hù)系統(tǒng)的兼容性問題。圖I是ELF文件格式;圖2是實施例的流程圖;圖3是實施例的生成版本信息數(shù)據(jù)庫圖4是實施例的寫入目標(biāo)文件版本信息示意圖5是實施例的生成比對報告頁面示意圖。具體實施例方式基于ELF的監(jiān)控系統(tǒng)版本識別方法采用一個關(guān)鍵技術(shù),實現(xiàn)三個主要功能。(—)、一個關(guān)鍵技術(shù)基于ELF格式的模塊版本“數(shù)字標(biāo)識”的創(chuàng)建ELF文件格式(ExecutableandLinkableFormat),是UNIX類操作系統(tǒng)中普遍采用的目標(biāo)文件格式。目標(biāo)文件格式有三種類型可重定位文件(RelocatableFile);可執(zhí)行文件(ExecutableFile);共享目標(biāo)文件(SharedObjectFile)。目標(biāo)文件都是程序的二進(jìn)制表示,目的是在某種處理器上直接執(zhí)行。·ELF文件格式見圖I所示。ELF文件開始處是一個ELF頭部(ELFHeader),用來描述整個文件的組織,ELFHeader數(shù)據(jù)結(jié)構(gòu)如下#defineEI_NIDENT16typedefstruct{unsignedchare_ident[EI_NIDENT];//目標(biāo)文件標(biāo)識Elf32_Halfe_type;//目標(biāo)文件類型Elf32_Halfe_machine;//目標(biāo)文件體系結(jié)構(gòu)類型Elf32_fforde_version;//目標(biāo)文件版本(取值0,I)Elf32_Addre_entry;//程序入口虛擬地址Elf32_0ffe_phoff;//程序頭部表格偏移量Elf32_0ffe_shoff;//節(jié)區(qū)頭部表格偏移量Elf32_fforde_flags;//與文件相關(guān)處理器標(biāo)識Elf32_Halfe_ehsize;//ELF頭部大小Elf32_Halfe_phentsize;//程序頭部表格表項大小Elf32_Halfe_phnum;//程序頭部表格表項數(shù)目Elf32_Halfe_shentsize;//節(jié)區(qū)頭部表格表項大小Elf32_Halfe_shnum;//節(jié)區(qū)頭部表格表項數(shù)目Elf32_Halfe_shstrndx;//}Elf32_Ehdr;其中e_ident數(shù)組給出了ELF的一些標(biāo)識信息,數(shù)組前7個字節(jié)已占用,用作文件標(biāo)識(ELF標(biāo)識)、文件類型、數(shù)據(jù)編碼方式、文件版本。后9個字節(jié)為填充(paddingbyte)字段,沒有明確作用,初始化為O。經(jīng)驗證,修改這9個字節(jié)的填充字段,沒有對目標(biāo)程序的運行或加載造成影響,所以可把SVN版本號嵌入在目標(biāo)文件的該字節(jié)位置,用來作為模塊版本的“數(shù)字標(biāo)識”信息。(二)、三個主要功能功能一創(chuàng)建監(jiān)控系統(tǒng)版本信息數(shù)據(jù)庫從SVN版本管理系統(tǒng)服務(wù)器獲取監(jiān)控系統(tǒng)的模塊代碼到本地,根據(jù)本地各個模塊的代碼路徑,自動創(chuàng)建包含模塊名稱、SVN版本號等信息的模塊信息數(shù)據(jù)庫文件,實現(xiàn)SVN版本號與系統(tǒng)版本信息數(shù)據(jù)庫的綁定,并且支持模塊名稱、版本號等信息的在線修改。SVN版本管理系統(tǒng)服務(wù)器是一種版本控制系統(tǒng),支持可在本地訪問或通過網(wǎng)絡(luò)訪問的文件系統(tǒng)存儲庫,提供文件的比較、修補、標(biāo)記、提交、回溯、分支等功能。功能二創(chuàng)建各模塊版本“數(shù)字標(biāo)識”對獲取的模塊代碼進(jìn)行編譯鏈接生成目標(biāo)文件,根據(jù)目標(biāo)文件的路徑、名稱信息,直接從模塊信息數(shù)據(jù)庫中獲取各模塊的SVN版本號,基于ELF標(biāo)準(zhǔn)格式將版本數(shù)字標(biāo)識寫入到目標(biāo)文件中,并創(chuàng)建版本信息數(shù)據(jù)庫,將系統(tǒng)中所有模塊的版本標(biāo)識數(shù)據(jù)寫入其中(即版本信息數(shù)據(jù)庫記錄了本次集成的所有模塊版本標(biāo)識數(shù)據(jù)),植入版本“數(shù)字標(biāo)識”到目標(biāo)文件中。植入版本“數(shù)字標(biāo)識”的目標(biāo)文件符合ELF(Unix)文件信息標(biāo)準(zhǔn),標(biāo)識植入不涉及源代碼,并作為管理工具版本自動匹配檢測唯一標(biāo)識。功能三比對數(shù)據(jù)庫版本信息與模塊版本信息,生成版本比對報告調(diào)取各個模塊版本“數(shù)字標(biāo)識”,顯示所有模塊當(dāng)前版本號,并與版本信息數(shù)據(jù)庫中相應(yīng)模塊的版本號比對,清晰顯示現(xiàn)場監(jiān)控系統(tǒng)的升級記錄信息。若某模塊需要功能擴(kuò)展,可根據(jù)此模塊目標(biāo)文件中的版本號,修改SVN中相應(yīng)版本號的源代碼,完成此變電站功能需求的同時,不影響其他變電站監(jiān)控系統(tǒng)的模塊版本。以一個具體實例來說明監(jiān)控系統(tǒng)版本識別方法,流程如圖2所示。步驟一測試或發(fā)布人員,在從SVN后檢出代碼后,設(shè)置模塊路徑(設(shè)置根目錄,模塊路徑為相對路徑,設(shè)置一次即可),點擊讀取版本號,可生成相應(yīng)模塊的版本號。點擊保存生成版本數(shù)據(jù)庫。支持名稱和版本號在線修改,參見圖3。步驟二編譯鏈接完成,并檢查目標(biāo)文件已正確生成后,設(shè)置目標(biāo)文件路徑(相對路徑),點擊確認(rèn)向目標(biāo)文件寫入SVN版本號,參見圖4。步驟三對現(xiàn)場運行人員僅提供版本庫瀏覽及調(diào)取對比界面,點擊調(diào)取比對后,形成版本對比報告,參見圖5。權(quán)利要求1.一種基于ELF的監(jiān)控系統(tǒng)版本識別方法,其特征在于,該方法的步驟如下(1)獲取監(jiān)控系統(tǒng)的模塊代碼,根據(jù)本地各個模塊的代碼路徑,創(chuàng)建包含模塊名稱、SVN版本號信息的模塊信息數(shù)據(jù)庫;(2)對獲取的模塊代碼進(jìn)行編譯鏈接生成目標(biāo)文件,根據(jù)目標(biāo)文件的路徑、名稱信息,直接從模塊信息數(shù)據(jù)庫中獲取各模塊的SVN版本號,基于ELF標(biāo)準(zhǔn)格式將版本數(shù)字標(biāo)識寫入到目標(biāo)文件中,并創(chuàng)建版本信息數(shù)據(jù)庫,將系統(tǒng)中所有模塊的版本標(biāo)識數(shù)據(jù)寫入其中;(3)調(diào)取各個模塊版本數(shù)字標(biāo)識,顯示所有模塊當(dāng)前版本號,并與版本信息數(shù)據(jù)庫中相應(yīng)模塊的版本號比對,清晰顯示現(xiàn)場監(jiān)控系統(tǒng)的版本升級記錄信息。2.根據(jù)權(quán)利要求I所述的方法,其特征在于,所述步驟(I)是從SVN版本管理系統(tǒng)服務(wù)器獲取監(jiān)控系統(tǒng)的模塊代碼到本地。3.根據(jù)權(quán)利要求I所述的方法,其特征在于所述步驟(I)中版本信息數(shù)據(jù)庫支持模塊名稱、版本號信息的在線修改。4.根據(jù)權(quán)利要求I所述的方法,其特征在于所述步驟(2)中版本數(shù)字標(biāo)識植入到目標(biāo)文件中是基于ELF,是將SVN版本號嵌入在ELF的e_ident數(shù)組的后9個字節(jié)的填充字段。5.根據(jù)權(quán)利要求1-4中任一項所述的方法,其特征在于所述步驟(3)中若某模塊需要功能擴(kuò)展,可根據(jù)此模塊目標(biāo)文件中的版本號,修改SVN中相應(yīng)版本號的源代碼。全文摘要本發(fā)明涉及基于ELF的監(jiān)控系統(tǒng)版本識別方法,獲取監(jiān)控系統(tǒng)的模塊代碼,根據(jù)本地各個模塊的代碼路徑,創(chuàng)建包含模塊名稱、SVN版本號信息的版本信息數(shù)據(jù)庫;各模塊編譯完成,生成目標(biāo)文件后,根據(jù)目標(biāo)文件的路徑、名稱信息或直接從版本信息數(shù)據(jù)庫中獲取,基于ELF植入版本數(shù)字標(biāo)識到目標(biāo)文件中;調(diào)取各個模塊版本數(shù)字標(biāo)識,顯示所有模塊當(dāng)前版本號,并與數(shù)據(jù)庫中相應(yīng)模塊的版本號比對,清晰顯示現(xiàn)場監(jiān)控系統(tǒng)的版本升級記錄信息;本方法能識別現(xiàn)場運行監(jiān)控系統(tǒng)的版本,根據(jù)監(jiān)控系統(tǒng)版本信息數(shù)據(jù)庫和目標(biāo)文件中的版本數(shù)字標(biāo)識形成對比,清晰顯示現(xiàn)場升級記錄,以支撐現(xiàn)場監(jiān)控系統(tǒng)的升級和維護(hù),圓滿的解決現(xiàn)場升級或維護(hù)系統(tǒng)的兼容性問題。文檔編號G06F9/44GK102929600SQ201210364918公開日2013年2月13日申請日期2012年9月26日優(yōu)先權(quán)日2012年6月13日發(fā)明者邱俊宏,李貞,王廣民,衛(wèi)星,郭利軍,王志偉,郭亮申請人:許繼集團(tuán)有限公司,許繼電氣股份有限公司,許昌許繼軟件技術(shù)有限公司,山東電力集團(tuán)公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
临沭县| 无极县| 平果县| 岐山县| 新野县| 济南市| 枞阳县| 浦县| 闽侯县| 贡嘎县| 玉山县| 朝阳市| 藁城市| 岳池县| 枣庄市| 宜宾县| 琼结县| 托克逊县| 南木林县| 唐海县| 班玛县| 湖州市| 威海市| 无棣县| 桦甸市| 建宁县| 台北县| 虎林市| 宜宾市| 阳信县| 长岭县| 阳新县| 德阳市| 河南省| 鄂托克前旗| 临安市| 文昌市| 土默特右旗| 乳山市| 阜阳市| 北辰区|