一种星载嵌入式软件模块在轨更新方法

文档序号:6541834阅读:168来源:国知局
一种星载嵌入式软件模块在轨更新方法
【专利摘要】一种星载嵌入式软件模块在轨更新方法,涉及计算机【技术领域】,现有星载嵌入式软件在轨更新存在注入的代码量大,注入速度慢,注入效率低,且通用性差的问题,一、生成软件模块的目标文件;二将目标文件上传至星载计算机;三、将星载计算机待更新的软件模块目标文件更名为备份文件,所述星载计算机每次成功接收到一包数据,则将新接收的数据保存到临时文件中,并将临时文件更名为对应的软件模块目标文件,存储在程序存储器中;四、重新启动星载嵌入式软件,将除备份文件外的所有软件模块的目标文件重新加载到数据存储器中运行,实现星载嵌入式软件模块的在轨更新。本发明基于嵌入式操作系统,并采用模块动态加载技术,支持大量软件参数更改等。
【专利说明】一种星载嵌入式软件模块在轨更新方法
【技术领域】
[0001]本发明涉及计算机【技术领域】,具体涉及一种用于星载嵌入式软件的模块在轨更新。
【背景技术】
[0002]卫星发射后,如果发现了软件异常或需要增减软件功能,则需在轨对星载嵌入式软件进行更新。目前,星载嵌入式软件多采用静态链接的方式生成,星载计算机中存储的程序代码是可执行程序,进行在轨维护时,需要将新修改的程序经过编译、链接形成可执行程序,然后将该可执行程序与星载计算机中存储的可执行程序对比,进行全部注入或针对有差异的地方进行局部重注。采用这些方法进行星载嵌入式软件在轨更新,思路清晰,但也存在一些缺点:往往整个程序中只有几行语句需要修改,却需要将整个代码进行重注,造成极大的浪费,而且卫星在接收完毕全部代码并进行校验后才会将代码应用到系统中,在整个漫长的过程中,程序数据极易受到干扰而产生错误;一般都是针对特定的系统开发,没有通用性。

【发明内容】

[0003]本发明为解决现有星载嵌入式软件在轨更新存在注入的代码量大,注入速度慢,注入效率低,且通用性差的问题,提供一种星载嵌入式软件模块在轨更新方法。
[0004]一种星载嵌入式软件模块在轨更新方法,该方法由以下步骤实现:
[0005]步骤一、生成软件模块的目标文件;
[0006]步骤二、将步骤一所述的目标文件上传至星载计算机;
[0007]步骤三、将星载计算机待更新的软件模块目标文件更名为备份文件,所述星载计算机每次成功接收到一包数据,则将新接收的数据保存到临时文件中,并将临时文件更名为对应的软件模块目标文件,存储在程序存储器中;
[0008]步骤四、重新启动星载嵌入式软件,将除备份文件外的所有软件模块的目标文件重新加载到数据存储器中运行,实现星载嵌入式软件模块的在轨更新。
[0009]本发明的有益效果:本发明所述的星载嵌入式软件模块在轨更新方法,一、使用嵌入式操作系统和文件系统,使用系统符号表建立系统中各个软件模块之间的联系;二、模块动态加载,操作系统运行后,调用加载器,实时维护系统符号表,将包含符号表的各个模块目标文件依次加载到系统中并形成可执行程序;三、使用文件系统管理各个模块目标文件,方便对目标文件进行更名、添加和删除,也用于加载器加载文件;四、模块目标文件,由独立的软件模块源程序经编译后生成,包含符号表。五、程序存储器是指非易失性存储器FLASH或EEPR0M,用于保存程序目标文件,数据存储器是指易失性存储器RAM或SRAM或SDRAM,用于运行程序。六、本发明基于嵌入式操作系统,并采用模块动态加载技术,支持大量软件参数更改、大幅度软件功能修改、大幅度软件功能增加与删除。七、模块目标文件加载成功后,星载嵌入式软件可根据指令将备份文件删除以节省存储空间,也可根据指令删除新注入的模块目标文件,并将备份文件恢复为原来的模块目标文件,以撤销本次更新,使软件恢复到之前的状态。新上注的模块目标文件不覆盖原来存储的模块目标文件,可方便进行软件更新撤销。八、本发明采用断点续传设计,接收的数据以临时文件的形式存储在程序存储器中,新接收的局部数据添加在该临时文件后面,待整个模块目标文件接收完毕后才将临时文件更名为模块目标文件并供系统使用,因此支持多次过境续传,不要求连续注入,不受卫星过顶时间和遥控弧段长短的限制。九、本发明中无论是临时文件还是完整的模块目标文件均存储在非易失性程序存储器中,因此支持系统断电保护,星载计算机断电或星载嵌入式软件重启对软件模块在轨更新没有影响。十、在对模块目标文件加载过程中,如果新注入的模块目标文件加载失败,则系统自动加载之前备份的备份文件,确保星载嵌入式软件注入的安全可靠。十一、支持常见的嵌入式操作系统,支持常见的嵌入式文件系统。采用模块动态加载机制,软件模块的设计力求“强内聚,弱耦合”,模块划分的越细越好,模块体积越小越好。
【专利附图】

【附图说明】
[0010]图1为本发明所述的一种星载嵌入式软件模块在轨更新方法中星载计算机系统的结构框图;
[0011]图2为本发明所述的一种星载嵌入式软件模块在轨更新方法中星载嵌入式软件模块接收程序流程图;
[0012]图3为本发明所述的一种星载嵌入式软件模块在轨更新方法中星载嵌入式软件模块加载程序流程图;
[0013]图4为本发明所述的一种星载嵌入式软件模块在轨更新方法中星载嵌入式软件中现有模块更新示意图;
[0014]图5为本发明所述的一种星载嵌入式软件模块在轨更新方法中星载嵌入式软件中新增模块更新示意图;
[0015]图6本发明所述的一种星载嵌入式软件模块在轨更新方法中星载嵌入式软件中有备份模块更新恢复示意图;
[0016]图7本发明所述的一种星载嵌入式软件模块在轨更新方法中星载嵌入式软件中无备份模块更新恢复示意图。
【具体实施方式】
[0017]结合图1至图7说明本实施方式,一种星载嵌入式软件模块在轨更新方法,本实施方式采用某型号星载计算机,结合图1,星载计算机包括RS422总线通信接口、程序存储器(PROM、EEPROM和FLASH),数据存储器为SRAM,嵌入式操作系统为VxWorks,文件系统选用TFFs。
[0018]所述星载嵌入式软件包括三部分:BootR0M,Vxfforks镜像程序和软件模块目标文件。
[0019]所述BootROM存储在PROM中,星载计算机开机后首先执行该程序,它的功能是将EEPROM中的VxWorks镜像程序加载到SRAM中,并启动VxWorks镜像程序。VxWorks镜像程序存储在EEPROM中,被BootROM加载到SRAM中运行,提供嵌入式操作系统的各种特性,模块目标文件的加载也集成在VxWorks镜像程序中。各模块目标文件均存储在FLASH中,并被加载到SRAM中的操作系统中运行。
[0020]本实施方式所述的星载嵌入式软件模块在轨更新方法由以下步骤实现:
[0021]一、更新模块的生成:在确定需要对星载嵌入式软件指定模块进行在轨更新时,修改对应软件模块的源程序、编译后生成模块目标文件;
[0022]二、更新模块的上注:计算待更新模块目标文件的校验和,将文件名、校验和及文件内容打包后上注到星载计算机中;
[0023]三、更新模块的接收:每成功接收到一包数据则保存到临时文件中,直到文件完整接收完毕;将卫星中待新的模块目标文件更名为备份文件,并将新接收的临时文件更名为对应的模块目标文件,存储在程序存储器中;
[0024]四、更新模块运行:重新启动星载嵌入式软件,将除备份文件之外的所有模块目标文件重新加载到数据存储器中运行,完成星载嵌入式软件在轨更新。
[0025]本实施方式所述的步骤一中,各个软件模块的源程序均以独立文件的形式存在,源程序修改后,重新编译生成的模块目标文件要包含符号表。模块目标文件的名称与卫星中存储的模块目标文件名称一致,便于卫星确认要修改哪个模块目标文件。
[0026]本实施方式所述的步骤四中,星载嵌入式软件中建立了文件系统,所有模块目标文件均以文件的形式存储在星载程序存储器中。星载嵌入式软件可对模块目标文件进行更名,以区别哪些模块目标文件要被加载到系统中,哪些不被加载到系统中。
[0027]本实施方式所述的步骤五中,星载嵌入式软件中所有模块目标文件均存储在程序存储器中,而程序真正运行在数据存储器中。星载嵌入式软件重启后,由加载器从各个模块目标文件中读取模块信息,并更新系统符号表,依据符号表对目标程序代码和变量进行重定位后将代码和变量拷贝到数据存储器指定地址中完成本模块目标文件的加载,待所有模块目标文件加载完毕后,在数据存储器中动态链接成可执行程序。程序指针跳转到可执行程序入口地址,开始执行程序。
[0028]结合图2和图3说明本实施方式,本实施方式中的模块接收和模块加载是两个关键部分,两部分均以独立的任务运行。
[0029]模块接收任务工作步骤如下:
[0030]A、等待中断接收数据完毕信号量,待中断接收完毕一包数据后,该信号量有效,程序继续执行,否则继续等待;
[0031]B、对本包数据进行校验,如果本包校验错误则设置本包数据校验错误标志,并请求地面重新发送本包数据,并执行步骤A ;如果本包数据校验正确则继续执行步骤C ;
[0032]C、判断本包是否为文件头信息,如果是文件头信息,则提取文件名称、文件大小等信息,并在FLASH中创建一个临时文件用于存储接收到的文件数据,然后重新执行步骤A ;否则继续执行步骤D ;
[0033]D、如果本包数据不是文件头信息,则表明本包数据是模块目标文件内容,先判断是否存在临时文件,如果否,判断软件模块目标文件接收是否完毕,如果是,则打开该临时文件,将本包数据追加到临时文件的后面,然后关闭该临时文件;之后判断模块目标文件接收是否完毕,如果目标文件未接收完毕,则重新执行步骤A,否则继续执行E ;
[0034]E、判断该模块目标文件是否已经存在,如果存在则将存在的目标文件更名为备份文件,否则直接执行步骤F ;
[0035]F、将临时文件更名为文件头信息中的文件名称;
[0036]G、更新软件模块目录文件。
[0037]本实施方式所述的模块加载任务工作步骤如下:
[0038]a、从软件模块目录文件中读取第一个文件名;
[0039]b、加载该文件,并判断文件加载是否成功,如果加载不成功则执行步骤C,否则执行步骤f ;
[0040]C、重新加载一次,并再次判断是否加载成功,如果加载成功则执行步骤f,否则继续执行d ;
[0041]d、判断模块目标文件是否存在备份文件,如果存在则加载该备份文件,并将当前模块目标文件删除且将备份文件更名为该模块目标文件名,如果不存在备份文件则直接删除当前模块文件;
[0042]e、设置更新模块加载失败标志,更新软件模块目录文件;
[0043]f、判断是否软件模块目录文件中都所有模块目标文件都已经加载完毕,如果没有加载完毕则从软件模块目录文件中读取下一个文件名,并加载该模块,如果都已经加载完毕则查找星载嵌入式软件的入口函数,程序跳转到入口函数开始执行星载嵌入式软件。
[0044]结合图4和图5说明本实施方式,软件模块目录文件保存了系统工作时需要加载的所有模块目标文件名称,软件模块目录文件支持现有软件模块更新和添加新的软件模块,图4中对现有模块Module3进行更新,将之前存储其中Module3更名为Module3Backup,并将新注入的模块更名为ModUle3,从而完成现有模块的更新。结合图5,对于新增加的模块,只需将新增加的软件模块名称添加到软件模块目录文件中即可。
[0045]结合图6和图7说明本实施方式,如果模块目标文件存在备份文件,则加载该备份文件,结合图6,并将当前模块目标文件删除且将备份文件更名为该模块目标文件名,结合图7,如果不存在备份文件,则直接删除当前模块文件。
【权利要求】
1.一种星载嵌入式软件模块在轨更新方法,其特征是,该方法由以下步骤实现: 步骤一、生成软件模块的目标文件; 步骤二、将步骤一所述的目标文件上传至星载计算机; 步骤三、将星载计算机待更新的软件模块目标文件更名为备份文件,所述星载计算机每次成功接收到一包数据,则将新接收的数据保存到临时文件中,并将临时文件更名为对应的软件模块目标文件,存储在程序存储器中; 步骤四、重新启动星载嵌入式软件,将除备份文件外的所有软件模块的目标文件重新加载到数据存储器中运行,实现星载嵌入式软件模块的在轨更新。
2.根据权利要求1所述的一种星载嵌入式软件模块在轨更新方法,其特征在于,步骤三的具体过程为: 步骤三一、等待中断接收数据完毕的信号,待中断接收完毕一包数据后,执行步骤三二,否则继续等待; 步骤三二、对本包数据进行校验,如果本包校验错误,则设置本包数据校验错误标志,并请求重新发送本包数据,返回执行步骤三一,如果本包数据校验正确,则继续执行步骤二二 步骤三三、判断接收的本包数据是否为文件头信息,如果是,则提取文件名称、文件大小信息,并在FLASH中创建一个临时文件用于存储接收到的文件数据,然后返回执行步骤三一;如果否,则继续执行步骤三四; 步骤三四、判断临时文件是否存在,如果否,执行步骤三五;如果是,则打开该临时文件,将本包数据追加到临时文件的后面,然后关闭该临时文件; 步骤三五、判断软件模块目标文件接收是否完毕,如果否,则重新执行步骤三一,如果是,则继续执行步骤三六; 步骤三六、判断该模块目标文件是否已经存在,如果是,则将已经存在的目标文件更名为备份文件,如果否,将临时文件更名为文件头信息中的文件名称;更新软件模块目录文件。
3.根据权利要求1或2所述的一种星载嵌入式软件模块在轨更新方法,其特征在于,步骤四的具体过程为: 步骤四一、重新启动星载嵌入式软件,自动读取软件模块目录文件中的第一个文件; 步骤四二、加载读取的文件,并判断文件加载是否成功,如果否,则执行步骤四三,如果是,则执行步骤四六; 步骤四三、重新加载目标文件,并再次判断是否加载成功,如果是,则执行步骤四六,如果否则继续执行步骤四四; 步骤四四、判断模块目标文件是否存在备份文件,如果存在,则加载该备份文件,并将当前模块目标文件删除且将备份文件更名为所述当前模块目标文件名,如果不存在备份文件,则直接删除模块目标文件; 步骤四五、设置更新模块加载失败标志,更新软件模块目录文件; 步骤四六、判断软件模块目录文件中所有的模块目标文件是否加载完毕,如果否,则从软件模块目录文件中读取下一个文件名,重新执行步骤四二;如果是,则查找星载嵌入式软件的入口函数,程序跳转到入口函数开始执行星载嵌入式软件。
4.根据权利要求1所述的一种星载嵌入式软件模块在轨更新方法,其特征在于,步骤一所述的软件模块的源程序以独立文件的形式存在,源程序修改后,重新编译生成的模块目标文件要包含符号表,所述模块目标文件的名称与星载计算机中存储的模块目标文件名称一致。
5.根据权利要求1所述的一种星载嵌入式软件模块在轨更新方法,其特征在于,步骤二中,在所述星载计算机内的星载嵌入式软件中建立文件系统,所有模块目标文件均以文件的形式存储在星载程序存储器中,星载嵌入式软件可对模块目标文件进行更名,用于区别需要被 加载到软件中的模块目标文件。
【文档编号】G06F9/445GK103942066SQ201410114724
【公开日】2014年7月23日 申请日期:2014年3月25日 优先权日:2014年3月25日
【发明者】王绍举, 徐伟, 朴永杰, 徐拓奇, 郑晓云, 冯汝鹏, 金光 申请人:中国科学院长春光学精密机械与物理研究所
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1