一种基于差异化算法的航天器软件在轨增量重构方法与流程

文档序号:23844218发布日期:2021-02-05 10:10阅读:58来源:国知局
一种基于差异化算法的航天器软件在轨增量重构方法与流程

[0001]
本公开属于航天器在轨维护与在轨重构技术领域,特别涉及一种基于差异化算法的航天器软件在轨增量重构方法。


背景技术:

[0002]
随着航天技术的发展,航天器服役时间不断增长。同时,星载软件也因航天器功能的不断增加而日趋复杂。这些都使得航天在寿命期内对星载软件升级的需求与日剧增。然而,当前航天器一般仅支持单星功能级(函数级)在轨重构和单机软件级在轨注入和重构两种在轨重构方式。前者一般通过预设函数接口的方式实现,优点是软件重构时非更新功能仍然可以无间断工作,无需重启,缺点是一方面对需要地面维护人员熟悉航天器软件状态,否则将难以避免维护过程中可能存在的重构盲区;另一方面是单机复位后软件将恢复重构前状态,需要地面重新注入。后者一般通过地面上注重写eeprom或flash的方式实现,优点是可以实现单机软件全功能替换。缺点则是全功能替换导致地面需要通过大量的指令上注,从而向航天器发送在轨重构所需的完整的软件信息。这使得在轨维护将占用一个或多个可见弧段,严重影响航天器的使用。不仅如此,现有航天器软件在轨重构的共同点是针对每个卫星每一次一次重构都需要专门制定相关方案,并需要卫星方和基地用户安排专人测试和执行重构,效率较低且周期较长。
[0003]
当前星载软件功能增加,随之而来的即是星上软件规模迅速增长,程序上注时间越来越长,这与遥感卫星或深空探测可见弧段和资源极为受限相矛盾。同时,在轨卫星数量的大幅度增加,以及侦察、监视星群的出现,由于缺乏具备统一性和通用性的方法,导致地面维护人员往往需要每个卫星进行重构前大量准备与复核工作,需提前准备1~3周。这种低效率的方式逐渐难以满足更新需求。以导航星座为例,不同批次的卫星载荷、硬件可能都存在差异,如果对整网三十多个型号逐个更新耗时巨大,耗人众多。若未来数百颗卫星的网络,这种重构方式更是无法承受。
[0004]
由此可见,当前星载软件在轨重构能力落后且无力支持未来卫星网络星群重构需求。航天器在轨维护方面缺少具备统一性、通用性和高效率的新型在轨维护与在轨重构方法,相关问题亟待解决。


技术实现要素:

[0005]
有鉴于此,本公开提出了一种基于差异化算法的航天器软件在轨增量重构方法,具备低数据传输需求、高复用性和高可靠性的在轨重构方法。在不改变航天器硬件、单机设计的前提下,提高了航天器在轨重构效率,并适应未来卫星网络化、星群化的需求;能够将在轨维护功能划分在航天器多个运行阶段中,保证了待更新软件数据的快速解析,即使在重构过程中出现故障,也仍然能够保证原始星载软件可以有效运行。
[0006]
根据本公开的一方面,提出了一种基于差异化算法的航天器软件在轨增量重构方法,所述方法包括:
[0007]
将所述目标航天器的基线星载软件和新版星载软件输入到重构编码器中,通过差异化算法计算得到所述基线星载软件和新版星载软件的补丁文件;
[0008]
利用deflate压缩算法对所述补丁文件进行压缩,将压缩后的补丁文件封装为所述航天器上注时使用的遥控帧数据;
[0009]
将补丁文件遥控帧发送给所述目标航天器;
[0010]
所述目标航天器对所接收的补丁文件遥控帧进行逐一解析,将恢复的压缩补丁文件保存都所述航天器的存储器中,并进入在轨维护状态;
[0011]
根据所述航天器中保存的基线星载软件和补丁文件,用差异化查找算法恢复新版本星载软件;
[0012]
比较所述恢复的新版本星载软件的crc-32校验码与所述补丁文件中的新版本星载软件的crc-32校验码,若二者相同,则执行新版本星载软件,否则,执行基线星载软件。
[0013]
在一种可能的实现方式中,所述补丁文件包括:块识别号,控制块、差异块和新增块;
[0014]
其中,所述块识别号,用于标记所述差异化算法版本;
[0015]
所述控制块,用于标记所述基线星载软件和新版星载软件待比较的数据子序列,标记所述差异块和新增块的数据长度;
[0016]
所述差异块,用于表示所述基线星载软件和新版星载软件在当前子序列中存在差异的数据部分;
[0017]
所述新增块,用于表示所述新版星载软件新增的数据部分和所述基线星载软件独有的数据部分。
[0018]
在一种可能的实现方式中,所述压缩后的补丁文件包括:块识别、压缩后补丁文件的长度数据、所述基线星载软件和新版星载软件的crc-32校验码和补丁文件的原始数据。
[0019]
在一种可能的实现方式中,所述遥控帧数据包括补丁文件数据帧和补丁文件校验帧;
[0020]
所述补丁文件数据帧为所述压缩后的补丁文件根据所述遥控帧数据的最大长度拆分而成,所述补丁文件数据帧包括被拆分补丁文件的块序号、块地址偏移和块长度;
[0021]
所述补丁文件校验帧包括所述压缩后的补丁文件的crc-32校验码和长度信息。
[0022]
在一种可能的实现方式中,所述目标航天器对所接收的补丁文件遥控帧进行逐一解析,包括:
[0023]
步骤s1:对所述补丁文件遥控帧的补丁文件数据帧逐一解析,获取所述补丁文件数据帧的块序号、块地址偏移和块长度的参数;当所述参数在有效数值范围时,根据所述块序号和块地址偏移保存到相应的存储空间;
[0024]
步骤s2:所述航天器的星载软件根据接收到的所述补丁文件校验帧,计算缓存中子初始位置至所述压缩后补丁文件长度信息内的crc-32校验码,比较所述crc-32计算校验码和所述补丁文件校验帧的crc校验码,当二者相同时,执行步骤s3;
[0025]
步骤s3:将缓存中保存的补丁文件数据烧写到所述航天器指定的地址空间中。
[0026]
本公开的基于差异化算法的航天器软件在轨增量重构方法,通过将所述目标航天器的基线星载软件和新版星载软件输入到重构编码器中,通过差异化算法计算得到所述基线星载软件和新版星载软件的补丁文件;利用deflate压缩算法对所述补丁文件进行压缩,
将压缩后的补丁文件封装为所述航天器上注时使用的遥控帧数据;所述航天器将补丁文件遥控帧发送给所述目标航天器;对所接收的补丁文件遥控帧进行逐一解析,将恢复的压缩补丁文件保存都所述航天器的存储器中,并进入在轨维护状态;根据所述航天器中保存的基线星载软件和补丁文件,用差异化查找算法恢复新版本星载软件;比较所述恢复的新版本星载软件的crc-32校验码与所述补丁文件中的新版本星载软件的crc-32校验码,若二者相同,则执行新版本星载软件,否则,执行基线星载软件。具备低数据传输需求、高复用性和高可靠性的在轨重构方法。在不改变航天器硬件的前提下,提高航天器在轨重构效率、适应未来卫星网络化、星群化的需求;能够将在轨维护功能划分在航天器多个运行阶段中,保证待更新软件数据的快速解析,即使在重构过程中出现故障,也能够保证原始星载软件的有效运行。
[0027]
根据下面参考附图对示例性实施例的详细说明,本公开的其它特征及方面将变得清楚。
附图说明
[0028]
包含在说明书中并且构成说明书的一部分的附图与说明书一起示出了本公开的示例性实施例、特征和方面,并且用于解释本公开的原理。
[0029]
图1示出根据本公开一实施例的一种基于差异化算法的航天器软件在轨增量重构结构示意图;
[0030]
图2示出根据本公开一实施例的一种基于差异化算法的航天器软件在轨增量重构方法流程图;
[0031]
图3示出根据本公开一实施例的一种基于差异化算法的航天器软件在轨增量重构方法的补丁文件数据格式示意图图;
[0032]
图4示出根据本公开一实施例的一种基于差异化算法的航天器软件在轨增量重构方法的压缩补丁文件数据格式示意图;
[0033]
图5示出根据本公开一实施例的s4的流程图;
[0034]
图6示出根据本公开一实施例的一种基于差异化算法的航天器存储器地址空间划分示意图;
[0035]
图7示出根据本公开一实施例的一种基于差异化算法的航天器软件在轨增量重构方法的启动引导程序的工作流程图。
具体实施方式
[0036]
以下将参考附图详细说明本公开的各种示例性实施例、特征和方面。附图中相同的附图标记表示功能相同或相似的元件。尽管在附图中示出了实施例的各种方面,但是除非特别指出,不必按比例绘制附图。
[0037]
在这里专用的词“示例性”意为“用作例子、实施例或说明性”。这里作为“示例性”所说明的任何实施例不必解释为优于或好于其它实施例。
[0038]
另外,为了更好的说明本公开,在下文的具体实施方式中给出了众多的具体细节。本领域技术人员应当理解,没有某些具体细节,本公开同样可以实施。在一些实例中,对于本领域技术人员熟知的方法、手段、元件和电路未作详细描述,以便于凸显本公开的主旨。
[0039]
图1示出根据本公开一实施例的一种基于差异化算法的航天器软件在轨增量重构结构示意图。
[0040]
如图1所示,航天器软件在轨增量重构结构由重构编码器与重构解码器两部分组成。
[0041]
重构编码器可以根据当前航天器上运行的基线星载软件和待上注新版星载软件制作在轨重构数据包。
[0042]
重构解码器的工作划分为在轨维护态与启动引导态。其中,在轨维护态时由航天器应用软件执行,负责接收并保存接收到的补丁文件数据包。航天器软件在轨增量重构的核心工作由启动引导程序完成,在启动引导态时,航天器产生复位并执行启动引导程序(启动引导软件),完成利用航天器基线星载软件和新版星载软件数据包生成可执行的新版本软件,并最终调用执行新版本软件。重构编码器可以工作于地面或其他航天器上,重构解码器工作于目标航天器上。
[0043]
本公开利用目标航天器的启动引导软件与应用软件功能分离,以及启动引导软件自身内存占用率低、存在大量空闲内存空间的特点,将航天器在轨重构的核心算法交由启动引导软件执行,由启动引导软件实现新版本软件的恢复,可以有效利用航天器有限的内存资源。本公开的核心算法由启动引导软件执行,因此对于使用同类型启动引导软件的不同单机产品,无需对所运行的应用软件进行任何修改,具有高移植性。
[0044]
图2示出根据本公开一实施例的一种基于差异化算法的航天器软件在轨增量重构方法流程图。如图1所示,该方法可以包括:
[0045]
步骤s1:将所述目标航天器的基线星载软件和新版星载软件输入到重构编码器中,通过差异化算法计算得到所述基线星载软件和新版星载软件的补丁文件。
[0046]
其中,差异化算法可以为二进制差异化查找算法(bsdiff,binary search and difference)。新版星载软件也可以成为新版本星载软件。
[0047]
图3示出根据本公开一实施例的一种基于差异化算法的航天器软件在轨增量重构方法的补丁文件数据格式图。
[0048]
补丁文件可以为基线星载软件和新版星载软件之间的差异部分。
[0049]
在一示例中,如图3所示,补丁文件可以包括:块识别号,控制块、差异块和新增块;
[0050]
块识别号,用于标记差异化算法版本。其中差异化算法可以为二进制差异化查找算法,块识别号通过标记二进制差异化查找算法的版本,以保证航天器的重构编码器和重构解码器之间采用的二进制差异化查找算法的一致性。
[0051]
控制块,用于标记所述基线星载软件和新版星载软件待比较的数据子序列,标记所述差异块和新增块的数据长度。基线星载软件被拆分为多个独立的数据子序列,每个子序列构成一个控制块,还标记了后续使用到的对应差异块和新增块的数据长度。
[0052]
差异块,用于表示所述基线星载软件和新版星载软件在当前子序列中存在差异的数据部分。
[0053]
新增块,用于表示所述新版星载软件新增的数据部分和所述基线星载软件独有的数据部分。
[0054]
补丁文件的前24字节用于标记补丁文件,及后续各类型数据块的长度,补丁文件的数据格式如表1所示。
[0055]
表1
[0056]
块识别号控制块长度差异块长度新增块长度
[0057]
通过利用二进制差异化算法计算目标航天器中基线软件和新版本软件生成的补丁文件,地面或其他航天器仅上注补丁文件给目标航天器,这样可以大幅度降低与目标航天器的数据传输量,节省在轨重构通信时间,特别对于可见测控弧段明显受限的航天器,将显著提升航天器资源利用率。
[0058]
步骤s2:利用deflate压缩算法对所述补丁文件进行压缩,将压缩后的补丁文件封装为所述航天器上注时使用的遥控帧数据。
[0059]
压缩后的补丁文件为二进制文件形式。
[0060]
crc-32(cyclic redundancy check 32,循环冗余校验)是一种检错手段,应用于数据存储和数据通讯领域。
[0061]
在一示例中,遥控帧数据可以分为补丁文件数据帧和补丁文件校验帧两类。
[0062]
补丁文件数据帧为所述压缩后的补丁文件根据所述遥控帧数据的最大长度拆分而成;如表2(补丁文件数据帧格式)所示,补丁文件数据帧包括被拆分补丁文件的块序号、块地址偏移和块长度。其中,补丁文件数据帧存在多条。
[0063]
表2补丁文件数据帧
[0064]
块序号块地址偏移块长度块数据
[0065]
补丁文件校验帧可以包括如表3(补丁文件校验帧)所示的压缩后的补丁文件的crc-32校验码和长度信息。其中,补丁文件校验帧仅有一条。
[0066]
表3补丁文件校验帧
[0067]
压缩后补丁文件crc-32压缩后补丁文件长度
[0068]
为了保证航天器软件在轨增量重构的准确性,采用deflate压缩算法对补丁文件压缩时需要使用crc-32校验,将基线星载软件与新版星载软件的crc-32计算结果,以及压缩后补丁文件的长度信息,作为压缩后补丁文件的数据项保存到遥控帧数据域内。
[0069]
图4示出根据本公开一实施例的一种基于差异化算法的航天器软件在轨增量重构方法的压缩补丁文件数据格式示意图。
[0070]
在一示例中,如图4所示,压缩后的补丁文件包括:块识别、压缩后补丁文件的长度数据、基线星载软件和新版星载软件的crc-32校验码和补丁文件的原始数据。
[0071]
块识别与压缩后补丁文件的长度信息共同作用,用于在重构解码器端确认压缩后补丁文件及有效数据长度。其中,块识别由航天器决定,不同类型或硬件平台的航天器具有不同的块识别。
[0072]
步骤s3:将补丁文件遥控帧发送给所述目标航天器。
[0073]
地面或其他航天器(例如地面观测站)将重构编码器按照目标航天器要求,添加补丁文件遥控帧的数据信息后,并将生成的遥控帧发送给目标航天器。在地面或其他航天器传输遥控帧时,先发送补丁文件数据帧,当所有补丁文件数据帧发送完后,再发送单条补丁文件校验帧。
[0074]
补丁文件遥控帧的块序号从零值开始依次递增,并在压缩补丁文件数据帧拆分块时,按照补丁文件遥控帧的数据域最大可填充长度进行填充,可以提高补丁文件遥控帧的
解析速度,节省时间,不将时间浪费在非正确数据的解析上。
[0075]
步骤s4:所述目标航天器对所接收的补丁文件遥控帧进行逐一解析,将恢复的压缩补丁文件保存都所述航天器的存储器中,并进入在轨维护状态。
[0076]
图5示出根据本公开一实施例的s4的流程图。
[0077]
在一示例中,如图5所示,目标航天器对所接收的补丁文件遥控帧进行逐一解析,可以包括:
[0078]
步骤s41:对所述补丁文件遥控帧的补丁文件数据帧逐一解析,获取所述补丁文件数据帧的块序号、块地址偏移和块长度的参数;当所述参数在有效数值范围时,根据所述块序号和块地址偏移保存到相应的存储空间。
[0079]
对所述补丁文件遥控帧的补丁文件数据帧逐一解析的具体流程可以为:
[0080]
对用于临时保存压缩补丁文件数据内容的缓存区清空。
[0081]
获取补丁文件数据帧的数据域中的块序号、块地址偏移和块长度的参数,判断参数是否在有效范围内。
[0082]
如果在有效范围内,根据补丁文件数据帧的块序号、块地址偏移和块长度的参数,计算补丁文件数据帧的数据块在压缩补丁文件中的地址范围。如果在临时缓存中对应地址范围内不存在非零数据,则将补丁文件数据帧中的块数据按照块地址偏移复制到缓存区对应地址空间;否则,清空缓存并退出本流程。如果不在有效范围内,清空缓存并退出本流程。
[0083]
较佳地,除最后一个压缩补丁文件遥控帧的补丁文件数据帧传输之外,其他所有补丁文件数据帧都满足航天器的遥控帧最大长度。并且,所有补丁文件数据帧按照块序号从小到大逐帧发送。目标航天器应用软件判断接收补丁文件数据帧的块序号是否连续,以及块长度是否是最大长度。如果接收到非最大数据块长度的补丁文件数据帧,则认为补丁文件数据帧传输结束。若之后继续接收到补丁文件数据帧,清空缓存退出本流程,按照上述方法即可。
[0084]
步骤s42:所述航天器的星载软件根据接收到的所述补丁文件校验帧,计算缓存中自初始位置至所述压缩后补丁文件长度信息内的crc-32校验码,比较所述crc-32计算校验码和所述补丁文件校验帧的crc校验码,当二者相同时,执行步骤s43。
[0085]
步骤s43:将缓存中保存的补丁文件数据烧写到所述航天器指定的地址空间中。
[0086]
图6示出根据本公开一实施例的一种基于差异化算法的航天器存储器地址空间划分示意图。
[0087]
在目标航天器的存储器的地址空间中,可以依据补丁文件的大小和存储器剩余空间进行地址空间划分,具体划分结构如图6所示。目标航天器的应用软件在接收到完整补丁文件后,直接将补丁文件数据写入到如图6所述的补丁文件首地址。
[0088]
在一示例中,将补丁文件存储空间的首个12字节作为补丁文件存储区的数据索引区,包括可用补丁文件信息、补丁文件1首地址和补丁文件2首地址,具体格式如表4所示。航天器的存储器可以最多存储2个不同版本的补丁文件,并在补丁文件存储区的数据索引前4字节中分别保存补丁文件的版本号、是否可用,以及优先使用的文件序号等基本信息。而后,分别保存各补丁文件在航天器的存储器中的地址索引,使得快速索引可用补丁文件数据。
[0089]
表4
[0090]
可用补丁文件信息补丁文件1首地址补丁文件2首地址
[0091]
本公开利用二进制差异化查找算法产生补丁文件的数据结构特点,对存储空间按功能进行了地址空间的划分,分别用于保存基线软件和补丁文件。在轨重构时,仅修改航天器的存储空间中用于保存补丁文件的地址空间,基线星载软件的地址空间始终处于只读状态。同时,本发明设计了当新版本星载软件恢复失败、导致新版本星载软件无法正确启动时,不对航天器硬件进行任何改造,仍可直接采用基线星载软件启动的应急策略,提高了航天器在轨重构的可靠性。
[0092]
步骤s5:所述目标航天器的重构解码器启动引导状态,根据所述航天器中保存的基线星载软件和补丁文件,用差异化查找算法恢复新版本星载软件。
[0093]
步骤s6:比较所述恢复的新版本星载软件的crc-32校验码与所述补丁文件中的新版本星载软件的crc-32校验码,若二者相同,则执行新版本星载软件,否则,执行基线星载软件。
[0094]
应用实例
[0095]
图7示出根据本公开一实施例的一种基于差异化算法的航天器软件在轨增量重构方法的启动引导程序的工作流程图。
[0096]
如图7所述,步骤p1:航天器自主执行复位操作,进入启动引导态。
[0097]
步骤p2:检查目标航天器的存储器中补丁文件烧写的地址空间,根据地址空间中补丁文件数据判断是否存在补丁文件:如果存在补丁文件,则执行步骤p3;否则,执行基线星载软件程序并退出本流程,为保证基线星载软件软件可以正确执行,在执行基线星载软件前对航天器的存储器中多余数据进行清空操作。
[0098]
步骤p3:读取补丁文件中基线星载软件的crc-32校验码,并与加载基线星载软件的crc-32校验码进行比较,如果二者一致,执行步骤p4;否则,执行基线星载软件程序并退出本流程。
[0099]
步骤p4:通过deflate解压缩算法将补丁文件解压至航天器的缓存中,并通过crc-32校验码判断deflate解压缩是否成功,如果成功,执行步骤p5;否则,执行基线星载软件程序并退出本流程。
[0100]
步骤p5:根据解压缩后补丁文件头中的数据内容判断补丁文件数据帧的数据格式是否正确,如果正确,分别加载基线星载软件和压缩后补丁文件,并采用二进制差异化查找算法恢复新版本星载软件,并执行步骤p6;否则,执行基线星载软件程序并退出本流程。
[0101]
步骤p6:计算新版本星载软件crc-32结果,并与补丁文件中新版本星载软件crc-32检验码进行比较,如果二者一致,则执行新版本星载软件程序;否则,执行基线星载软件程序。
[0102]
本公开的基于差异化算法的航天器软件在轨增量重构方法,通过将所述目标航天器的基线星载软件和新版星载软件输入到重构编码器中,通过差异化算法计算得到所述基线星载软件和新版星载软件的补丁文件;利用deflate压缩算法对所述补丁文件进行压缩,将压缩后的补丁文件封装为所述航天器上注时使用的遥控帧数据;将补丁文件遥控帧发送给所述目标航天器;所述目标航天器对所接收的补丁文件遥控帧进行逐一解析,将恢复的压缩补丁文件保存都所述航天器的存储器中,并进入在轨维护状态;根据所述航天器中保存的基线星载软件和补丁文件,用二进制差异化查找算法恢复新版本星载软件;比较所述
恢复的新版本星载软件的crc-32校验码与所述补丁文件中的新版本星载软件的crc-32校验码,若二者相同,则执行新版本星载软件,否则,执行基线星载软件。具备低数据传输需求、高复用性和高可靠性的在轨重构方法。在不改变航天器硬件的前提下,提高了航天器在轨重构效率、并适应未来卫星网络化、星群化的需求;能够将在轨维护功能划分在航天器多个运行阶段中,保证了待更新软件数据的快速解析,即使在重构过程中出现故障,也能够保证原始星载软件的有效运行。
[0103]
以上已经描述了本公开的各实施例,上述说明是示例性的,并非穷尽性的,并且也不限于所披露的各实施例。在不偏离所说明的各实施例的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实施例的原理、实际应用或对市场中的技术改进,或者使本技术领域的其它普通技术人员能理解本文披露的各实施例。
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1