797_AUTOSAR_TR_FrancaIntegration4_限制和扩展

       全部学习汇总: GitHub - GreyZhang/hack_autosar: learning autosar documents, aha, very hard!

       继续学习AUTOSAR的文档,看一下《AUTOSAR_TR_FrancaIntegration》。

797_AUTOSAR_TR_FrancaIntegration4_限制和扩展

       1.5 限制和扩展

       1.5.1 动态通信

       AUTOSAR 过程要求在运行时可能发生的应用程序组件实例之间的所有互操作在 AUTOSAR 软件组件描述中静态声明(在编译时之前)。 另一方面,信息娱乐系统中的互相操作通常是动态的。 例如,GENIVI 使用允许在运行时动态发现和连接服务提供者的套接字。 未来的 AUTOSAR 版本也可能支持动态通信,但在当前状态下,通信链接的静态声明是强制性的。 因此,至少必须在设计时知道和识别应互操作的 AUTOSAR 和 GENIVI 组件实例。 在 GENIVI 端,可以将这些组件实例作为占位符引入,并在运行时通过相应的动态发现和连接服务建立与真实组件实例的连接。 在 AUTOSAR 端,无论如何都必须在设计时声明实例,因此它们存在并且可用于互连的规范。

       使用此类解决方案,静态互连声明将仅限于作为此限制基础的 AUTOSAR 部分,而 GENIVI 部分将不受约束。 有必要对动态通信与 AUTOSAR 系统的集成进行更详细的讨论,但不在本报告的范围内。

797_AUTOSAR_TR_FrancaIntegration4_限制和扩展

       1.5.2 RTE 合约和 RTE 生成

       Franca 集成旨在集成系统的虚拟功能总线视图,这只是 AUTOSAR 开发的第一步。 为了生成 AUTOSAR RTE,需要有关 ECU 网络、应用程序组件以及应用程序组件到 ECU 网络的映射的更多信息。该信息在 [4] 中定义。 在第一步,即 RTE 合约阶段,需要定义和实现组件的行为,并且必须细化有关数据类型的信息。 第二步,RTE 生成阶段,也需要有关 ECU 资源和应用程序组件到资源的映射的信息。对于 AUTOSAR 和 GENIVI 系统的完整集成,还必须考虑这些阶段和相应的描述要求。

       由于 Franca IDL 没有指定行为、资源或分配的固定方法,因此 Franca Integration 无法定义相应的转换。为涵盖这些方面的 AUTOSAR 集成定义 Franca 部署规范更像是一项任务。

797_AUTOSAR_TR_FrancaIntegration4_限制和扩展

       2 Franca 连接器

       Franca 连接器是引入的新格式,用于指定 Franca 和 AUTOSAR 应用程序组件所需的互操作。它由三个主要部分组成:

       导入:对 Franca 模型的引用和分别定义 Franca 和 AUTOSAR 应用程序组件的 AUTOSAR 软件组件描述。

       Franca 实例:应参与所需互操作的 Franca 组件实例的定义。

       链接:AUTOSAR 和 Franca 组件实例互连的定义。

797_AUTOSAR_TR_FrancaIntegration4_限制和扩展

       2.1 导入和 Franca 实例

       导入是一个字符串,表示 Franca 模型(fidl 文件)或 AUTOSAR 软件组件描述(arxml 文件)的位置。 导入特别定义了可以在 Franca 连接器中引用的 Franca 接口和 AUTOSAR 端口。

       Franca 实例通过它的名称和它实现的 Franca 接口列表来声明。Franca 接口必须包含在导入的 Franca 模型中。实例的已实现接口列表可能为空。

       Franca 连接器中 Franca 实例定义的一个可能的具体符号是 franca_instance g 实现 F 1;  : : : ;  F n 其中 g 是定义的 Franca 实例的名称,F 1;  : : : ;  F n 是已实现的 Franca 接口的名称。

797_AUTOSAR_TR_FrancaIntegration4_限制和扩展

       2.2 链接

       链接有 AUTOSAR 端和 Franca 端。AUTOSAR 端总是由端口实例引用给出,即一个 SwComponentPrototype 和一个属于 SwComponentPrototype 的 SwComponentType 的 PortPrototype。  AUTOSAR 端的一个可能的具体符号是 autosar_port comp : p,其中 comp 是 SwComponentPrototype 的名称,p 是 PortPrototype 的名称。链接的 Franca 端由单独的 Franca 实例或由 Franca 实例和它实现的 Franca 接口之一给出。

       franca_instance g:F 或 franca_instance g

797_AUTOSAR_TR_FrancaIntegration4_限制和扩展

       其中 g 是 Franca 实例的名称,F 是 Franca 接口的名称。

       链接在预期通信流的意义上是定向的。 链接的左侧定义了发出数据元素或操作调用的实例;右侧定义了接收数据元素或操作调用的实例。

       每个 AUTOSAR 端口都由一个接口类型化,该接口可以是客户端服务器接口或发送方接收方接口。在第一种情况下,它包含在端口提供(提供,PPortPrototype)或需要(RPortPrototype)的操作。 在第二种情况下,它包含在端口发送(提供,PPortPrototype)或预期(需要,RPortPrototype)的数据元素。两种 AUTOSAR 接口和 Franca Connector 链路的两个方向(AUTOSAR-to-Franca 和 Franca-to-AUTOSAR)产生四种类型的链路。

       1. AUTOSAR 到 Franca 客户端服务器链接

       2. AUTOSAR 到 Franca 发送器接收器链接

       3. Franca 到 AUTOSAR 客户端服务器链接

       4. Franca 到 AUTOSAR 发送器接收器链接

       图 2.1,“AUTOSAR 和 Franca 组件的链接实例”显示了四种可能的链接类型的示例。 它使用混合符号,仅用于解释 Franca 链接类型、它们在 Franca 连接器中的表示以及转换为 AUTOSAR 的结果。组件和端口以 AUTOSAR 样式显示。为简洁起见,在类型级别描述了链接;在更忠实的图中,应该显示端口实例引用的连接。连接器使用上面介绍的链接的具体符号进行标记,其中为简洁起见,省略了标签 autosar_port 和 franca_instance。 链接的名称(AF_CS、AF_SR、FA_CS 和 FA_SR)指示方向(AUTOSAR-toFranca 或 Franca-to-AUTOSAR)和 AUTOSAR 端口接口类型(客户端-服务器或发送方-接收器)。 两个 Autosar 到 Franca 发送方接收器链接 AF_SRPull 和 AF_SRPull 的区别在于 Franca 中可能将方法声明为即发即弃方法。 这将在下面和第 3.4.2 小节“Franca方法”中进行更详细的解释。

797_AUTOSAR_TR_FrancaIntegration4_限制和扩展

797_AUTOSAR_TR_FrancaIntegration4_限制和扩展

       在下面的讨论中,我们假设以下 AUTOSAR 和 Franca 元素作为起点。

       1. 具有以下端口的 AUTOSAR 组件 A。列表不再重复写了。

       2. 类型为 A 的 AUTOSAR 组件原型 a。

       3. 带有方法 m1 和广播 b1 的 Franca 接口 F1,以及带有即发即忘方法 m2 的第二个 Franca 接口 F2。

       4. 实现 F1 和 F2 的 Franca 实例 g。

797_AUTOSAR_TR_FrancaIntegration4_限制和扩展

       Franca 接口和 Franca 实例到 AUTOSAR 的转换(将在下一章讨论)产生了图 2.1“AUTOSAR 和 Franca 组件实例的链接”右侧所示的组件类型。 对于每个 Franca 接口(例如 F1),有三个端口

       1. 一个提供 Franca 接口的方法作为 AUTOSAR 操作(由 prov_operations_F1 键入的 csProvPort_F1)。

       2. 提供 Franca 接口的广播作为 AUTOSAR 数据元素(由 prov_dataElements_F1 键入的 srProvPort_F1)。

     3. 请求 Franca 接口的即发即弃方法作为 AUTOSAR 数据元素(由 req_dataElements_F1 键入的 srReqPort_F1)。

       这五个连接器由下面讨论的五个 Franca 链接生成。

       做一个简单的小结吧!这一部分,能够真正消化理解的部分就是不同系统之间的一些接口的转换调整了,其实不管是什么系统架构做这样的切换应该都是类似的思路。Franca系统架构我个人了解的不多,因此可能还是有一些小细节上甚至大框架相关的地方理解吃力或者理解错误。好在,这不是我当前工作的主业。

上一篇:leetcode 797. 所有可能的路径


下一篇:[题解]797. 所有可能的路径(C++)