一种星敏感器在轨维护方法与流程

文档序号:12014527阅读:264来源:国知局
一种星敏感器在轨维护方法与流程
本发明涉及一种星敏感器在轨维护方法,可以在星上实现星敏感器软件的修改以提高软件可靠性,解决星敏感器在轨故障,完善改进整机设计。

背景技术:
星敏感器以恒星作为测量目标,为卫星提供高精度的姿态测量数据,是卫星控制中最重要、最基础的单机产品之一。近几年,在星敏感器产品研制过程和在轨飞行试验中,发生、发现了一些与软件相关的问题,其中部分属于软件本身存在一定不足导致星敏感器的功能和性能有时不满足任务要求,部分属于硬件存在的问题需要由软件来弥补。软件作为星敏感器产品的重要组成部分,其功能、性能、成熟度对于产品的可靠性具有重要意义。为了加强产品在轨应用的可靠性,需要设计软件在轨维护方法,完善产品的在轨适用性,进一步提升产品性能指标。星敏感器在轨维护方法与产品的硬件配置关联性很大,典型星敏感器的主要硬件配置包括CPU单元、程序存储单元、数据存储单元以及中间变量存储单元。为保证整机掉电后程序和关键数据不丢失,程序和数据存储单元均为ROM类型存储器,根据星敏感器产品类型特点的不同,一般在PROM或E2PROM中选择,中间变量存储单元为SRAM存储器。PROM存储器内容无法固化后无法修改,其硬件可靠度很高但容量较小,因此里面存放了最基本、最底层、最核心的系统程序内容。E2PROM存储器可通过电擦除完成数据内容的修改,容量大但容易受单粒子辐照影响,因此里面存放了与算法相关的应用软件内容和关键数据。SRAM存储器读取速度 快,容量大,但是受单粒子辐照影响更大,而且掉电后数据内容丢失,因此仅适用于程序运行过程中间变量的存放。目前主要在轨维护方法有两种,一种是直接覆盖方式,将维护程序直接注入至程序存储器功能函数起始地址,覆盖原有的程序函数;另一种是通过“钩子函数”,在数据存储器或中间变量存储器中重新建立功能函数,然后在需要修改的原函数入口处,直接跳转至维护程序,维护程序结束后,跳转回原函数出口。以上两种在轨维护方式的实现,均需要对原有的程序代码进行修改,风险较高,如果注入过程中数据通道发生错误或者注入程序本身实现错误,将对原始程序有较大影响甚至无法正常工作。星敏感器的算法设计也会根据在轨数据分析进行完善,在轨试验项目较多,由于每次程序注入过程都是全新的操作,一旦开始即无法恢复至原始状态,不利于软件设计改进的对比验证。同时,由于涉及到程序存储器的修改,因此以上方法仅适用于E2PROM类型程序存储器的星敏感器,星敏感器产品设计时如果为了较高的硬件可靠性将全部软件都在固化在PROM中,则无法直接通过修改E2PROM或者SRAM达到在轨维护的目的,极大的限制了其使用条件。

技术实现要素:
本发明的技术解决问题是:克服现有技术的不足,提供了一种星敏感器在轨维护方法,实现了星敏感器在轨维护不受硬件条件限制,方法易用、高效、高可靠,满足星敏感器在轨使用需求。本发明的技术解决方案是:一种星敏感器在轨维护方法,包括基于E2PROM对星敏感器上程序存储 器中应用程序的维护和基于SRAM对星敏感器上程序存储器中应用程序的维护,所述应用程序按照功能分解,划分成若干功能模块,对所有功能模块编排序号,每个功能模块在闲置的E2PROM或SRAM空间对应独立的在轨维护模块,应用程序进行功能模块运行时根据在轨维护模块状态完成维护功能的使能和运行;其中,基于SRAM对星敏感器上程序存储器的的维护步骤如下:(1)星敏感器上电或者复位后,初始化星敏感器上程序存储器中的应用程序,初始化结束后,从功能模块序号0处顺序执行应用程序;(2)根据当前正在运行的功能模块的序号,在功能模块运行的开始处读取SRAM中在轨维护功能使能标志i_Func_Ram_En;(3)若该标志使能,则进入步骤(4),否则进入步骤(5);(4)根据当前功能模块的序号,在SRAM中读取该功能模块对应的在轨维护模块中的在轨维护功能程序运行地址i_Func_Ram_Addr,之后跳转至在轨维护功能程序地址i_Func_Ram_Addr处运行;(5)继续进行正常应用程序功能模块的运行;(6)若应用程序未运行至最后一个功能模块,则继续执行步骤(2)进行下一个功能模块的运行;基于E2PROM对星敏感器上程序存储器的维护步骤如下:(1)在应用程序的初始化过程中,从功能模块序号0开始,进行E2PROM在轨维护模块的加载;(2)根据当前功能模块的序号,读取E2PROM中在轨维护功能使能标志i_Func_E2_En;(3)若该标志i_Func_E2_En使能,则进入步骤(4),否则进入步骤(9);(4)根据当前功能模块的序号,在E2PROM中读取该功能模块对应的在轨维护模块中的在轨维护功能程序的存储首地址i_Func_E2_Addr;(5)根据当前功能模块的序号,在E2PROM中读取该功能模块对应的在轨维护模块中的在轨维护功能程序的字长度i_Func_E2_Lenth;(6)根据当前功能模块的序号,在E2PROM中读取该功能模块对应的在轨维护模块中的在轨维护功能程序在SRAM中的运行地址i_Func_Ram_Addr;(7)根据在轨维护程序的存储首地址i_Func_E2_Addr和字长度i_Func_E2_Lenth,将在E2PROM中存放的程度代码复制加载到在轨维护程序在SRAM中运行地址i_Func_Ram_Addr为起始位置的空间中;(8)将在E2PROM在轨维护模块的在轨维护功能使能标志i_Func_E2_En复制加载给SRAM在轨功能模块的在轨维护功能使能标志i_Func_Ram_En;(9)若当前功能模块的序号为最后一个,则进入步骤(10),否则返回(2)继续处理下一个序号的功能模块;(10)E2PROM在轨维护模块加载结束,之后进行在轨功能模块的执行,即进行基于SRAM对星敏感器上程序存储器的的维护。SRAM中的在轨维护模块中包括在轨维护功能使能标志i_Func_Ram_En和在轨维护功能程序运行地址i_Func_Ram_Addr。E2PROM中的在轨维护模块中包括在轨维护功能使能标志 i_Func_E2_En、在轨维护功能程序的存储首地址i_Func_E2_Addr、在轨维护功能程序的字长度i_Func_E2_Lenth和在轨维护功能程序在SRAM中的运行地址i_Func_Ram_Addr。本发明与现有技术相比的有益效果是:(1)本发明方法不受星敏感器硬件条件限制,可以在任何存储器类型上进行功能区划分和功能点配置,每个功能区配置相应的在轨维护区,维护程序在轨直接注入维护区,无需修改原有程序,实现了程序区域和功能的双分离,最大限度的降低了注入的过程风险,在轨注入程序设计快速简单。(2)本发明可以通过简单的地面遥控指令修改功能点的使能状态,实时启动在轨维护模块,也可停止在轨维护模块的功能恢复原有软件状态,有效的降低了在轨维护模块设计错误带来的风险;在进行算法设计改进对比时,无需在两个状态间频繁进行在轨注入操作,仅需一次注入,然后通过功能点设置进行算法的选择,极大的提高工作效率,降低卫星的管理成本。(3)本发明可以通过SRAM维护区功能的验证,选择性的将维护程序转移至E2PROM在轨维护区,一方面验证成功的功能区可以进行固化,防止掉电后程序丢失;另一方面验证失败的功能区可以在产品重新加点后恢复原有状态。软件运行过程中,实时监测功能点状态进而决定维护模块的加载与运行,实现软件全过程自主控制。附图说明图1为本发明采用的SRAM区在轨维护设计软件流程图。图2为本发明采用的E2PROM区在轨维护设计软件流程图。具体实施方式下面结合附图对发明的具体设计方法和实施方式进行进一步的详细描述。星敏感器软件可靠性是通过地面验证和在轨试验不断提高的,为了保证星敏感器在轨发生问题时,可以通过软件手段进行风险控制和解决问题,必须进行软件在轨维护方法设计,通过地面遥控指令注入方式完成软件的在轨修改。由于地面遥控指令注入速度较慢且相对的注入数据量较大,同时受卫星轨道和测站分布的制约,通常一次完整的在轨维护过程要将维护程序分块在多个轨道圈内进行注入,占用较大的卫星管理资源。软件在轨维护方法的设计必须符合星敏感器的硬件存储器配置特点,设计通讯指令接口,完成对程序模块的修改。本发明提供了一种方法,不受程序存储器类型的制约,可以高效、低风险的实现星敏感器软件在轨维护。星敏感器软件设计时需按照程序处理功能划分为若干模块,每个功能模块在可用的空闲空间配有一一对应的在轨维护模块,空闲空间必须在SRAM或者E2PROM中。本发明设计的在轨维护方法不涉及修改程序存储器,而是通过修改在轨维护模块实现,下面将分别介绍SRAM区在轨维护设计和E2PROM区在轨维护设计。(一)SRAM区在轨维护设计由于星敏感器产品必然配置SRAM用于中间变量的存储,SRAM区在轨维护设计是在轨维护的基本型,在任何星敏感器产品上均可实施。按照星敏感器的应用程序功能模块的划分,在可用的空闲SRAM存储空间中,每个功能程序模块均有一个与之对应的在轨维护模块,包括在轨维护功能使能标志和在轨维护程序块运行地址。SRAM区在轨维护模块的存储方法如下表所示。SRAM地址变量内容变量说明┆┆┆ram_Addr_i_Fi_Func_Ram_En第i号在轨维护功能使能标志1┆┆┆ram_Addr_i_Ai_Func_Ram_Addr第i号在轨维护程序块运行地址1┆┆┆ram_Addr_i_F存储了第i号在轨维护功能使能标志i_Func_Ram_En,ram_Addr_i_A存储了第i号在轨维护程序块运行地址i_Func_Ram_Addr。如图1所示,软件进行设计时,使用SRAM中的在轨维护模块的步骤如下:(1)星敏感器上电或者复位后,初始化星敏感器上程序存储器中的应用程序,初始化结束后,从功能模块序号0处顺序执行应用程序;(2)根据当前正在运行的功能模块的序号,在功能模块运行的开始处读取SRAM中在轨维护功能使能标志i_Func_Ram_En;(3)若该标志使能,则进入步骤(4),否则进入步骤(5);(4)根据当前功能模块的序号,在SRAM中读取该功能模块对应的在轨维护模块中的在轨维护功能程序运行地址i_Func_Ram_Addr,之后跳转至在轨维护功能程序地址i_Func_Ram_Addr处运行;(5)继续进行正常应用程序功能模块的运行;(6)若应用程序未运行至最后一个功能模块,则继续执行步骤(2)进行下一个功能模块的运行;地面进行SRAM区在轨维护时,实施步骤如下:(1)根据软件功能模块的划分确定需要维护的模块序号;(2)通过星敏感器通讯指令将模块序号对应的在轨维护程序注入到i_Func_Ram_Addr地址开始的RAM空间;(3)通过星敏感器通讯指令将模块序号对应的在轨维护程序地址注入到ram_Addr_i_A;(4)通过星敏感器通讯指令将模块序号对应的在轨维护程序使能标志注入到ram_Addr_i_F;(5)跳转至程序入口处重新启动程序。(二)E2PROM区在轨维护设计若星敏感器配置了E2PROM存储器,SRAM存储器维护程序注入后,根据以上步骤启动维护功能模块完成维护程序的在轨确认测试,确定维护程序满足预期的功能、性能指标后,则可以将维护程序注入到E2PROM存储器进行程序固化,防止维护程序掉电丢失。E2PROM存储器为了配合在轨维护功能的使用,本发明设计在可用的空闲E2PROM存储空间中,同样为每个应用程序功能模块在E2PROM存储器中配置一个与之对应的在轨维护模块,包括在轨维护功能使能标志、在轨维护程序位于E2PROM中的首地址、在轨维护程序长度、在轨维护程序在SRAM中的运行地址和在轨维护程序代码。E2PROM区在轨维护模块的存储方法如下表所示。e2_Addr_i_F存储了第i号在轨维护功能使能标志i_Func_E2_En,e2_Addr_i_A存储了第i号在轨维护程序块在E2PROM中的存储首地址i_Func_E2_Addr,e2_Addr_i_A+1存储了第i号在轨维护程序块在E2PROM中的存储字长度i_Func_E2_Lenth,e2_Addr_i_A+2存储了第i号在轨维护程序块在RAM中的运行地址i_Func_Ram_Addr,最后以i_Func_E2_Addr为起始地址的E2PROM空间中,存储了字长度为i_Func_E2_Lenth的在轨维护程序代码i_prog_word[i_Func_E2_Lenth]。如图2所示,软件进行设计时,使用E2PROM中的在轨维护模块在软件 初始化阶段完成,具体步骤如下:(1)在应用程序的初始化过程中,从功能模块序号0开始,进行E2PROM在轨维护模块的加载;(2)根据当前功能模块的序号,读取E2PROM中在轨维护功能使能标志i_Func_E2_En;(3)若该标志i_Func_E2_En使能,则进入步骤(4),否则进入步骤(9);(4)根据当前功能模块的序号,在E2PROM中读取该功能模块对应的在轨维护模块中的在轨维护功能程序的存储首地址i_Func_E2_Addr;(5)根据当前功能模块的序号,在E2PROM中读取该功能模块对应的在轨维护模块中的在轨维护功能程序的字长度i_Func_E2_Lenth;(6)根据当前功能模块的序号,在E2PROM中读取该功能模块对应的在轨维护模块中的在轨维护功能程序在SRAM中的运行地址i_Func_Ram_Addr;(7)根据在轨维护程序的存储首地址i_Func_E2_Addr和字长度i_Func_E2_Lenth,将在E2PROM中存放的程度代码复制加载到在轨维护程序在SRAM中运行地址i_Func_Ram_Addr为起始位置的空间中;(8)将在E2PROM在轨维护模块的在轨维护功能使能标志i_Func_E2_En复制加载给SRAM在轨功能模块的在轨维护功能使能标志i_Func_Ram_En;(9)若当前功能模块的序号为最后一个,则进入步骤(10),否则返回(2)继续处理下一个序号的功能模块;(10)E2PROM在轨维护模块加载结束,之后进行在轨功能模块的执行,即进行基于SRAM对星敏感器上程序存储器的的维护。地面进行E2PROM区在轨维护时,实施步骤如下:(1)根据软件功能模块的划分确定需要维护的模块序号;(2)通过星敏感器通讯指令将模块序号对应的在轨维护程序注入到i_Func_E2_Addr地址开始的E2PROM空间;(3)通过星敏感器通讯指令将模块序号对应的在轨维护程序存储在E2PROM空间的首地址注入到e2_Addr_i_A;(4)通过星敏感器通讯指令将模块序号对应的在轨维护程序的字长度分别注入到e2_Addr_i_A+1;(5)通过星敏感器通讯指令将模块序号对应的在轨维护程序的在SRAM中的运行地址注入到e2_Addr_i_A+2;(6)通过星敏感器通讯指令将模块序号对应的在轨维护程序使能标志注入到e2_Addr_i_F;(7)跳转至程序入口处重新启动程序或将产品断点后加电。我国某型号卫星上首次在星上该方法进行了星敏感器在轨维护,经过在轨测试表明,应用了本发明算法后,成功完成基于PROM程序存储器的在轨维护,维护程序运行正常,满足任务的指标要求,有效地星敏感器的在轨可靠性。本发明说明书中未作详细描述的内容属于本领域专业技术人员的公知技术。
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1