关于AUTOSAR 配置类和变体(Configuration Class & Variant)的理解

关于AUTOSAR 配置类和变体(Configuration Class & Variant)的理解

最近在研究MCAL的配置,主要在解析 EB Tresos 的xdm文件,顺着研究了一下 AutoSar 的 arxml文件,对于其中的配置类和变体一直不太理解。比如下面 CanBusoffProcessing 这个参数,Value Configuration中的 Pre-compile time 和 All Variants 是怎样的对应关系?
(有关Configuraotion Class的概念可以参考链接

这两天查阅了一些资料,有一些理解,分享给大家。

首先要理清一个概念,根据 AutoSar 的方法论,配置工具(ECU Configuration Editor)会和两个xml文件有交互。一个xml用来描述配置参数的定义(ECU Configuration Parameter Definition),另一个用来描述具体的配置值(ECU Configuration Value description),可以理解为第一个用来定义数据类型,第二个用来描述具体的数据。我们这里讨论的主要是第一个xml中描述的配置参数的定义。

在这里插入图片描述

简单来说,配置类(Configuration Class)是针对具体的配置参数讲的,而变体(Variant)是对于整个模块讲的。

下面以 MCAL 中的 CAN 模块为例说明。

以下是在 AutoSar 官方提供的 AUTOSAR_MOD_ECUConfigurationParameter.arxml 中截取的CAN部分的描述,这里截取了参数 CanBusoffProcessing 作为说明。

在 Can 这个 模块(ECUC-MODULE-DEF) 中,有一个标签 <SUPPORTED-CONFIG-VARIANTS> , 定义了 Can 这个模块支持两种配置变体, VARIANT-POST-BUILD 和 VARIANT-PRE-COMPILE。

<ECUC-MODULE-DEF UUID="ECUC:f7ca73a3-b05b-4f6a-a64d-9a6e8da3314e">
   <SHORT-NAME>Can</SHORT-NAME>
   <DESC>
      <L-2 L="EN">This container holds the configuration of a single CAN Driver.</L-2>
   </DESC>
   <ADMIN-DATA>
      <DOC-REVISIONS>
         <DOC-REVISION>
            <REVISION-LABEL>4.4.0</REVISION-LABEL>
            <ISSUED-BY>AUTOSAR</ISSUED-BY>
         </DOC-REVISION>
      </DOC-REVISIONS>
   </ADMIN-DATA>
   <RELATED-TRACE-ITEM-REF BASE="ArTrace" DEST="TRACEABLE">ECUC_Can_00489</RELATED-TRACE-ITEM-REF>
   <LOWER-MULTIPLICITY>0</LOWER-MULTIPLICITY>
   <UPPER-MULTIPLICITY-INFINITE>true</UPPER-MULTIPLICITY-INFINITE>
   <POST-BUILD-VARIANT-SUPPORT>true</POST-BUILD-VARIANT-SUPPORT>
   <SUPPORTED-CONFIG-VARIANTS>
      <SUPPORTED-CONFIG-VARIANT>VARIANT-POST-BUILD</SUPPORTED-CONFIG-VARIANT>
      <SUPPORTED-CONFIG-VARIANT>VARIANT-PRE-COMPILE</SUPPORTED-CONFIG-VARIANT>
   </SUPPORTED-CONFIG-VARIANTS>
   <CONTAINERS>
      <!-- Container Definition: CanConfigSet -->
      <ECUC-PARAM-CONF-CONTAINER-DEF UUID="ECUC:e28c636a-f5f1-4503-b0ad-aed7fbed80d7">
         <SHORT-NAME>CanConfigSet</SHORT-NAME>
         <DESC>
            <L-2 L="EN">This container contains the configuration parameters and sub containers of the AUTOSAR Can module.</L-2>
         </DESC>
         <RELATED-TRACE-ITEM-REF BASE="ArTrace" DEST="TRACEABLE">ECUC_Can_00343</RELATED-TRACE-ITEM-REF>
         <LOWER-MULTIPLICITY>1</LOWER-MULTIPLICITY>
         <UPPER-MULTIPLICITY>1</UPPER-MULTIPLICITY>
         <SUB-CONTAINERS>
            <!-- Container Definition: CanController -->
            <ECUC-PARAM-CONF-CONTAINER-DEF UUID="ECUC:a79e276f-cf20-496c-8587-edf4d9d2f01b">
               <SHORT-NAME>CanController</SHORT-NAME>
               <DESC>
                  <L-2 L="EN">This container contains the configuration parameters of the CAN controller(s).</L-2>
               </DESC>
               <RELATED-TRACE-ITEM-REF BASE="ArTrace" DEST="TRACEABLE">ECUC_Can_00354</RELATED-TRACE-ITEM-REF>
               <LOWER-MULTIPLICITY>1</LOWER-MULTIPLICITY>
               <UPPER-MULTIPLICITY-INFINITE>true</UPPER-MULTIPLICITY-INFINITE>
               <PARAMETERS>
                  <!-- PARAMETER DEFINITION: CanBusoffProcessing -->
                  <ECUC-ENUMERATION-PARAM-DEF UUID="ECUC:1ac4345e-22de-49c3-8bb0-053a8e121758">
                     <SHORT-NAME>CanBusoffProcessing</SHORT-NAME>
                     <DESC>
                        <L-2 L="EN">Enables / disables API Can_MainFunction_BusOff() for handling busoff events in polling mode.</L-2>
                     </DESC>
                     <RELATED-TRACE-ITEM-REF BASE="ArTrace" DEST="TRACEABLE">ECUC_Can_00314</RELATED-TRACE-ITEM-REF>
                     <LOWER-MULTIPLICITY>1</LOWER-MULTIPLICITY>
                     <UPPER-MULTIPLICITY>1</UPPER-MULTIPLICITY>
                     <SCOPE>LOCAL</SCOPE>
                     <ORIGIN>AUTOSAR_ECUC</ORIGIN>
                     <POST-BUILD-VARIANT-VALUE>false</POST-BUILD-VARIANT-VALUE>
                     <VALUE-CONFIG-CLASSES>
                        <ECUC-VALUE-CONFIGURATION-CLASS>
                           <CONFIG-CLASS>PRE-COMPILE</CONFIG-CLASS>
                           <CONFIG-VARIANT>VARIANT-POST-BUILD</CONFIG-VARIANT>
                        </ECUC-VALUE-CONFIGURATION-CLASS>
                        <ECUC-VALUE-CONFIGURATION-CLASS>
                           <CONFIG-CLASS>PRE-COMPILE</CONFIG-CLASS>
                           <CONFIG-VARIANT>VARIANT-PRE-COMPILE</CONFIG-VARIANT>
                        </ECUC-VALUE-CONFIGURATION-CLASS>
                     </VALUE-CONFIG-CLASSES>
                     <SYMBOLIC-NAME-VALUE>false</SYMBOLIC-NAME-VALUE>
                     <LITERALS>
                        <ECUC-ENUMERATION-LITERAL-DEF UUID="ECUC:c7e3c917-84b8-dc84-9f56-c016f043b9ad">
                           <SHORT-NAME>INTERRUPT</SHORT-NAME>
                           <ORIGIN>AUTOSAR_ECUC</ORIGIN>
                        </ECUC-ENUMERATION-LITERAL-DEF>
                        <ECUC-ENUMERATION-LITERAL-DEF UUID="ECUC:cb6d0b10-0a36-e2dc-bc29-ae297cee4673">
                           <SHORT-NAME>POLLING</SHORT-NAME>
                           <ORIGIN>AUTOSAR_ECUC</ORIGIN>
                        </ECUC-ENUMERATION-LITERAL-DEF>
                     </LITERALS>
                  </ECUC-ENUMERATION-PARAM-DEF>
               </PARAMETERS>
            </ECUC-PARAM-CONF-CONTAINER-DEF>
         </SUB-CONTAINERS>
      </ECUC-PARAM-CONF-CONTAINER-DEF>
   </CONTAINERS>
</ECUC-MODULE-DEF>

Can这个Module下面有一个容器( CONTAINERS ) CanConfigSet,这个容器下面有一个子容器( SUB-CONTAINERS ) CanController,子容器下面有一个枚举类型的参数( ECUC-ENUMERATION-PARAM-DEF ) CanBusoffProcessing。这个参数的配置类信息就是图1中的信息。

在这里插入图片描述

这里意思是:这个参数只支持 Pre-compile time 配置,而且对于Can模块的所有变体,都支持Pre-compile time 配置。由上面的信息知道,Can这个模块支持两种配置变体,Post-build 和 Pre-compile。那么这里意思就是,对于选择 Post-build 和 Pre-compile 配置的Can模块,CanBusoffProcessing这个参数都支持 Pre-compile 配置。

再举一例,这里直接看SWS (ECUC_Can_00485),
在这里插入图片描述
CanFdPaddingValue这个参数,支持 Multiplicity 和 Value 的配置。

以 Multiplicity 配置类说明,CanFdPaddingValue 的 Multiplicity 支持 Pre-compile time 配置和 Post-build time 配置。

对于选择 Pre-compile 的Can模块,这个参数支持 Pre-compile 配置。

这里需要注意,AutoSar规范《AUTOSAR_SWS_BSWGeneral》中提到,配置变体"向前兼容"。

[SWS_BSW_00237] Configuration variants
⌈Different use cases require different kinds of configurability. Therefore, the following configuration variants are provided:

  • VARIANT-PRE-COMPILE: Allows individual configuration parameters to be realized at “Pre-compile time” only.
  • VARIANT-LINK-TIME: Allows individual configuration parameters to be realized at either “Pre-compile time” or “Link time”.
  • VARIANT-POST-BUILD: Allows individual configuration parameters to be realized at either “Pre-compile time”, “Link time” or “Post-build time”.⌋()

因此,对于选择 Post-build 配置的 Can 模块,CanFdPaddingValue支持 “Pre-compile time”, “Link time” or "Post-build time"这三种配置方式。

换句话说,如果 Can 模块选择 Post-build 配置,CanFdPaddingValue 这个参数可以 Post-build 配置,可以 Link time 配置,也可以 Pre-compile 配置。

以上就是我对 AutoSar配置类和变体的理解,如果有错误请大佬指出,也欢迎大家讨论~~

  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
回答: AUTOSAR中的变体是指在配置中创建的多个变体,每个变体可以针对不同的车型或配置进行参数的配置。这些参数可能需要在下线后进行统一标定。通常情况下,代码会以指针的方式来实现这些变体。\[1\]变体的概念在新版本的AUTOSAR中开始取代了配置集的概念,因此在讨论AUTOSAR时更多会提到变体这个概念。\[1\]在AUTOSAR中,变量处理是通过通用结构模板来定义的。变体的概念允许在AUTOSAR元模型中指定某些位置作为可变点,这些可变点由条件和绑定时间组成,用于确定变体的活动条件和解决时间。\[3\] #### 引用[.reference_title] - *1* [AUTOSAR参数配置变体概述](https://blog.csdn.net/jsls135/article/details/109851319)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [关于AUTOSAR 配置变体Configuration Class & Variant)的理解](https://blog.csdn.net/jack91620/article/details/130102467)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [Autosar知识:方法论-变量处理](https://blog.csdn.net/MichaelMCFD/article/details/104883432)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值