面向航天软件的在轨升级系统的制作方法

文档序号:19323846发布日期:2019-12-04 00:51阅读:179来源:国知局
面向航天软件的在轨升级系统的制作方法

本发明主要涉及航天软件在轨升级领域,尤其涉及面向航天软件的在轨升级系统。



背景技术:

航天飞行器系统软件在应用领域划分中属于“安全关键领域”软件,一旦出现故障,将会导致难以预计的可怕后果。而随着航天器的飞行任务越来越复杂、在轨寿命越来越长,其控制系统软件也日益复杂、庞大和多样化,这无疑对航天器控制系统的可靠性和安全性要求提出了更大的挑战。随着航天器寿命的增长和任务难度的加大,航天软件的复杂度越来越高,需要具备在轨重构和更新能力,以应对可能出现的任务扩展和软件潜在缺陷。

航天飞行器系统的计算能力和内存容量有限,众多软件协同工作,共享系统的资源,系统结合比较复杂,出现软件故障后难以及时修复。航天软件的在轨升级是指通过地面控制系统以远程注入的形式在软件不重启的情况下而完成的软件升级。对航天软件在轨升级有利于维持系统平台的稳定性,可实现在线回归测试,支持系统在线重构,是提高系统可靠性的有效途径。

因此,如何实现对航天软件的在轨升级,是本领域亟需解决的技术问题。



技术实现要素:

为解决以上问题,本发明提出了面向航天软件的在轨升级系统,通过对需要在轨升级的软件进行编译链接操作,并使用户划定需要升级的功能模块,再实施基于数据的载荷参数优化、基于代码的可靠性提升、基于整体的故障处理,来实现在线回归测试和系统在线重构,从而实现对航天软件的在轨升级。

具体的,本发明提出了一种面向航天软件的在轨升级系统,包括:

存储路径输入模块,用于在显示界面显示输入框,以使用户在输入框输入待升级目标代码的文件存储路径;

代码读取模块,用于根据所述文件存储路径读取目标代码;

代码解析模块,用于通过语法分析和词法分析将所述目标代码解析成抽象语法树并保存相应的版本数据以及版本标识;

版本判断模块,用于根据所述版本标识判断所述目标代码是否为初始版本;

升级标记插入模块,用于若所述目标代码是初始版本,则在所述目标代码中对长循环代码进行提取,并在所述目标代码中插入所述长循环代码对应的在轨升级标记;

代码升级模块,用于将新代码上载至航天器系统,并根据所述在轨升级标记对所述目标代码进行升级,并开始执行。

优选的,如上所述的面向航天软件的在轨升级系统,还包括:

安全性检查模块,用于若所述目标代码不是初始版本,则对当前版本以及前一版本的抽象语法树进行分析,遍历两个抽象语法树的所有子树,检查函数、全局变量和类型的变更安全性;

声明识别模块,用于若通过变更安全性检查,则识别所述当前版本以及所述前一版本间有升级的所有声明,所述声明包括函数声明,全局变量声明、类型声明;对所述类型声明的变更生成相应的类型转换函数;

编译模块,用于编译处理所述声明,并将更新点设置在全局不变量所在的位置,所述更新点为对所述当前版本进行替换的位置;

版本替换模块,用于将新版本代码上载至航天器系统,并根据所述更新点在内存中替换所述当前版本。

优选的,如上所述的面向航天软件的在轨升级系统,还包括:

二次开发模块,用于若没有通过变更安全性检查,则识别所述当前版本以及所述前一版本间有升级的所有声明,对没有通过变更安全性检查的声明对应的代码模块实施二次开发。优选的,如上所述的面向航天软件的在轨升级系统,所述用户编辑模块包括原子命题集编辑单元和ltl公式编辑单元。

优选的,如上所述的面向航天软件的在轨升级系统,所述代码解析模块包括映射生成单元和差异分类单元。

优选的,如上所述的面向航天软件的在轨升级系统,所述映射生成单元对已经重新排序和修改的函数声明和类型声明,根据抽象语法树生成旧名称与新名称的映射;所述映射包括本地变量映射、全局变量映射和类型映射;全局变量计数器对全局变量个数进行统计。

优选的,如上所述的面向航天软件的在轨升级系统,所述差异分类单元访问遍历所述当前版本以及所述前一版本中的函数、全局变量和类型,以检测变更数据并收集统计信息,生成变更检测报告,将所述变更检测报告中的每个变更分类为添加、删除或更改;每当检测所述当前版本以及所述前一版本的抽象语法树不匹配时,提示用户检查确认函数语义的变更。

优选的,如上所述的面向航天软件的在轨升级系统,所述安全性检查模块包括静态分析单元和不动点确定单元。

优选的,如上所述的面向航天软件的在轨升级系统,所述静态分析单元使用基于抽象解释的静态分析方法,将抽象语法树转化成状态迁移系统,选择程序控制流图表示源代码的状态迁移关系;

所述不动点确定单元追踪类型名称的变化并检查违规的抽象别名,构建特定的抽象域,将程序的具体语义转化到抽象语义上;结合所述抽象域和所述控制流图的信息,运用抽象解释中的迭代策略计算所述控制流图中所有节点的不动点抽象值,根据所述不动点抽象值确定变更安全性。

优选的,如上所述的面向航天软件的在轨升级系统,所述编译模块包括间接引用增加单元和约束添加单元。

优选的,如上所述的面向航天软件的在轨升级系统,所述间接引用增加单元检查代码的类型安全性,即检查新函数或当前函数的签名;在所述新函数中增加函数的间接引用;

所述约束添加单元确定静止点,并在所述静止点中选择更新点,在插入的更新点上对更改的类型添加约束,所述静止点为程序中完成所有操作并且在所有全局状态是一致的点,所述约束为类型的更新规则。

本发明所述的面向航天软件的在轨升级系统,具有如下有益效果:

一、可通过对需要在轨升级的软件进行编译链接操作,并使用户划定需要升级的功能模块,再实施基于数据的载荷参数优化、基于代码的可靠性提升、基于整体的故障处理,来实现在线回归测试和系统在线重构。

二、在航天软件运行的状态下,接收地面注入的指令,通过新旧版本对比,实施依赖关系检查、活动性检查等静态检查方法,实现软件在轨升级中数据和内存以及cpu运行状态的一致性保护,完成基于航天软件的在轨升级。

三、通过远程编程手段在轨修改航天软件,在考核可修改的功能占比和模块占比以及可调节的变量占比的基础上,实现对航天器系统的可维护性进行定量评估。

附图说明

通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本发明的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:

附图1示出了根据本发明实施例一的面向航天软件的在轨升级系统的结构图;

附图2示出了根据本发明实施例一的代码解析模块的结构图

附图3示出了根据本发明实施例二的面向航天软件的在轨升级系统的结构图;

附图4示出了根据本发明实施例二的安全性检查模块的结构图;

附图5示出了根据本发明实施例二的编译模块的结构图;

附图6示出了根据本发明实施例三的面向航天软件的在轨升级方法的流程图。

具体实施方式

下面将参照附图更详细地描述本公开的示例性实施方式。虽然附图中显示了本公开的示例性实施方式,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施方式所限制。相反,提供这些实施方式是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。

实施例一

如图1所示,本发明实施例一提供了一种面向航天软件的在轨升级系统100,所述系统包括如下模块:

存储路径输入模块110,用于在显示界面显示输入框,以使用户在输入框输入待升级目标代码的文件存储路径。其中,所有航天软件在航天器系统中的文件存储路径都在地面系统有备份记录,用户可以在备份记录中查找到需要升级的目标代码的文件存储路径。

代码读取模块120,用于根据所述文件存储路径读取目标代码。

代码解析模块130,用于通过语法分析和词法分析将所述目标代码解析成抽象语法树并保存相应的版本数据以及版本标识。其中,版本标识表示目标代码升级的版本记录,例如初始版本、第二版本、第三版本等。

如图2所示,所述代码解析模块130包括映射生成单元131,以及差异分类单元132。所述映射生成单元131对已经重新排序和修改的函数声明和类型声明,根据抽象语法树生成旧名称与新名称的映射;所述映射包括本地变量映射、全局变量映射和类型映射;全局变量计数器对全局变量个数进行统计,此处统计全局变量个数可以用于后续确定更新点。所述差异分类单元132访问遍历所述当前版本以及所述前一版本中的函数、全局变量和类型,以检测变更数据并收集统计信息,生成变更检测报告,将所述变更检测报告中的每个变更分类为添加、删除或更改,也就是说,将统计每个变更时,都会相应地对该变更的类型进行标记,例如该变更为删除变更。每当检测所述当前版本以及所述前一版本的抽象语法树不匹配时,提示用户检查确认函数语义的变更。提示用户确认可以采用在显示界面弹框的方式,例如当算法检测到一个函数不匹配时,显示界面弹出一个包括确定按钮和跳过按钮的弹框提示,用户可以在确认该不匹配后点击确定按钮,以记录该不匹配的函数。确定对类型和变量的更改后,如果旧的抽象语法树和新的不匹配(功能模块名称更改),则认为这是对该函数的主体的更改,并将在下次更新时替换整个函数。

版本判断模块140,用于根据所述版本标识判断所述目标代码是否为初始版本。

升级标记插入模块150,用于若所述目标代码是初始版本,则在所述目标代码中对长循环代码进行提取,并在所述目标代码中插入所述长循环代码对应的在轨升级标记。其中,长循环代码为多次循环执行的代码模块,其往往是需要更新升级的代码模块,因此,在目标代码中提取出长循环代码的位置插入在轨升级标记,以便于后续的更新升级。

代码升级模块160,用于将新代码上载至航天器系统,并根据所述在轨升级标记对所述目标代码进行升级,并开始执行。其中,当目标代码处于停止运行状态时,根据升级标记用新代码将待更新的功能模块进行替换,并开始执行新代码。

本实施例提供的面向航天软件的在轨升级系统,可以通过对需要在轨升级的软件进行编译链接操作,并使用户划定需要升级的功能模块,再实施基于数据的载荷参数优化、基于代码的可靠性提升、基于整体的故障处理,来实现在线回归测试和系统在线重构,从而实现对航天软件的在轨升级。

实施例二

如图3所示,本发明实施例二提供了一种面向航天软件的在轨升级系统200,在上述实施例一的基础上,所述系统还包括如下模块:

安全性检查模块210,用于若所述目标代码不是初始版本,则对当前版本以及前一版本的抽象语法树进行分析,遍历两个抽象语法树的所有子树,检查函数、全局变量和类型的变更安全性。

如图4所示,所述安全性检查模块210包括静态分析单元211,以及不动点确定单元212。所述静态分析单元211使用基于抽象解释的静态分析方法,将抽象语法树转化成状态迁移系统,选择程序控制流图表示源代码的状态迁移关系。所述不动点确定单元212追踪类型名称的变化并检查违规的抽象别名,构建特定的抽象域,将程序的具体语义转化到抽象语义上;结合所述抽象域和所述控制流图的信息,运用抽象解释中的迭代策略计算所述控制流图中所有节点的不动点抽象值,根据所述不动点抽象值确定变更安全性。

声明识别模块220,用于若通过变更安全性检查,则识别所述当前版本以及所述前一版本间有升级的所有声明,所述声明包括函数声明,全局变量声明、类型声明;对所述类型声明的变更生成相应的类型转换函数。

编译模块230,用于编译处理所述声明,并将更新点设置在全局不变量所在的位置,以简化有关变更安全性和编写更新的推理,所述更新点为对当前版本进行替换的位置。

如图5所示,所述编译模块230包括间接引用增加单元231,以及约束添加单元232。所述间接引用增加单元231检查代码的类型安全性,即检查新函数或当前函数的签名,在所述新函数中增加函数的间接引用。所述约束添加单元232确定静止点,并在所述静止点中选择更新点,在插入的更新点上对更改的类型添加约束,所述静止点为程序中完成所有操作并且在所有全局状态是一致的点,所述约束为类型的更新规则。

版本替换模块240,用于将新版本代码上载至航天器系统,并根据所述更新点在内存中替换所述当前版本。

二次开发模块250,用于若没有通过变更安全性检查,则识别所述当前版本以及所述前一版本间有升级的所有声明,对没有通过变更安全性检查的声明对应的代码模块实施二次开发。

本实施例提供的面向航天软件的在轨升级系统,通过对类型、变量函数进行静态分析来保证软件在轨升级的稳定性和可靠性,实现软件在轨升级中数据和内存以及cpu运行状态的一致性保护,完成基于航天软件的在轨升级。

实施例三

如图6所示,本发明实施例三提供了一种面向航天软件的在轨升级方法,包括以下步骤:

步骤a:存储路径输入模块在显示界面显示输入框,用户在输入框输入待升级目标代码的文件存储路径。读取后跳转至步骤b;

步骤b:代码读取模块读取目标代码文件,代码解析模块通过语法分析和词法分析将所述目标代码解析成抽象语法树并保存相应的版本数据以及版本标识。解析完成后跳转至步骤c;

步骤c:版本判断模块根据所述版本标识判断所述目标代码是否为初始版本。若程序是初始版本,跳转至步骤d;若不是,跳转至步骤e;

步骤d:升级标记插入模块在所述目标代码中对长循环代码进行提取,并在所述目标代码中插入所述长循环代码对应的在轨升级标记。完成后跳转至步骤f;

步骤e:安全性检查模块对当前版本以及前一版本的抽象语法树进行分析,遍历两个抽象语法树的所有子树,检查函数、全局变量和类型的变更安全性。若通过检查跳转至步骤g,否则跳转至步骤h;

步骤f:代码升级模块将新代码上载至航天器系统,并根据所述在轨升级标记对所述目标代码进行升级,并开始执行;

步骤g:声明识别模块识别所述当前版本以及所述前一版本间有升级的所有声明,所述声明包括函数声明,全局变量声明、类型声明;对所述类型声明的变更生成相应的类型转换函数;跳转至步骤i;

步骤h:二次开发模块对有安全隐患的升级模块实施二次开发;

步骤i:编译模块编译处理相关升级信息并将更新点放置在全局不变量所在的位置,简化有关更新安全性和编写更新的推理。跳转至步骤j;

步骤j:版本替换模块将新版本在线发布至航天器系统,在内存中替换旧模块;

需要说明的是:

在此提供的算法和显示不与任何特定计算机、虚拟装置或者其它设备固有相关。各种通用装置也可以与基于在此的示教一起使用。根据上面的描述,构造这类装置所要求的结构是显而易见的。此外,本发明也不针对任何特定编程语言。应当明白,可以利用各种编程语言实现在此描述的本发明的内容,并且上面对特定语言所做的描述是为了披露本发明的最佳实施方式。

在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本发明的实施例可以在没有这些具体细节的情况下实践。在一些实例中,并未详细示出公知的系统、结构和技术,以便不模糊对本说明书的理解。

类似地,应当理解,为了精简本公开并帮助理解各个发明方面中的一根或多根,在上面对本发明的示例性实施例的描述中,本发明的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。然而,并不应将该公开的系统解释成反映如下意图:即所要求保护的本发明要求比在每个权利要求中所明确记载的特征更多的特征。更确切地说,如下面的权利要求书所反映的那样,发明方面在于少于前面公开的单个实施例的所有特征。因此,遵循具体实施方式的权利要求书由此明确地并入该具体实施方式,其中每个权利要求本身都作为本发明的单独实施例。

本领域那些技术人员可以理解,可以对实施例中的设备中的模块进行自适应性地改变并且把它们设置在与该实施例不同的一根或多根设备中。可以把实施例中的模块或单元或组件组合成一个模块或单元或组件,以及此外可以把它们分成多个单元或子单元或子组件。除了这样的特征和/或过程或者单元中的至少一些是相互排斥之外,可以采用任何组合对本说明书(包括伴随的权利要求、摘要和附图)中公开的所有特征以及如此公开的任何系统或者设备的所有过程或单元进行组合。除非另外明确陈述,本说明书(包括伴随的权利要求、摘要和附图)中公开的每个特征可以由提供相同、等同或相似目的的替代特征来代替。

此外,本领域的技术人员能够理解,尽管在此所述的一些实施例包括其它实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本发明的范围之内并且形成不同的实施例。例如,在下面的权利要求书中,所要求保护的实施例的任意之一都可以以任意的组合方式来使用。

本发明的各个部件实施例可以以硬件实现,或者以在一个或者多个处理器上运行的软件模块实现,或者以它们的组合实现。本领域的技术人员应当理解,可以在实践中使用微处理器或者数字信号处理器(dsp)来实现根据本发明实施例的虚拟机的创建装置中的一些或者全部部件的一些或者全部功能。本发明还可以实现为用于执行这里所描述的系统的一部分或者全部的设备或者装置程序(例如,计算机程序和计算机程序产品)。这样的实现本发明的程序可以存储在计算机可读介质上,或者可以具有一个或者多个信号的形式。这样的信号可以从因特网网站上下载得到,或者在载体信号上提供,或者以任何其他形式提供。

应该注意的是上述实施例对本发明进行说明而不是对本发明进行限制,并且本领域技术人员在不脱离所附权利要求的范围的情况下可设计出替换实施例。在权利要求中,不应将位于括号之间的任何参考符号构造成对权利要求的限制。单词“包含”不排除存在未列在权利要求中的元件或模块。位于元件之前的单词“一”或“一个”不排除存在多个这样的元件。本发明可以借助于包括有若干不同元件的硬件以及借助于适当编程的计算机来实现。在列举了若干装置的单元权利要求中,这些装置中的若干个可以是通过同一个硬件项来具体体现。单词第一、第二、以及第三等的使用不表示任何顺序。可将这些单词解释为名称。

以上所述,仅为本发明较佳的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以所述权利要求的保护范围为准。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1