一种用于微小卫星系统的局部代码更新方法及其系统的制作方法

文档序号:6377762阅读:170来源:国知局
专利名称:一种用于微小卫星系统的局部代码更新方法及其系统的制作方法
技术领域
本发明属于计算机技术领域,具体涉及一种用于微小卫星系统的局部代码更新方法及其系统。
背景技术
由于外太空的恶劣环境,微小卫星系统中的存储器件有可能会受损坏,从而会导致部分程序无法正常运行,这种情况下,如果不更新这些程序就有可能导致整个卫星无法正常运行,严重的可能导致整颗卫星报废。软件在轨更新是卫星在轨运行过程中,发现任务软件错误或漏洞后,以对其规避的软件新版本替换原始版本的补救措施。故软件在轨更新不仅是卫星系统的客观要求之一,也是微小卫星综合电子技术的必然演进方向。
目前,国内外很多卫星型号的星载计算机软件在轨更新的对象颗粒度较粗,如软件整体或分系统软件配置项。在目前的卫星系统代码的更新,需要借助于系统的bootloader程序重新烧写全部的系统映象,上电重新启动程序,从而完成一次代码的更新。该做法的优点是首先,更新操作简单易行。这种做法不需要在原有任务软件的基础上引入复杂的动态更新程序支持在轨更新;其次,更新的过程对系统的额外开销小。虽然,这种方法实现简单,易于操作,但是这种方法有如下缺点首先,更新速度慢,成功率低;每次进行软件在轨更新均须向星上注入软件整体或整个配置项。尤其是在有效更新的代码只占更新软件或配置项的一小部分时,但是仍需要更新全部的应用程序或者配置项,在星地链路通信速度低的,误码率较高的情况下,更新的速度慢,成功率低。其次,浪费星地间链路的资源;由于星地间通信的有效速度较低,星地间的通信资源有限,在有效更新代码占更新软件或配置项的比例极小时,严重的浪费和占用星地资源,影响到其他模块对星地通信的使用。再次,更新导致程序运行的中断;由于代码更新借助于bootloader程序,需要通过重新烧写并再次上电重启系统,系统运行不可避免的需要中断。

发明内容
针对现有技术所存在的上述技术缺陷,本发明提供了一种用于微小卫星系统的局部代码更新方法,在更新过程中能够保证其余程序正常运行,且更新速度快。一种用于微小卫星系统的局部代码更新方法,包括如下过程(I)在微小卫星系统中构建模块调用表,所述的模块调用表存储有每个模块在系统内存中的区域地址;(2)获取微小卫星系统中故障模块的ID,从本地找出与该ID对应的模块,并将该模块的代码编译成可执行文件;(3)将所述的可执行文件上传至微小卫星系统中;根据可执行文件中的加载地址信息将可执行文件加载至系统内存中相应的空闲区域;(4)根据可执行文件在内存中的区域地址,更新模块调用表中故障模块的区域地址。所述的步骤(2)中,将模块的代码编译成可执行文件的过程为首先,在本地的系统源代码工程目录中的CMD文件内新定义一块内存区域;然后,根据新定义内存区域的地址,更新模块的加载地址信息;最后,将更新后的模块编译成可执行文件。优选地,所述的步骤(4)中,当模块调用表更新完成后,将所述的模块调用表和可执行文件保存至系统的Flash存储器中;能够保证微小卫星系统意外重启情况下,仍能执行更新后的模块。 一种用于微小卫星系统的局部代码更新系统,包括调用表构建单元,用于根据每个模块在微小卫星系统内存中的区域地址,构建模块调用表;接收单元,用于接收获取微小卫星系统中故障模块的ID ;查找编译单元,用于从本地找出与所述的ID对应的模块,并将该模块的代码编译成可执行文件;上传单元,用于将所述的可执行文件上传至微小卫星系统中;加载单元,用于根据可执行文件中的加载地址信息将可执行文件加载至微小卫星系统内存中相应的空闲区域;更新单元,用于根据可执行文件在内存中的区域地址,更新所述的模块调用表中故障模块的区域地址。本发明通过构建模块调用表采用局部更新的方式,有效的解决了现有技术更新速度慢的问题,由于大大减少了上传文件的大小,故极大的提高了星地间链路资源的利用率,同时能够保证其余程序正常运行。


图I为微小卫星系统的结构示意图。图2为模块调用表与系统内存区的映射示意图。图3为模块存储表与内存区以及存储区的映射示意图。图4为本发明更新方法的步骤流程图。
具体实施例方式为了更为具体地描述本发明,下面结合附图及具体实施方式
对本发明的技术方案进行详细说明。本实施例通过引入一个通用的微小卫星系统实例来介绍本发明方法的应用,图I是一个基于处理器的微小卫星系统的结构框架示意图,处理器通过总线耦合至随机存储器RAM,非易失性存储器NAND FLASH。输入输出I/O设备也可以耦合至总线,I/O设备包括键盘,鼠标,串行总线,显示器等。在整个微小卫星系统中,RAM用于存储处理器运行期间执行的代码指令;NANDFLASH用于存储系统的代码以及用户数据。本实施方式中,NANDFLASH内包含模块调用表,系统执行代码,故障模块的代码,模块存储表以及其他更新代码。对于整个系统而言,故障模块的加载更新,是通过更新相对应的模块调用表,模块存储表,加载模块代码实现的。模块调用表,模块存储表和随机存储器,非易失性存储器的映射关系是实现更新的基础。模块、模块在RAM以及模块在NAND FLASH的中的映射关系如图3所示。模块存储表包含了模块ID、模块需加载至RAM的起始地址、模块存储在NANDFLASH的地址以及模块的大小。
本实施方式中,微小卫星系统要实现局部代码更新需应用一种局部代码更新系统,其包括调用表构建单元、接收单元、查找编译单元、上传单元、加载单元和更新单元;其中,调用表构建单元、加载单元和更新单元均在微小卫星系统中通过编程实现,接收单元和上传单元可由一般的无线通讯设备实现。如图4所示,依据模块和RAM的映射关系,本实施方式首先利用调用表构建单元在微小卫星系统中构造了一种模块调用表,模块调用表和系统内存区的映射关系如图2所示,其包含模块调用的内存区入口地址,系统可通过模块调用表执行对应的模块代码。模块调用表在构建之后,需要存储在NAND FLASH中,在系统执行更新模块代码之前,加载模块调用表至RAM中,并在模块调用表被修改之后,更新系统的模块调用表并存储到NAND FLASH中。构建完模块调用表后,若微小卫星系统的RAM某块区域突然遭受损坏导致该区域的模块代码丢失,则地面可利用获取接收单元微小卫星系统中故障模块的ID ;然后,利用查找编译单元从本地找出与该ID对应的模块,在本地的系统源代码工程目录中的CMD文件内新定义一块内存区域,根据新定义内存区域的地址,更新模块的加载地址信息;最后,将更新后的模块编译成可执行文件通过上传单元上传至微小卫星系统中。微小卫星系统接收到可执行文件后,首先,根据可执行文件中的加载地址信息利用加载单元将可执行文件加载至系统RAM中相应的空闲区域;然后,根据可执行文件在RAM中的区域地址,利用更新单元更新模块调用表中故障模块的区域地址;具体操作过程如下(I)从NAND FLASH加载模块调用表、模块存储表以及模块代码和其他系统执行代码至RAM中;(2)启动加载单元,根据可执行文件中的加载地址信息将接收到的可执行文件加载到RAM中相应的空闲区域。(3)启动更新单元,根据可执行文件在RAM中的区域地址修改故障模块在模块调用表中的模块入口地址,使更新的模块调用表的模块调用入口指向RAM中的可执行文件。(4)将可执行文件保存到NAND FLASH中,以便于系统在掉电重启后,更新后的模块代码可以自动加载,同时更新在RAM中的模块存储表。(5)保存更新后的模块调用表到NAND FLASH中,使得系统在掉电重启或者模块调用表损坏后,可以重新加载模块调用表。(6)保存修改后的模块存储表到NAND FLASH中,使得系统在掉电重启或者模块存储表损坏后,可以重新加载模块存储表。(7)更新完成。
在星地链路有效传输数据约为70Kbyte/min的条件下,采用本实施方式模块局部更新方法与传统整体更新方法,更新系统软件大小均约为700Kb,其中一个故障模块的大小为10Kb,两种方法的更新数据如表I所示表I
权利要求
1.一种用于微小卫星系统的局部代码更新方法,包括如下步骤 (1)在微小卫星系统中构建模块调用表,所述的模块调用表存储有每个模块在系统内存中的区域地址; (2)获取微小卫星系统中故障模块的ID,从本地找出与该ID对应的模块,并将该模块的代码编译成可执行文件; (3)将所述的可执行文件上传至微小卫星系统中;根据可执行文件中的加载地址信息将可执行文件加载至系统内存中相应的空闲区域; (4)根据可执行文件在内存中的区域地址,更新模块调用表中故障模块的区域地址。
2.根据权利要求I所述的用于微小卫星系统的局部代码更新方法,其特征在于所述的步骤(2)中,将模块的代码编译成可执行文件的过程为首先,在本地的系统源代码工程目录中的CMD文件内新定义一块内存区域;然后,根据新定义内存区域的地址,更新模块的加载地址信息;最后,将更新后的模块编译成可执行文件。
3.根据权利要求I所述的用于微小卫星系统的局部代码更新方法,其特征在于所述的步骤(4)中,当模块调用表更新完成后,将所述的模块调用表和可执行文件保存至系统的Flash存储器中。
4.一种用于微小卫星系统的局部代码更新系统,其特征在于,包括 调用表构建单元,用于根据每个模块在微小卫星系统内存中的区域地址,构建模块调用表; 接收单元,用于接收获取微小卫星系统中故障模块的ID ; 查找编译单元,用于从本地找出与所述的ID对应的模块,并将该模块的代码编译成可执行文件; 上传单元,用于将所述的可执行文件上传至微小卫星系统中; 加载单元,用于根据可执行文件中的加载地址信息将可执行文件加载至微小卫星系统内存中相应的空闲区域; 更新单元,用于根据可执行文件在内存中的区域地址,更新所述的模块调用表中故障模块的区域地址。
全文摘要
本发明公开了一种用于微小卫星系统的局部代码更新方法,包括(1)构建模块调用表;(2)获取故障模块ID;(3)根据ID从本地找出相应的模块,并对其编译;(4)上传编译得到的可执行文件;(5)将可执行文件加载至RAM中;(6)更新模块调用表;本发明还公开了实现上述方法的更新系统。本发明通过构建模块调用表采用局部更新的方式,有效的解决了现有技术更新速度慢的问题,由于大大减少了上传文件的大小,故极大的提高了星地间链路资源的利用率,同时能够保证其余程序正常运行。
文档编号G06F9/445GK102880494SQ201210362798
公开日2013年1月16日 申请日期2012年9月26日 优先权日2012年9月26日
发明者李红, 杨国青, 陈浩杰, 程士庆, 李坤, 吴朝晖 申请人:浙江大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1