一种嵌入式系统中软件模块的动态升级方法技术方案

技术编号:17779423 阅读:26 留言:0更新日期:2018-04-22 07:47
在节点众多的嵌入式系统中,存在着安装\拆卸困难,要求节点具有可重新配置和自适应性,在需要的时候能够进行自主升级。因此,本发明专利技术提出一种在运行时嵌入式系统条件下,支持软件模块进行动态升级的方法。软件动态升级技术能够在不影响现有系统正常运行的情况下,将新模块加载到系统中,或对旧模块进行动态替换,提供系统运行时的更新服务,实现软件模块的平滑升级,并能保证系统长时间可靠运转。该技术解决了如何在目标系统中将软件模块链入到目标系统中的问题,以及实现了模块依赖管理技术。在软件模块的加/卸载过程中,保证了嵌入式系统的安全可靠运行。

【技术实现步骤摘要】
一种嵌入式系统中软件模块的动态升级方法
本专利技术属于嵌入式开发及维护领域,具体涉及一种软件的动态升级方法。
技术介绍
在具有复杂应用的嵌入是系统中,当某些软件模块开发完成后,需要该模块在嵌入式系统中运行,此时就需要用到加载技术。当前常用的加载技术有两种:一种是静态加载技术,一种是动态加载技术。其中,静态加载方式使用成熟的工具链,该工具链(比如:GNU)提供可靠完整的编译和链接工具,开发人员解决编译、链接中存在的问题,就可生成可重定位格式的目标文件。当需要加载时,主机端工具需要计算可重定位目标文件各段大小,向目标机端发送加载地址请求,根据回复的加载地址,对可重定位文件进行二次链接,进行地址重定位,得到最终目标文件。最后,将目标文件写入到目标机内存中,并运行程序。动态加载方式可以用于在软件开发过程中,以增量方式向目标机动态下载目标模块进行调试,从而加快开发的速度。目标机端配合主机端动作,将目标模块进行加载和运行。主机端的编译器生成的目标文件,这些目标文件没有实际的运行地址。先将目标文件加载到目标机机端的指定区域,当需要模块运行时,首先,在目标机端,要完成对目标文件的二次链接,才能将目标文件加载到内存中运行,但不记录模块间存在的相互依赖关系。这两种方式应用于软件动态升级中都存着缺陷,不能满足嵌入式系统中对于软件进行动态升级的要求。采用静态加载方式将软件模块加载到目标机端后,代码段和数据段的位置都不能改变。从设计上不满足操作系统动态升级的要求,模块的升级无法脱离开发环境的支持,在软件维护升级阶段意义不大。传统的动态加载方式,在需要卸载旧版本的软件模块,回收其所占用资源时,各模块间可能存在相互依赖关系,应当确保系统中没有其他模块依赖于待卸载模块。由于该方法没有进行模块依赖关系检查功能,在卸载的过程中,如果软件模块间存有依赖关系,则极有可能会出现软件系统出现紊乱,导致不可预料的后果,所以该方法常用于软件调试阶段,而不用于软件升级以及维护阶段。
技术实现思路
模块化的软件架构是实现操作系统动态升级的前提,所设计的系统应具有高度的模块化特征,每个模块完成特定的任务。模块的动态升级一般适用于应用程序或者组件等独立性较强、与操作系统核心功能无扇入的模块。内核不可裁剪部分组件只有在底层硬件或资源管理能力发生改变时才需要修改,因此内核不可裁剪部分组件不需要在线升级能力。动态升级是指通过一系列预定的动作将新模块加载到系统中,并适时对旧模块进行动态替换,最终实现系统平滑升级的过程。动态升级可以在系统运行过程中把下载到指定空间的独立模块链接到系统中,实现不停机的更新服务。其中,动态链接是动态升级的关键技术。目标机端通过动态链接技术,能够在实现目标模块在指定地址空间中的再定位。动态升级工具软件架构分为主机端和目标机端两部分,如图1所示。主机端升级工具由升级功能插件和升级图形插件两部分组成。升级图形插件和升级功能插件都是以插件的形式集成到Eclipse平台上,作为开发环境的一部分功能。包括如下几部分:1.升级图形插件面向用户,提供图形化的界面操作。2.升级功能插件用于控制宿主机端的整个升级流程,是主机端升级工具的逻辑控制单元。3.目标机管理负责发送主机端的信息到目标机端,信息包括主机端的命令和目标映像。目标机端通讯服务提供数据的收取和发送服务,当前可以提供网络或者串口的方式实现。通讯服务用于接受主机端发送过来的数据信息,包括,命令信息、数据信息等;同时,通讯服务将目标机端的信息反馈给主机端,包括应答信息、查询信息、状态信息等。目标机端分为管理服务和升级服务两部分。各部分功能如下:1.管理服务创建数据结构并保存模块信息;通过符号引用关系动态分析模块之间的依赖关系,维护模块依赖关系表,并将被加载模块信息及其依赖关系上报给升级服务;与操作系统层交互,实现管理服务功能。2.升级服务是整个动态升级模块的核心部分,与管理服务交互,执行主机端的各种命令,包括查询、加载模块和卸载模块等,主要功能包括如下几个方面:1)调用管理服务的功能,提取模块间依赖关系,为后续的模块的加/卸载功能提供支持。2)处理查询命令,返回目标机端的查询信息,包括已加载模块信息和模块间依赖关系等。3)接收文件并将文件加载到指定的区域,在目标机端进行二次链接,并将目标文件加载到内存中运行。在节点众多的嵌入式系统中,比如传感器网络等,存在着安装拆卸困难等情况,所以,当软件模块发生改变,动态升级技术能够实现软件模块的平滑升级,满足节点的可重新配置和自适应性要求,并保证系统的正常运行。技术方案:一种嵌入式系统中软件模块的动态升级方法,包括以下几个步骤;步骤1:开发环境基于Eclipse平台实现,主机端的动态升级功能以插件的形式集成在开发环境平台上,开发环境发起升级动作,通过目标机管理将数据发送到目标机端。步骤2:通讯服务负责接受主机端的数据,将升级请求转发给升级服务。步骤3:升级服务响应升级请求,查询模块表,判断该模块是否存在,模块存在,到步骤4,模块不存在到步骤8。步骤4:系统中已存在该模块,根据模块之间依赖关系表,调用管理服务功能进行模块停止操作,如果停止成功,进行模块卸载,修改依赖关系表,到步骤7;如果停止失败,到步骤8。步骤5:主机端收到成功命令后,发送目标文件,通讯服务接收文件,由升级服务存储到存储区域。步骤6:升级服务依据管理服务提供的模块依赖信息,进行目标文件的动态连接。在动态连接成功过程中,完成地址重定位,调用管理服务的模块加载功能,当该模块加载完成后,在管理服务中启动已升级的模块,到步骤7。步骤7:进入通讯服务,发送成功反馈。步骤8:进入通讯服务,发送错误反馈。所述主机端升级工具由升级功能插件和升级图形插件两部分组成。升级图形插件面向用户,提供图形化的界面操作;升级功能插件用于控制宿主机端的整个升级流程,是主机端升级工具的逻辑控制单元。这两部分都是以插件的形式集成到Eclipse平台上,作为开发环境的一部分功能。目标机端分为管理服务和升级服务两部分。管理服务创建数据结构并保存模块信息;通过符号引用关系动态分析模块之间的依赖关系,维护模块依赖关系表,并将被加载模块信息及其依赖关系上报给升级服务,与操作系统层交互,实现管理服务功能。升级服务实现与管理服务交互,执行主机端的各种命令,包括查询、加载模块和卸载模块等命令。附图说明图1为本专利技术动态升级工具软件架构图;图2为本专利技术动态升级结构图;图3为本专利技术动态升级流程图。图4为模块依赖示意图;图5为本专利技术模块依赖关系提取过程图;具体实施方式动态升级工具按照模块划分为主机端部分和目标机端部分。主机端面向用户,提供信息查询、模块操作、模块设置等操作。目标机端负责对模块进行动态升级和管理。主机端将具体操作转化为命令,发送给目标机端;目标机端在加载过程中产生信息反馈,形成回复信息,使主机端知悉当前加载状态。主机端动态升级管理分为信息查询、模块设置、模块加载和模块卸载四部分功能。各部分功能如下:1.信息查询:提供对模块信息的查询功能,帮助用户实时了解已加载和待加载模块的信息。2.模块设置:提供对模块的设置功能。3.模块加载:将目标映像文件发送到目标机端。这些映像文件可能没有指定实际的运行地址。4.模块卸载:将已加载文件从目标机端卸本文档来自技高网
...
一种嵌入式系统中软件模块的动态升级方法

【技术保护点】
一种嵌入式系统中软件模块的动态升级方法,其特征在于:包括以下几个步骤;步骤一:开发环境基于Eclipse平台实现,主机端的动态升级功能以插件的形式集成在开发环境平台上,开发环境发起升级动作,通过目标机管理将数据发送到目标机端;步骤二:通讯服务负责接受主机端的数据,将升级请求转发给升级服务;步骤三:升级服务响应升级请求,查询模块表,判断该模块是否存在,模块存在,到步骤四,模块不存在到步骤八;步骤四:系统中已存在该模块,根据模块之间依赖关系表,调用管理服务功能进行模块停止操作,如果停止成功,进行模块卸载,修改依赖关系表,到步骤七;如果停止失败,到步骤八;步骤五:主机端收到成功命令后,发送目标文件,通讯服务接收文件,由升级服务存储到存储区域;步骤六:升级服务依据管理服务提供的模块依赖信息,进行目标文件的动态连接;在动态连接成功过程中,完成地址重定位,调用管理服务的模块加载功能,当该模块加载完成后,在管理服务中启动已升级的模块,到步骤七;步骤七:进入通讯服务,发送成功反馈;步骤八:进入通讯服务,发送错误反馈。

【技术特征摘要】
1.一种嵌入式系统中软件模块的动态升级方法,其特征在于:包括以下几个步骤;步骤一:开发环境基于Eclipse平台实现,主机端的动态升级功能以插件的形式集成在开发环境平台上,开发环境发起升级动作,通过目标机管理将数据发送到目标机端;步骤二:通讯服务负责接受主机端的数据,将升级请求转发给升级服务;步骤三:升级服务响应升级请求,查询模块表,判断该模块是否存在,模块存在,到步骤四,模块不存在到步骤八;步骤四:系统中已存在该模块,根据模块之间依赖关系表,调用管理服务功能进行模块停止操作,如果停止成功,进行模块卸载,修改依赖关系表,到步骤七;如果停止失败,到步骤八;步骤五:主机端收到成功命令后,发送目标文件,通讯服务接收文件,由升级服务存储到存储区域;步骤六:升级服务依据管理服务提供的模块依赖信息,进行目标文件的动态连接;在动态连接成功过程中,完成地址重定位,调用管理服务的模块加载功能,当该模块加载完...

【专利技术属性】
技术研发人员:林卓张旻麦先根齐晓斌卫进
申请(专利权)人:中国航空工业集团公司西安航空计算技术研究所
类型:发明
国别省市:陕西,61

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1