一种星载嵌入式软件在轨维护方法

文档序号:6372430阅读:376来源:国知局
专利名称:一种星载嵌入式软件在轨维护方法
技术领域
本发明涉及一种星载嵌入式软件在轨维护方法,用于对空间飞行器上的嵌入式软件实施在轨维护。
背景技术
当星载嵌入式软件在飞行过程中出现问题或需要增加新的功能时,需要对该软件进行故障修复或功能升级。目前,对星载软件的在轨维护,国内主要方法是将修改后的软件 直接由地面注入到嵌入式系统中,然后通过在轨维护程序启动修改后的嵌入式软件,这种方法需要注入的文件较大,传输时间长,需要较大的内存来存储上注文件,并且存在较大风险,一旦上注过程发生故障,可能会导致整个系统运行实效。而且目前的大多数在轨维护方法,都只能对软件的局部功能进行在轨维护。

发明内容
本发明的技术解决问题克服现有技术的不足,提供一种可以有效且全面地对星载嵌入式软件进行在轨维护的方法,该方法资源耗费少,算法简单,比较算法适用于任何芯片类型,可移植性好,有效的提高了软件的可靠性、安全性和可维护性。本发明的技术解决方案星载嵌入式软件在轨维护方法,其特征在于通过以下步骤实现(I)增量上注数据生成在确定需要对星载软件进行在轨维护后,将更新后的星载嵌入式软件进行编译、链接,生成二进制文件,将更新后的二进制文件和在轨运行的程序对应的二进制文件做比较,生成增量文件;(2)增量上注数据上行注入地面将增量文件分包注入到星上存储区中,收到一包上注包,就将上注包里的有效数据提取出来并写入预设的增量文件的存储区,直至所有上注包收完;(3)增量上注数据重组运行将上注的增量文件与原来存在程序存储器里的二进制文件作比较和重新组合,生成新的程序后将新程序载入内存,并执行新的程序,完成对嵌入式软件的在轨维护。所述步骤(I)中生成增量文件的步骤如下(I. I)判断更新后的二进制文件是否已经读完,是则跳到步骤(I. 6),否则进入下
一步;(1.2)从更新后的二进制文件和在轨运行程序对应的二进制文件中依次读出一个字节;判断读出的两个字节是否相同,相同则返回步骤(I. I),不同进入下一步;(I. 3)判断在轨运行程序对应的二进制文件是否已经读完,是则表示更新后的二进制文件增加了一段数据,增加的数据为更新后的二进制文件当前读取地址开始到更新后的二进制文件尾的所有内容,形成一个模式为“增加”的变更程序块,并回到步骤(I. 1),否则进入下一步;
(1.4)根据更新后的二进制文件中从读出的当前字节开始一段数据搜索在轨运行程序对应的二进制文件,看是否删除了一段数据,是则形成一个模式为“删除”的变更程序块,并回到步骤(I. I),否则进入下一步;(I. 5)根据在轨运行程序对应的二进制文件中从读出的当前字节开始一段数据搜索更新后的二进制文件,看是否增加了一段数据,是则形成一个模式为“增加”的变更程序块,并回到步骤(I. I);否则形成一个模式为“替换”的变更程序块,并回到步骤(I. I);(I. 6)判断在轨运行程序对应的二进制文件是否已经读完,是则结束比较,否则表示删除了一段数据,删除的内容为在轨运行程序对应的二进制文件当前读取地址开始到在轨运行程序对应的二进制文件尾的所有内容,形成一个模式为“删除”的变更程序块,结束比较;上述“增加”的变更程序块的形成过程为将在轨运行程序对应的二进制文件的当前读取地址写入增量文件,并在增量文件中采用固定的标号描述程序变更模式,并将增加的数据长度及内容写入增量文件;上述“删除”的变更程序块的形成过程为将在轨运行程序对应的二进制文件的当前读取地址写入增量文件,并在增量文件中采用固定的标号描述程序变更模式,并将删除的数据长度写入增量文件;上述“替换”的变更程序块的形成过程如下将在轨运行程序对应的二进制文件的当前读取地址写入增量文件,并在增量文件中采用固定的标号描述程序变更模式,并将替换字节的长度以及更新后的二进制文件中读出的当前字节写入增量文件。所述步骤(2)中的星上存储区采用非易失性存储器FLASH或EEPR0M。本发明与现有技术相比的有益效果是(I).本发明采用增量上注方式本方法不需要将更新升级后的软件目标文件全部上行传输,只需将发生变更的部分上行传输到嵌入式系统中,支持嵌入式软件的部分或全面升级;(2).采用增量上注数据通用自动化生成设计增量上注数据通过增量文件生成技术自动生成,增量文件生成技术比较的文件为最终写入程序存储器的二进制文件,比较算法与文件格式无关,适用于任何嵌入式芯片;(3).采用断电保护设计增量上注数据采用FLASH、EEPOM等非易失性存储器存储,即使软件运行平台断电,再次加电后已上注的增量文件仍然有效;(4).采用断点续传设计在增量上注数据通过遥控遥测接口由地面传输到飞行器的过程中,通过在分包过程中设置上注数据包序号,能够支持数据多次过境续传,不要求连续注入,不受过境时间与遥控弧段的限制。(5).采用系统安全启动设计增量上注数据存储在FLASH、EEP0M等非易失性存储器中,通过与嵌入式系统原有程序文件重组后直接载入内存运行,不修改原来程序存储器里的程序数据。如果增量上注数据注入发生故障,设备重新加断电或软件复位重启后,仍然运行原有程序,保证了即使增量上注数据注入发生故障,也不会导致嵌入式系统彻底失效。(6).支持多次上注设计不受软件已上注的限制,在运行上注程序的过程中,可以再次进行上注更新,无上注次数限制。(7).采用通用重组技术可移植性设计目前已针对DSP和ARM两类主流嵌入式芯片设计了重组算法,可以很方便地移植到DSP和ARM任何型号的芯片上。


图I为本发明系统框图;图2为本发明旧文件相对于新文件删除了一段数据示意图;图3为本发明新文件相对于旧文件增加了一段数据示意图;图4为本发明基于ARM的嵌入式程序重组示意图;图5为本发明基于ARM的嵌入式程序重组流程图;
图6为本发明基于DSP的嵌入式程序重组示意图;图7为本发明基于DSP的嵌入式程序地址重映射流程图;图8为本发明基于DSP的嵌入式程序重组流程图。
具体实施例方式下面结合附图对本发明做进一步详细说明。在轨维护方法主要包括增量文件生成技术和嵌入式软件重组技术两个部分。增量文件生成技术用于生成增量文件;嵌入式软件重组技术用于程序重组和加载。如图I所示,本发明步骤如下(I)增量上注数据生成在确定需要对星载软件进行在轨维护后,将更新后的星载嵌入式软件进行编译、链接,生成二进制文件,将更新后的二进制文件和在轨运行的程序对应的二进制文件做比较,生成增量文件;增量文件的生成利用的是基于文件的比对算法。用于比对的文件为编译后的二进制文件,比对算法是基于文件的,与文件格式无关。文件比较的基本思想为首先认为在轨运行的程序所生成的二进制文件为旧文件,由地面更新后的二进制文件为新文件。然后从两文件头开始依次读取一个字节做比较。如果两字节相同,则不做任何处理,接着读下一个字节。如果两字节不相同,则需要判断字节不相同的原因。字节不相同有3种情况。一种情况是旧文件相对于新文件删除了一段数据,所以当前比较的字节不相同。如图2所示,旧文件当前读取的字节为a,新文件当前读取的字节为b。如果通过搜索文件,发现旧文件从地址k到地址ml的内容和新文件从地址n2到地址m2的内容完全相同,则认为旧文件相对于新文件删除了一段数据,删除的内容为地址nl到地址k-1的数据。n2到m2的长度可以根据具体情况设置。根据经验,可以设置为32或64字节。第二种情况是新文件相对于旧文件增加了一段数据,所以当前比较的字节不相同。如图3所示,旧文件当前读取的字节为a,新文件当前读取的字节为b。如果通过搜索文件,发现旧文件从地址nl到地址ml的内容和新文件从地址k到地址m2的内容完全相同,则认为新文件相对于旧文件增加了一段数据,增加的内容为地址n2到地址k-1的数据。第三种情况就是当字节不相同既不是因为删除又不是因为增加时,就认为旧文件里的字节被新文件里的字节所替换。增量文件包含的就是以上三种情况所反映的信息。增量文件里的变更程序块按照“增加”、“删除”和“替换”三种情况划分。在文件比对过程中,当发现新文件比旧文件增加了一段数据时,首先将图3所示的旧文件当前读取地址nl写入增量文件,然后将Oxaa写入增量文件,表示变更模式为“增加”,最后将增加的数据长度(k_n2)和内容(新文件地址n2到地址k_l的内容)写入增量文件,这就形成了一个模式为“增加”的变更程序块;在文件比对过程中,当发现旧文件比新文件删除了一段数据时,首先将图2所示的旧文件当前读取地址nl写入增量文件,然后将Oxbb写入增量文件,表示变更模式为“删除”,最后将删除的数据长度(k-nl)写入增量文件,这就形成了一个模式为“删除”的变更程序块;在文件比对过程中,当发现旧文件的字节被新文件的字节替换时,如果当前替换字节的地址与前一个替换字节的地址连续,则直接将需要替换的字节写入前一个替换字节所在的变更程序块里,并将变更程序块的长度加I后重新写入增量文件;如果当前替换 字节的地址与前一个替换字节的地址不连续,则重新形成一个变更程序块,首先将旧文件里被替换字节的起始地址写入增量文件,然后将Oxcc写入增量文件,表示变更模式为“替换”,接着将I写入增量文件,表示替换长度为1,最后将新文件里的替换字节写入增量文件,这就形成了一个模式为“替换”的变更程序块。一个变更程序块包含一段连续的替换字节,因此,如果当前替换字节的地址与前一个替换字节的地址连续,则将当前替换字节与前一个替换字节合并到一个变更程序块里;如果当前替换字节的地址与前一个替换字节的地址不连续,则重新生成一个变更程序块。比较步骤如下(I. I)判断更新后的二进制文件是否已经读完,是则跳到步骤(I. 6),否则进入下
一步;(1.2)从更新后的二进制文件和在轨运行程序对应的二进制文件中依次读出一个字节;判断读出的两个字节是否相同,相同则返回步骤(I. I),不同进入下一步;(I. 3)判断在轨运行程序对应的二进制文件是否已经读完,是则表示更新后的二进制文件增加了一段数据,增加的数据为更新后的二进制文件当前读取地址开始到更新后的二进制文件尾的所有内容,形成一个模式为“增加”的变更程序块,并回到步骤(I. 1),否则进入下一步;(I. 4)根据更新后的二进制文件,从读出的当前字节开始的一段数据(例如32字节,在具体实现时这个值可以根据实际情况调整)搜索在轨运行程序对应的二进制文件,是否和在轨运行程序对应的二进制文件中当前读出字节之后的一段数据相同,判断是否删除了一段数据,删除则形成一个模式为“删除”的变更程序块,并回到步骤(I. I),否则进入下一步;(I. 5)根据在轨运行程序对应的二进制文件中从读出的当前字节开始一段数据搜索更新后的二进制文件,看是否增加了一段数据,是则形成一个模式为“增加”的变更程序块,并回到步骤(I. I);否则形成一个模式为“替换”的变更程序块,并回到步骤(I. I);(I. 6)判断在轨运行程序对应的二进制文件是否已经读完,是则结束比较,否则表示删除了一段数据,删除的内容为在轨运行程序对应的二进制文件当前读取地址开始到在轨运行程序对应的二进制文件尾的所有内容,形成一个模式为“删除”的变更程序块,结束比较。增量文件格式如表I所示表I增量文件格式
权利要求
1.星载嵌入式软件在轨维护方法,其特征在于通过以下步骤实现 (1)增量上注数据生成在确定需要对星载软件进行在轨维护后,将更新后的星载嵌入式软件进行编译、链接,生成二进制文件,将更新后的二进制文件和在轨运行的程序对应的二进制文件做比较,生成增量文件; (2)增量上注数据上行注入地面将增量文件分包注入到星上存储区中,收到一包上注包,就将上注包里的有效数据提取出来并写入预设的增量文件的存储区,直至所有上注包收完; (3)增量上注数据重组运行将上注的增量文件与原来存在程序存储器里的二进制文件作比较和重新组合,生成新的程序后将新程序载入内存,并执行新的程序,完成对嵌入式软件的在轨维护。
2.根据权利要求I所述的星载嵌入式软件在轨维护方法,其特征在于所述步骤(I)中生成增量文件的步骤如下 (1.1)判断更新后的二进制文件是否已经读完,是则跳到步骤(I. 6),否则进入下一I K少; (I. 2)从更新后的二进制文件和在轨运行程序对应的二进制文件中依次读出一个字节;判断读出的两个字节是否相同,相同则返回步骤(I. I),不同进入下一步; (I. 3)判断在轨运行程序对应的二进制文件是否已经读完,是则表示更新后的二进制文件增加了一段数据,增加的数据为更新后的二进制文件当前读取地址开始到更新后的二进制文件尾的所有内容,形成一个模式为“增加”的变更程序块,并回到步骤(I. 1),否则进入下一步; (I. 4)根据更新后的二进制文件中从读出的当前字节开始一段数据搜索在轨运行程序对应的二进制文件,看是否删除了一段数据,是则形成一个模式为“删除”的变更程序块,并回到步骤(1.1),否则进入下一步; (I. 5)根据在轨运行程序对应的二进制文件中从读出的当前字节开始一段数据搜索更新后的二进制文件,看是否增加了一段数据,是则形成一个模式为“增加”的变更程序块,并回到步骤(I. I);否则形成一个模式为“替换”的变更程序块,并回到步骤(I. I); (1.6)判断在轨运行程序对应的二进制文件是否已经读完,是则结束比较,否则表示删除了一段数据,删除的内容为在轨运行程序对应的二进制文件当前读取地址开始到在轨运行程序对应的二进制文件尾的所有内容,形成一个模式为“删除”的变更程序块,结束比较; 上述“增加”的变更程序块的形成过程为将在轨运行程序对应的二进制文件的当前读取地址写入增量文件,并在增量文件中采用固定的标号描述程序变更模式,并将增加的数据长度及内容写入增量文件; 上述“删除”的变更程序块的形成过程为将在轨运行程序对应的二进制文件的当前读取地址写入增量文件,并在增量文件中采用固定的标号描述程序变更模式,并将删除的数据长度写入增量文件; 上述“替换”的变更程序块的形成过程如下将在轨运行程序对应的二进制文件的当前读取地址写入增量文件,并在增量文件中采用固定的标号描述程序变更模式,并将替换字节的长度以及更新后的二进制文件中读出的当前字节写入增量文件。
3.根据权利要求I所述的星载嵌入式软件在轨维护方法,其特征在于所述步骤(2)中的星上存储区采用非易失性存储器FLASH或EEPROM。
全文摘要
一种星载嵌入式软件在轨维护方法,用于对空间飞行器上的嵌入式软件采用增量上注方式实施在轨维护。(1)增量上注数据生成在确定需要对星载软件进行在轨维护后,将更新后的星载嵌入式软件进行编译、链接,生成二进制文件,将更新后的二进制文件和在轨运行的程序对应的二进制文件做比较,生成增量文件;(2)增量上注数据上行注入地面将增量文件分包注入到星上存储区中,收到一包上注包,就将上注包里的有效数据提取出来并写入预设的增量文件的存储区,直至所有上注包收完;(3)增量上注数据重组运行将上注的增量文件与原来存在程序存储器里的二进制文件作比较和重新组合,生成新的程序后将新程序载入内存,并执行新的程序,完成对嵌入式软件的在轨维护。
文档编号G06F9/445GK102799502SQ20121022287
公开日2012年11月28日 申请日期2012年6月28日 优先权日2012年6月28日
发明者李璐, 李东俊, 张建伟, 王刚, 万祥, 钟海波 申请人:航天恒星科技有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1