关于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配置类和变体的理解,如果有错误请大佬指出,也欢迎大家讨论~~

GitHub 加速计划 / ar / Aria
5.52 K
861
下载
下载可以很简单
最近提交(Master分支:3 个月前 )
b0d3c6dd - 5 个月前
8fd9634d - 5 个月前
Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐