首页> 中国专利> 一种用于微小卫星系统的局部代码更新方法及其系统

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

摘要

本发明公开了一种用于微小卫星系统的局部代码更新方法,包括:(1)构建模块调用表;(2)获取故障模块ID;(3)根据ID从本地找出相应的模块,并对其编译;(4)上传编译得到的可执行文件;(5)将可执行文件加载至RAM中;(6)更新模块调用表;本发明还公开了实现上述方法的更新系统。本发明通过构建模块调用表采用局部更新的方式,有效的解决了现有技术更新速度慢的问题,由于大大减少了上传文件的大小,故极大的提高了星地间链路资源的利用率,同时能够保证其余程序正常运行。

著录项

  • 公开/公告号CN102880494A

    专利类型发明专利

  • 公开/公告日2013-01-16

    原文格式PDF

  • 申请/专利权人 浙江大学;

    申请/专利号CN201210362798.5

  • 申请日2012-09-26

  • 分类号G06F9/445(20060101);G06F12/02(20060101);

  • 代理机构33224 杭州天勤知识产权代理有限公司;

  • 代理人胡红娟

  • 地址 310027 浙江省杭州市西湖区浙大路38号

  • 入库时间 2024-02-19 17:08:41

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2016-02-10

    授权

    授权

  • 2013-02-27

    实质审查的生效 IPC(主分类):G06F9/445 申请日:20120926

    实质审查的生效

  • 2013-01-16

    公开

    公开

说明书

技术领域

本发明属于计算机技术领域,具体涉及一种用于微小卫星系统的局部代码 更新方法及其系统。

背景技术

由于外太空的恶劣环境,微小卫星系统中的存储器件有可能会受损坏,从 而会导致部分程序无法正常运行,这种情况下,如果不更新这些程序就有可能 导致整个卫星无法正常运行,严重的可能导致整颗卫星报废。

软件在轨更新是卫星在轨运行过程中,发现任务软件错误或漏洞后,以对 其规避的软件新版本替换原始版本的补救措施。故软件在轨更新不仅是卫星系 统的客观要求之一,也是微小卫星综合电子技术的必然演进方向。

目前,国内外很多卫星型号的星载计算机软件在轨更新的对象颗粒度较粗, 如软件整体或分系统软件配置项。在目前的卫星系统代码的更新,需要借助于 系统的bootloader程序重新烧写全部的系统映象,上电重新启动程序,从而完成 一次代码的更新。该做法的优点是:首先,更新操作简单易行。这种做法不需 要在原有任务软件的基础上引入复杂的动态更新程序支持在轨更新;其次,更 新的过程对系统的额外开销小。

虽然,这种方法实现简单,易于操作,但是这种方法有如下缺点:

首先,更新速度慢,成功率低;每次进行软件在轨更新均须向星上注入软 件整体或整个配置项。尤其是在有效更新的代码只占更新软件或配置项的一小 部分时,但是仍需要更新全部的应用程序或者配置项,在星地链路通信速度低 的,误码率较高的情况下,更新的速度慢,成功率低。

其次,浪费星地间链路的资源;由于星地间通信的有效速度较低,星地间 的通信资源有限,在有效更新代码占更新软件或配置项的比例极小时,严重的 浪费和占用星地资源,影响到其他模块对星地通信的使用。

再次,更新导致程序运行的中断;由于代码更新借助于bootloader程序,需 要通过重新烧写并再次上电重启系统,系统运行不可避免的需要中断。

发明内容

针对现有技术所存在的上述技术缺陷,本发明提供了一种用于微小卫星系 统的局部代码更新方法,在更新过程中能够保证其余程序正常运行,且更新速 度快。

一种用于微小卫星系统的局部代码更新方法,包括如下过程:

(1)在微小卫星系统中构建模块调用表,所述的模块调用表存储有每个模 块在系统内存中的区域地址;

(2)获取微小卫星系统中故障模块的ID,从本地找出与该ID对应的模块, 并将该模块的代码编译成可执行文件;

(3)将所述的可执行文件上传至微小卫星系统中;根据可执行文件中的加 载地址信息将可执行文件加载至系统内存中相应的空闲区域;

(4)根据可执行文件在内存中的区域地址,更新模块调用表中故障模块的 区域地址。

所述的步骤(2)中,将模块的代码编译成可执行文件的过程为:首先,在 本地的系统源代码工程目录中的CMD文件内新定义一块内存区域;然后,根据 新定义内存区域的地址,更新模块的加载地址信息;最后,将更新后的模块编 译成可执行文件。

优选地,所述的步骤(4)中,当模块调用表更新完成后,将所述的模块调 用表和可执行文件保存至系统的Flash存储器中;能够保证微小卫星系统意外重 启情况下,仍能执行更新后的模块。

一种用于微小卫星系统的局部代码更新系统,包括:

调用表构建单元,用于根据每个模块在微小卫星系统内存中的区域地址, 构建模块调用表;

接收单元,用于接收获取微小卫星系统中故障模块的ID;

查找编译单元,用于从本地找出与所述的ID对应的模块,并将该模块的代 码编译成可执行文件;

上传单元,用于将所述的可执行文件上传至微小卫星系统中;

加载单元,用于根据可执行文件中的加载地址信息将可执行文件加载至微 小卫星系统内存中相应的空闲区域;

更新单元,用于根据可执行文件在内存中的区域地址,更新所述的模块调 用表中故障模块的区域地址。

本发明通过构建模块调用表采用局部更新的方式,有效的解决了现有技术 更新速度慢的问题,由于大大减少了上传文件的大小,故极大的提高了星地间 链路资源的利用率,同时能够保证其余程序正常运行。

附图说明

图1为微小卫星系统的结构示意图。

图2为模块调用表与系统内存区的映射示意图。

图3为模块存储表与内存区以及存储区的映射示意图。

图4为本发明更新方法的步骤流程图。

具体实施方式

为了更为具体地描述本发明,下面结合附图及具体实施方式对本发明的技 术方案进行详细说明。

本实施例通过引入一个通用的微小卫星系统实例来介绍本发明方法的应 用,图1是一个基于处理器的微小卫星系统的结构框架示意图,处理器通过总 线耦合至随机存储器RAM,非易失性存储器NAND FLASH。输入输出I/O设备 也可以耦合至总线,I/O设备包括键盘,鼠标,串行总线,显示器等。

在整个微小卫星系统中,RAM用于存储处理器运行期间执行的代码指令; NAND FLASH用于存储系统的代码以及用户数据。本实施方式中,NAND FLASH内包含模块调用表,系统执行代码,故障模块的代码,模块存储表以及 其他更新代码。

对于整个系统而言,故障模块的加载更新,是通过更新相对应的模块调用 表,模块存储表,加载模块代码实现的。模块调用表,模块存储表和随机存储 器,非易失性存储器的映射关系是实现更新的基础。

模块、模块在RAM以及模块在NAND FLASH的中的映射关系如图3所示。 模块存储表包含了模块ID、模块需加载至RAM的起始地址、模块存储在NAND FLASH的地址以及模块的大小。

本实施方式中,微小卫星系统要实现局部代码更新需应用一种局部代码更 新系统,其包括调用表构建单元、接收单元、查找编译单元、上传单元、加载 单元和更新单元;其中,调用表构建单元、加载单元和更新单元均在微小卫星 系统中通过编程实现,接收单元和上传单元可由一般的无线通讯设备实现。

如图4所示,依据模块和RAM的映射关系,本实施方式首先利用调用表构 建单元在微小卫星系统中构造了一种模块调用表,模块调用表和系统内存区的 映射关系如图2所示,其包含模块调用的内存区入口地址,系统可通过模块调 用表执行对应的模块代码。模块调用表在构建之后,需要存储在NAND FLASH 中,在系统执行更新模块代码之前,加载模块调用表至RAM中,并在模块调用 表被修改之后,更新系统的模块调用表并存储到NAND FLASH中。

构建完模块调用表后,若微小卫星系统的RAM某块区域突然遭受损坏导致 该区域的模块代码丢失,则地面可利用获取接收单元微小卫星系统中故障模块 的ID;然后,利用查找编译单元从本地找出与该ID对应的模块,在本地的系统 源代码工程目录中的CMD文件内新定义一块内存区域,根据新定义内存区域的 地址,更新模块的加载地址信息;最后,将更新后的模块编译成可执行文件通 过上传单元上传至微小卫星系统中。

微小卫星系统接收到可执行文件后,首先,根据可执行文件中的加载地址 信息利用加载单元将可执行文件加载至系统RAM中相应的空闲区域;然后,根 据可执行文件在RAM中的区域地址,利用更新单元更新模块调用表中故障模块 的区域地址;具体操作过程如下:

(1)从NAND FLASH加载模块调用表、模块存储表以及模块代码和其他 系统执行代码至RAM中;

(2)启动加载单元,根据可执行文件中的加载地址信息将接收到的可执行 文件加载到RAM中相应的空闲区域。

(3)启动更新单元,根据可执行文件在RAM中的区域地址修改故障模块 在模块调用表中的模块入口地址,使更新的模块调用表的模块调用入口指向 RAM中的可执行文件。

(4)将可执行文件保存到NAND FLASH中,以便于系统在掉电重启后, 更新后的模块代码可以自动加载,同时更新在RAM中的模块存储表。

(5)保存更新后的模块调用表到NAND FLASH中,使得系统在掉电重启 或者模块调用表损坏后,可以重新加载模块调用表。

(6)保存修改后的模块存储表到NAND FLASH中,使得系统在掉电重启 或者模块存储表损坏后,可以重新加载模块存储表。

(7)更新完成。

在星地链路有效传输数据约为70Kbyte/min的条件下,采用本实施方式模块 局部更新方法与传统整体更新方法,更新系统软件大小均约为700Kb,其中一 个故障模块的大小为10Kb,两种方法的更新数据如表1所示:

表1

从表1的对比数据可以看出,采用局部更新方法对于小于整体软件的局部 模块的更新,相对于传统的更新方法,具有显著的速度和效率的提升。

以上实例对本发明的目的,技术方案进行了进一步的详细说明,所应理解 的是,以上所述并不用以限制本发明,凡是在本发明的精神和原则之内,所做 的任何修改,等同替换,改进,均应包含在本发明的保护范围之内。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号