《基于ELF的监控系统版本识别方法.pdf》由会员分享,可在线阅读,更多相关《基于ELF的监控系统版本识别方法.pdf(9页珍藏版)》请在专利查询网上搜索。
1、(10)申请公布号 CN 102929600 A (43)申请公布日 2013.02.13 CN 102929600 A *CN102929600A* (21)申请号 201210364918.5 (22)申请日 2012.09.26 201210194152.0 2012.06.13 CN G06F 9/44(2006.01) (71)申请人 许继集团有限公司 地址 461000 河南省许昌市许继大道 1298 号 申请人 许继电气股份有限公司 许昌许继软件技术有限公司 山东电力集团公司 (72)发明人 邱俊宏 李贞 王广民 卫星 郭利军 王志伟 郭亮 (74)专利代理机构 郑州睿信知识产权。
2、代理有限 公司 41119 代理人 胡泳棋 (54) 发明名称 基于 ELF 的监控系统版本识别方法 (57) 摘要 本发明涉及基于 ELF 的监控系统版本识别方 法, 获取监控系统的模块代码, 根据本地各个模块 的代码路径, 创建包含模块名称、 SVN 版本号信息 的版本信息数据库 ; 各模块编译完成, 生成目标 文件后, 根据目标文件的路径、 名称信息或直接 从版本信息数据库中获取, 基于 ELF 植入版本数 字标识到目标文件中 ; 调取各个模块版本数字标 识, 显示所有模块当前版本号, 并与数据库中相应 模块的版本号比对, 清晰显示现场监控系统的版 本升级记录信息 ; 本方法能识别现场运。
3、行监控系 统的版本, 根据监控系统版本信息数据库和目标 文件中的版本数字标识形成对比, 清晰显示现场 升级记录, 以支撑现场监控系统的升级和维护, 圆 满的解决现场升级或维护系统的兼容性问题。 (66)本国优先权数据 (51)Int.Cl. 权利要求书 1 页 说明书 3 页 附图 4 页 (19)中华人民共和国国家知识产权局 (12)发明专利申请 权利要求书 1 页 说明书 3 页 附图 4 页 1/1 页 2 1. 一种基于 ELF 的监控系统版本识别方法, 其特征在于, 该方法的步骤如下 : (1) 获取监控系统的模块代码, 根据本地各个模块的代码路径, 创建包含模块名称、 SVN 版本。
4、号信息的模块信息数据库 ; (2) 对获取的模块代码进行编译链接生成目标文件, 根据目标文件的路径、 名称信息, 直接从模块信息数据库中获取各模块的 SVN 版本号, 基于 ELF 标准格式将版本数字标识写 入到目标文件中, 并创建版本信息数据库, 将系统中所有模块的版本标识数据写入其中 ; (3) 调取各个模块版本数字标识, 显示所有模块当前版本号, 并与版本信息数据库中相 应模块的版本号比对, 清晰显示现场监控系统的版本升级记录信息。 2. 根据权利要求 1 所述的方法, 其特征在于, 所述步骤 (1) 是从 SVN 版本管理系统服 务器获取监控系统的模块代码到本地。 3. 根据权利要求 。
5、1 所述的方法, 其特征在于 : 所述步骤 (1) 中版本信息数据库支持模 块名称、 版本号信息的在线修改。 4. 根据权利要求 1 所述的方法, 其特征在于 : 所述步骤 (2) 中版本数字标识植入到目 标文件中是基于 ELF, 是将 SVN 版本号嵌入在 ELF 的 e_ident 数组的后 9 个字节的填充字 段。 5. 根据权利要求 1-4 中任一项所述的方法, 其特征在于 : 所述步骤 (3) 中若某模块需 要功能扩展, 可根据此模块目标文件中的版本号, 修改 SVN 中相应版本号的源代码。 权 利 要 求 书 CN 102929600 A 2 1/3 页 3 基于 ELF 的监控系。
6、统版本识别方法 技术领域 0001 本发明属于计算机技术与电力系统自动化技术的综合领域, 涉及一种监控系统版 本识别方法。 背景技术 0002 由于监控系统所依赖的操作系统及计算机硬件的不同, 依赖数据库及通信规约的 更新, 导致监控系统的版本越来越多 ; 由于地域及用户要求的不同, 导致同一版本的监控系 统, 其功能模块都具有不同的版本。这导致现场运行监控系统的程序升级和维护变得越来 越复杂困难, 对监控系统的版本管理及现场版本的自动识别提出了迫切的要求。 发明内容 0003 本发明的目的是提供一种基于 ELF 的监控系统版本识别方法, 以解决由于监控系 统版本难以识别而对现场运行监控系统的。
7、程序升级和维护困难的问题。 0004 为实现上述目的, 本发明的基于 ELF 的监控系统版本识别方法的步骤如下 : (1) 获取监控系统的模块代码, 根据本地各个模块的代码路径, 创建包含模块名称、 SVN 版本号信息的模块信息数据库 ; (2) 对获取的模块代码进行编译链接生成目标文件, 根据目标文件的路径、 名称信息, 直接从模块信息数据库中获取各模块的 SVN 版本号, 基于 ELF 标准格式将版本数字标识写 入到目标文件中, 并创建版本信息数据库, 将系统中所有模块的版本标识数据写入其中 ; (3) 调取各个模块版本数字标识, 显示所有模块当前版本号, 并与版本信息数据库中相 应模块的。
8、版本号比对, 清晰显示现场监控系统的版本升级记录信息。 0005 进一步的, 所述步骤 (1) 是从 SVN 版本管理系统服务器获取监控系统的模块代码 到本地。 0006 进一步的, 所述步骤 (1) 中版本信息数据库支持模块名称、 版本号信息的在线修 改。 0007 进一步的, 所述步骤 (2) 中版本数字标识植入到目标文件中是基于 ELF, 是将 SVN 版本号嵌入在 ELF 的 e_ident 数组的后 9 个字节的填充字段。 0008 进一步的, 所述步骤 (3) 中若某模块需要功能扩展, 可根据此模块目标文件中的版 本号, 修改 SVN 中相应版本号的源代码。 0009 本发明的基于。
9、 ELF 的监控系统版本识别方法, 能识别现场运行监控系统的版本, 根据监控系统版本信息数据库和目标文件中的版本数字标识形成对比, 清晰显示现场升级 记录, 以支撑现场监控系统的升级和维护, 圆满的解决现场升级或维护系统的兼容性问题。 附图说明 0010 图 1 是 ELF 文件格式 ; 图 2 是实施例的流程图 ; 说 明 书 CN 102929600 A 3 2/3 页 4 图 3 是实施例的生成版本信息数据库图 ; 图 4 是实施例的写入目标文件版本信息示意图 ; 图 5 是实施例的生成比对报告页面示意图。 具体实施方式 0011 基于 ELF 的监控系统版本识别方法采用一个关键技术, 。
10、实现三个主要功能。 0012 (一) 、 一个关键技术 : 基于 ELF 格式的模块版本 “数字标识” 的创建 ELF 文件格式 (Executable and Linkable Format) , 是 UNIX 类操作系统中普遍采用的目标文件格式。 目标文件格式有三种类型 : 可重定位文件 (Relocatable File) ; 可执行文件 (Executable File) ; 共享目标文件 (Shared Object File)。目标文件都是程序的二进制表示, 目的是在 某种处理器上直接执行。 0013 ELF 文件格式见图 1 所示。 0014 ELF 文件开始处是一个 ELF 头。
11、部 (ELF Header), 用来描述整个文件的组织, ELFHeader 数据结构如下 : #define EI_NIDENT 16 typedef struct unsigned char e_identEI_NIDENT;/ 目标文件标识 Elf32_Half e_type;/ 目标文件类型 Elf32_Half e_machine;/ 目标文件体系结构类型 Elf32_Word e_version;/ 目标文件版本 (取值 0,1) Elf32_Addr e_entry;/ 程序入口虚拟地址 Elf32_Off e_phoff ; / 程序头部表格偏移量 Elf32_Off e_sh。
12、off ; / 节区头部表格偏移量 Elf32_Word e_flags;/ 与文件相关处理器标识 Elf32_Half e_ehsize;/ELF 头部大小 Elf32_Half e_phentsize;/ 程序头部表格表项大小 Elf32_Half e _phnum;/ 程序头部表格表项数目 Elf32_Half e_shentsize;/ 节区头部表格表项大小 Elf32_Half e_shnum;/ 节区头部表格表项数目 Elf32_Half e_shstrndx;/Elf32_Ehdr; 其中 e_ident 数组给出了 ELF 的一些标识信息, 数组前 7 个字节已占用, 用作文件。
13、标识 (ELF 标识) 、 文件类型、 数据编码方式、 文件版本。后 9 个字节为填充 (padding byte) 字段, 没有明确作用, 初始化为0。 经验证, 修改这9个字节的填充字段, 没有对目标程序的运行或 加载造成影响, 所以可把 SVN 版本号嵌入在目标文件的该字节位置, 用来作为模块版本的 “数字标识” 信息。 0015 (二) 、 三个主要功能 功能一 : 创建监控系统版本信息数据库 从 SVN 版本管理系统服务器获取监控系统的模块代码到本地, 根据本地各个模块的代 码路径, 自动创建包含模块名称、 SVN 版本号等信息的模块信息数据库文件, 实现 SVN 版本 说 明 书 。
14、CN 102929600 A 4 3/3 页 5 号与系统版本信息数据库的绑定, 并且支持模块名称、 版本号等信息的在线修改。SVN 版本 管理系统服务器是一种版本控制系统, 支持可在本地访问或通过网络访问的文件系统存储 库, 提供文件的比较、 修补、 标记、 提交、 回溯、 分支等功能。 0016 功能二 : 创建各模块版本 “数字标识” 对获取的模块代码进行编译链接生成目标文件, 根据目标文件的路径、 名称信息, 直接 从模块信息数据库中获取各模块的 SVN 版本号, 基于 ELF 标准格式将版本数字标识写入到 目标文件中, 并创建版本信息数据库, 将系统中所有模块的版本标识数据写入其中 。
15、(即版本 信息数据库记录了本次集成的所有模块版本标识数据) , 植入版本 “数字标识” 到目标文件 中。植入版本 “数字标识” 的目标文件符合 ELF(Unix) 文件信息标准, 标识植入不涉及源代 码, 并作为管理工具版本自动匹配检测唯一标识。 0017 功能三 : 比对数据库版本信息与模块版本信息, 生成版本比对报告调取各个模块 版本 “数字标识” , 显示所有模块当前版本号, 并与版本信息数据库中相应模块的版本号比 对, 清晰显示现场监控系统的升级记录信息。 若某模块需要功能扩展, 可根据此模块目标文 件中的版本号, 修改 SVN 中相应版本号的源代码, 完成此变电站功能需求的同时, 不。
16、影响其 他变电站监控系统的模块版本。 0018 以一个具体实例来说明监控系统版本识别方法, 流程如图 2 所示。 0019 步骤一 : 测试或发布人员, 在从 SVN 后检出代码后, 设置模块路径 (设置根目录, 模块路径为相 对路径, 设置一次即可) , 点击读取版本号, 可生成相应模块的版本号。点击保存生成版本数 据库。支持名称和版本号在线修改, 参见图 3。 0020 步骤二 : 编译链接完成, 并检查目标文件已正确生成后, 设置目标文件路径 (相对路径) , 点击确 认向目标文件写入 SVN 版本号, 参见图 4。 0021 步骤三 : 对现场运行人员仅提供版本库浏览及调取对比界面, 点击调取比对后, 形成版本对比 报告, 参见图 5。 说 明 书 CN 102929600 A 5 1/4 页 6 图 1 说 明 书 附 图 CN 102929600 A 6 2/4 页 7 图 2 说 明 书 附 图 CN 102929600 A 7 3/4 页 8 图 3 图 4 说 明 书 附 图 CN 102929600 A 8 4/4 页 9 图 5 说 明 书 附 图 CN 102929600 A 9 。