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

       继续学习AUTOSAR,看一下官方文档SWC模板部分。

898_AUTOSAR_TPS_SoftwareComponentTemplate8_软件组件、端口以及接口2_生成器

       3.2.4 ParameterSwComponentType

       ParameterSwComponentType 永远不会聚合 SwcInternalBehavior 并且还专门拥有 ParameterInterface 类型的 PPortPrototypes。

       但是,ParameterSwComponentType 应能够聚合 InstantiationDataDefProps。 通过这种方式,可以在 ParameterSwComponentType 的范围内定义用于定义校准参数的复合数据类型元素的角色特定数据属性。

       有关这方面的更多信息,请参阅第 7.5.4 节。

898_AUTOSAR_TPS_SoftwareComponentTemplate8_软件组件、端口以及接口2_it技术_02

898_AUTOSAR_TPS_SoftwareComponentTemplate8_软件组件、端口以及接口2_autosar_03

       3.2.5 软件组件的符号名称

       请注意,AtomicSwComponentType 在部署了 AtomicSwComponentType 实例的 RTE 的源代码中体现了自身。 如果将具有相同 shortNames 的 AtomicSwComponentType 实例部署到特定 RTE,则这意味着潜在的命名冲突。

       软件组件的符号名称

       为了减轻这种潜在危险,可以提供 AtomicSwComponentType 以及可用于解决名称冲突的伴随符号名称。 符号名是通过角色symbolProps中AtomicSwComponentType拥有的元类SymbolProps的属性symbol提供的(更多信息请参考图3.6)。

       该元类表示将符合 C 语言要求的符号名称与符号属性附加到另一个元类的能力,例如 AtomicSwComponentType,这是 RTE 源代码级别的名称冲突的潜在主题。

898_AUTOSAR_TPS_SoftwareComponentTemplate8_软件组件、端口以及接口2_递归_04

       有关如何使用 SymbolProps 减轻在 AUTOSAR ECU 上集成软件组件期间发生的名称冲突的更多详细信息,请参阅 [4]。

       符号道具的属性符号的使用

       特别是,RTE 生成器应接管给定 AtomicSwComponentType 拥有的 symbolProps 的属性符号的值。 当且仅当没有定义 symbolProps 时,RTE 生成器应采用 AtomicSwComponentType 的 shortName。 对于 RunnableEntity [TPS_SWCT_01001] 的符号生成,应遵守。

898_AUTOSAR_TPS_SoftwareComponentTemplate8_软件组件、端口以及接口2_命名约定_05

       为 RunnableEntity 生成的前缀符号

       当且仅当 AtomicSwComponentType 拥有的 symbolProps 的属性符号存在时,它的值也应作为为 AtomicSwComponentType 拥有的 RunnableEntity 生成的符号的前缀。

       注意:如果没有定义 symbolProps,则 RTE 生成器的行为是完全向后兼容的,即为了符合此版本的 AUTOSAR 标准,不必触及 RunnableEntitys 的现有实现。

       这是进一步降低 RTE 代码中潜在名称冲突风险的措施。

898_AUTOSAR_TPS_SoftwareComponentTemplate8_软件组件、端口以及接口2_递归_06

       命名约定可能支持 SymbolProps 的有效性

       当然,即使存在 SymbolProps 名称冲突也可能发生残余风险。 因此,命名约定的定义可能有助于进一步避免名称冲突。

       但是,这些命名约定(在元模型的支持下,例如通过使用 SymbolProps 或 shortNamePattern)仍然只能在模型级别定义。

898_AUTOSAR_TPS_SoftwareComponentTemplate8_软件组件、端口以及接口2_递归_07

898_AUTOSAR_TPS_SoftwareComponentTemplate8_软件组件、端口以及接口2_递归_08

       3.3 组成

       3.3.1 概述

       CompositionSwComponentType

       AUTOSAR CompositionSwComponentType 的目的是允许通过聚合现有软件组件来封装特定功能。

       CompositionSwComponentTypes 的嵌套定义

       由于 CompositionSwComponentType 也是 SwComponentType,因此它可以再次聚合在进一步的 CompositionSwComponentTypes 中。

       图 3.7 正式表达了这种递归关系。

       重要的是要理解,虽然组合允许(子)系统抽象,但它们只是用于实现模型可扩展性的架构元素。 他们只是将现有的软件组件分组,从而在查看或设计逻辑软件架构时消除复杂性。

       因此,CompositionSwComponentTypes 的定义对软件组件如何与虚拟功能总线 (VFB) 交互没有影响。  CompositionSwComponentTypes 不会向它们聚合的软件组件已经提供的功能添加任何新功能。

898_AUTOSAR_TPS_SoftwareComponentTemplate8_软件组件、端口以及接口2_it技术_09

       CompositionSwComponentTypes 没有任何二进制痕迹

       作为主要结果,CompositionSwComponentTypes 在 ECU 软件中没有任何二进制痕迹。

898_AUTOSAR_TPS_SoftwareComponentTemplate8_软件组件、端口以及接口2_递归_10

       3.3.2 SwComponentPrototype

       CompositionSwComponentType 聚合 SwComponentPrototypes

       就 AUTOSAR 元模型而言,由元类 CompositionSwComponentType 实现的软件组件的组合聚合 SwComponentPrototypes,而 SwComponentPrototypes 又由 SwComponentType 类型化。

       请注意 CompositionSwComponentType 也是 SwComponentType。

898_AUTOSAR_TPS_SoftwareComponentTemplate8_软件组件、端口以及接口2_autosar_11

898_AUTOSAR_TPS_SoftwareComponentTemplate8_软件组件、端口以及接口2_命名约定_12

       CompositionSwComponentType 聚合了 SwComponentPrototypes(依次由 SwComponentTypes 类型化)以及 SwConnectors,主要用于将 SwComponentPrototypes 相互连接并连接到 CompositionSwComponentType 的表面。 通过这种方式,可以创建软件组件的层次结构。

898_AUTOSAR_TPS_SoftwareComponentTemplate8_软件组件、端口以及接口2_autosar_13

       软件组件在组合中的作用。

898_AUTOSAR_TPS_SoftwareComponentTemplate8_软件组件、端口以及接口2_命名约定_14

898_AUTOSAR_TPS_SoftwareComponentTemplate8_软件组件、端口以及接口2_autosar_15

       SwComponentPrototype 实现特定的角色

       因此,一个SwComponentPrototype实现了 SwComponentType 在特定角色中的使用。

898_AUTOSAR_TPS_SoftwareComponentTemplate8_软件组件、端口以及接口2_递归_16

       可以创建任意数量的 SwComponentPrototypes

       通常,可以创建任意数量的引用特定 SwComponentType 的 SwComponentPrototype。

       示例:SwComponentPrototype“LeftDoorControl”实现了车辆左门的SwComponentType“DoorControl”的作用,而SwComponentPrototype“RightDoorControl”实现了右门的SwComponentType“DoorControl”的作用。

898_AUTOSAR_TPS_SoftwareComponentTemplate8_软件组件、端口以及接口2_命名约定_17

       委托端口

       请注意,作为 SwComponentType,CompositionSwComponentType 还向外界公开 PortPrototypes。 但是,PortPrototypes 只是委托的,与附加到 AtomicSwComponentTypes 的 PortPrototypes 的作用不同。

898_AUTOSAR_TPS_SoftwareComponentTemplate8_软件组件、端口以及接口2_it技术_18

       成为委托端口的意义

       作为 PortPrototype 附加到 CompositionSwComponentType 具有以下含义:

       • 委托必须遵循第 6 章中定义的规则。

       • 通过在特定 CompositionSwComponentType 的表面上创建 PortPrototype,可以明确决定 CompositionSwComponentType 中包含的“内部”端口的内容是否暴露给外部世界。

       请注意,PortPrototypes 的委托语义类似于面向对象编程语言中的公共和私有成员等封装机制。

       CompositionSwComponentType 概念的一个含义是,整个车辆的应用软件最终由一个 CompositionSwComponentType 表示。 这种所谓的顶级组合在 AUTOSAR 系统模板 [11] 的上下文中具有特殊作用。

       但是,请注意顶级组合可能具有(未连接的)PortPrototypes,以便允许作为另一个系统的一部分重用。

898_AUTOSAR_TPS_SoftwareComponentTemplate8_软件组件、端口以及接口2_生成器_19

       CompositionSwComponentType 的递归定义

       最终包含由相同 CompositionSwComponentType 类型化的 SwComponentPrototype 的 CompositionSwComponentType 的递归定义不可行。

898_AUTOSAR_TPS_SoftwareComponentTemplate8_软件组件、端口以及接口2_命名约定_20

       3.3.3 连接器

       SwConnector

       请注意,CompositionSwComponentType 还聚合了抽象元类 SwConnector,用于连接彼此包含的 SwComponentPrototype(参见图 3.8)。

       CompositionSwComponentTypes 包含两种 SwConnectors:

       AssemblySwConnector

       AssemblySwConnectors 互连作为 CompositionSwComponentType 一部分的 SwComponentPrototypes 的 PortPrototypes。

       DelegationSwConnector

       DelegationSwConnectors 从“内部”PortPrototype 连接到委托的“外部”PortPrototype。

898_AUTOSAR_TPS_SoftwareComponentTemplate8_软件组件、端口以及接口2_it技术_21

       DelegationSwConnector 只能连接同类型的 PortPrototypes

       DelegationSwConnector 只能连接同类的 PortPrototype,即 PPortPrototype 到 PPortPrototype,RPortPrototype 到 RPortPrototype。

       外部 PortPrototype 被多个 DelegationSwConnector 引用

       在外部 PortPrototype 被多个 DelegationSwConnector 引用的情况下,语义是引用外部 PortPrototype 的 AssemblySwConnectors 的乘法。

       这部分主要看了参数软件组件类型的一些介绍,还有连接器等相关的描述。