可恢复的驻留式星载软件在轨编程方法与流程

文档序号:14266152阅读:366来源:国知局
可恢复的驻留式星载软件在轨编程方法与流程

本发明涉及星载软件技术领域,特别涉及一种可恢复的驻留式星载软件在轨编程方法。



背景技术:

处于复杂空间环境中的飞行器,极易受到太阳风、空间电磁风暴、空间高能粒子和宇宙射线的威胁。运行于其上的嵌入式软件,诸如星载管理软件、星务软件等,是卫星的控制核心,对可靠性、安全性、可维护性以及使用寿命都有着较高的要求。卫星发射之后,还可能面临着如下两个问题:

(1)软件存在缺陷需要改进;

(2)软件功能需要增加。

卫星一旦发射,便不能像在地面上一样通过重新编译代码来修改程序,相应的,软件的可维护性也随之大幅降低。因此必须采用一定的技术方法实现星载软件的在轨维护,在轨编程技术便是一个可行的技术手段。

星载软件在轨编程技术已经在航天工程中得到应用,现有技术中,在轨编程方法有:1.sram在轨编程,也是本发明不可缺少的前期工作,通过地面数据注入更新星载软件的正在运行的内存中的程序代码,动态实现软件功能的改进;2.eeprom在轨编程,通过遥控注数修改eeprom中存储的原始软件代码,实现星载软件可驻留的在轨编程。但是,对于方法1,采用sram在轨编程的缺点是:不能将在轨编程的信息固化到eeprom中,一旦断电或复位,eeprom中的程序被搬至sram运行,所有之前的在轨编程信息将丢失,需要重新进行sram在轨编程才能恢复至复位之前的状态,影响卫星任务的正常运行;对于方法2,修改eeprom中存储原始代码方式的缺点是:直接注数修改存储在eeprom中的原始代码,未经过在轨验证,且破坏了原始代码,如果对eeprom的修改在轨运行不理想,就会陷入运行不理想却又无法恢复到最初状态的严重问题。



技术实现要素:

本发明的目的在于提供一种可恢复的驻留式星载软件在轨编程方法,以解决现有的星载软件在轨编程所存在的断电或复位后在轨编程前代码不可恢复、在轨编程后信息丢失的问题。

为实现上述目的,本发明提供了一种可恢复的驻留式星载软件在轨编程方法,包括以下步骤:

a.搭建考核系统平台;

b.在所述考核系统平台执行成熟的sram在轨编程流程完毕后,并经在轨验证在轨编程信息无误后,上注遥控指令,以将所述在轨编程信息固化到eeprom的空闲区域中;

其中,所述成熟的sram在轨编程流程包括如下三步:○1交叉编译更改后的代码,生成更改后的二进制目标代码;○2提取需要上注的更新目标代码,并按照数据包的格式进行组帧;○3上注数据包并进行sram在轨编程,所述数据包包括:设置“覆盖信息结构表”数据包、数据包更新数据包、校验数据包及提交数据包;

c.在发生断电等原因复位后,存储在eeprom的原始代码和存储在eeprom空闲区域的在轨编程信息被搬至sram中,由地面上注遥控指令,以决定只运行原始代码,还是运行在轨编程后的程序。

较佳地,所述考核系统平台包括:

pc机,其安装有linux操作系统,用来进行交叉编译生成所述二进制目标代码;

星载计算机地面测试设备,用于对所述二进制目标代码进行数据组帧得到所述数据包,并发送所述数据包及遥控指令,及显示程序运行状态;

星载计算机,用于接收所述数据及遥控指令,并运行所述数据中的在轨编程代码、对在运行的程序进行实时更新;

其中,所述星载计算机地面测试设备和星载计算机通过串口连接。

较佳地,执行成熟的sram在轨编程流程包括:在sram注入数据包,所述数据包包括:设置“覆盖信息结构表”数据包、更新数据包、校验数据包、提交数据包;然后进行sram在轨编程结束并运行后,经过在轨验证无误,将所述在轨编程信息固化到eeprom的空闲区域中。

较佳地,所述步骤c中,若需要运行在轨编程后的程序,则上传提交数据包,星载软件在接收到提交数据包后执行sram在轨编程的最后一步,最后一步包括:取出“覆盖信息结构表”的crc值与在轨编程区中新函数的代码的crc值进行比较,若一致,则更改旧函数的前三条指令为跳转到新函数的指针,至此该可恢复的驻留式星载软件在轨编程方法的执行过程结束。

较佳地,上注所述设置“覆盖信息结构表”数据包、更新数据包、校验数据包、提交数据包和遥控指令时均通过测控天线发送。

本发明具有以下有益效果:

本发明与现有技术相比,具有如下显而易见的突出实质性特点和显著优点:区别于传统的只对运行在sram中程序进行在轨编程的方法,该方法不能将在轨编程的信息固化到eeprom中,一旦断电重启,在轨编程的数据将全部丢失,有可能会造成严重后果;区别于传统的对eeprom区的在轨编程方法,该方法都是通过遥控上注,直接修改eeprom的原始程序,该修改并未得到在轨验证,一旦修改后的存储在eeprom的程序在轨运行不理想,就会陷入无法恢复到最初状态的严重问题。

本发明中的方法可以在充分验证在轨编程后程序正确性的基础上,不修改eeprom中原始代码,无需担心断电或复位会丢失在轨编程信息,无需担心不能恢复到星载软件的最初状态,实现对原始代码的可恢复驻留式在轨编程。综上所述,本发明方法可以作为星载软件在轨编程的方法,尤其在航天领域具有较好的工程应用价值。

附图说明

图1为本发明的一个优选实施实例结构示意图。

图2为本发明的操作过程图。

图3为星载计算机可恢复驻留式在轨编程的过程图。

图4为可恢复驻留式在轨编程实验结果图。

具体实施方式

以下将结合本发明的附图,对本发明实施例中的技术方案进行清楚、完整的描述和讨论,显然,这里所描述的仅仅是本发明的一部分实例,并不是全部的实例,基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明的保护范围。

为了便于对本发明实施例的理解,下面将结合附图以具体实施例为例作进一步的解释说明,且各个实施例不构成对本发明实施例的限定。

本发明提供的可恢复的驻留式星载软件在轨编程方法,主要包括以下步骤:

a.搭建考核系统平台;

b.在所述考核系统平台执行成熟的sram在轨编程流程完毕后,并经在轨验证在轨编程信息无误后,上注遥控指令,以将所述在轨编程信息固化到eeprom的空闲区域中;

其中,所述成熟的sram在轨编程流程包括如下三步:○1交叉编译更改后的代码,生成更改后的二进制目标代码;○2提取需要上注的更新目标代码,并按照数据包的格式进行组帧;○3上注数据包并进行sram在轨编程,所述数据包包括:设置“覆盖信息结构表”数据包、数据包更新数据包、校验数据包及提交数据包;

c.在发生断电等原因复位后,存储在eeprom的原始代码和存储在eeprom空闲区域的在轨编程信息被搬至sram中,由地面上注遥控指令,以决定只运行原始代码,还是运行在轨编程后的程序。

参考图1所示,步骤a所建立的考核系统平台包括:

pc机1,其安装有linux操作系统,用来进行交叉编译生成所述二进制目标代码;

星载计算机地面测试设备2,用于对所述二进制目标代码进行数据组帧得到所述数据包,并发送所述数据包及遥控指令,及显示程序运行状态;

星载计算机3,用于接收所述数据及遥控指令,并运行所述数据中的在轨编程代码、对在运行的程序进行实时更新;

其中,星载计算机地面测试设备2和星载计算机3通过串口连接。

步骤b中,执行成熟的sram在轨编程流程具体包括:在sram注入数据包,所述数据包包括:设置“覆盖信息结构表”数据包、更新数据包、校验数据包、提交数据包;然后进行sram在轨编程结束并运行后,经过在轨验证无误,将所述在轨编程信息固化到eeprom的空闲区域中。

而步骤c中,若需要运行在轨编程后的程序,则上传提交数据包,星载软件在接收到提交数据包后执行sram在轨编程的最后一步,最后一步包括:取出“覆盖信息结构表”的crc值与在轨编程区中新函数的代码的crc值进行比较,若一致,则更改旧函数的前三条指令为跳转到新函数的指针,至此该可恢复的驻留式星载软件在轨编程方法的执行过程结束。

其中,上述步骤中,在进行上注设置“覆盖信息结构表”数据包、更新数据包、校验数据包、提交数据包和遥控指令时均通过测控天线发送。

该方法的整体的设计思路如下两个部分,具体为:

(1)进行已经成熟的sram在轨编程,该过程需要设计四种类型的数据包用来上注:设置“覆盖信息结构表”数据包、更新数据包、校验数据包、提交数据包。

具体为,当发现需要对在轨运行程序进行sram在轨编程时,在进行交叉编译的pc机1中进行交叉编译(交叉编译是指,在某个主机平台上用交叉编译器编译出可在其他平台上运行的代码的过程),并且按照四种数据包的格式,将相关信息填入到各个数据包中,通过测控系统将数据包从地面发送出去,到达卫星星载计算机3。

在内存中开辟一片区域用来放置“覆盖信息结构表”和在轨编程后的新函数的代码,取名叫做在轨编程区。其中“覆盖信息结构表”由多个结构体组成,结构体中的元素包括:在轨编程原函数地址、在轨编程新函数地址、在轨编程新函数长度、此结构体是否使用、函数代码crc校验码。

sram在轨编程程序模块会根据接收到数据包标识区别出四种不同的数据包,进行相应的操作。其中最关键的一步是sram在轨编程的最后一个数据包提交数据包上注后,星载软件在判断注入代码都正确后,将旧函数的前三句指令改变成跳转指令,跳转的目的地址即为在轨编程区的新代码的首地址。

(2)设计实现写内存数据到eeprom模块,该模块根据地面上注遥控指令将覆盖信息结构表和在轨编程后的新函数的代码写入到eeprom中指定位置。

具体为,在轨编程区在执行完sram在轨编程后会放置“覆盖信息结构表”和在轨编程后的新函数的代码。sram在轨编程后运行无误,上注遥控指令,星载软件中的写内存数据到eeprom模块接收到遥控指令后,将在轨编程区的“覆盖信息结构表”和在轨编程后的新函数的代码固化到eeprom的空闲区,这些信息在断电或复位后会被prom中引导软件搬至在轨编程区。由于prom中引导软件的将eeprom中的代码搬至sram运行的功能,和本发明中的在轨编程新方法没有直接联系,故不进行更多说明。

下面结合附图1及附图2是对某卫星星载软件进行可恢复的驻留式在轨编程验证。

首先搭建考核系统平台,系统采用如图1所示的结构,包括一台安装linux操作系统的用来进行交叉编译的pc机1,一个进行数据组帧发送、显示程序运行状态的星载计算机地面测试设备2以及星载计算机3,上述设备所提供的具体功能如下:

安装linux操作系统的用来进行交叉编译的pc机1:对程序进行交叉编译,以便生成对软件模块在轨编程后可以被组帧的二进制目标代码。

进行数据组帧发送、显示程序运行状态的星载计算机地面测试设备2:对在交叉编译的pc机1上生成的二进制目标代码按照数据包的格式进行组帧,并将数据包和写内存数据到eeprom遥控指令发送出去,通过串口和星载计算机相连,对程序运行的状态进行显示。

星载计算机3:运行星载软件的单机,接收上注的在轨编程的代码,并对正在运行的程序进行实时更新,将存储在内存在轨编程区的在轨编程信息固化到eeprom中,在断电或复位后重新加载eeprom中存储的星载软件原始代码和在轨编程后的新信息。

整个平台工作时的操作过程如图2所示,一次完整的可恢复的驻留式在轨编程流程包括以下步骤:

(1)当需要对在轨运行的代码进行可恢复驻留式在轨编程时,首先进行sram在轨编程,步骤如下:在进行交叉编译的pc机1上对更改后的代码进行交叉编译,生成更改后的二进制目标代码;在星载计算机地面测试设备2上将需要上注的更新目标代码提取出来,并按照数据包的格式进行组帧;依次上注4个数据包,包括设置“覆盖信息结构表”数据包、更新数据包、校验数据包、提交数据包。具体格式内容如表1:

表1注入数据包格式表

(2)sram在轨编程结束后,软件正常运行后,上注遥控指令,星载软件的写内存数据到eeprom模块接收到遥控指令后将内存中在轨编程区的“覆盖信息结构表”和在轨编程后的新函数的代码写入到eeprom中的空闲区。

(3)断电或其他原因引起复位后,eeprom中原星载软件和在轨编程信息被加载至内存中,上注提交数据包,选择运行在轨编程后程序。

注入过程在实际型号中是通过测控天线发送到太空中运行的卫星,为使该方法能够被完整的验证,本发明中通过串口连接星载计算机地面测试设备2和星载计算机3,以实现代码和指令的上注。星载计算机3接收到注入数据包对代码进行sram在轨编程,在接收到遥控指令后将内存中信息写入eeprom空闲区,并在断电复位后根据地面的注数包选择恢复在轨编程前状态或运行在轨编程后新程序。

星载计算机3可恢复的驻留式在轨编程软件的过程图如图3所示。

利用上述方法和步骤对星载计算机3软件可恢复的驻留式星载软件在轨编程功能进行了实验,图4为实验的结果。可以看到,在轨编程前程序输出结果为:“task”,sram在轨编程成功并将信息固化到eeprom,再断电复位,未上注遥控指令时,星载软件恢复运行在轨编程前旧代码,输出在轨编程前信息:“task”;上注遥控指令,星载软件选择执行在轨编程后程序,程序的输出结果为:“new_task”,可恢复的驻留式星载软件在轨编程实验成功。

该方法适用于基于erc32平台的航天星载软件。利用本发明方法,对于需要在轨编程的软件模块,无需破坏eeprom中的原始代码,就能实现断电或复位后在轨编程前代码可恢复、在轨编程后信息不丢失,根据需求可以快速地选择运行在轨编程前旧程序或在轨编程后的新程序,即能实现可恢复的驻留式星载软件在轨编程的目的。

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

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