CN111506330A - 一种程序更新方法、装置、星务计算机及存储介质 - Google Patents

一种程序更新方法、装置、星务计算机及存储介质 Download PDF

Info

Publication number
CN111506330A
CN111506330A CN202010329738.8A CN202010329738A CN111506330A CN 111506330 A CN111506330 A CN 111506330A CN 202010329738 A CN202010329738 A CN 202010329738A CN 111506330 A CN111506330 A CN 111506330A
Authority
CN
China
Prior art keywords
program
program code
code
computer
area
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202010329738.8A
Other languages
English (en)
Inventor
苏帆
孔令波
高恩宇
梁军民
梁辉
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing MinoSpace Technology Co Ltd
Original Assignee
Beijing MinoSpace Technology Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Beijing MinoSpace Technology Co Ltd filed Critical Beijing MinoSpace Technology Co Ltd
Priority to CN202010329738.8A priority Critical patent/CN111506330A/zh
Publication of CN111506330A publication Critical patent/CN111506330A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)

Abstract

本申请提供一种程序更新方法、装置、星务计算机及存储介质,该方法应用于星务计算机,包括:从星务计算机的程序存储区获取第一程序代码;判断第一程序代码与星务计算机的程序运行区中的第二程序代码是否相同;若否,则使用第一程序代码替换程序运行区中的第二程序代码,并执行程序运行区中的第一程序代码。在上述的实现过程中,通过整体替换程序代码的方式替换了采用补丁方式进行更新,从而使得在轨卫星上的星务计算机上正在运行的程序代码得到更新,有效地提高了对在轨卫星上的星务计算机进行程序更新的可靠性,改善了对在轨卫星上的星务计算机进行程序更新的可靠性非常低的技术问题。

Description

一种程序更新方法、装置、星务计算机及存储介质
技术领域
本申请涉及计算机数据处理的技术领域,具体而言,涉及一种程序更新方法、装置、星务计算机及存储介质。
背景技术
星务计算机,是指运行在人造卫星中的计算机,星务计算机是小卫星信息系统核心,主要负责卫星的任务调度和综合信息处理工作;通常星务计算机可以包括存储程序的程序存储区和运行程序的程序运行区,其中,程序运行区仅能够存储一个程序代码,程序运行区中的程序代码是一个完整且连续的运行代码,必须作为一个整体连续运行,不允许中断退出。
目前,星务计算机的程序更新采用补丁方式进行更新的可靠性较低,目前的星务计算机的应用程序必须作为一个整体连续运行,不允许中断退出,因此,难以实现新添一个程序补丁对原程序进行修补或者修改,再用修补或者修改后的程序替代原有程序运行;也就是说,采用补丁方式对在轨卫星上的星务计算机进行程序更新的可靠性非常低。
发明内容
本申请实施例的目的在于提供一种程序更新方法、装置、星务计算机及存储介质,用于改善对在轨卫星上的星务计算机进行程序更新的可靠性非常低的问题。
本申请实施例提供了一种程序更新方法,应用于星务计算机,包括:从星务计算机的程序存储区获取第一程序代码;判断第一程序代码与星务计算机的程序运行区中的第二程序代码是否相同;若否,则使用第一程序代码替换程序运行区中的第二程序代码,并执行程序运行区中的第一程序代码。在上述的实现过程中,判断从程序存储区获取的第一程序代码与程序运行区中的第二程序代码是否相同;若不相同,则使用第一程序代码替换程序运行区中的第二程序代码,并执行程序运行区中的第一程序代码;通过整体替换程序代码的方式替换了采用补丁方式进行更新,从而让程序代码作为一个整体更新至程序运行区,待星务计算机下一次重启时执行更新后的程序代码,以避免程序代码被更新中断退出运行的情况,使得在轨卫星上的星务计算机上正在运行的程序代码得到更新,有效地提高了对在轨卫星上的星务计算机进行程序更新的可靠性,改善了对在轨卫星上的星务计算机进行程序更新的可靠性非常低的技术问题。
可选地,在本申请实施例中,在从星务计算机的程序存储区获取第一程序代码之前,还包括:接收通信机发送的多个数据帧;判断多个数据帧是否接收完成;若否,则对多个数据帧中已经接收到的每个数据帧进行校验;若是,则根据多个数据帧生成第一程序代码,并在对第一程序代码进行校验通过后,将第一程序代码存储至程序存储区。在上述的实现过程中,通过对接收到的多个数据帧判断是否接收完成;若没有接收完成,则对每个数据帧校验,若接收完成,则对整个第一程序代码进行校验后,将第一程序代码存储在程序存储区,以便星务计算机下一次重启时执行程序更新;从而保证了第一程序代码在网络传输和计算机处理的过程中不被修改或破坏,有效地保证了待更新的第一程序代码的完整性和正确性。
可选地,在本申请实施例中,将第一程序代码存储至程序存储区,包括:在星务计算机的引导加载程序运行时,判断在预设时长内是否接收到预设字符串,预设字符串表征存储并更新程序运行区中的程序代码的指令;若是,则将第一程序代码存储至程序存储区和程序运行区。在上述的实现过程中,通过在星务计算机的引导加载程序运行时,若在预设时长内接收到预设字符串,则将第一程序代码存储至程序存储区和程序运行区;从而提高星务计算机在地面调试时的工作效率,加快了星务计算机从调试状态到在轨运行状态的速度。
可选地,在本申请实施例中,程序存储区包括:多个存储区;从星务计算机的程序存储区获取第一程序代码,包括:从多个存储区中的对应位置处按字节提取出至少两个相同的代码片段,获得多个代码片段;将多个代码片段进行拼接,获得第一程序代码。在上述的实现过程中,通过从多个存储区中的对应位置处按字节提取出至少两个相同的代码片段,获得多个代码片段;并将多个代码片段进行拼接,获得第一程序代码;也就是说,通过冗余存储的方式来存储程序代码,使得即使多个存储区中的存储区出现错误,也可以从剩余的存储区还原出正确的数据,有效地提高了获得第一程序代码的完整性和安全性。
可选地,在本申请实施例中,使用第一程序代码替换程序运行区中的第二程序代码,包括:计算多个代码片段的第一校验码,第一校验码表征在第一程序代码传输之后的校验标志;从多个存储区中读取第二校验码,第二校验码表征在第一程序代码传输之前的校验标志;判断第一校验码与第二校验码是否相同;若是,则使用第一程序代码替换程序运行区中的第二程序代码。在上述的实现过程中,通过判断第一校验码与第二校验码是否相同;若是,则使用第一程序代码替换程序运行区中的第二程序代码;从而确保程序代码在网络传输或者计算机处理的过程中没有出现错误,有效地提高了程序代码在网络传输或者计算机处理的过程中的完整性和可用性。
可选地,在本申请实施例中,在判断第一校验码与第二校验码是否相同之后,还包括:若第一校验码与第二校验码不相同,则执行程序运行区中的第二程序代码。在上述的实现过程中,通过若第一校验码与第二校验码不相同,则执行程序运行区中的第二程序代码;从而确保程序代码在网络传输或者计算机处理的过程中没有出现错误,有效地提高了程序代码在网络传输或者计算机处理的过程中的完整性和可用性。
可选地,在本申请实施例中,在判断第一程序代码与星务计算机的程序运行区中的第二程序代码是否相同之后,还包括:若第一程序代码与第二程序代码相同,则执行程序运行区中的第二程序代码。
本申请实施例还提供了一种程序更新装置,应用于星务计算机,包括:程序代码获取模块,用于从星务计算机的程序存储区获取第一程序代码;程序代码判断模块,用于判断第一程序代码与星务计算机的程序运行区中的第二程序代码是否相同;程序代码替换模块,用于若第一程序代码与星务计算机的程序运行区中的第二程序代码不相同,则使用第一程序代码替换程序运行区中的第二程序代码,并执行程序运行区中的第一程序代码。
可选地,在本申请实施例中,程序更新装置,还包括:数据帧接收模块,用于接收通信机发送的多个数据帧;数据帧判断模块,用于判断多个数据帧是否接收完成;数据帧校验模块,用于若多个数据帧没有接收完成,则对多个数据帧中已经接收到的每个数据帧进行校验;数据帧存储模块,用于若多个数据帧接收完成,则根据多个数据帧生成第一程序代码,并在对第一程序代码进行校验通过后,将第一程序代码存储至程序存储区。
可选地,在本申请实施例中,数据帧存储模块,包括:指令接收判断模块,用于在星务计算机的引导加载程序运行时,判断在预设时长内是否接收到预设字符串,预设字符串表征存储并更新程序运行区中的程序代码的指令;程序代码存储模块,用于若在预设时长内接收到预设字符串,则将第一程序代码存储至程序存储区和程序运行区。
可选地,在本申请实施例中,程序存储区包括:多个存储区;程序代码获取模块,包括:代码片段获得模块,用于从多个存储区中的对应位置处按字节提取出至少两个相同的代码片段,获得多个代码片段;代码片段拼接模块,用于将多个代码片段进行拼接,获得第一程序代码。
可选地,在本申请实施例中,程序代码替换模块,包括:第一校验码获得模块,用于计算多个代码片段的第一校验码,第一校验码表征在第一程序代码传输之后的校验标志;第二校验码获得模块,用于从多个存储区中读取第二校验码,第二校验码表征在第一程序代码传输之前的校验标志;校验码判断模块,用于判断第一校验码与第二校验码是否相同;代码替换子模块,用于若第一校验码与第二校验码相同,则使用第一程序代码替换程序运行区中的第二程序代码。
可选地,在本申请实施例中,程序代码替换模块,还包括:第一代码执行模块,用于若第一校验码与第二校验码不相同,则执行程序运行区中的第二程序代码。
可选地,在本申请实施例中,程序更新装置,还包括:第二代码执行模块,用于若第一程序代码与第二程序代码相同,则执行程序运行区中的第二程序代码。
本申请实施例还提供了一种星务计算机,包括:处理器和存储器,存储器存储有处理器可执行的机器可读指令,机器可读指令被处理器执行时执行如上面描述的方法。
本申请实施例还提供了一种存储介质,该存储介质上存储有计算机程序,该计算机程序被处理器运行时执行如上面描述的方法。
附图说明
为了更清楚地说明本申请实施例的技术方案,下面将对本申请实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本申请的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
图1示出的本申请实施例提供的程序更新方法的流程示意图;
图2示出的本申请实施例提供的星务计算机获得第一程序代码的路径示意图;
图3示出的本申请实施例提供的星务计算机的芯片存储分布关系示意图;
图4示出的本申请实施例提供的程序代码的接收存储方法的流程示意图;
图5示出的本申请实施例提供的引导加载程序启动后的流程示意图;
图6示出的本申请实施例提供的程序更新装置示意图;
图7示出的本申请实施例提供的星务计算机的结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整的描述。
在介绍本申请实施例提供的程序更新方法之前,先介绍本申请实施例所涉及的一些概念:
程序代码,又被称为代码程序,是指星务计算机代码或者星务计算机程序(Computer Program),星务计算机代码或者星务计算机程序是一组构建计算机程序的指令,即星务计算机所执行的命令。在具体的实践过程中,当星务计算机代码被编译和链接后,获得的可执行指令的集合可以理解为星务计算机程序,这里将星务计算机代码或者星务计算机程序暂时不加以区分地称为程序代码。
片段(Snippet)是一个编程用语,指的是源代码、机器代码、文本中可重复使用的小区块。通常它们是有正式定义的运行单位,以纳入更大的编程模块。片段经常用来明晰其他“凌乱”函数的功用,或尽量减少使用与其他函数共享的重复代码。
单粒子翻转(SingleEvent Upset,SEU),航天电子学术语,原因是在空间环境下存在着大量高能带电粒子,计算机中的电子元器件受到地球磁场、宇宙射线等照射,引起电位状态的跳变,“0”变成“1”,或者“1”变成“0”,但一般不会造成器件的物理性损伤。
静态随机存取存储器(Static Random Access Memory,SRAM)是随机存取存储器的一种;所谓的“静态”,是指这种存储器只要保持通电,一般情况下,在SRAM里面储存的数据就可以恒常保持;但也有特殊情况,这些情况例如:单粒子翻转是宇宙中单个高能粒子射入半导体器件灵敏区,可能存在使器件逻辑状态翻转的现象;最容易发生SEU的是像随机存取存储器(Random Access Memory,RAM)这种利用双稳态进行存储的器件,其次是中央处理器(Central Processing Unit,CPU),再其次是其它的接口电路。随着芯片集成度的增加,发生SEU错误的可能性也随之增大。
循环冗余校验(Cyclic redundancy check,CRC)是一种根据网络数据包或电脑文件等数据产生简短固定位数校验码的一种散列函数,主要用来检测或校验数据传输或者保存后可能出现的错误;生成的数字在传输或者存储之前计算出来并且附加到数据后面,然后接收方进行检验确定数据是否发生变化。
需要说明的是,本申请实施例提供的程序更新方法可以被星务计算机执行,这里的星务计算机是指具有执行计算机程序功能的电子设备;这里的星务计算机,是指运行在人造卫星中的计算机,星务计算机是小卫星信息系统核心,主要负责卫星的任务调度和综合信息处理工作;通常星务计算机可以包括存储程序的程序存储区和运行程序的程序运行区,其中,程序运行区仅能够存储一个程序代码,程序运行区中的程序代码是一个完整且连续的运行代码。
在介绍本申请实施例提供的程序更新方法之前,先介绍该程序更新方法适用的应用场景,这里的应用场景包括但不限于:使用该程序更新方法更新在地面上的卫星中的星务计算机,或者使用该程序更新方法更新在轨运行的卫星中的星务计算机等。
请参见图1示出的本申请实施例提供的程序更新方法的流程示意图;该程序更新方法应用于星务计算机,该程序更新方法可以包括如下步骤:
步骤S110:从星务计算机的程序存储区获取第一程序代码。
第一程序代码,是指星务计算机需要更新的程序代码,即需要存储在星务计算机的程序运行区的程序代码;由于星务计算机的程序运行区的程序代码是正在实时执行的代码,因此,需要确认即将存入到程序运行区的程序代码是完整且正确的,否则,星务计算机的运行会出现错误。
请参见图2示出的本申请实施例提供的星务计算机获得第一程序代码的路径示意图;上述的第一程序代码的获得方式包括:第一种获得方式,当星务计算机在地面上调试的时候,以串口的方式通过Ymodem协议传输获得第一程序代码,具体例如:通过RS422串口的通信方式使星务计算机复位,具体的复位方式例如:星务计算机接收到特定字符串“@updatecodesuf”,使星务计算机进入程序烧写模式或烧录模型,使用ULINK2的烧录设备将BootLoader烧录至星务计算机的stm32芯片中,具体为通过Ymodem协议上传程序bin文件至星务计算机来更新程序;第二种获得方式,当然,也可以是当在轨运行的星务计算机需要更新程序的时候,通过地检设备和通信机中转的方式使用微波将第一程序代码发送星务计算机,星务计算机接收第一程序代码获得,这里中转的实施方式将在步骤S130之后详细地说明。
程序存储区,也被称为星务程序存储区,或者被称为APP存储区,是指用于存储待更新的程序代码的存储区域,即程序存储区中存放的代码是最新的程序代码,程序存储区中存放的程序代码可以是通过接收待更新代码后,将待更新代码存入程序存储区获得的。在具体的实践过程中,通常一个星务计算机包括多个程序存储区,每个程序存储区又可以包括多个存储区,这里的存储区是指物理存储区域,这里物理存储区域例如:扇区或者磁柱,具体例如:以stm32芯片为例进行说明,本申请实施例采用stm32芯片共有24个扇区,存储区可以为1至3个,当然,芯片的存储区个数也可以根据具体的程序大小来决定。
请参见图3示出的本申请实施例提供的星务计算机的芯片存储分布关系示意图;其中,图中的左边的字符串代表芯片存储的起始地址,右边的存储矩形区域代表各个存储区的物理区域;这里的起始地址并不是要执行的程序代码,而是为了便于理解存储区域的分布而标记的十六进制地址标记符。星务计算机的可以包括:一个引导加载程序(BootLoader)、一个程序运行区(APP程序执行区)和多个程序存储区(APP存储区);其中,多个程序存储区可以是三个程序存储区,从三个程序存储区获取数据时使用“三取二”的方式,具体获取数据的方法将在下面详细地描述;当然上述的多个程序存储区也可以是五个程序存储区,获取数据的方式也可以采用“五取三”的方式。为了便于理解,这里以三个程序存储区为例说明,那么上述的程序存储区包括:第一程序存储区(APP存储区1)、第二程序存储区(APP存储区2)和第三程序存储区(APP存储区3);其中,每个程序存储区都对应一个存储源代码长度和四字节异或和的存储字段。
可以理解的是,在具体的实践过程中,当星务计算机重启或复位时,从星务计算机的程序存储区获取第一程序代码,星务计算机的芯片可以选用stm32芯片,该stm32芯片的具体型号可以为STM32F429IGT6,该stm32芯片的内置存储包括:2M的flash存储区、256K+4K的SRAM,该stm32芯片的外置存储包括:2M的SRAM。
上述步骤S110中的从星务计算机的程序存储区获取第一程序代码的实施方式可以包括如下步骤:
步骤S111:从多个存储区中的对应位置处按字节提取出至少两个相同的代码片段,获得多个代码片段。
代码片段,是指程序代码的部分或者局部,代码片段的划分方式有很多种,以逻辑方式划分具体例如:以一个字符、字节或者数据帧为一个代码片段,以物理方式划分具体例如:以一个扇区、磁柱或者多个扇区为一个代码片段。
上述步骤S111中的从多个存储区中的对应位置处按字节提取出至少两个相同的代码片段的实施方式例如:为了便于理解,这里以每个程序存储区包括五个存储区为例进行说明,且每个存储区使用一个数字代表;假设第一程序存储区包括的五个存储区分别为:1、3、4、6、7;第二程序存储区包括的五个存储区分别为:1、4、5、6、8;第三程序存储区包括的五个存储区分别为:0、4、5、6、7;那么第一至第三程序存储区在对应第一个存储区的位置处分布为1、1和0;容易理解的是,第一程序存储区的第一存储区和第二程序存储区的第一存储区均是1,那么第一存储区的正确代码片段应为1。以此类推,第二程序存储区的第二存储区和第三程序存储区的第二存储区均是4,那么第二存储区的正确代码片段应为4,……,最终获得多个代码片段为1、4、5、6、7。
步骤S112:将多个代码片段进行拼接,获得第一程序代码。
上述步骤S112中的将多个代码片段进行拼接的实施方式例如:若多个代码片段为1、4、5、6、7,可以将多个代码片段进行拼接,获得第一程序代码为14567;具体例如:将上述的多个代码片段组成一个大的缓冲(buff),若这里的代码片段为字节,那么那么就是将多个字节拼接成为大的缓冲。在上述的实现过程中,通过从多个存储区中的对应位置处按字节提取出至少两个相同的代码片段,获得多个代码片段;并将多个代码片段进行拼接,获得第一程序代码;也就是说,通过冗余存储的方式来存储程序代码,使得即使多个存储区中的存储区出现错误,也可以从剩余的存储区还原出正确的数据,有效地提高了获得第一程序代码的完整性和安全性。
在步骤S110之后,执行步骤S120:判断第一程序代码与星务计算机的程序运行区中的第二程序代码是否相同。
第二程序代码,是指星务计算机正在执行的程序代码,星务计算机正在执行的程序代码有可能在运行时出现错误,具体例如:单粒子翻转引起运行区代码出错,而此时的存储区仍然保存着上一次更新的完整程序代码,即第一程序代码,待星务计算机下一次重启时执行上述的程序更新方法,即可恢复原来运行区的正常工作状态。
上述步骤S120中的判断第一程序代码与星务计算机的程序运行区中的第二程序代码是否相同的实施方式例如:若第一程序代码为14567,且程序运行区中的第二程序代码为12345,那么很显然,第一程序代码与第二程序代码是不相同的;若第一程序代码为14567,且第二程序代码为14567,那么很显然,第一程序代码与第二程序代码是相同的;在具体的判断对比过程中,可以按照比特位、单字节或者双字节的方式来对比,也可以使用哈希算法获得哈希值(hash value)来对比。
在步骤S120之后,执行步骤S130:若第一程序代码与第二程序代码不相同,则使用第一程序代码替换程序运行区中的第二程序代码,并执行程序运行区中的第一程序代码。
在具体的实践过程中,若第一程序代码与第二程序代码不相同,还可以置更新标志,具体例如:在星务计算机中的永久存储器中有个更新标志位,若第一程序代码与第二程序代码不相同,将更新标志位置为真,待星务计算机下一次重启直接判断该更新标志位是否为真,若为真直接更新程序,在更新程序后,再将该更新标志位置为假;第一程序代码与第二程序代码不相同可以包括如下两种情况:
第一种情况,待更新的第一程序代码与正在星务计算机中运行的第二程序代码不相同,这种情况表明星务计算机中正在运行的程序代码需要更新;使用第一程序代码替换第二程序代码的过程就是程序更新的过程,在程序更新完成后,就可以执行更新后的程序运行区中的第一程序代码。
第二种情况,星务计算机的程序运行区出现错误,这里的程序运行区出现错误的情况例如:单粒子翻转引起运行区代码出错;此时的程序存储区仍然保存着上一次更新的完整程序代码,即第一程序代码,待星务计算机下一次重启时执行上述的程序更新方法,即将程序存储区中的第一程序代码替换程序运行区中出错的第二程序代码,然后执行第二程序代码,就可以恢复原来运行区的正常工作状态。
上述步骤S130中的使用第一程序代码替换程序运行区中的第二程序代码的实施方式可以包括如下步骤:
步骤S131:计算多个代码片段的第一校验码。
第一校验码,是指表征在第一程序代码传输之后由星务计算机计算出来的校验标志,这里的校验码或者校验标志也可以理解为校验和。
上述步骤S131中的计算多个代码片段的第一校验码的实施方式例如:使用四字节异或校验算法对多个代码片段进行计算,获得四字节异或和,将四字节异或和确定为第一校验码。
步骤S132:从多个存储区中读取第二校验码。
第二校验码,是指表征在第一程序代码传输之前由传输设备计算出来的校验标志,这里的校验码或者校验标志也可以理解为校验和。
上述步骤S132中的从多个存储区中读取第二校验码的实施方式例如:从星务计算机的程序存储区对应的存储区中读取四字节异或和,将该四字节异或和确定为第二校验码,这里的四字节异或和可以参照图2中的四字节异或和。
步骤S133:判断第一校验码与第二校验码是否相同。
上述步骤S133中的判断第一校验码与第二校验码是否相同的实施方式例如:若第一校验码为167,且程序运行区中的第二校验码为123,那么很显然,第一校验码与第二校验码是不相同的;若第一校验码为167,且第二校验码为167,那么很显然,第一校验码与第二校验码是相同的;在具体的判断对比过程中,可以按照比特位、单字节或者双字节的方式来对比。
步骤S134:若第一校验码与第二校验码相同,则使用第一程序代码替换程序运行区中的第二程序代码。
上述步骤S134的实施方式例如:若第一校验码与第二校验码相同,这种情况说明在网络传输过程中,第一程序代码由多个代码片段的传输方式没有出现错误,即第一程序代码在网络传输过程中没有出错,就可以执行程序更新过程,即执行第一程序代码替换程序运行区中的第二程序代码。在上述的实现过程中,通过判断第一校验码与第二校验码是否相同;若是,则使用第一程序代码替换程序运行区中的第二程序代码;从而确保程序代码在网络传输或者计算机处理的过程中没有出现错误,有效地提高了程序代码在网络传输或者计算机处理的过程中的完整性和可用性。
步骤S135:若第一校验码与第二校验码不相同,则执行程序运行区中的第二程序代码。
上述步骤S135的实施方式例如:若第一校验码与第二校验码不相同,这种情况说明第一程序代码在网络传输过程中出错了,就不能执行程序更新过程,需要仍然执行星务计算机的程序执行区中的程序代码,即执行程序运行区中的第二程序代码,以免执行程序更新后,再执行程序运行区中的程序代码出现错误。在上述的实现过程中,通过若第一校验码与第二校验码不相同,则执行程序运行区中的第二程序代码;从而确保程序代码在网络传输或者计算机处理的过程中没有出现错误,有效地提高了程序代码在网络传输或者计算机处理的过程中的完整性和可用性。
在上述的实现过程中,判断从程序存储区获取的第一程序代码与程序运行区中的第二程序代码是否相同;若不相同,则使用第一程序代码替换程序运行区中的第二程序代码,并执行程序运行区中的第一程序代码;通过整体替换程序代码的方式替换了采用补丁方式进行更新,从而让程序代码作为一个整体更新至程序运行区,待星务计算机下一次重启时执行更新后的程序代码,以避免程序代码被更新中断退出运行的情况,使得在轨卫星上的星务计算机上正在运行的程序代码得到更新,有效地提高了对在轨卫星上的星务计算机进行程序更新的可靠性,改善了对在轨卫星上的星务计算机进行程序更新的可靠性非常低的技术问题。
请参见图4示出的本申请实施例提供的程序代码的接收存储方法的流程示意图;图中的星务是指星务计算机,星务上电是指星务计算机接通电源,如果在50毫秒内收到上述的特定字符串,则直接执行程序更新。可选地,在本申请实施例中,在从星务计算机的程序存储区获取第一程序代码之前,还可以先接收程序代码并存储至程序存储区;那么上述的程序更新方法可以包括以下步骤:
步骤S210:星务计算机接收通信机发送的多个数据帧。
可以理解的是,在星务计算机接收通信机发送的多个数据帧之前,还可以将第一程序代码通过地检设备以多个帧数据的方式发送给通信机;通信机接收地检设备发送的第一程序代码,并对第一程序代码的每个帧数据进行CRC校验,若CRC校验通过,则通信机向星务计算机发送第一程序代码;星务计算机接收通信机发送的第一程序代码,以获得第一程序代码。
上述步骤S210中的星务计算机接收通信机发送的多个数据帧的实施方式例如:星务计算机通过网络通信协议、无线通信协议和/或串口通信协议来接收通信机发送的多个数据帧;其中,网络通信协议可以采用传输控制协议/因特网互联协议(TransmissionControl Protocol/Internet Protocol,TCP/IP),无线通信协议可以采用Turbo编码方式,串口通信协议可以采用RS422通信方式。
步骤S220:星务计算机判断多个数据帧是否接收完成。
上述步骤S220中的星务计算机判断多个数据帧是否接收完成的实施方式例如:在多个数据帧中的最后一个数据帧增加结束标志,且将多个数据帧中的每个数据帧均添加上总数标志,因此,可以根据结束标志和总数标志判断多个数据帧是否接收完成。
步骤S230:若多个数据帧没有接收完成,则星务计算机对多个数据帧中已经接收到的每个数据帧进行校验。
上述的步骤S230的实施方式例如:若多个数据帧没有接收完成,则星务计算机使用两字节异或校验算法对多个数据帧中已经接收到的每个数据帧进行校验,从而确认多个数据帧中的每个数据帧是否在网络传输的过程中出错。若校验不通过,则重传该数据帧,若校验通过,则继续校验其它数据帧,直到所有的数据帧均被校验。
步骤S240:若多个数据帧接收完成,则根据多个数据帧生成第一程序代码,并在对第一程序代码进行校验通过后,将第一程序代码存储至程序存储区。
请参见图5示出的本申请实施例提供的引导加载程序启动后的流程示意图;上述步骤S240中的将第一程序代码存储至程序存储区的实施方式包括:
步骤S241:在星务计算机的引导加载程序运行时,判断在预设时长内是否接收到预设字符串。
预设字符串,是指表征存储并更新程序运行区中的程序代码的指令,这里的预设字符串可以是在星务计算机在复位时发送的,也可以是星务计算机的引导加载程序运行时接收到的。
上述的步骤S241的实施方式例如:在引导加载程序BootLoader启动时在预设时长接收到的,这里的预设时长例如可以是50ms内;这里的预设字符串可以根据具体情况进行设置。
步骤S242:若在预设时长内接收到预设字符串,则将第一程序代码存储至程序存储区和程序运行区。
上述的步骤S242的实施方式例如:这里的预设字符串可以是“@updatecodesuf”,在50ms内接收到“@updatecodesuf”,那么将第一程序代码存储至程序存储区;以便待星务计算机下一次重启时,使用第一程序代码替换程序运行区中的第二程序代码,并执行程序运行区中的第一程序代码。在上述的实现过程中,通过在星务计算机的引导加载程序运行时,若在预设时长内接收到预设字符串,则将第一程序代码存储至程序存储区和程序运行区;从而提高星务计算机在地面调试时的工作效率,加快了星务计算机从调试状态到在轨运行状态的速度。
在上述的实现过程中,通过对接收到的多个数据帧判断是否接收完成;若没有接收完成,则对每个数据帧校验,若接收完成,则对整个第一程序代码进行校验后,将第一程序代码存储在程序存储区,以便星务计算机下一次重启时执行程序更新;从而保证了第一程序代码在网络传输和计算机处理的过程中不被修改或破坏,有效地保证了待更新的第一程序代码的完整性和正确性。
步骤S250:星务计算机从程序存储区获取第一程序代码。
步骤S260:星务计算机判断第一程序代码与星务计算机的程序运行区中的第二程序代码是否相同。
步骤S270:若第一程序代码与第二程序代码不相同,则星务计算机使用第一程序代码替换程序运行区中的第二程序代码,并执行程序运行区中的第一程序代码。
其中,上述步骤S250至步骤S270的实施原理和实施方式与步骤S110至步骤S130的实施原理和实施方式是相似或类似的,因此,这里不再对该步骤的实施方式和实施原理进行说明,如有不清楚的地方,可以参考对步骤S110至步骤S130的描述。
可选地,在本申请实施例中,在判断第一程序代码与星务计算机的程序运行区中的第二程序代码是否相同之后,即在步骤S260之后,还可以包括:
步骤S280:若第一程序代码与第二程序代码相同,则星务计算机执行程序运行区中的第二程序代码。
可以理解的是,若第一程序代码与第二程序代码相同,这种情况说明程序存储区中待更新的第一程序代码和程序运行区中正在运行的第二程序代码相同,就不需要进行更新程序的过程,因此,星务计算机继续执行原来程序运行区中的第二程序代码,即跳转到应用程序首地址执行第二程序代码。
请参见图6示出的本申请实施例提供的程序更新装置示意图;该程序更新装置300可以应用于星务计算机,该程序更新装置300可以包括:
程序代码获取模块310,用于从星务计算机的程序存储区获取第一程序代码。
程序代码判断模块320,用于判断第一程序代码与星务计算机的程序运行区中的第二程序代码是否相同。
程序代码替换模块330,用于若第一程序代码与星务计算机的程序运行区中的第二程序代码不相同,则使用第一程序代码替换程序运行区中的第二程序代码,并执行程序运行区中的第一程序代码。
可选地,在本申请实施例中,程序更新装置,还包括:
数据帧接收模块,用于接收通信机发送的多个数据帧。
数据帧判断模块,用于判断多个数据帧是否接收完成。
数据帧校验模块,用于若多个数据帧没有接收完成,则对多个数据帧中已经接收到的每个数据帧进行校验。
数据帧存储模块,用于若多个数据帧接收完成,则根据多个数据帧生成第一程序代码,并在对第一程序代码进行校验通过后,将第一程序代码存储至程序存储区。
可选地,在本申请实施例中,数据帧存储模块,包括:
指令接收判断模块,用于在星务计算机的引导加载程序运行时,判断在预设时长内是否接收到预设字符串,预设字符串表征存储并更新程序运行区中的程序代码的指令。
程序代码存储模块,用于若在预设时长内接收到预设字符串,则将第一程序代码存储至程序存储区和程序运行区。
可选地,在本申请实施例中,程序存储区包括:多个存储区;程序代码获取模块,包括:
代码片段获得模块,用于从多个存储区中的对应位置处按字节提取出至少两个相同的代码片段,获得多个代码片段。
代码片段拼接模块,用于将多个代码片段进行拼接,获得第一程序代码。
可选地,在本申请实施例中,程序代码替换模块,包括:
第一校验码获得模块,用于计算多个代码片段的第一校验码,第一校验码表征在第一程序代码传输之后的校验标志。
第二校验码获得模块,用于从多个存储区中读取第二校验码,第二校验码表征在第一程序代码传输之前的校验标志。
校验码判断模块,用于判断第一校验码与第二校验码是否相同。
代码替换子模块,用于若第一校验码与第二校验码相同,则使用第一程序代码替换程序运行区中的第二程序代码。
可选地,在本申请实施例中,程序代码替换模块,还包括:
第一代码执行模块,用于若第一校验码与第二校验码不相同,则执行程序运行区中的第二程序代码。
可选地,在本申请实施例中,该程序更新装置,还可以包括:
第二代码执行模块,用于若第一程序代码与第二程序代码相同,则执行程序运行区中的第二程序代码。
应理解的是,该装置与上述的程序更新方法实施例对应,能够执行上述方法实施例涉及的各个步骤,该装置具体的功能可以参见上文中的描述,为避免重复,此处适当省略详细描述。该装置包括至少一个能以软件或固件(firmware)的形式存储于存储器中或固化在装置的操作系统(operating system,OS)中的软件功能模块。
请参见图7示出的本申请实施例提供的星务计算机的结构示意图。本申请实施例提供的一种星务计算机400,包括:处理器410和存储器420,存储器420存储有处理器410可执行的机器可读指令,机器可读指令被处理器410执行时执行如上的方法。
本申请实施例还提供了一种存储介质430,该存储介质430上存储有计算机程序,该计算机程序被处理器410运行时执行如上的方法。
其中,存储介质430可以由任何类型的易失性或非易失性存储设备或者它们的组合实现,如SRAM,电可擦除可编程只读存储器(Electrically Erasable ProgrammableRead-Only Memory,简称EEPROM),可擦除可编程只读存储器(Erasable ProgrammableRead Only Memory,简称EPROM),可编程只读存储器(Programmable Red-Only Memory,简称PROM),只读存储器(Read-Only Memory,简称ROM),磁存储器,快闪存储器,磁盘或光盘。
本申请实施例所提供的几个实施例中,应该理解到,所揭露的装置和方法,也可以通过其他的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,附图中的流程图和框图显示了根据本申请实施例的多个实施例的装置、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现方式中,方框中所标注的功能也可以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
另外,在本申请实施例各个实施例中的各功能模块可以集成在一起形成一个独立的部分,也可以是各个模块单独存在,也可以两个或两个以上模块集成形成一个独立的部分。
在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。
以上的描述,仅为本申请实施例的可选实施方式,但本申请实施例的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请实施例揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请实施例的保护范围之内。

Claims (10)

1.一种程序更新方法,其特征在于,应用于星务计算机,包括:
从所述星务计算机的程序存储区获取第一程序代码;
判断所述第一程序代码与所述星务计算机的程序运行区中的第二程序代码是否相同;
若否,则使用所述第一程序代码替换所述程序运行区中的第二程序代码,并执行所述程序运行区中的所述第一程序代码。
2.根据权利要求1所述的方法,其特征在于,在所述从所述星务计算机的程序存储区获取第一程序代码之前,还包括:
接收通信机发送的多个数据帧;
判断所述多个数据帧是否接收完成;
若否,则对所述多个数据帧中已经接收到的每个数据帧进行校验;
若是,则根据所述多个数据帧生成所述第一程序代码,并在对所述第一程序代码进行校验通过后,将所述第一程序代码存储至所述程序存储区。
3.根据权利要求2所述的方法,其特征在于,所述将所述第一程序代码存储至所述程序存储区,包括:
在所述星务计算机的引导加载程序运行时,判断在预设时长内是否接收到预设字符串,所述预设字符串表征存储并更新程序运行区中的程序代码的指令;
若是,则将所述第一程序代码存储至所述程序存储区和所述程序运行区。
4.根据权利要求1所述的方法,其特征在于,所述程序存储区包括:多个存储区;所述从所述星务计算机的程序存储区获取第一程序代码,包括:
从所述多个存储区中的对应位置处按字节提取出至少两个相同的代码片段,获得多个代码片段;
将所述多个代码片段进行拼接,获得所述第一程序代码。
5.根据权利要求4所述的方法,其特征在于,所述使用所述第一程序代码替换所述程序运行区中的第二程序代码,包括:
计算所述多个代码片段的第一校验码,所述第一校验码表征在所述第一程序代码传输之后的校验标志;
从所述多个存储区中读取第二校验码,所述第二校验码表征在所述第一程序代码传输之前的校验标志;
判断所述第一校验码与所述第二校验码是否相同;
若是,则使用所述第一程序代码替换所述程序运行区中的第二程序代码。
6.根据权利要求5所述的方法,其特征在于,在所述判断所述第一校验码与所述第二校验码是否相同之后,还包括:
若所述第一校验码与所述第二校验码不相同,则执行所述程序运行区中的所述第二程序代码。
7.根据权利要求1-6任一所述的方法,其特征在于,在所述判断所述第一程序代码与所述星务计算机的程序运行区中的第二程序代码是否相同之后,还包括:
若所述第一程序代码与所述第二程序代码相同,则执行所述程序运行区中的所述第二程序代码。
8.一种程序更新装置,其特征在于,应用于星务计算机,包括:
程序代码获取模块,用于从所述星务计算机的程序存储区获取第一程序代码;
程序代码判断模块,用于判断所述第一程序代码与所述星务计算机的程序运行区中的第二程序代码是否相同;
程序代码替换模块,用于若所述第一程序代码与所述星务计算机的程序运行区中的第二程序代码不相同,则使用所述第一程序代码替换所述程序运行区中的第二程序代码,并执行所述程序运行区中的所述第一程序代码。
9.一种星务计算机,其特征在于,包括:处理器和存储器,所述存储器存储有所述处理器可执行的机器可读指令,所述机器可读指令被所述处理器执行时执行如权利要求1至7任一所述的方法。
10.一种存储介质,其特征在于,该存储介质上存储有计算机程序,该计算机程序被处理器运行时执行如权利要求1至7任一所述的方法。
CN202010329738.8A 2020-04-23 2020-04-23 一种程序更新方法、装置、星务计算机及存储介质 Pending CN111506330A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010329738.8A CN111506330A (zh) 2020-04-23 2020-04-23 一种程序更新方法、装置、星务计算机及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010329738.8A CN111506330A (zh) 2020-04-23 2020-04-23 一种程序更新方法、装置、星务计算机及存储介质

Publications (1)

Publication Number Publication Date
CN111506330A true CN111506330A (zh) 2020-08-07

Family

ID=71869670

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010329738.8A Pending CN111506330A (zh) 2020-04-23 2020-04-23 一种程序更新方法、装置、星务计算机及存储介质

Country Status (1)

Country Link
CN (1) CN111506330A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112667265A (zh) * 2021-01-20 2021-04-16 北京经纬恒润科技股份有限公司 一种引导程序更新方法及装置

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20000021591A (ko) * 1998-09-30 2000-04-25 전주범 위성방송수신기에서 코드 프로그램 다운로드 방법
CN105893093A (zh) * 2016-03-31 2016-08-24 北京奇艺世纪科技有限公司 一种应用程序升级方法及装置
CN107168732A (zh) * 2017-04-17 2017-09-15 商丘工学院 一种星载计算机软件的在轨更新方法
CN110210212A (zh) * 2019-03-14 2019-09-06 腾讯科技(深圳)有限公司 一种数据处理方法、装置以及相关设备

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20000021591A (ko) * 1998-09-30 2000-04-25 전주범 위성방송수신기에서 코드 프로그램 다운로드 방법
CN105893093A (zh) * 2016-03-31 2016-08-24 北京奇艺世纪科技有限公司 一种应用程序升级方法及装置
CN107168732A (zh) * 2017-04-17 2017-09-15 商丘工学院 一种星载计算机软件的在轨更新方法
CN110210212A (zh) * 2019-03-14 2019-09-06 腾讯科技(深圳)有限公司 一种数据处理方法、装置以及相关设备

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
谢军等: "卫星导航技术", 北京理工大学出版社, pages: 507 - 509 *

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112667265A (zh) * 2021-01-20 2021-04-16 北京经纬恒润科技股份有限公司 一种引导程序更新方法及装置
CN112667265B (zh) * 2021-01-20 2024-05-07 北京经纬恒润科技股份有限公司 一种引导程序更新方法及装置

Similar Documents

Publication Publication Date Title
US20210124574A1 (en) Techniques for updating a file using a multi-version patch file
CN106569847B (zh) 一种用于车载系统基于移动网络实现iap远程升级的方法
CN102270162B (zh) 一种应用于sparcv8结构计算机的容错引导方法
US6715106B1 (en) Bios corruption detection system and method
US9027014B2 (en) Updating firmware compatibility data
CN105260215A (zh) 一种u盘升级车载行车记录仪终端的方法
EP2770507B1 (en) Memory circuits, method for accessing a memory and method for repairing a memory
CN109933340B (zh) 一种航天器eeprom基于页模式的在轨写入和自检方法
CN105183580A (zh) 一种引导程序的存储方法、故障恢复方法及设备
US10691465B2 (en) Method for synchronization of system management data
CN109671466B (zh) 一种阈值电压调试方法、装置及电子设备
CN111506330A (zh) 一种程序更新方法、装置、星务计算机及存储介质
CN113094107B (zh) 数据保护方法、装置、设备及计算机存储介质
CN111273928B (zh) 一种自升级的bootloader设计方法
CN109002317B (zh) 一种pcba固件升级方法及系统、pcba
CN113535468B (zh) Dsp芯片的启动方法和启动装置
CN112214415B (zh) 一种机载嵌入式系统的可执行文件可信管理方法
CN115543399A (zh) 一种软件处理系统、软件处理方法以及装置
US10705910B2 (en) Method and apparatus for operating a data storage system
CN111813597A (zh) 一种空调器
CN114546456B (zh) 一种升级方法、装置及电子设备
CN116185461B (zh) 固件升级方法及系统
US11367499B2 (en) Mitigating single-event upsets using containerization
US11640332B1 (en) Execute in place architecture with integrity check
CN117762523A (zh) 星载计算机操作系统对单粒子反转的恢复启动方法及系统

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
RJ01 Rejection of invention patent application after publication
RJ01 Rejection of invention patent application after publication

Application publication date: 20200807