基于elf的监控系统版本识别方法

文档序号:6377833阅读:271来源:国知局

专利名称::基于elf的监控系统版本识别方法
技术领域
:本发明属于计算机技术与电力系统自动化技术的综合领域,涉及一种监控系统版本识别方法。
背景技术
:由于监控系统所依赖的操作系统及计算机硬件的不同,依赖数据库及通信规约的更新,导致监控系统的版本越来越多;由于地域及用户要求的不同,导致同一版本的监控系统,其功能模块都具有不同的版本。这导致现场运行监控系统的程序升级和维护变得越来越复杂困难,对监控系统的版本管理及现场版本的自动识别提出了迫切的要求。
发明内容本发明的目的是提供一种基于ELF的监控系统版本识别方法,以解决由于监控系统版本难以识别而对现场运行监控系统的程序升级和维护困难的问题。为实现上述目的,本发明的基于ELF的监控系统版本识别方法的步骤如下(1)获取监控系统的模块代码,根据本地各个模块的代码路径,创建包含模块名称、SVN版本号信息的模块信息数据库;(2)对获取的模块代码进行编译链接生成目标文件,根据目标文件的路径、名称信息,直接从模块信息数据库中获取各模块的SVN版本号,基于ELF标准格式将版本数字标识写入到目标文件中,并创建版本信息数据库,将系统中所有模块的版本标识数据写入其中;·(3)调取各个模块版本数字标识,显示所有模块当前版本号,并与版本信息数据库中相应模块的版本号比对,清晰显示现场监控系统的版本升级记录信息。进一步的,所述步骤(I)是从SVN版本管理系统服务器获取监控系统的模块代码到本地。进一步的,所述步骤(I)中版本信息数据库支持模块名称、版本号信息的在线修改。进一步的,所述步骤(2)中版本数字标识植入到目标文件中是基于ELF,是将SVN版本号嵌入在ELF的e_ident数组的后9个字节的填充字段。进一步的,所述步骤(3)中若某模块需要功能扩展,可根据此模块目标文件中的版本号,修改SVN中相应版本号的源代码。本发明的基于ELF的监控系统版本识别方法,能识别现场运行监控系统的版本,根据监控系统版本信息数据库和目标文件中的版本数字标识形成对比,清晰显示现场升级记录,以支撑现场监控系统的升级和维护,圆满的解决现场升级或维护系统的兼容性问题。图I是ELF文件格式;图2是实施例的流程图;图3是实施例的生成版本信息数据库图4是实施例的写入目标文件版本信息示意图5是实施例的生成比对报告页面示意图。具体实施例方式基于ELF的监控系统版本识别方法采用一个关键技术,实现三个主要功能。(—)、一个关键技术基于ELF格式的模块版本“数字标识”的创建ELF文件格式(ExecutableandLinkableFormat),是UNIX类操作系统中普遍采用的目标文件格式。目标文件格式有三种类型可重定位文件(RelocatableFile);可执行文件(ExecutableFile);共享目标文件(SharedObjectFile)。目标文件都是程序的二进制表示,目的是在某种处理器上直接执行。·ELF文件格式见图I所示。ELF文件开始处是一个ELF头部(ELFHeader),用来描述整个文件的组织,ELFHeader数据结构如下#defineEI_NIDENT16typedefstruct{unsignedchare_ident[EI_NIDENT];//目标文件标识Elf32_Halfe_type;//目标文件类型Elf32_Halfe_machine;//目标文件体系结构类型Elf32_fforde_version;//目标文件版本(取值0,I)Elf32_Addre_entry;//程序入口虚拟地址Elf32_0ffe_phoff;//程序头部表格偏移量Elf32_0ffe_shoff;//节区头部表格偏移量Elf32_fforde_flags;//与文件相关处理器标识Elf32_Halfe_ehsize;//ELF头部大小Elf32_Halfe_phentsize;//程序头部表格表项大小Elf32_Halfe_phnum;//程序头部表格表项数目Elf32_Halfe_shentsize;//节区头部表格表项大小Elf32_Halfe_shnum;//节区头部表格表项数目Elf32_Halfe_shstrndx;//}Elf32_Ehdr;其中e_ident数组给出了ELF的一些标识信息,数组前7个字节已占用,用作文件标识(ELF标识)、文件类型、数据编码方式、文件版本。后9个字节为填充(paddingbyte)字段,没有明确作用,初始化为O。经验证,修改这9个字节的填充字段,没有对目标程序的运行或加载造成影响,所以可把SVN版本号嵌入在目标文件的该字节位置,用来作为模块版本的“数字标识”信息。(二)、三个主要功能功能一创建监控系统版本信息数据库从SVN版本管理系统服务器获取监控系统的模块代码到本地,根据本地各个模块的代码路径,自动创建包含模块名称、SVN版本号等信息的模块信息数据库文件,实现SVN版本号与系统版本信息数据库的绑定,并且支持模块名称、版本号等信息的在线修改。SVN版本管理系统服务器是一种版本控制系统,支持可在本地访问或通过网络访问的文件系统存储库,提供文件的比较、修补、标记、提交、回溯、分支等功能。功能二创建各模块版本“数字标识”对获取的模块代码进行编译链接生成目标文件,根据目标文件的路径、名称信息,直接从模块信息数据库中获取各模块的SVN版本号,基于ELF标准格式将版本数字标识写入到目标文件中,并创建版本信息数据库,将系统中所有模块的版本标识数据写入其中(即版本信息数据库记录了本次集成的所有模块版本标识数据),植入版本“数字标识”到目标文件中。植入版本“数字标识”的目标文件符合ELF(Unix)文件信息标准,标识植入不涉及源代码,并作为管理工具版本自动匹配检测唯一标识。功能三比对数据库版本信息与模块版本信息,生成版本比对报告调取各个模块版本“数字标识”,显示所有模块当前版本号,并与版本信息数据库中相应模块的版本号比对,清晰显示现场监控系统的升级记录信息。若某模块需要功能扩展,可根据此模块目标文件中的版本号,修改SVN中相应版本号的源代码,完成此变电站功能需求的同时,不影响其他变电站监控系统的模块版本。以一个具体实例来说明监控系统版本识别方法,流程如图2所示。步骤一测试或发布人员,在从SVN后检出代码后,设置模块路径(设置根目录,模块路径为相对路径,设置一次即可),点击读取版本号,可生成相应模块的版本号。点击保存生成版本数据库。支持名称和版本号在线修改,参见图3。步骤二编译链接完成,并检查目标文件已正确生成后,设置目标文件路径(相对路径),点击确认向目标文件写入SVN版本号,参见图4。步骤三对现场运行人员仅提供版本库浏览及调取对比界面,点击调取比对后,形成版本对比报告,参见图5。权利要求1.一种基于ELF的监控系统版本识别方法,其特征在于,该方法的步骤如下(1)获取监控系统的模块代码,根据本地各个模块的代码路径,创建包含模块名称、SVN版本号信息的模块信息数据库;(2)对获取的模块代码进行编译链接生成目标文件,根据目标文件的路径、名称信息,直接从模块信息数据库中获取各模块的SVN版本号,基于ELF标准格式将版本数字标识写入到目标文件中,并创建版本信息数据库,将系统中所有模块的版本标识数据写入其中;(3)调取各个模块版本数字标识,显示所有模块当前版本号,并与版本信息数据库中相应模块的版本号比对,清晰显示现场监控系统的版本升级记录信息。2.根据权利要求I所述的方法,其特征在于,所述步骤(I)是从SVN版本管理系统服务器获取监控系统的模块代码到本地。3.根据权利要求I所述的方法,其特征在于所述步骤(I)中版本信息数据库支持模块名称、版本号信息的在线修改。4.根据权利要求I所述的方法,其特征在于所述步骤(2)中版本数字标识植入到目标文件中是基于ELF,是将SVN版本号嵌入在ELF的e_ident数组的后9个字节的填充字段。5.根据权利要求1-4中任一项所述的方法,其特征在于所述步骤(3)中若某模块需要功能扩展,可根据此模块目标文件中的版本号,修改SVN中相应版本号的源代码。全文摘要本发明涉及基于ELF的监控系统版本识别方法,获取监控系统的模块代码,根据本地各个模块的代码路径,创建包含模块名称、SVN版本号信息的版本信息数据库;各模块编译完成,生成目标文件后,根据目标文件的路径、名称信息或直接从版本信息数据库中获取,基于ELF植入版本数字标识到目标文件中;调取各个模块版本数字标识,显示所有模块当前版本号,并与数据库中相应模块的版本号比对,清晰显示现场监控系统的版本升级记录信息;本方法能识别现场运行监控系统的版本,根据监控系统版本信息数据库和目标文件中的版本数字标识形成对比,清晰显示现场升级记录,以支撑现场监控系统的升级和维护,圆满的解决现场升级或维护系统的兼容性问题。文档编号G06F9/44GK102929600SQ201210364918公开日2013年2月13日申请日期2012年9月26日优先权日2012年6月13日发明者邱俊宏,李贞,王广民,卫星,郭利军,王志伟,郭亮申请人:许继集团有限公司,许继电气股份有限公司,许昌许继软件技术有限公司,山东电力集团公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1