骞恒源,宋 丫,李庆楠
(中国航空工业集团公司 西安航空计算技术研究所,陕西 西安 710065)
嵌入式一般指嵌入式系统,嵌入式开发其实就是对嵌入式系统的开发[1-2],而本文所提到的嵌入式功能是指通过对加载到嵌入式系统中的功能模块和模版函数库进行不同的组合调用,从而使得流入系统的数据能够根据相关系统要求完成一系列简单的运算,得到一个结果进而可以被其他系统直接使用,其目的在于能够实现平台功能模块化积木模型并实现逻辑、信息、数据处理等功能处理模块的重构和复用[3-5]。
某复杂系统能够提供远程通道功能,即将一个或多个输入连接到多个输出从而执行系统所要求的有用的工作。远程通道功能由以下几点组成:输入功能、嵌入式功能以及输出功能,如图1所示。
图1 某复杂系统远程通道功能结构图
输入功能提供了将数据参数传送到系统内部的机制,输入数据参数的类型是灵活的,数据可能来自外部传感器或数据总线;嵌入式功能可以对通过远程通道功能传递的数据参数执行数据转换或逻辑/数学运算。与通常托管在中央处理资源内的大型、高度复杂的系统范围功能相反,嵌入式功能旨在执行相对简单的数据转换/计算操作,一个完整的嵌入式功能是由一个或多个“转换功能”组成的,嵌入式功能内的转换功能之间是通过基于参数的数据流来定义的;输出功能则是将数据参数传输出系统的机制。
转换功能是模板的一个实例,它定义了从一种数据类型到另一种的翻译规则或者是对输入数据的逻辑或数字的计算。如图2所示为某复杂系统中某个转换功能的模块框图。从图中可以看到,一个转换功能模板由3个主要部分组成,分别为输入部分、函数部分以及输出部分,其中输入的变量可以是一个或者多个,但每个输入变量的内容都必须包括其输入参数以及参数的有效值,对于输入的数据,通过一系列逻辑或者计算操作最终得到一个或多个输出,而一个转换功能的输出数据也必须包括其参数及参数有效值。
图2 某转换功能模块框图
通过上文知悉,一个完整的嵌入式功能是由一个或多个转换功能模版组合来实现,其计算流程如图3所示。
图3 嵌入式功能计算流程图
从图3可以看出,该嵌入式功能由两个转换功能模板组合来实现,包括模板10001以及10005。该嵌入式功能的输入有2个,一个输入作为模板10001的输入参数,经过模版计算后最终会得到一个输出即模板10001的输出。对于模块10005来说,其输入参数有2个,一个为模版10001的输出,一个为该嵌入式功能的另外一个输入,经过模版计算后得到模板10005的输出结果,该输出结果也作为整个嵌入式功能的输出。图3所示为一个简单嵌入式功能的计算流程图,对于复杂的嵌入式功能来说,其计算流程与图3同理,不同之处在于输入、输出数据的数量、类型等不一致;模板使用的数量、类型不一致。同样地,对于相同的输入来说,使其流经不同的模版,对不同的模板进行组合也能在保持输入不变的情况下得到不一样的结果以供使用,这就使得功能模块能够重构以及复用。
某复杂系统嵌入式功能实现的主要路径如下:
1) 参数类型识别:参与到一个完整嵌入式功能的数据参数可以分为三类,一为直接输入即系统输入功能采集到的数据;二为中间变量即嵌入式功能执行过程中某个或某些个模板的输出并需要参与接下来计算的数据;三为直接输出即嵌入式功能的最终输出数据也是系统输出功能的输入参数。
2) 存储空间开辟:识别出各参数的类型后既要对其分配相应的存储空间,对于输入和输出参数来说,根据系统ICD的定义为其分配相应的存储空间来保存输入、输出功能的参数同时供嵌入式功能调用使用,对于中间变量,需要先判断其为哪个模板的输出,再根据模板的定义为其分配相应大小的存储空间来保存嵌入式功能中间数据。
3) 模板实现:根据各模板的输入输出参数要求以及其具体的执行逻辑,采用C程序的方式实现来实现各转换模板,对于所有的转换模板,在具体实现过程中输入、输出参数的类型与数量必须与模板要求一致,同时对每个模板在命名时采用相同的命名规则方便模版的调用。
4) 嵌入式功能实现:根据用户的具体需求将一个完整的嵌入式功能拆分成不同的模板组合形式,将模板的组合形式以及模板计算流程抽象成配置的形式加载至系统中,程序实现时根据配置中定义的顺序依次从模板库中调用相应的模板来完成嵌入式功能的计算,最终得到嵌入式功能的输出。
经过实际应用验证,本文所设计的嵌入式功能具有层次清晰、可维护性强的特点,既能够为不同系统提供相应的平台去实现各自复杂的计算功能,又保证了系统内部软件的可复用性,降低重复开发成本。