首页> 中国专利> 基于ARINC653操作系统生成代码的方法与装置

基于ARINC653操作系统生成代码的方法与装置

摘要

本发明提供一种基于ARINC653操作系统生成代码的方法与装置,通过获取知识图文件,根据知识图文件生成多个任务,并建立各任务之间的连接关系,再根据任务所包括的目标关系公式和目标知识概念,在所属知识领域对应的代码库中获取目标代码,并根据各任务的连接关系对目标代码排序生成完整代码,实现了自动生成代码,提高了代码的生成效率。

著录项

  • 公开/公告号CN106919386A

    专利类型发明专利

  • 公开/公告日2017-07-04

    原文格式PDF

  • 申请/专利权人 北京航空航天大学;

    申请/专利号CN201710081714.3

  • 申请日2017-02-15

  • 分类号G06F9/44;

  • 代理机构北京同立钧成知识产权代理有限公司;

  • 代理人杨泽

  • 地址 100191 北京市海淀区学院路37号北京航空航天大学新主楼D315

  • 入库时间 2023-06-19 02:45:36

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2019-09-20

    授权

    授权

  • 2017-07-28

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

    实质审查的生效

  • 2017-07-04

    公开

    公开

说明书

技术领域

本发明涉及安全关键软件开发技术,尤其涉及一种基于ARINC653操作系统生成代码的方法与装置。

背景技术

安全关键系统是指系统功能的失效或误动作将会导致生命财产的重大损失以及对周围环境造成严重破坏的系统,这类系统广泛应用于航空航天、国防军事、核电能源、交通运输和医疗卫生等安全关键领域。安全关键系统中用于安全关键控制的软件称为安全关键软件。

机载应用软件属于安全关键软件,它是飞机上各类机载系统和设备中所含的计算机程序和数据,在现代航空器中,机载应用软件承担了越来越多的功能,随着机载应用软件规模的大幅增长,有效提高开发效率成为亟需解决的技术问题。

发明内容

本发明提供一种基于ARINC653操作系统生成代码的方法与装置,以解决现有技术中机载应用软件的开发效率低的缺陷。

本发明第一个方面提供一种基于ARINC653操作系统生成代码的方法,包括:

获取知识图文件,所述知识图文件包括至少一条知识路径,每条知识路径均包括至少两个知识概念,每个知识概念均通过同一路径中的上一知识概念和对应的关系公式得到,各所述关系公式至少属于两个不同的知识领域,一个知识领域对应所述ARINC653操作系统的一个分区;

根据所述知识图文件生成多个任务,并建立各所述任务之间的连接关系,每个所述任务至少包括一个目标关系公式以及所述目标关系公式对应的目标知识概念,属于同一任务的目标关系公式的知识领域相同;

根据各所述任务所包括的所述目标关系公式和所述目标知识概念,在所属知识领域对应的代码库中获取目标代码;

根据所述连接关系对所述目标代码排序,生成完整代码。

根据如上所述的方法,可选地,所述获取知识图文件包括:

获取各知识概念;

根据各知识概念的因果关系构建所述知识图文件。

根据如上所述的方法,可选地,所述根据各所述任务所包括的所述目标关系公式和所述目标知识概念,在所属知识领域对应的代码库中获取目标代码包括:

根据目标关系公式在所属知识领域对应的所述代码库中获取待补充代码;

根据所述目标知识概念和所述待补充代码生成所述目标代码。

根据如上所述的方法,可选地,所述知识领域至少包括以下的两种领域:大气计算领域、导航领域、飞行管理领域、飞行控制领域。

根据如上所述的方法,可选地,在所述生成完整代码之后,还包括:

根据所述完整代码生成控制指令;

向伺服控制器发送控制指令,以使所述伺服控制器根据所述控制指令发送动作信号控制飞行器的飞行。

本发明另一个方面提供一种基于ARINC653操作系统生成代码的装置,包括:

第一获取模块,用于获取知识图文件,所述知识图文件包括至少一条知识路径,每条知识路径均包括至少两个知识概念,每个知识概念均通过同一路径中的上一知识概念和对应的关系公式得到,各所述关系公式至少属于两个不同的知识领域,一个知识领域对应所述ARINC653操作系统的一个分区;

第一生成模块,用于根据所述知识图文件生成多个任务,并建立各所述任务之间的连接关系,每个所述任务至少包括一个目标关系公式以及所述目标关系公式对应的目标知识概念,属于同一任务的目标关系公式的知识领域相同;

第二获取模块,用于根据各所述任务所包括的所述目标关系公式和所述目标知识概念,在所属知识领域对应的代码库中获取目标代码;

第二生成模块,用于根据所述连接关系对所述目标代码排序,生成完整代码。

根据如上所述的装置,可选地,所述第一获取模块具体用于,

获取各知识概念;

根据各知识概念的因果关系构建所述知识图文件。

根据如上所述的装置,可选地,所述第二获取模块具体用于,

根据目标关系公式在所属知识领域对应的所述代码库中获取待补充代码;

根据所述目标知识概念和所述待补充代码生成所述目标代码。

根据如上所述的装置,可选地,所述知识领域至少包括以下的两种领域:大气计算领域、导航领域、飞行管理领域、飞行控制领域。

根据如上所述的装置,可选地,还包括:

控制模块,用于根据所述完整代码生成控制指令;

发送模块,用于向伺服控制器发送控制指令,以使所述伺服控制器根据所述控制指令发送动作信号控制飞行器的飞行。

根据本发明的基于ARINC653操作系统生成代码的方法与装置,通过获取知识图文件,根据知识图文件生成多个任务,并建立各任务之间的连接关系,再根据任务所包括的目标关系公式和目标知识概念,在所属知识领域对应的代码库中获取目标代码,并根据各任务的连接关系对目标代码排序生成完整代码,实现了自动生成代码,提高了代码的生成效率。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。

图1为本发明一实施例提供的基于ARINC653操作系统生成代码的方法的流程示意图;

图2为本发明一实施例提供的知识图文件示意图;

图3为本发明一实施例提供的任务之间的连接关系示意图;

图4为本发明另一实施例提供的基于ARINC653操作系统生成代码的装置的结构示意图;

图5为本发明再一实施例提供的基于ARINC653操作系统生成代码的装置的结构示意图。

具体实施方式

为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

首先,介绍一下ARINC(航空电子应用软件标准接口)系统,具体以ARINC653操作系统为例进行说明。

ARINC653操作系统是采用ARINC653设计原理的操作系统,是为了满足航空电子对高可靠性、高可用性以及高服务性的要求而生,对区间管理、区间通信及健康监测部分进行了补充说明,用以规范航空电子设备和系统的开发。

一个能运行ARINC653操作系统的计算机系统包括硬件、ARINC653操作系统和应用软件,在ARINC653操作系统中会包括多个分区(Partitioning),分区是ARINC653操作系统中一个核心概念。每个分区中运行一个应用子系统,每个应用子系统可以运行一个或多个任务,不同分区的应用子系统会进行通信。

针对ARINC653操作系统分区结构的特点,可以设计相应的软件架构模型来自动生成代码。下面通过各个实施例描述如何自动生成代码。

实施例一

本实施例提供一种基于ARINC653操作系统生成代码的方法,例如ARINC653操作系统。本实施例的执行主体为基于ARINC653操作系统生成代码的装置。

如图1所示,为本实施例的基于ARINC653操作系统生成代码的方法的流程示意图,该方法包括:

步骤101,获取知识图文件,知识图文件包括至少一条知识路径,每条知识路径均包括至少两个知识概念,每个知识概念均通过同一路径中的上一知识概念和对应的关系公式得到,各关系公式至少属于两个不同的知识领域,一个知识领域对应ARINC653操作系统的一个分区。

知识图表示一个概念体系,概念用结点表示,概念之间的关联用箭头表示;箭头有四种:无向、单向、双向、分叉;结点的内容可以是文字、图形、嵌套的知识图及其组合,箭头上面也可以用文字或图形标志关联的名称或内容。知识图不限定图的结构,可以为树型结构,也可以是网状结构,其能够表达思维导图、组织结构图、流程图、示意图等已经常用的一些图型。

本实施例中,知识图文件即包括知识图的文件,该文件可以是任何文档形式,例如xml文档、word文档、txt文档或者PDF文档。每个知识图文件包括多条知识路径,一条知识路径指的是从源知识概念到目的知识概念的路径,源知识概念指的是该条知识路径上的起始知识概念,目的知识概念指的是该条知识路径上的最终知识概念,源知识概念和目的知识概念之间可以包括多个中间知识概念。例如,如图2所示的知识图文件,C110->F110->C111->F113->C114为一条知识路径,C110为源知识概念,C114为目的知识概念,C111为中间知识概念,F110和F113为关系公式。每个目的知识概念至少对应一条知识路径。

如何构建知识图文件,可以采用多种现有技术,在此不再赘述。

可选地,本实施例的知识领域至少包括以下的两种领域:大气计算领域、导航领域、飞行管理领域、飞行控制领域。

本实施例的一个知识领域对应所述ARINC653操作系统的一个分区,即一个分区用于处理属于一个知识领域的关系公式和/或知识概念。

步骤102,根据知识图文件生成多个任务,并建立各任务之间的连接关系,每个任务至少包括一个目标关系公式以及目标关系公式对应的目标知识概念,属于同一任务的目标关系公式的知识领域相同。

各任务之间的连接关系表明各个任务之间的因果关系,如图3所示,表示任务1输出的知识概念为任务3的输入的知识概念,每个任务的任务输入概念和任务输出概念是根据该任务所包括的目标关系公式以及该目标关系公式对应的目标知识概念确定的。

获取到的知识图文件即表示了高层需求,假设已知的源知识概念有7个,目的知识概念有2个,中间知识概念有18个,关系公式有20个。根据预设的关系对照表和知识图文件中的关系公式生成任务,其中,关系对照表表示的是各任务和关系公式之间的规定关系,装置可以根据与关系公式相关的输入的知识概念和输出的知识概念生成任务。为了更明确的区分,将用于生成任务的关系公式称为目标关系公式,将与生成任务的关系公式相关的输入的知识概念和输出的知识概念统称为目标知识概念,也可以将与生成任务的关系公式相关的输入的知识概念称为任务输入概念,将与生成任务的关系公式相关的输出的知识概念称为任务输出概念。

举例来说,若任务1的对应的目标关系公式为公式18,从知识图文件中可以得知公式18的输入的知识概念为C24,输出的知识概念为C25,则该任务1的任务输入概念即为C24,任务输出概念即为C25。

需要说明的是,根据任务实际要完成的功能,一个任务中可以包括多个目标关系公式,该多个目标关系公式对应的多个中间知识概念中的每个中间知识概念,可以既作为一个关系公式的输出的知识概念,又作为另一个关系公式的输入的知识概念。比如,任务5的关系公式有两个如公式12和公式11,公式12的输入为C60,输出为C61,公式11的输入为C63、C69、C61和C70,输出为C71,可知,其中公式11的输入C61为公式12的输出,则确定该任务5的任务输入概念为C60、C63、C69和C70,任务输出概念为C71。

任务生成之后,根据目标关系公式的输入的知识概念和输出的知识概念可以确定各任务之间的连接关系,还可以设置任务的基本属性,该基本属性包括任务的运行栈大小、优先级、运行周期、运行时间、截止时间类型属性等。

步骤103,根据各任务所包括的目标关系公式和目标知识概念,在所属知识领域对应的代码库中获取目标代码。

本实施例中,每个关系公式均对应一个知识领域,在确定出任务对应的目标关系公式之后,就可以根据关系公式获取对应的目标代码,即,一个目标关系公式可以对应一个或多个目标代码,当一个目标关系公式对应一个目标代码时,可以根据目标关系公式确定目标代码,当一个目标关系公式对应多个目标代码时,就可以根据目标关系公式和目标知识概念确定目标代码。

具体地,每个关系公式与目标代码的对应关系可以根据预设的对应关系表获取,在此不再赘述。

可选地,本实施例的步骤103具体可以包括:

根据目标关系公式在所属知识领域对应的代码库中获取待补充代码;

根据目标知识概念和待补充代码生成目标代码。

该待补充代码可以是预设的一段代码,该预设的代码之中包括一些待赋值的变量,装置可以根据目标知识概念获取该待赋值的变量,进而生成完整代码。

步骤104,根据连接关系对目标代码排序,生成完整代码。

根据软件架构模型中设置的各构件的属性及各任务(即进程)之间的通信方式等,将获取的目标代码按相应的方式排序,生成最终的软件架构代码。

可选地,在步骤104之后,还包括:

根据完整代码生成控制指令;

向伺服控制器发送控制指令,以使伺服控制器根据控制指令发送动作信号控制飞行器的飞行。

这样,就相当于根据高层需求自动生成控制指令,进而控制飞行器的飞行,实现了飞行器的自动驾驶。

本实施例提供的基于ARINC653操作系统生成代码的方法,通过获取知识图文件,根据知识图文件生成多个任务,并建立各任务之间的连接关系,再根据任务所包括的目标关系公式和目标知识概念,在所属知识领域对应的代码库中获取目标代码,并根据各任务的连接关系对目标代码排序生成完整代码,实现了自动生成代码,提高了代码的生成效率。

实施例二

本实施例对实施例一的基于ARINC653操作系统生成代码的方法做补充说明,具体说明如何实现用于自动生成代码的软件架构,该代码可以为C代码或者其它任何形式的代码。

以ARINC653操作系统为例,ARINC653操作系统具有分区结构,可以实现同时运行多个进程(即每个分区运行一个进程),进而能够更快地实现代码的生成。具体地,可以将软件架构模型为三层结构,包括软件系统模型、分区系统模型和任务系统模型,最终根据软件架构模型生成的软件架构至少包括以下内容:分区、任务、分区内通信、分区间通信。

ARINC653规范定义了操作系统与应用软件之间的应用执行接口APEX(Application Executive,应用执行接口)。符合ARINC653规范的操作系统都实现了APEX。操作系统中的应用程序通过APEX调用操作系统提供的分区管理、进程管理、分区间通信、分区内通信、健康监控服务等。这些服务是分区实现的基础,这些服务对象是软件架构的构件。以ARINC653操作系统运行时元素为基础定义软件架构模型的模型元素。构件模型元素包括软件系统、分区、任务、采样端口、黑板、缓冲区、信号量、事件和健康监控。系统模型中描述了分区间通信,分区模型描述了分区内通信,其中,分区间通信用来说明分区之间的通信关系,分区内通信用来说明分区中的应用子系统中不同任务之间的通信。更为具体地,分区模型描述了它包含的任务模型、分区内通信、采用的分区内通信机制和分区端口。其中,任务模型是进程的抽象。

其中,软件系统是由多个分区应用程序组成的机载应用软件系统,运行在ARINC653操作系统环境中。

分区能够由ARINC653操作系统通过时间分区和空间分区的方式实现的相对独立的软件运行环境,为机载应用程序提供安全隔离,分区包括的子元素有任务、分区内通信、采样端口、队列端口、缓冲区、黑板、信号量和事件;分区模型通过任务这一子元素描述驻留在分区中的应用程序,任务之间的通信使用分区内通信元素描述,任务进行分区内通信可以使用缓冲区、黑板、信号量和事件四种方式。通过采样端口和队列端口描述分区中的端口。分区的属性包括分区名称、内存需求、分区运行周期、分区持续时间等等,其中,内存需求指明分区内存范围;分区运行周期指明分区为了满足操作需求必须被激活的时间间隔;分区持续时间指明分区在一个分区运行周期中要求的执行时间。

任务指组成机载应用软件系统的工作单元,对应分区操作系统中的一个进程。在任务模型中,通过输入子元素描述任务的任务输入概念,输出子元素描述任务的任务输出概念。程序子元素描述任务执行的程序。健康监控子元素描述对任务的健康监控设置。任务的属性包括任务的名称、任务的输入的知识概念、输出的知识概念、运行栈、基础优先级、周期、时间容量、截止类型等,其中,运行栈指明任务运行时需要的堆栈空间大小;基础优先级指明任务启动时的优先级大小;周期定义周期性任务激活的周期;时间容量定义任务完成所用的时间;截止类型指定任务的截止类型是Hard还是Soft。

采样端口是一个通信对象,分区通过它访问配置在采样模式下的通信通道。采样模式下的分区间通信,需要通过采样端口来发送或接收分区间通道内传递的消息。在采样模式下,新到达的消息会覆盖之前的消息。因此采样端口只保留最新的消息。在采样模型中,通过方向属性说明端口是源端口还是目的端口。分区中进程向源端口发送消息,从目的端口接受消息。通过消息大小属性定义端口消息的最大字节数。端口刷新周期属性指明有效消息从到达端口开始,可以被接收的最长时间。

队列端口是一个通信对象,分区通过它访问配置在队列模式下的通信通道。队列模式下的分区间通信,需要通过队列端口来发送或接收分区间通道内传递的消息。在队列模式下,消息以先进先出的顺序存储在端口。不同于采样模式的是,每个新到达的消息不会覆盖前面的消息。但是若队列满了,新来的消息会被丢弃。在队列模型中,通过方向属性说明端口是源端口或目的端口。通过消息大小属性定义端口消息的最大字节数。通过队列长度属性定义端口可存储的最大消息数目。

缓冲区是同一分区中的进程用来发送和接收消息的通信对象。缓冲区可以存储多个消息,消息以先进先出的顺序排队。在缓冲区模型中,通过消息大小属性定义缓冲区消息的最大字节数。通过缓冲区长度属性定义缓冲区可以存储的最大消息数目。通过排队策略属性指明进程访问缓冲区的排队策略(先进先出排队或进程优先级排队)。

黑板是同一分区中的进程用来发送和接收消息的通信对象。黑板不使用消息队列,每个新到来的消息会覆盖其他消息。在黑板模型中,通过消息大小属性定义黑板消息的最大字节数。

信号量是用来控制进程访问分区资源的同步对象。计数信号量的值代表了可用资源的数目。在信号量模型中,通过最大值属性定义受信号量管理的资源的最大数目。通过当前值属性定义信号量被创建时的初始值。排队策略属性定义进程使用信号量的排队策略(先进先出排队或进程优先级排队)。

事件是用来通知那些正在等待某条件发生的进程该条件已经发生的同步对象。在事件模型中,通过ID属性唯一标识一个事件对象。通过名称属性定义事件对象在分区范围的名字。

分区间通信是不同分区之间的应用进行通信的方式,有采样模式和队列模式两种,分别对应采样端口和队列端口。分区间通信模型用来表示连接两个分区端口之间的通道。通过通信模式属性指明通信采用的模式(采样模式或队列模式)。源分区属性指明使用通道发送消息的分区。源端口属性指明连接通道发送消息的端口。目的分区属性指明使用通道接收消息的分区。目的端口属性指明连接通道接收消息的端口。

分区内通信是同一分区中的进程进行通信的方式,包括缓冲区、黑板、信号量和事件四种机制。进程间消息传递使用缓冲区或黑板,进程间同步使用信号量或事件。分区内通信模型用来建模在相同分区中的进程之间的通信关系。通过源任务属性指明发起通信的任务。通过目的任务属性指明响应通信的任务。通信机制属性定义使用的具体通信机制(缓冲区、黑板、信号量或事件)

健康监控模型是用来建模ARINC653操作系统中的健康监控机制,对分区和进程进行健康监控,以避免发生错误。操作系统健康监控模型用来建模操作系统的健康监控表,分区健康监控模型用来建模分区的健康监控表,进程健康监控模型用来建模进程通信监控结构和错误处理函数。

在自动生成代码之前,需要相应的软件架构模型,即包括上述的系统模型、分区模型和任务模型,自动生成代码的装置根据系统模型、分区模型和任务模型生成软件架构,软件架构包括多个分区、多个任务、分区内的通信机制以及分区间的通信机制。

系统模型是根据分区模型及设置分区间通信机制创建的,系统模型包括多个分区模型。其中,任务即为上述实施例中创建的任务模,此处不再赘述。各关系公式所属的知识领域决定了包含该关系公式的任务所属的知识领域,则该任务即被划分为其所属知识领域对应的分区内,依此确定各任务所属的分区,并设置各分区内任务的分区内通信机制,一个分区可以包括多个任务,根据该分区内的任务及分区内各任务之间的分区内通信机制创建分区模型。。

在对任务分配分区过程中,根据需要的任务输入概念和任务输出概念确定分区的端口(即分区的输入和输出)。为分区中任务之间的通信指定具体的ARINC653分区内通信机制,如任务1和任务3通过黑板传递Mach马赫数数据,任务2和任务5通过缓冲区传递压力设置高度数据。配置通信资源的属性,如缓冲区的长度、黑板中传递消息的最大字节数等。ARINC653操作系统提供了缓冲区、黑板、信号量和事件四种分区内通信方式。分区端口描述分区中进程在分区间通信时所用端口的具体信息,ARINC653操作系统提供了队列端口和采样端口两种端口类型。每个分区对应一个知识领域,每个分区生成一个分区模型文件。

在创建软件架构过程中,为不同分区的任务之间的通信指定具体的ARINC653分区间通信机制,如采样通信和队列通信。分区间的通信确定分区的端口连接,采样通信连接源采样端口和目的采样端口,队列通信连接源队列端口和目的队列端口。配置分区时间属性、分区的运行周期和每次持续运行的时间、配置分区的调度次序。一个系统生成一个系统模型文件。系统模型文件描述了它包含的分区模型,分区间通信和分区调度。分区模型是应用子系统的抽象。分区间通信描述软件系统中不同应用子系统之间的通信关系。分区调度描述了应用子系统的执行次序。

需要说明的是,机载应用软件的软件架构的创建是为了能够提高机载应用软件的开发效率,例如能够自动生成控制指令对应的代码。

本实施例的软件架构模型是为了将软件架构的构件映射到ARINC653操作系统中,比如,设置分区内通信机制,即为将软件架构的分区内通信机制设置为ARINC653操作系统中的分区内的任务之间通信的方式,使得根据软件架构模型生成的软件架构代码符合ARINC653操作系统,进一步在此软件架构基础上开发的机载应用软件对应的代码能够在ARINC653操作系统中运行。因此,关于上述的分区内通信机制、分区间通信机制,包括其具体方式如事件、黑板、采样通信等,分区调度,以及各种配置、基本属性均与ARINC653操作系统中的这些属性相对应,此处不再赘述。

举例来说,根据大气计算领域的ARINC706大气计算标准、导航领域的导航数据、飞行控制领域的ARINC701飞行控制标准和飞行管理领域的ARINC702飞行管理标准建立知识图文件。其中,大气计算领域的知识概念有大气总压C1(Total Pressure)、大气静压C2(Impact Pressure)、压力设置C24(Pressure Setting)、比力C27(Specific Force);导航领域的知识概念有陀螺仪数据C60(Gyroscope)、地球旋转角速度C69(Earth RotationAnglar Velocity),飞行管理领域的知识概念有飞行姿态数据C70(Attitude MatrixInitial),飞行控制领域的知识概念有俯仰伺服命令CO1(Pitch Servo Command)和滚转伺服命令CO2(Roll Servo Command)。其中,大气计算领域的知识概念大气总压C1、大气静压C2、压力设置C24、比力C27,导航领域的知识概念陀螺仪数据C60、地球旋转角速度C69以及飞行管理领域的知识概念飞行姿态数据C70为源知识概念,飞行控制领域的知识概念俯仰伺服命令CO1和滚转伺服命令CO2为目的知识概念。其中,源知识概念是机载计算机系统从传感器采集得到的,目的知识概念俯仰伺服命令CO1和滚转伺服命令CO2为由源知识概念经过一系列关系公式计算得到的,这里的关系公式都是预先给定的。比如,源知识概念C24对应的关系公式为公式18,经公式18计算后得到一个中间知识概念C25(Pressure SettingAltitude),源知识概念C2和C1经过一系列关系公式计算得到一个中间知识概念C26(Corrected Static Pressure Altitude),中间知识概念C25和C26又经过公式6计算得到中间知识概念C19(Baro Corrected Altitude),按照上述的过程,根据几个源知识概念,经过多个关系公式计算最终得到目的知识概念CO1和CO2。

假设如上获取到的知识图文件包括源知识概念有7个,目的知识概念有2个,中间知识概念有18个,关系公式有20个,生成了14个任务,设置各任务的基本属性,创建了14个任务模型,存储为14个任务模型文件。比如,任务1、任务2、任务3和任务4中的关系公式属于大气计算领域,则将其划分到大气计算分区,根据各任务的任务输入概念和任务输出概念确定该分区的端口(即对应该分区的输入概念和输出概念),分区的端口类型包括采样端口和队列端口两种端口类型,一个分区包括一个或多个源端口以及一个或多个目的端口,称源端口为该分区的输入端口,目的端口为该分区的输出端口,每个源端口或目的端口可以为采样端口或队列端口,可以称为源采样端口、目的采样端口或源队列端口、目的队列端口,端口类型也是ARINC653系统现有的属性,此处不再赘述,设置该分区中各任务的分区内通信机制,比如任务1和任务3通过黑板传递Mach马赫数数据,配置通信资源的属性,如缓冲区的长度、黑板中传递消息的最大字节数等,根据该分区的四个任务及如上的一系列设置创建了大气计算分区模型;任务5、任务6和任务7中的关系公式属于导航领域,则将其划分到导航分区,创建导航分区模型,具体过程同大气计算分区模型创建过程,此处不再赘述;任务8、任务9、任务10、任务11和任务12中个关系公式属于飞行管理领域,则将其划分为飞行管理分区,创建飞行管理分区模型,具体过程同大气计算分区模型创建过程,此处不再赘述;任务13和任务14中的关系公式属于飞行控制领域,将其划分到飞行控制分区,创建飞行控制分区模型,具体过程同大气计算分区模型创建过程,此处不再赘述。即总共有四个分区,创建了四个分区模型,存储为四个分区模型文件。然后根据四个分区模型文件,为不同分区的任务之间的通信指定具体的ARINC653分区间通信机制,如采样通信和队列通信。分区间的通信确定分区的端口连接,采样通信连接源采样端口和目的采样端口,队列通信连接源队列端口和目的队列端口,并配置分区时间属性、分区的运行周期和每次持续运行的时间、配置分区的调度次序,根据各分区及上述一系列设置创建软件架构,并存储为软件系统模型。当创建软件架构后,根据软件架构模型生成代码,还可以生成相应的配置文件。由上述可知一个软件系统的软件架构模型包括了系统模型、分区模型和任务模型,一个系统模型对应多个分区模型,一个分区模型对应多个任务模型,模型文件具有树形关系结构。具体可以将系统、每个分区和每个任务称为软件架构的构件,建立每个构件模型在内存中的对象,并关联这些对象,建立模型在内存中的树结构对象。树的根节点是系统模型,系统模型的叶子节点是分区模型,分区模型的叶子节点是任务模型。采用深度遍历的方式遍历模型树,一个系统模型生成一个系统配置文件,每个分区模型生成一个分区应用C文件,每个任务模型生成分区中的一个进程,包括进程执行的函数体。生成的代码中包含ARINC653APEX函数调用,用来使用操作系统提供给应用程序的服务。

需要说明的是ARINC653的APEX函数及其使用为现有技术,此处不再赘述。

再举例来说,根据软件架构模型生成的软件架构代码包括分区应用C代码和模块配置XML文档。其中分区应用C代码包括分区初始化函数和分区中每个进程的执行函数。分区初始化函数负责在分区初始化阶段创建分区内的资源,启动分区中的进程,最后将分区置于NORMAL模式。分区初始化代码生成过程(如表1所示)包括:

对每个分区模型P,获取它包含的任务模型集合T、分区的端口模型集合Po、分区中的分区内通信机制模型集合Im(表1中2-5行);

生成创建分区内端口资源的代码(表1中6-10行):对分区中的每个端口模型po,若po为采样端口,则生成该采样端口的代码,若po是队列端口,则生成该队列端口的代码;

生成创建分区内通信机制资源的代码(表1中11-19行):对每个分区内通信机制资源模型im,若im是缓冲区,则生成该缓冲区资源的代码,若im是黑板,则生成该黑板资源的代码,若im是信号量,则生成该信号量资源的代码,若im是事件,则生成该事件资源的代码;

生成创建该分区内的进程资源的代码(表1中20-21行):对每个任务模型t,生成创建该进程的代码;

生成启动分区中的进程的代码(表1中22-23行):对每个任务模型t,生成启动该进程的代码;

生成将分区模式设置为NORMAL的代码(表1中24行)。

表1

分区中的进程通过执行定义在分区C文件中的函数代码实现具体的功能。每个进程对应自己的进程函数。进程函数由进程的通信行为代码和进程的功能行为代码组成。在分区模型中,通过分区间通信模型和分区内通信模型描述了任务之间的通信结构,基于任务之间的通信结构生成ARINC653操作系统的应用分区中进程的通信代码。进程的通信包括接收消息和发送消息两个过程。在接收消息过程中,若是分区间通信,进程从分区的端口中读取消息,若是分区内通信,进程从分区中的缓冲区或黑板读取消息。在发送消息的过程中,若是分区间通信,进程向分区的端口中写入消息;若是分区内通信,进程向分区中的缓冲区或黑板写入消息。进程通信行为代码生成过程(如表2所示)包括:

获取分区模型中的任务模型集合T、端口模型集合Po,分区内通信机制资源模型集合Im(表2中2-4行);

然后遍历每个任务模型,生成每个任务的通信行为代码(表2中5-34行),具体包括:

对每个任务模型t,获取任务的输入集合I和任务的输出集合O(表2中6-7行);

生成任务接收输入消息的代码(表2中8-20行),其中,对任务的每个输入i,若该输入是分区间通信,则获取它对应的分区端口po,若po是采样端口,则生成从po读取采样消息的APEX代码,若po是队列端口,则生成从po接收队列消息的APEX代码;若该输入i是分区内通信,则获取它对应的分区内通信机制资源im,若im是缓冲区,则生成从im接收缓冲区消息的APEX代码;若im是黑板,则生成从im读取黑板消息的APEX代码。

生成任务发送消息的代码(表2中22-34行)。对任务的每个输出o,若该输出是分区间通信,则获取它对应的分区端口po,若po是采样端口,则生成向po写入采样消息的APEX代码,若po是队列端口,则生成向po发送队列消息的APEX代码;若该输出o是分区内通信,则获取它对应的分区内通信机制资源im,若im是缓冲区,则生成向im发送缓冲区消息的APEX代码;若im是黑板,则生成向im写入黑板消息的APEX代码。

表2

ARINC653操作系统在启动时读取配置信息配置系统中的分区、分区调度、通道资源和健康监控。在配置文件中设置分区的端口、分区之间的通道和分区的调度。配置文件以XML文件格式记录这些配置信息。分区运行时配置生成的过程(如表3所示)包括:

从系统模型中获取分区模型集合P、通道集合C、分区调度集合Sc(表3中2-4行);

先生成应用分区配置(表3中5-13行),具体包括:首先生成应用分区配置的<Applications>元素(5行),然后每个分区对应生成子元素<Application>。对每个分区p,获取p的端口集合Po,然后在<Applications>元素下添加子元素<Application>(6-8行);遍历端口集合(9-13行):若端口是采样端口,则在<Application>子元素下生成端口的<SamplePort>元素,若端口是队列端口,则在<Application>子元素下生成端口的<QueuePort>元素;

生成通道配置(表3中14-16行):首先生成通道配置的<Connections>元素,然后遍历通道模型集合C,对每个通道模型c,生成对应的<Channel>子元素;

生成分区调度配置(表3中17-19行):首先生成分区调度配置的<Schedules>元素,然后遍历调度模型集合Sc,对每个分区调度项sc,生成对应的<Schedule>子元素。

最后调用GenerateHealthMonitor()生成健康监控配置信息。

表3

需要说明的是,若输入i是分区间通信,则获取它对应的分区端口po,若po是采样端口,则生成从po读取采样消息的APEX代码,用到了函数READ_SAMPLING_MESSAGE(po,i),通过该函数生成相应的代码,同样的,在生成软件架构代码过程中用到了多个用于生成代码的函数。函数的功能具体的可以是预先将组成该任务的关系公式和知识概念及关系公式的连接关系相应的代码存储在该任务所属知识领域对应的代码库中,在生成相应的代码时,通过函数调用在该代码库中获取相应的代码。可以理解地,代码库中不仅可以存储每个任务对应的代码,也可以存储关于任务之间连接关系(即分区内通信、分区间通信等)的代码。按照上述代码生成过程,获取各目标代码。

可选地,也可以自行设计上述用于生成代码的函数,来实现各部分代码的生成,最终生成代码。

本实施例提供的基于ARINC653操作系统生成代码的方法,对软件架构进行了分区设置,一个分区对应一个知识领域的任务,在生成代码时可以到任务对应的知识领域代码库中获取目标代码,避免了遍历所有代码库中的代码来获取目标代码,提高了生成代码的效率,此外,应用了分区的软件架构,在同时每个分区都能运行一个进程,即一个操作系统可同时运行多个进程,进一步提高了代码的生成效率。

实施例三

本实施例提供一种基于ARINC653操作系统生成代码的装置,用于执行实施例一的基于ARINC653操作系统生成代码的方法。

如图4所述,为本实施例提供的基于ARINC653操作系统生成代码的装置的结构示意图。本实施例的基于ARINC653操作系统生成代码的装置30包括第一获取模块31、第一生成模块32、第二获取模块33和第二生成模块34。

其中,第一获取模块31用于获取知识图文件,知识图文件包括至少一条知识路径,每条知识路径均包括至少两个知识概念,每个知识概念均通过同一路径中的上一知识概念和对应的关系公式得到,各关系公式至少属于两个不同的知识领域,一个知识领域对应ARINC653操作系统的一个分区;第一生成模块32用于根据第一获取模块31获取的知识图文件生成多个任务,并建立各任务之间的连接关系,每个任务至少包括一个目标关系公式以及目标关系公式对应的目标知识概念,属于同一任务的目标关系公式的知识领域相同;第二获取模块33用于根据第一生成模块32生成的各任务所包括的目标关系公式和目标知识概念,在所属知识领域对应的代码库中获取目标代码;第二生成模块34用于根据连接关系对第二获取模块33获取的目标代码排序,生成完整代码。

可选地,第一获取模块31具体用于获取各知识概念;根据各知识概念的因果关系构建知识图文件。

可选地,第二获取模块33具体用于:根据目标关系公式在所属知识领域对应的代码库中获取待补充代码,并根据目标知识概念和待补充代码生成目标代码。

可选地,知识领域至少包括以下的两种领域:大气计算领域、导航领域、飞行管理领域、飞行控制领域。

可选地,如图5所示,基于ARINC653操作系统生成代码的装置30还包括控制模块35和发送模块36。

其中,控制模块35用于根据第二生成模块34生成的完整代码生成控制指令;发送模块36用于向伺服控制器发送控制模块35生成的控制指令,以使伺服控制器根据控制指令发送动作信号控制飞行器的飞行。

关于本实施例中的装置,其中各个模块执行操作的具体方式已经在有关该方法的实施例中进行了详细描述,此处将不做详细阐述说明。

根据本实施例的基于ARINC653操作系统生成代码的装置,通过获取知识图文件,根据知识图文件生成多个任务,并建立各任务之间的连接关系,再根据任务所包括的目标关系公式和目标知识概念,在所属知识领域对应的代码库中获取目标代码,并根据各任务的连接关系对目标代码排序生成完整代码,实现了自动生成代码,提高了代码的生成效率。

本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于一计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。

最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。

去获取专利,查看全文>

相似文献

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

客服邮箱:kefu@zhangqiaokeyan.com

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

  • 服务号