Autosar知识:方法论-变量处理

变量处理中的变异点

AUTOSAR的变量处理是在通用结构模板中定义的。首先,这个概念定义了在AUTOSAR元模型中将某些位置指定为可变点的方法。一个点大致由一个条件(在什么条件下这个变化是活动的?)和一个绑定时间(什么时候应该解决这个变化?)组成。

其次,还有预定义的变体。

变量处理中的预定义变量

一个典型的AUTOSAR模型可能包含大量的可变点。然而,通常只有相对较少的变异(即。,“活动”变异点的组合)被积极使用。

每个预定义的变体都描述这样的变体。

 

 

1、绑定时间

绑定时间的类型

AUTOSAR变体处理为AUTOSAR定义了两种绑定时间:最新的绑定时间和实际的绑定时间。它们具有相同类型的值,但用于不同的上下文中。

BlueprintDerivationTime和PostBuild不是元模型中使用的实际枚举的一部分,但是它们由变化点的结构隐含。 

AUTOSAR定义了以下绑定时间(按时间顺序在这里显示):

• BlueprintDerivationTime

• SystemDesignTime

• CodeGenerationTime

• PreCompileTime

• LinkTime

• PostBuild

通用结构模板提到了另外两个绑定时间。首先是FunctionDesignTime,它出现在SystemDesignTime之前,但独立于BluePrintDerivationTime。其次,还有运行时,它位于PostBuild之后。这些绑定时间不包括在AUTOSAR中,这里只是为了完整性而提到。

还应该指出,绑定“时间”实际上并不是一个时间点,而是AUTOSAR系统开发中的一个阶段。

 

最新的绑定时间

在AUTOSAR元模型中,每个变化点都有一个最新的绑定时间,这由标记Vh.LatestBindingTime实现。顾名思义,特定变化点的最新绑定时间为何时绑定该点设置了上限。变体的绑定时间可能早于此时间,但不能晚于此时间。 

例如,构成的一部分的软件组件的最新绑定时间是PostBuild。换句话说,ECU可以配置为在启动时确定软件组件是否处于活动状态。

但是,并非总是可能在最近的可能时间绑定变体。继续上面的示例,将所有软件组件都设置为PostBuild意味着可执行文件始终包含所有软件组件的代码和其他资源,无论其是否被激活。因此,可执行文件可能会变得太大而无法容纳在其指定的ECU上。在这种情况下,通常需要在PreCompileTime或什至SystemDesignTime上更早地绑定软件组件。

这不是导致此决定的唯一方案。例如,一个软件组件可能包含两个或多个子组件,每个子组件特定于某个供应商。在这种情况下,在将软件组件交付给特定供应商之前,通常会删除针对其他供应商的子组件。显然,这可以最晚在PrecompileTime上完成。

在某些情况下,变化点的绑定时间存在隐式(即未描述元模型)下限。例如,如果软件组件A中的变体使用软件组件B中的变体,则需要协调绑定时间。如果组件B是PostBuild,则组件A不能为SystemDesignTime,而是使用软件组件A。

实际装订时间

这将我们带到一个变化点的实际绑定时间,该时间存储在变化点的属性中。 再有,在这个阶段并不一定要精确地绑定变化点。 相反,它声明了在以后的阶段中不得绑定变化点。该属性名为bindingTime,位于变化点的ConditionByformula元素上。 对于AttributeValueVariationPoint,它包含在属性bindingTime中。

此绑定时间可能早于最新的绑定时间。

如前一节所述,可以在PostBuild上绑定软件组件的组合,但是这样做并不总是理想的,甚至是不可行的。 在这种情况下。 bindingTime应该声明更早的绑定时间。

另外,与最新的绑定时间不同,后者是元模型元素,在M2级别上表示,该绑定时间是与变化点关联的模型元素,在M1级别上表示。

也就是说,变化点的绑定时间限制了必须绑定特定变化点的点,但是此绑定时间又受到最新绑定时间的限制。

2、变体的定义

变体几乎总是不止一个

单个变量点或单个系统常数。通常,变量是系统常数或构建后变量条件的值分配列表。在AUTOSAR模型中,此类列表由元类PredefinedVariant的实例表示,请参见工件“预定义变量”的定义。 

评估变体集

类似地,元类EvaluatedVariantSet的实例是一组已知的预定义变量,这些预定义变量对于元模型的某个元素(例如特定软件组件)起作用(或不起作用)。评估的变体可用于在不同供应商之间交换有关已知变体的信息,例如记录软件组件的哪些变体已经过测试并且已知有效。

在“方法论SPEM”模型中,变量选择器由“评估变量集”工件表示,该工件由“评估变量”任务创建。
此信息是必需的,因为存在大量可能的变体,但其中只有很小一部分是可行的。

使用预定义的变体

PredefinedVariant实例中包含的一组系统常数通常会影响许多变化点,这些变化点位于模型中的不同位置并具有不同的绑定
次。

因此,预定义的变体不能直接与元模型中的特定位置或特定的绑定时间相关联。相反,PredefinedVariant用于多个元模型元素,并且在不同的绑定时间使用。

 

3、选择变体

一个系统中是否包含一个变化点,取决于一个或多个变量。如果变化点的绑定时间是从SystemDesignTime到LinkTime的任何时间,则该变化点将包含一个基于系统常数的表达式(请参见工件系统常数值集)。如果该表达式的计算结果为true,则该变化点将包含在系统中。 PostBuild使用简化的方案,该方案仅允许与PostBuildVariantCriterion(技术上为ARElement)进行一次比较。

因此,一旦确定了各个系统常数的值或构建后的变体条件,就应选择一个变体。通常,这是通过选择一个redefinedVariant来完成的,其中包含各个值。显然必须在绑定变化点之前进行此选择。但是,它不必在绑定变化点之前立即发生。

例如,确定PreCompileTime变化点的系统常数可能已经在SystemDesignTime上选择了,但是实际绑定必须延迟到PreCompileTime,因为它依赖于具有绑定时间PreCompileTime的另一个软件组件。

此外,由于PredefinedVariant跨越多个变化点,这些变化点可能具有不同的绑定时间,因此在选择了PredefinedVariant之后,某些变化点可能会立即具有绑定时间(最新甚至是实际的),而其他的可能会有较晚的绑定时间。

最后,选择特定变体的决定通常与遵循其自身时间表的特定于供应商的过程有关。

因此,选择特定变体的时间通常与绑定相关变体点的时间不同。总而言之,必须在绑定某个变体之前的某个时间选择一个变体,但是这种变体发生的实际时间不是由AUTOSAR决定的,这也完全取决于供应商。

 

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值