799_AUTOSAR_TR_FrancaIntegration6_Franca到AUTOSAR的转换1_autosar

       3 Franca 到 AUTOSAR 转换

       任一方向的转换输入——Franca 到 AUTOSAR 或 AUTOSAR 到 Franca——始终是 Franca 连接器。 通过其导入,Franca Connector 引用了 Franca 模型和 AUTOSAR 软件组件描述,这些描述应相互连接和转换。 转换的目标可以是 AUTOSAR 软件组件描述(Franca 到 AUTOSAR 的转换)或 Franca 模型(AUTOSAR 到 Franca 的转换)。

       可以定义仅包含 Franca 导入的 Franca 连接器; 这意味着它的 AUTOSAR 导入是空的,并且不包含链接。 在这种情况下,Franca-to-AUTOSAR 转换仅将 Franca IDL 中的接口和数据类型规范转换为这些接口和数据类型的语义等效表示,作为 AUTOSAR XML 文档。

更一般的情况是同时导入 Franca 和 AUTOSAR 规范并将两者连接起来的情况。 在这种情况下,Franca 到 AUTOSAR 的转换会产生一个 AUTOSAR 软件组件描述,其中包含:

       • 导入的 AUTOSAR 软件组件描述

       • Franca 模型(接口和数据类型)的转换

       • Franca 和 AUTOSAR 实例。

       因此,纯转换是 Franca 模型和 AUTOSAR 软件组件描述更一般集成的特例。

799_AUTOSAR_TR_FrancaIntegration6_Franca到AUTOSAR的转换1_应用程序_02

       3.1 符号

       Franca IDL 元素到 AUTOSAR 元素的转换定义遵循 [1] 中的介绍。 对于每个 Franca IDL 元类,我们命名一个通用元素并定义该元素映射到的 AUTOSAR 元素或元素集。为此,我们使用一个表 - 或一组表,以防 France IDL 元素映射到一组 AUTOSAR 元素 - 具有以下含义。

       AR元素:此条目定义 Franca 元类映射到的 AUTOSAR 元类。此外,引入了目标元素的名称,以便在其他条目或规则中引用映射结果。

       AR容器:此条目指定 AUTOSAR 元素,该元素包含上面条目中按名称定义的目标元素。

       属性:该条目定义了目标元素的属性和交叉引用。

       条件:在这个条目中,可以给出映射的条件。 如果条件为假,Franca 元素不会在 AUTOSAR 表示中生成目标元素。

799_AUTOSAR_TR_FrancaIntegration6_Franca到AUTOSAR的转换1_修订版_03

       3.2 Franca 模型

       Franca 模型的顶级元素 FModel 的转换产生了 AUTOSAR 包的结构,稍后用作进一步元素的容器。生成包含完整翻译结果的顶级包(FrancaModelPackage)。 它被添加到 AUTOSAR XML 的根目录中。

799_AUTOSAR_TR_FrancaIntegration6_Franca到AUTOSAR的转换1_修订版_04

       Franca 模型映射到 AUTOSAR 顶级包结构 d FModel fModel 映射到下面一堆表格的描述中。

799_AUTOSAR_TR_FrancaIntegration6_Franca到AUTOSAR的转换1_应用程序_05

799_AUTOSAR_TR_FrancaIntegration6_Franca到AUTOSAR的转换1_修订版_06

       Franca 版本信息映射到 AUTOSAR 文档修订版。

       Franca 版本映射到 AUTOSAR 文档修订版

       Franca 元素 fElement 的 FVersion fVersion 映射到文档修订版 docRevision = fVersion.major + "."  + fElement 映射到的 AUTOSAR 元素的 fVersion.minor。

799_AUTOSAR_TR_FrancaIntegration6_Franca到AUTOSAR的转换1_数据类型_07

799_AUTOSAR_TR_FrancaIntegration6_Franca到AUTOSAR的转换1_应用程序_08

       3.3 Franca 类型

       AUTOSAR 区分应用数据类型和实现数据类型。 应用程序数据类型允许定义从应用程序的角度来看所需的所有数据属性,以便在软件组件之间或软件组件与测量和校准工具之间交换数据。 实现数据类型对应于 CPU 上的编程语言处理的实际二进制数。 它们包含指针和联合等概念,这些概念与内存中的数据组织有关,与应用程序级别无关。实现数据类型尤其是生成 C 代码的来源。根据第 1 章“介绍”中所述的 Franca 集成目标——获得集成系统的应用程序级视图——应用程序数据类型是 Franca 到 AUTOSAR 转换的合适目标。 但是,Franca IDL 包括联合类型和类型定义作为数据类型构造函数; 这些不在 AUTOSAR 应用程序数据类型构造函数中。

       另一方面,AUTOSAR 实现数据类型构造函数包括联合类型和类型定义,以及其他 Franca 类型构造函数。因此它们可以用作数据类型从 Franca 到 AUTOSAR 转换的目标。 然而,由于它们用于代码生成,因此它们的规范需要比 Franca 模型中给出的更多细节。 此外,如果 Franca 模型也用于校准或测量目的,则再次需要 AUTOSAR 应用程序数据类型的表达能力。

       由于这些原因,Franca 到 AUTOSAR 转换尝试将 Franca 数据类型映射到:

       • AUTOSAR 应用程序数据类型

       • AUTOSAR 实现数据类型

       • 以及关联这两种数据类型的 AUTOSAR 数据类型映射。

799_AUTOSAR_TR_FrancaIntegration6_Franca到AUTOSAR的转换1_修订版_09

       如上所述,可能会发生没有为 Franca 数据类型生成的 AUTOSAR 应用程序数据类型。 总是会生成 AUTOSAR 实现数据类型,但完全不转换的 Franca 映射类型除外。 当同时生成应用程序数据类型和实现数据类型时,它们通过数据类型映射相关联。

799_AUTOSAR_TR_FrancaIntegration6_Franca到AUTOSAR的转换1_修订版_06

       Franca 数据类型的应用和实现数据类型是相关的

       当 Franca 数据类型映射到 AUTOSAR ApplicationDataType appType 和 AUTOSAR ImplementationDataType implType 时,appType 和 implType 通过 DataTypeMap 相关联。 由 Franca 模型转换产生的数据类型映射被收集在一个全局 DataTypeMappingSet 中,该 DataTypeMappingSet 包含在 [TR_FRANCA_00010] 中定义的 FrancaDataTypeMaps 包中。

       Franca 数据类型到 AUTOSAR 数据类型的转换会产生一个映射 ARType,其定义如下。

799_AUTOSAR_TR_FrancaIntegration6_Franca到AUTOSAR的转换1_autosar_11

       从 Franca 数据类型到 AUTOSAR 数据类型的映射

       让 fDataType 成为 Franca 数据类型。

       1. 如果 fDataType 可以转换为 AUTOSAR 应用程序数据类型 arAppDataType,则 ARType(fDataType) = arAppDataType。

       2. 如果 fDataType 无法转换为 AUTOSAR 应用程序数据类型,而是转换为 AUTOSAR 实现数据类型 arImplDataType,则 ARType(fDataType) = arImplDataType。

       3. 如果 fDataType 既不能转换为 AUTOSAR 应用程序数据类型,也不能转换为 AUTOSAR 实现数据类型,则 ARType(fDataType) 是未定义的。

       这次的小结暂且到此。关于这部分的转换的出现,其实还是因为Franca架构中的一些定义的缺失。关于类型以及方法的缺失,导致这方面其实可以出现很多可能性,在方法论中不能够清晰表达。如果是定义明确了的话,其实就是一个很简单的转换了。