全部学习汇总: https:///GreyZhang/hack_autosar

       继续学习AUTOSAR,看一下官方的文档。这次,继续看关于模板中变体点的部分。

881_AUTOSAR_TPS_GenericStructureTemplate28_变体点2_生成器

881_AUTOSAR_TPS_GenericStructureTemplate28_变体点2_生成器_02

       7.6.4(最新)绑定时间

       在 7.1 节中,我们已经看到每个变化点都有一个绑定时间。 绑定时间(参见 [14])可以进一步分为 PreBuild 和 PostBuild 绑定时间:

       PreBuild 变化点的定义

       此类别包含以下绑定时间:systemDesignTime、codeGenerationTime、preCompileTime 和 linkTime。

       如果一个具体的变化点(即 M1 级别)包含一个 ConditionByFormula 元素,则它会受到 PreBuild 变化的影响。 它的绑定时间在 ConditionByFormula 元素的 bindingTime 属性中指定。

       使用蓝图条件定义预构建变化点

       该类别仅包含单个绑定时间,即 blueprintDerivationTime。

       如果一个具体的变化点(即在 M1 级别上)包含 blueprintCondition 和/或formalBlueprintCondition 属性,则它受制于带有 blueprintDerivationTime 的 PreBuild 变化。

       PostBuild 变化点的定义

       此类别仅包含单个绑定时间,即 PostBuild。

       如果包含 PostBuildVariantCondition 元素,则具体的变化点(即在 M1 级别上)是 PostBuild。 由于 PostBuild 只有一个绑定时间,因此不需要指定绑定时间的特定属性。

       绑定时间进一步受到标签 vh.latestBindingTime 的限制,该标签在 7.2 到 7.5 节之前的模式中引入:

881_AUTOSAR_TPS_GenericStructureTemplate28_变体点2_autosar_03

       BindingTime 受 vh.latestBindingTime 约束

       • 如果vh.latestBindingTime = PostBuild,则M1 级别上的变化点可能具有任何绑定时间。 它可能是 PreBuild 或 PostBuild 变体点(或两者,并且可以聚合 ConditionByFormula 或 PostBuildVariant Condition。

       • 如果vh.latestBindingTime < PostBuild,则M1 级别的变体点只能是PreBuild,而不能是PostBuild 变体点。 显然,在这种情况下它可能只聚合一个 ConditionByFormula。

       • 如果vh.latestBindingTime = BlueprintDerivationTime,则M1 级别的变体点只能聚合角色blueprintCondition 和/或formalBlueprintCondition 中的DocumentationBlock。

       另见 [constr_2557] 和 [constr_2558]。

       很明显,一个 PreBuild 变化点的绑定时间(即 ConditionByFormula 的属性 bindingTime 的值)绝对不能超过 vh.latestBindingTime。

       7.6.5 PreBuild变体点

881_AUTOSAR_TPS_GenericStructureTemplate28_变体点2_系统设计_04

       此类表示根据指定表达式基于系统常量计算的条件。 预期结果被视为布尔值。

       表达式的结果被解释为条件。

       • “0”代表“假”;

       • 零以外的值被视为“真”

881_AUTOSAR_TPS_GenericStructureTemplate28_变体点2_autosar_05

       实现 PreBuild 变体点所需的所有信息都由类 ConditionByFormula 提供:

       • ConditionByFormula 派生自 SwSystemconstDependentFormula。

       此类实现了(布尔)公式,该公式确定变化点是“开”还是“关”。

       公式语言在第 4.7 节中定义。 另请参阅第 7.6.8 节以进一步说明如何在变体处理概念中使用公式。

       • ConditionByFormula 有一个属性bindingTime,它定义了这个变化点的最新绑定时间。 结合时间在[14]中有更详细的描述。

       尽早绑定 VariationPoints

       如果技术上可行,并且在约定限制内,具体的软件系统可以在更早的绑定时间绑定一个变体点。 我们定义了额外的限制变体点绑定时间晚于系统设计时间是约定的一部分。

       根据此限制,即使在 RTE 的输入中已经选择了可变性,RTE 生成器也不允许解析应用程序头文件中的可变性。

       如果绑定时间是systemDesignTime,那么可变性不被视为合约阶段的一部分,必须在约定之前的systemDesignTime期间正确绑定。

881_AUTOSAR_TPS_GenericStructureTemplate28_变体点2_属性值_06

       7.6.6 PostBuild变化点

       此类指定必须分配给特定变体标准以绑定变体点的值。 如果指定了多个标准/值对,它们都应匹配以绑定变化点。

       换句话说,绑定可以表示为 (criterion1 == value1) && (condition2 == value2) ...

881_AUTOSAR_TPS_GenericStructureTemplate28_变体点2_系统设计_07

       此类指定一个特定的 PostBuildVariantSelector。

       标签: atp.recommendedPackage=PostBuildVariantCriterions

881_AUTOSAR_TPS_GenericStructureTemplate28_变体点2_赋值_08

       PostBuild 变体点包含角色 postBuildVariantCondition 中的多个 PostBuildVariantConditions,后者又具有对 PostBuildVariantCriterion 的引用。 与由 ConditionByFormula 中定义的公式管理的 PreBuild 变化点不同,PostBuild 变化点由 postBuildConditions 的组合管理。

       postbuildVariantCondition 仅适用于 PostBuild

       仅当带注释的模型将 vh.latestBindingTime 声明为 PostBuild 时,才允许在 VariationPoint 中聚合 PostBuildVariantCondition。

       PostBuild 标准的 PreBuild 配置

       PostBuildVariantCondition 的属性值受 PreBuild 变化的影响。 它使用属性值模式,因此它的最新绑定时间是 preCompileTime。 那是,将与 PostBuildVariantCriterion 的内容进行比较的值在 preCompileTime(最多)计算 11。

       但是,与 PostBuildVariantCriterion 内容的实际比较是根据 ECU 启动时的结果进行的。

881_AUTOSAR_TPS_GenericStructureTemplate28_变体点2_生成器_09

       评估 PostBuildVariantCondition

       VariationPoint 元素可以在 postBuildVariantCondition 角色中聚合任意数量的 PostBuildVariantCondition。 所有这些元素之间都隐含了一个逻辑和:如果对于所有 postBuildVariantConditions,PostBuildVariantCondition 中定义的值与 RTE 为 PostBuildVariantCriterion 提供的值匹配,则 PostBuild 变体点为“启用”(参见 [SWS_Rte_06612])。

881_AUTOSAR_TPS_GenericStructureTemplate28_变体点2_属性值_10

       PostBuildVariantCriterion 的可能值

       PostBuildVariantCriterion 还指代一个 compuMethod,它指定标准的可能值以及数据的物理和内部表示之间的转换(有关详细信息,请参阅软件组件模板 [16] [TPS_SWCT_01243]、[TPS_SWCT_01278])。

       RTE 负责管理 PostBuildVariantCriterion 值 ([SWS_Rte_06612])。

881_AUTOSAR_TPS_GenericStructureTemplate28_变体点2_autosar_11

       7.6.7 系统常数

       对于 PreBuild 变体点,绑定函数取决于 SwSystemconst。 这样的系统常量基本上是一个名称/值对。 系统常量的 shortName、dataConstr 和 compuMethod 在 SwSystemconst 中定义。

       SwSystemconst 的表示

       SwSystemconst 的 SwDataDefProps 中的 compuMethod 仅用于支持工具和文档中值的适当表示。 这些值应始终设置为内部表示。

       更多细节请参考[16]。

881_AUTOSAR_TPS_GenericStructureTemplate28_变体点2_生成器_12

881_AUTOSAR_TPS_GenericStructureTemplate28_变体点2_autosar_13

       这个元素定义了一个系统常数,它作为一个输入来选择一个特定的变化点。 特别地,系统常数在变化点中用作绑定函数 (swSyscond) 的操作数。

       请注意,只有将值分配给引用的系统常量时,绑定过程才会发生。

       标签: atp.recommendedPackage=SwSystemconsts

881_AUTOSAR_TPS_GenericStructureTemplate28_变体点2_赋值_14

       为 SwSystemconst 赋值

       为了选择变体,需要将值分配给 SwSystemconst。请注意,这些值应始终指定为“内部值”。 这是在 SwSystemconstValue 中完成的。

881_AUTOSAR_TPS_GenericStructureTemplate28_变体点2_属性值_15

       不允许对 SwSystemconst 进行循环赋值

       明确禁止将值分配给 SwSystemconst,而 SwSystemconst 又直接或间接依赖于此值分配。

       由于值的循环依赖性,无法解析对 SwSystemconst 的循环值分配。

881_AUTOSAR_TPS_GenericStructureTemplate28_变体点2_系统设计_16

881_AUTOSAR_TPS_GenericStructureTemplate28_变体点2_赋值_17

       这个元类为系统常量分配一个特定的值。

       这一次主要是看了绑定时间以及几个绑定时间约束下的变体点,之后看了系统的常量设计。