706_AUTOSAR_TR_Methodology_文档阅读26_变体处理_三

青旅半醒 2022-08-29 09:54 117阅读 0赞
  1. 全部学习汇总: [https://github.com/GreyZhang/hack\_autosar][https_github.com_GreyZhang_hack_autosar]
  2. 继续分析《AUTOSAR\_TR\_Methodology》。

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2dyZXlfY3Nkbg_size_16_color_FFFFFF_t_70

  1. 2.57 概述了 AUTOSAR 变体处理中的绑定时间。

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2dyZXlfY3Nkbg_size_16_color_FFFFFF_t_70 1

  1. AUTOSAR 元模型中的变体处理支持的绑定时间,其实从上面的表格中也是可以看出来的。

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2dyZXlfY3Nkbg_size_16_color_FFFFFF_t_70 2

  1. 元模型中变化点的最新绑定时间的定义
  2. 所有这些绑定时间都可以在标签 Vh.latestBindingTime 中使用,该标签用于定义元模型中变化点的最新绑定时间。

一个变体点的实际绑定时间存储在一个VariationPoint的ConditionByFormula的属性bindingTime中,并且只能使用值SystemDesignTime、CodeGenerationTime、PreCompileTime、LinkTime。

看起来这些要求都是对工具设计的要求。

20210801171814289.png

  1. AUTOSAR 方法使用另外两个绑定时间,InitialBindingTimes 来表征没有绑定变化点的工件,以及 CompileTime 来区分代码的预处理和编译。 最后,FunctionDesignTime Runtime 不在 AUTOSAR 变体处理的范围内,但为了完整性在此处提及。

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2dyZXlfY3Nkbg_size_16_color_FFFFFF_t_70 1

  1. 蓝图变体阶段
  2. BlueprintDerivationTime,模型是从蓝图派生的。 例如,功能设计工具提供了从一组预定义的蓝图派生对象的选项。 有关更多详细信息,请参阅 \[19\] 这与本章定义的变体处理不同,但它使用相同的元模型特征(参见 \[18\])。

BlueprintDerivationTime 超出了本文档的范围,但为了完整性在此提及。

输入工件:模型、需求

输出工件:ARXML

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2dyZXlfY3Nkbg_size_16_color_FFFFFF_t_70

  1. 功能设计阶段
  2. FunctionDesignTime,为(控制)系统开发了一个独立于软件架构的模型。 此阶段使用的典型工具是 Matlab/Simulink ASCETMD

如果函数设计工具支持根据 AUTOSAR 进行变体处理,则除了使用 CodeGenerationTime 或更高版本作为生成的 AUTOSAR 工件中的绑定时间之外别无选择。

  1. FunctionDesignTime 不在本文档的范围内(只要它不影响校准测量),但为了完整性在此提及。

输入工件:模型、需求

输出工件:功能模型

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2dyZXlfY3Nkbg_size_16_color_FFFFFF_t_70 3

  1. 初始绑定阶段
  2. InitialBindingTime,没有任何变体点被绑定。 需要此绑定时间来表示工件中没有绑定 SystemDesignTime 点的状态
  3. 输入工件:模型、需求、功能模型、来自 ARXML 格式蓝图的 AUTOSAR 模型。

输出工件:ARXML。

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2dyZXlfY3Nkbg_size_16_color_FFFFFF_t_70 4

  1. 系统设计阶段
  2. SystemDesignTime 的特点是以下任务:

• 设计 VFB

• 软件组件类型(接口)

• SWC 原型和 SWC 原型之间的连接

• 设计拓扑

• ECU 和互连网络

• 设计通信矩阵和数据映射

输入工件:功能模型, 需求,来自 ARXML 格式蓝图的 AUTOSAR 模型。

输出工件:ARXML。

看起来,整个基于AUTOSAR架构开发的软件是严重依赖或者强调开发或者配置工具的,这个对于软件开发的灵活度有了很大的限制。而工程师的能力,很大一部分也应该向工具的了解方面做一个侧重才行。

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2dyZXlfY3Nkbg_size_16_color_FFFFFF_t_70 1

  1. 代码生成阶段
  2. 在这一步,生成代码。 这可以手动完成,也可以使用工具完成,或者两者结合。

手写代码通常基于需求文档,而生成的代码通常是从在 FunctionDesignTime 或 SystemDesignTime 设计的模型中创建的。

需求和模型都可能包含变体,但只为那些已选择或稍后需要解决的变体生成代码。

输入工件:ARXML。

输出工件:源代码。

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2dyZXlfY3Nkbg_size_16_color_FFFFFF_t_70 5

  1. 预编译阶段
  2. PreCompileTime,预处理器(例如 C 预处理器)用于进一步自定义代码并将部分代码从编译过程中排除。

这种排除有多种原因:所选变体不需要代码,代码与所选变体不兼容,或代码需要所选变体中不存在的资源。 在此阶段代码中排除的代码在后续阶段将不可用。

PreCompileTime 通常用于手写代码(对于 SystemDesignTime 和 CodeGenerationTime 显然不能生效)或者代码生成后需要绑定系统常量的时候。

输入工件:源代码。

输出工件:绑定源代码。

思考:这里的不兼容究竟是一个什么概念?

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2dyZXlfY3Nkbg_size_16_color_FFFFFF_t_70 6

  1. 编译阶段

在 CompileTime,已经由宏处理器(例如 C 预处理器)处理并去除了所有 PreCompileTime 变化点的源代码被转换为目标代码。 编译器可能会通过删除未使用的代码路径来消除更多变体。

CompileTime 未在 AUTOSAR 元模型中使用,但在 AUTOSAR 方法中使用以区分预处理器和编译器。

输入工件:绑定源代码。

输出工件:目标代码。

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2dyZXlfY3Nkbg_size_16_color_FFFFFF_t_70 7

  1. 链接阶段
  2. PostBuild 是在ECU 启动时最晚绑定的绑定时间。 换句话说,这就是创建可执行程序和启动 ECU 之间的一切。

ECU 的启动是 PostBuild 绑定,因为显然无法在模型中解析。

输入工件:可执行程序、配置数据集。

输出工件: 无

20210801171814196.png

  1. 运行时
  2. 启动和初始化之后的一切都是运行时。 运行时的变体处理超出了本文档的范围,但为了完整性在此处提及。
  3. 通过最近的几个章节,基本上对这个变体配置有一定了解了。在我的知识体系里面,变体也终于不再与标定是等同概念了。

发表评论

表情:
评论列表 (有 0 条评论,117人围观)

还没有评论,来说两句吧...

相关阅读

    相关 Spring Boot文档阅读

    原因之初 最初习惯百度各种博客教程,然后跟着操作,因为觉得跟着别人走过的路走可以少走很多弯路,省时间。然而,很多博客的内容并不够完整,甚至错误,看多了的博客甚至有千篇一律的感

    相关 二分查找及其

    二分查找及其变体 说到二分查找,大家肯定不陌生。就举个生活中的例子吧,相信很多人肯定玩过猜数字的游戏:大概就是我随便说一个数字,告诉你范围(比如这个数字在1到100