阎冬 陶涛 顾明 何熊文
(北京空间飞行器总体设计部,北京 100094)
随着航天器星载自主处理能力和智能信息技术的发展,以及用户应用对空间信息获取及处理能力需求的不断提高,经过航天器采集、处理、存储、更新及传输的数据也由原来单一、固定的数据类型,变成了涉及多个星内设备的多元数据类型及各异的数据长度。作为航天器大脑的综合电子系统,为了能够更有效地为航天器智能自主处理能力的提高提供支持,势必要努力开展技术创新,不断提升能力。综合电子系统的能力提升方面的作用要体现在丰富业务功能提供、标准软硬件接口配置、多元信息融合、高可靠性保障等方面。
传统的航天器数据管理系统,仅能够提供较少种类的业务,而且这些业务也并未以一种统一的标准形式实现。它们获取本航天器内部及载荷采集的较为单一的数据,并在航天器内部存储、转发,最终将其中的一部分数据下传到地面。星载综合电子系统相对封闭和单一的设计模式,以及非层次化的开发方式,都导致了它难以适应航天器对多种类型存储器中数据的频繁操作、多服务质量保证需求,以及多源数据融合、数据异地实时备份等多种应用场景。这种点对点模式的空间数据系统,航天器的动作完全由地面控制,存在着一些明显的弊端:①星载信息处理程度较低,涉及的信息种类很少,无法实现航天器多元信息融合的需求[1];②航天器软硬件体系没有遵循层次化结构及模块化的开发模式,设计开发人员在开展应用层程序设计时常常需要关注下层不同存储设备的硬件接口和操作方法,使整个系统成为从顶层到底层的“捆绑式”结构,无法实现异构存储设备的高效访问和灵活管理;③当前对操作命令的安全性保障主要通过上下行链路的加解密及数据内容的校验来保证,而几乎未涉及对操作者身份验证及权限限制,容易造成越权操作,威胁到整星的安全运行。随着航天器硬件处理能力的提高和星载存储设备单元的多样化,以及卫星对异构存储单元数据融合处理的发展趋势,上述的缺点限制了航天器综合电子进一步发展,亟需一种包含更先进的数据采集及处理流程的信息系统。
空间数据系统咨询委员会(CCSDS)提出的存储器访问业务(Subnetwork Memory Access Service)标准[2],提供向设备的内存或寄存器读出、写入或者修改数据的能力,为数据采集、存储、修改提供了丰富的服务支持,为了能够有效提升当前航天器数据操作能力,增强对用户应用数据的服务支持能力,并有效改善系统架构的标准化、体系化水平,本文针对该业务的特点以及在航天器综合电子系统中的应用进行了研究。
存储器访问业务是CCSDS提出的航天器星载接口业务[3-4](Spacecraft Onboard Interface Service, SOIS)中亚网层的一项业务。SOIS的目的是提供一个标准的层次化星载软件框架,每一层的业务软件具有独立编译运行的能力,不同的业务软件之间具有松耦合特性,同层或者相邻层次之间的软件交互则通过各个业务提供的标准业务接口完成。这种模块化的构件设计使软件具有较好的重用性,能够实现快速开发。
存储器访问业务也遵循了这种设计理念[5-6],它所在的亚网层在SOIS的软件架构中位于传递层以下,包括存储器访问业务、亚网包业务[7]、同步业务[8]、设备发现业务[9]及测试业务[10],该层业务对上层应用程序屏蔽底层种类繁多的存储器或者寄存器各异的访问模式和读写方法,为上层提供一个统一的数据处理和发送接口。存储器访问业务在SOIS层次关系中的位置如图1所示。
图1 存储器访问业务在SOIS层次关系中的位置Fig.1 Location of Subnetwork Memory Access Service in SOIS
存储器访问业务主要功能和特点如下[11]。
(1)整器数据读写管理能力:航天器存储器类型多种多样,所处位置以及数据读写交互的方式千差万别,对于存储器的管理方式也有所不同。如果用户应用需要操作的存储器为本设备内部其它模块或者属于其它设备,存储器访问业务将根据这个存储器的特点,将读、写指令进行适应性操作,完成用户应用需要的数据操作。整个过程只在亚网层内部进行动作,而应用层的用户业务产生端根本没有任何影响,它仍继续按照之前指定的规则完成数据操作。
(2)区分服务的能力:综合电子系统能够支持的业务日益增多,系统中存在种类多样的数据类型,而每种类型对数据操作性能有不同的要求,有的对时延要求极高,必须在特定的时间间隔内完成数据操作才能满足应用需求。由统一的中间件管理程序对不同类型数据指定其优先级,存储器访问业务根据待读写数据的优先级关系进行区分服务。对于某些对时间性能要求更高的数据,存储器访问业务将对其进行优先处理,保证能够在规定的时间内完成数据操作。
(3)数据分段能力:由于星上处于不同位置的存储器由不同的通信线缆连接,一次数据操作可以支持的最大数据单元(MTU)也有所不同,存储器访问业务提供数据分段的能力,上层应用程序无须关心底层的MTU大小,可以直接按照接口统一支持的最大长度进行数据操作。以读操作为例,存储器访问业务在发送端根据目标存储器及其通信链路所支持的MTU,将数据读操作指令进行分段。读操作完成后,将接收到的分段数据包重新组装,再发送给上层应用。
(4)数据操作可靠性保障能力:不同类型的用户业务数据对读写等操作可靠性等要求有所不同,有些用户应用对数据操作可靠性要求较高,如果数据读写出错,需要数据操作源端重新发送该数据操作命令。存储器访问业务为这些数据操作提供可靠性保障,数据操作目的端在完成数据操作动作后,将事件动作标识以及数据操作结果发送给数据操作源端。如果数据操作未成功执行,则数据操作源端根据用户应用指定的服务质量(QoS)要求,进行数据操作重新执行等一系列操作,并将本次执行结果上传给上层应用进行处理。
(5)安全性:存储器访问业务的写操作命令中,具有权限验证的功能。数据操作源端设置操作密钥,在数据操作目的端判断发起数据操作的用户是否有执行相应操作的权限。如果权限验证不通过,不会进行相应的数据操作,并返回错误码。
针对航天器存储器的数据操作,按照存储器所处位置的不同,可以分为本地模块内数据操作、本地模块间数据操作,以及远程数据操作。其中,本地模块内数据操作是指CPU模块内的存储区域;本地模块间数据操作是指与CPU位于同一台设备内部,并且与CPU通过内总线(如CPCI、ARINC 659等)连接;远程数据操作是指与CPU位于不同设备中,并且与CPU通过外总线(如1553B、CAN等)连接,可以通过亚网层包业务[7,12]传递到目标设备后再进行本地存储器访问操作。存储器访问业务具体执行过程主要可以分为3个部分:事件驱动处理过程、周期性巡查处理过程和数据操作执行结果反馈过程。以本地模块间写数据操作为例,介绍存储器访问业务数据操作执行过程,如图2所示。
图2 存储器访问业务模块间写操作过程Fig.2 Writing process of Subnetwork Memory Access Service
1)事件驱动处理过程
WRITE.request为其中一个最主要的操作原语,从应用层发送的对属性各异存储器进行数据操作的指令,通过标准接口进入存储器访问业务处理程序。航天器内部存储器根据所处位置、连接关系等信息进行统一标记,并赋予唯一的存储区域标识,并且该标识与具体存储器的操作标识具有唯一的映射关系。
存储器访问业务接口接受上层用户调用,完成协议合路,将存储器写命令及相关控制信息进行解析。然后,命令解析识别出这是一次本地模块间访问,并根据指令中的协议控制信息(Protocol Control Information,PCI)中包含的优先级参数,将本次接收到的指令存入模块间访问命令队列中适当的位置。模块间访问命令队列按照优先级由高至低顺序排列执行,如果优先级相同,按照先来后到的顺序执行。
2)周期性巡查处理过程
在定时时刻到来时,首先根据优先级策略、数据操作目标端设备锁定/开放状态信息,从模块间访问命令队列中取出写操作指令,并完成模块地址变换。当存储器访问业务正在对某目标存储器进行读、写操作时,将该目标端设备置为锁定状态,这时其它进程或者操作无法同时对该目标端设备进行数据访问。接下来,根据数据操作目标端的MTU实际能力,对待写入数据进行分段处理,使每一段均不超过数据操作目标端设备驱动程序数据块操作命令的最大长度。最后,根据本操作的安全性能要求,判断写操作命令中的Authorisation参数(该参数为可选命令),根据应用的实际情况选用,应用用户设置一个密钥值,在远程接收端判断用户是否有权限执行相应的操作。如果没有相应的权限,不会返回相应的数据,并返回错误码。如果具有相应权限,则通过调用目标端设备数据操作驱动程序来操作硬件,完成数据写操作,将数据写入指定存储器;若写入的段不是本命令的最后一段,待下一个定时周期写入下一段,直到所有段写入完毕。当完成写入独立段数据或者分段命令的最后一段数据后,将该设备置为释放状态。
3)数据操作执行结果反馈过程
本过程对数据操作执行结果进行检查,在写操作命令中,参数Acknowledge 的设置决定了在完成写操作后是否需要返回执行结果。如果需要返回执行结果,应用MEMORY_ACCESS_RESULT.indication原语,根据用户应用所确定的QoS及可靠性性能,进行相应操作。首先,检查驱动程序写接口的执行状态。如果写操作命令已成功完成,则更新执行中命令队列中该命令的执行状态为写操作完成状态。然后,检查模块间访问命令执行队列中各成员是否有超时的情况。如果独立命令或者分段命令的最后一段写操作已执行完成,又或者写操作过程出错,表明该命令执行结束,则删除该命令,并且设置对应设备的锁定/开放状态为开放状态。最后,将操作执行结果作为数据域部分生成标准的空间包传递给用户应用进行下一步处理。
1)星载文件系统
随着航天器平台设计及载荷能力的提升,航天器内部的数据量将大幅增加,数据的交互和操作也会变得更加的频繁,传统的数据操作方式将难以满足这种发展趋势带来的变化。存储器访问业务可以提供高效的读、写、修改等数据操作机制,将操作方式各异存储器访问和操作方式对上层用户应用提供统一的标准接口。
2)星上多源异构数据融合处理
航天器上携带的多种载荷和平台设备能够采集多种类型的异构数据,这些数据难以直接用于用户应用中,需要进一步的数据融合和处理,传统方式是航天器将采集获取的数据下传到地面,有地面进行深度处理后在传递到用户端,整个数据处理链条较长,时效性较差。随着航天器处理能力的提高,以及用户对数据融合和处理时效性要求的进一步提高,在星上完成数据深度处理成为了可能,并且成为未来的标配功能。存储器访问业务对数据读写的高效操作为星上多源异构数据融合处理的实现提供了支持。
3)为不同类型用户应用提供多样化QoS支持
随着航天器处理能力提高,以及应用方式灵活性的增加,未来的航天器将支持用户定义APP的灵活加载。不同的用户应用对数据操作的QoS及可靠性要求有所不同。存储器访问除了在存储器读、写等操作方面具有优势外,还能够提供不同QoS和可靠性支持,针对不同的用户应用提供多样化的服务类型,并且可以及时将数据操作处理结果反馈给用户端,以便于做进一步处理。
CCSDS存储器访问业务已经完成软件实现并在样机上完成测试验证,并已经在某航天器中得到应用,该航天器将于近期发射并进行在轨验证。以模拟量遥测采集为例,用户遥测应用启动模拟量采集,中间件设备访问业务根据带操作的设备访问类型,获得存储器访问业务的参数,包括目的应用过程标识(APID)、存储器区域、起始地址等,形成存储器访问读业务原语READ.request命令协议数据单元PDU对应的空间包,通过传输层发送给存储器访问业务。存储器访问业务根据链路标识得知为本地存储器访问链路,调用本地存储器访问链路进行读操作。本地存储器访问链路依据存储器区域得知访问为模块间访问,将命令放入模块间访问命令队列,同时释放上层的包缓冲区。启动命令读取,该过程依据存储器区域查表得到设备驱动程序名,调用设备驱动程序读接口。最终获得返回的模拟量数据,申请缓冲区,将数据存入缓冲区,并将返回状态以及数据形成存储器访问业务原语Read.Indication结果PDU的空间包,发往传输层。
应用存储器访问等业务构建的协议及软件架构,除了可以顺利地完成传统的遥测采集功能,还具有以下优势:
(1)通过标准业务的组合,可以实现传统的常规星载操作功能,以及实现更多的传统功能不具备的全新功能,开发者只需要关注应用层功能的设计和处理,下层功能全部是标准化软件中间件的形式,完全可以支持全新的上层应用。
(2)用户应用针对特定的功能只需要调用统一的业务接口,并传递相应的业务参数,无需关心底层具体的实现方式,实现与底层的解耦,底层实现方式的变化不会影响到上层的应用,有利于系统的快速集成开发。
(3)用于底层链路和驱动程序实现方式的不同,所以对一次操作的数据长度要求有所不同,传统的实现方式中,用户应用需要根据具体使用的底层链路和驱动程序实现方式,“定制”设置数据操作的长度。使用存储器访问业务,用户不需要过于关注底层不同链路和驱动的数据要求,只需要将64 KB 长度内的操作数据及相关参数通过标准接口发送给存储器访问业务,该业务会根据具体操作链路和驱动的完成数据转换和适配,较大的简化了用户应用的操作。
表1对数据操作一些典型的性能情况进行了对比。
表1 CCSDS存储器访问业务应用前后性能对比
表1中选取了一些典型应用,对是否应用了存储器访问业务的一些关键技术指标进行了对比,试验结果表明,部署了存储器访问业务的系统在这些关键指标中有了明显的改善。随着用户应用的更加多样化,对表1中的数据操作关键指标将会有更高的要求,应用存储器访问业务将能够更好地满足用户应用的需求。
未来航天任务日益复杂,往往需要多源异构信息处理和融合。多种类型的数据对读写操作可靠性、时延、服务质量(QoS)等有不同的要求,这就要求航天器综合电子系统能够对不同类型的数据操作进行个性化服务。存储器访问业务作为CCSDS亚网层中的一项关键业务,能够充分满足上述需求,它提供了统一的数据读、写、修改等操作接口,将上层丰富多样用户应用对数据操作的需求与下层各种各样的存储器操作方式隔离,既适合航天器设备内部数据操作,又能够支持多种设备之间的数据操作。对星载存储器的访问操作,由于可能关系到涉及安全的关键数据,对其安全性提出了更高的要求,存储器访问业务的权限验证能力较大提升了数据操作的安全保障能力,避免无权限的人员发生误操作。存储器访问业务能够增强综合电子系统的包容性、可靠性及服务能力,应该在未来航天器综合电子系统中大力推广应用。