706_AUTOSAR_TR_Methodology_文档阅读26_变体处理_三
全部学习汇总: [https://github.com/GreyZhang/hack\_autosar][https_github.com_GreyZhang_hack_autosar]
继续分析《AUTOSAR\_TR\_Methodology》。
表 2.57 概述了 AUTOSAR 变体处理中的绑定时间。
AUTOSAR 元模型中的变体处理支持的绑定时间,其实从上面的表格中也是可以看出来的。
元模型中变化点的最新绑定时间的定义
所有这些绑定时间都可以在标签 Vh.latestBindingTime 中使用,该标签用于定义元模型中变化点的最新绑定时间。
一个变体点的实际绑定时间存储在一个VariationPoint的ConditionByFormula的属性bindingTime中,并且只能使用值SystemDesignTime、CodeGenerationTime、PreCompileTime、LinkTime。
看起来这些要求都是对工具设计的要求。
AUTOSAR 方法使用另外两个绑定时间,InitialBindingTimes 来表征没有绑定变化点的工件,以及 CompileTime 来区分代码的预处理和编译。 最后,FunctionDesignTime 和 Runtime 不在 AUTOSAR 变体处理的范围内,但为了完整性在此处提及。
蓝图变体阶段
在 BlueprintDerivationTime,模型是从蓝图派生的。 例如,功能设计工具提供了从一组预定义的蓝图派生对象的选项。 有关更多详细信息,请参阅 \[19\]。 这与本章定义的变体处理不同,但它使用相同的元模型特征(参见 \[18\])。
BlueprintDerivationTime 超出了本文档的范围,但为了完整性在此提及。
输入工件:模型、需求
输出工件:ARXML
功能设计阶段
在FunctionDesignTime,为(控制)系统开发了一个独立于软件架构的模型。 此阶段使用的典型工具是 Matlab/Simulink 或 ASCETMD。
如果函数设计工具支持根据 AUTOSAR 进行变体处理,则除了使用 CodeGenerationTime 或更高版本作为生成的 AUTOSAR 工件中的绑定时间之外别无选择。
FunctionDesignTime 不在本文档的范围内(只要它不影响校准测量),但为了完整性在此提及。
输入工件:模型、需求
输出工件:功能模型
初始绑定阶段
在 InitialBindingTime,没有任何变体点被绑定。 需要此绑定时间来表示工件中没有绑定 SystemDesignTime 点的状态
输入工件:模型、需求、功能模型、来自 ARXML 格式蓝图的 AUTOSAR 模型。
输出工件:ARXML。
系统设计阶段
SystemDesignTime 的特点是以下任务:
• 设计 VFB
• 软件组件类型(接口)
• SWC 原型和 SWC 原型之间的连接
• 设计拓扑
• ECU 和互连网络
• 设计通信矩阵和数据映射
输入工件:功能模型, 需求,来自 ARXML 格式蓝图的 AUTOSAR 模型。
输出工件:ARXML。
看起来,整个基于AUTOSAR架构开发的软件是严重依赖或者强调开发或者配置工具的,这个对于软件开发的灵活度有了很大的限制。而工程师的能力,很大一部分也应该向工具的了解方面做一个侧重才行。
代码生成阶段
在这一步,生成代码。 这可以手动完成,也可以使用工具完成,或者两者结合。
手写代码通常基于需求文档,而生成的代码通常是从在 FunctionDesignTime 或 SystemDesignTime 设计的模型中创建的。
需求和模型都可能包含变体,但只为那些已选择或稍后需要解决的变体生成代码。
输入工件:ARXML。
输出工件:源代码。
预编译阶段
在 PreCompileTime,预处理器(例如 C 预处理器)用于进一步自定义代码并将部分代码从编译过程中排除。
这种排除有多种原因:所选变体不需要代码,代码与所选变体不兼容,或代码需要所选变体中不存在的资源。 在此阶段代码中排除的代码在后续阶段将不可用。
PreCompileTime 通常用于手写代码(对于 SystemDesignTime 和 CodeGenerationTime 显然不能生效)或者代码生成后需要绑定系统常量的时候。
输入工件:源代码。
输出工件:绑定源代码。
思考:这里的不兼容究竟是一个什么概念?
编译阶段
在 CompileTime,已经由宏处理器(例如 C 预处理器)处理并去除了所有 PreCompileTime 变化点的源代码被转换为目标代码。 编译器可能会通过删除未使用的代码路径来消除更多变体。
CompileTime 未在 AUTOSAR 元模型中使用,但在 AUTOSAR 方法中使用以区分预处理器和编译器。
输入工件:绑定源代码。
输出工件:目标代码。
链接阶段
PostBuild 是在ECU 启动时最晚绑定的绑定时间。 换句话说,这就是创建可执行程序和启动 ECU 之间的一切。
ECU 的启动是 PostBuild 绑定,因为显然无法在模型中解析。
输入工件:可执行程序、配置数据集。
输出工件: 无
运行时
启动和初始化之后的一切都是运行时。 运行时的变体处理超出了本文档的范围,但为了完整性在此处提及。
通过最近的几个章节,基本上对这个变体配置有一定了解了。在我的知识体系里面,变体也终于不再与标定是等同概念了。
还没有评论,来说两句吧...