一种星载综合电子系统程序的在轨更新方法

文档序号:6402043阅读:265来源:国知局
专利名称:一种星载综合电子系统程序的在轨更新方法
技术领域
本发明涉及一种微小卫星的程序更新方法,尤其涉及一种星载综合电子系统程序的在轨更新方法。
背景技术
微小卫星作为一种通用性强、可靠性高的科学实验平台,需要适应各种情况下的不同的任务需求,以及应对各种突发的故障,因此要求其星载综合电子系统具有程序在轨更新能力。目前星地通信一般采用PCM测控体制,其遥控码速率最大为4000bps,而现有测控应答机的解调能力一般为2000bps。在不考虑天基中继与多站接力的情况下,低地球轨道卫星的单个测控弧段长度一般不超过IOmin (仰角5度以上),即单个测控弧段中注入数据块的最大规模为2000bps*10min*60s/min/ (8bit/byte) =146.5Kbyte。考虑到信道衰落可能引起误码,一般须在注入数据块中引入较强的纠错编码(如R-S码);则可认为注入数据块中有效数据的规模为总规模的一半,在70Kbyte左右。而微小卫星综合电子系统的程序规模一般在200Kbyte以上,若要对程序进行完整更新则需要多个连续的测控弧段。为避免大规模数据上注对遥控通道的长时间占用,一般只对程序进行部分更新。现有地面计算机已有比较成熟的更新方法,但其方法通常基于复杂的通用操作系统,通过采用“补丁”程序形成新的程序将原有bug程序替换来达到更新的目的。这种方式不适用于星载程序在轨更新,主要原因有:(1)星上计算机通常资源受限,一般不会运行地面上的复杂通用操作系统;(2 )受星地链路的测控限制,需要上传的更新数据量越小越好,而地面“补丁”程序数据量较大。公开号为CN 101980161 B的中国专利文献公开了一种星载计算机软件的在轨更新方法,该方法将软件分为固定程序块和可变程序块,并在可变程序块中加入控制旗标;更新前,通过遥控指令关掉相应程序块的控制旗标,使该程序块的代码不参与星上程序的运行;更新成功后,通过遥控指令打开修改后程序块的控制旗标,使修改后程序块的代码参与星上程序的运行,从而完成星载计算机软件的更新。该方法的不足之处在于:(I)需要在可变程序块加入控制旗标,因此其更新颗粒度由控制旗标决定;而在实际应用中,若插入控制旗标过多,会导致可变程序块代码量膨胀从而影响星上程序执行效率;而若插入控制旗标过少,会造成更新颗粒度过粗,使得上注的数据量过大,对测控圈次造成压力;(2)需要在星上业务逻辑程序中设计在轨更新程序块,增加了业务逻辑程序设计复杂性,降低了程序通用性;(3)更新后新版本程序块会覆盖原版本程序块,若更新后不符合要求,无法还原至原版本。

发明内容
本发明公开了一种星载综合电子系统程序的在轨更新方法,该在轨更新方法不仅可靠性高、通用性强,而且具有灵活的版本控制能力。一种星载综合电子系统程序的在轨更新方法,包括:将星载综合电子系统程序分为监测程序和业务逻辑程序两部分,监测程序用于实现业务逻辑程序的部分更新,业务逻辑程序用于实现卫星功能;监测程序从地面收取待更新业务逻辑程序中目标程序块的更新数据块,并检测目标程序块是否在运行,若在运行则待其执行完毕后执行更新,否则立即执行更新;执行更新时,监测程序从待更新业务逻辑程序获取程序执行权,将目标程序块的当前版本及其版本号保存至外存,再将更新数据块携带的新版本程序块导入内存,最后将程序执行权交还给待更新业务逻辑程序,待更新业务逻辑程序更新目标程序块的原始版本号为新版本号。具体地,该在轨更新方法包括:(1)构建包含有星载综合电子系统程序和测控应答机的卫星系统,该星载综合电子系统程序通过测控应答机与地面进行通信;测控应答机与地面之间可采用微小卫星平台常用的协议进行通信,如SPI协议、CAN总线、1553B总线等;星载综合电子系统程序的处理器采用微小卫星平台常用的低功耗CPU,如 DSP,ARM 等。(2)将星载综合电子系统程序分为监测程序和业务逻辑程序两部分,监测程序用于实现业务逻辑程序的部分更新,业务逻辑程序用于实现卫星功能;整星启动过程中,监测程序进行硬件初始化、业务逻辑程序加载;整星运行过程中,地面通过测控应答机的遥测遥控接口上注待更新业务逻辑程序中目标程序块的注入数据块,测控应答机接收到该注入数据块后将其转发给监测程序。注入数据块中包含的信息有:帧同步字、模式字、分组数、分组编码、有效数据、有效数据长度和校验和;为方便地进行在轨更新,本发明为目标程序块和注入数据块设置版本号,该版本号信息包含在有效数据中。每个版本的目标程序块和注入数据块都具有一个唯一的版本号,有利于程序块的快速查询并执行相应的操作。注入数据块的类型分为:更新数据块、回滚数据块和删除数据块;监测程序通过注入数据块的类型执行相应的操作,即版本更新操作、版本回滚操作或版本删除操作。(3)执行版本更新操作前,地面首先对目标程序块的当前版本程序代码进行修改,获得新版本程序代码并进行编译连接,获得二进制码;对目标程序块中待更新函数的入口地址进行定位,将与该入口地址对应的二进制码提取出来,用于制作更新数据块;更新数据块的有效数据包含的信息有:版本号、函数入口地址、函数二进制码;监测程序接收到更新数据块后,首先验证该更新数据块是否正确,若不正确,监测程序要求地面重新上注该更新数据块。验证更新数据块是否正确的方法为:监测程序首先根据帧同步字判定接收到了有效的更新数据块;再根据模式字来判断该更新数据块的模式,针对不同的模式将采用不同的处理方法,执行版本更新操作时,模式字为Oxll ;再根据分组数来判断完整的更新数据块有多少帧,并根据分组编码判断本帧数据在该更新数据块中的位置,根据有效数据长度得到本帧数据中有效数据的长度;然后获得有效数据,在星上再计算一次有效数据的CRCXCyclic Redundancy Check,循环冗余校验码),并将该CRC与校验和进行比对;若不同则该更新数据块不正确,由地面重新发送该更新数据块;若相同则该更新数据块正确,执行版本更新操作。本发明可在星上直接判断更新数据块的正确性,不必发回地面进行判断,加快了在轨更新的效率。当更新数据块具有多帧数据时,监测程序应当在接收到完整的更新数据块后再执行更新操作。执行版本更新操作时,监测程序判断目标程序块是否正在运行,若正在运行则待其运行完毕后再执行版本更新操作,否则立即执行版本更新操作。检测目标程序块是否在运行的方法为:监测程序通过查看当前函数调用栈,获取组成目标程序块的函数的调用情况;若存在函数正在被调用,则目标程序块在运行,否则未在运行。本发明通过函数调用栈判断待更新函数是否在运行,再执行版本更新操作,使得业务逻辑程序无需进行特殊设计或增加额外开销、额外语句等用于函数更新;并且更新颗粒度为函数,即最小可仅更新一个函数,颗粒度远小于程序整体,易于配置小的注入数据块,节省了测控资源。(4)为处理更新出错或更新不符合要求的情况,监测程序还从地面收取目标程序块的回滚数据块,用于执行版本回滚操作。所述版本回滚操作包 括:监测程序根据回滚数据块查询到需回滚到的版本号和与该版本号对应的程序块,在外存中找到该程序块并载入内存,执行更新,将目标程序块回滚到历史版本。回滚数据块的有效数据仅为需回滚到的版本号,监测程序查询到需回滚到的版本号和与该版本号对应的程序块后,先判断该版本号与当前版本号是否一致,若一致,则不作任何操作;若不一致,则执行版本回滚操作。(5)由于星上存储资源有限,不可能无限制地保存程序版本;因此监测程序还从地面收取目标程序块的删除数据块,用于执行版本删除操作,将确认不再使用的版本删除。所述版本删除操作包括:监测程序根据删除数据块查询到需删除的版本号和与该版本号对应的程序块,在外存中找到该程序块并将其删除。删除数据块的有效数据仅为需删除的版本号,监测程序查询到需删除的版本号和与该版本号对应的程序块后,先判断该版本号与当前版本号是否一致,若一致,则不作任何操作;若不一致,则执行版本删除操作。更新过程中,监测程序将更新状态通过遥测数据发送给地面;所述遥测数据包括:当前操作的类型、状态、函数地址和程序版本号。如此地面可通过查看遥测数据了解星上更新的状态,方便地对整个在轨更新过程进行及时、准确地监控。与现有技术相比,本发明的有益效果为:(I)本发明的在轨更新方法通用性强,可用于对所有未经特殊设计的业务逻辑程序进行在轨更新,无需人为插入控制旗标等标识;(2)本发明的更新颗粒度为函数,即最小可仅更新一个函数,颗粒度远小于程序整体,易于配置小的注入数据块,节省了测控资源;(3)本发明的在轨更新方法能够将被更新业务逻辑程序回滚至历史版本,以消除新版本存在的未知错误或漏洞,增强了整星的可靠性;相应地,本发明也能将确认不再使用的程序版本删除,释放星上存储资源。


图1为卫星系统与地面之间的通信网络结构示意图;图2为星载综合电子系统程序的工作流程图;图3为监测程序对更新数据块正确性的验证流程图;图4(a)为含相同入口地址的更新数据块的拼接方式示意图;图4(b)为不含相同入口地址的更新数据块的拼接方式示意图;图5为监测程序的版本更新操作流程图;图6为监测程序的版本回滚操作流程图;图7为监测程序的版本删除操作流程图。
具体实施例方式下面结合附图和具体实施方式
对本发明作进一步详细说明。一种星载综合电子系统程序的在轨更新方法,具体包括:(I)构建包含有星载综合电子系统程序和测控应答机的卫星系统,该星载综合电子系统程序通过测控应答机与地面进行通信;测控应答机与地面之间可采用SPI协议进行通信,星载综合电子系统程序采用的CPU为DSP,地面设备为由地面站、天线等设备组成的地面测控网;卫星系统与地面之间的通信网络结构如图1所示;地面测控网发送遥控指令给测控应答机,测控应答机将遥控指令转发给星载综合电子系统,由星载综合电子系统程序执行相应的遥控指令,执行完成后再由星载综合电子系统硬件接口将遥测数据通过测控应答机发回地面测控网。(2)将星载综合电子系统程序分为监测程序和业务逻辑程序两部分,监测程序用于实现业务逻辑程序的部分更新,业务逻辑程序用于实现卫星功能;星载综合电子系统程序的工作流程如图2所示;整星启动,监测程序首先进行硬件初始化、业务逻辑程序加载;整星运行过程中,测控应答机通过遥测遥控接口接收地面上注的遥控指令并将该遥控指令转发给监测程序;若该遥控指令为更新数据块、回滚数据块或删除数据块,则监测程序对相应的业务逻辑程序执行相应操作,即版本更新操作、版本回滚操作或版本删除操作,若不是,则业务逻辑程序执行星上业务逻辑功能。

(3)当需要对星上某业务逻辑程序中的目标程序块执行版本更新操作时,地面首先做如下准备工作:对目标程序块的当前版本程序代码进行修改,获得新版本程序代码并进行编译连接,获得二进制码;对目标程序块中待更新函数的入口地址进行定位,将与该入口地址对应的二进制码提取出来,用于制作更新数据块,并将该更新数据块上注到测控应答机;
更新数据块的格式参见表I ;表I更新数据块的格式
权利要求
1.一种星载综合电子系统程序的在轨更新方法,其特征在于,包括: 将星载综合电子系统程序分为监测程序和业务逻辑程序两部分,监测程序用于实现业务逻辑程序的部分更新,业务逻辑程序用于实现卫星功能; 监测程序从地面收取待更新业务逻辑程序中目标程序块的更新数据块,并检测目标程序块是否在运行,若在运行则待其执行完毕后执行更新,否则立即执行更新; 执行更新时,监测程序从待更新业务逻辑程序获取程序执行权,将目标程序块的当前版本及其版本号保存至外存,再将更新数据块携带的新版本程序块导入内存,最后将程序执行权交还给待更新业务逻辑程序,待更新业务逻辑程序更新目标程序块的原始版本号为新版本号。
2.如权利要求1所述的在轨更新方法,其特征在于,监测程序接收到更新数据块后,首先验证该更新数据块是否正确,若不正确,监测程序要求地面重新上注该更新数据块。
3.如权利要求1所述的在轨更新方法,其特征在于,检测目标程序块是否在运行的方法为: 监测程序通过查看当前函数调用栈,获取组成目标程序块的函数的调用情况;若存在函数正在被调用,则目标程序块在运行,否则未在运行。
4.如权利要求1所述的程序在轨更新方法,其特征在于,监测程序还从地面收取目标程序块的回滚数据块,用于执行版本回滚操作。
5.如权利要求4所述的在轨更新方法,其特征在于,所述版本回滚操作包括: 监测程序根据回滚数据块查询到需回滚到的版本号和与该版本号对应的程序块,在外存中找到该程序块并载入内存,执行更新,将目标程序块回滚到历史版本。
6.如权利要求5所述的在轨更新方法,其特征在于,监测程序查询到需回滚到的版本号和与该版本号对应的程序块后,先判断该版本号与当前版本号是否一致,若一致,则不作任何操作;若不一致,则执行版本回滚操作。
7.如权利要求1所述的在轨更新方法,其特征在于,监测程序还从地面收取目标程序块的删除数据块,用于执行版本删除操作,将确认不再使用的版本删除。
8.如权利要求7所述的在轨更新方法,其特征在于,所述版本删除操作包括: 监测程序根据删除数据块查询到需删除的版本号和与该版本号对应的程序块,在外存中找到该程序块并将其删除。
9.如权利要求8所述的在轨更新方法,其特征在于,监测程序查询到需删除的版本号和与该版本号对应的程序块后,先判断该版本号与当前版本号是否一致,若一致,则不作任何操作;若不一致,则执行版本删除操作。
10.如权利要求1 9任一所述的在轨更新方法,其特征在于,更新过程中,监测程序将更新状态通过遥测数据发送给地面;所述遥测数据包括:当前操作的类型、状态、函数地址和程序版本号。
全文摘要
本发明公开了一种星载综合电子系统程序的在轨更新方法,包括将星载综合电子系统程序分为监测程序和业务逻辑程序两部分,监测程序从地面收取待更新业务逻辑程序中目标程序块的更新数据块,并检测目标程序块是否在运行,若在运行则待其执行完毕后执行更新,否则立即执行更新;执行更新时,监测程序从待更新业务逻辑程序获取程序执行权,将目标程序块的当前版本及其版本号保存至外存,再将更新数据块携带的新版本程序块导入内存,最后将程序执行权交还给待更新业务逻辑程序,待更新业务逻辑程序更新目标程序块的原始版本号为新版本号。与现有技术相比,本发明通用性强;更新颗粒度为函数;能够执行回滚和删除操作。
文档编号G06F9/445GK103226484SQ20131012967
公开日2013年7月31日 申请日期2013年4月15日 优先权日2013年4月15日
发明者汪宏浩, 王慧泉, 郑阳明, 金仲和, 童杰文 申请人:浙江大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1