【ETAS CP AUTOSAR工具链】ARXML文件详解

news2024/11/23 21:51:55

本篇文章首先对ARXML这种文件格式做了一个概述,叙述了这种标签语言的基本语法(如果您用HTML做过网页,那么这种格式您一定不会陌生),然后对ARXML文件都会包含的一些基本信息做了详细的解读,最后基于使用ISOLAR-AB从A到B的开发过程,将涉及到的ARXML文件进行了详细的解析。

文中对ARXML实例的解析希望能帮助读者更直观的了解ARXML文件(ARXML文件的内容构成和文件内属性相互引用的关系本身就是对AUTOSAR标准的实现),从而更好的理解AUTOSAR标准。

目录

ARXML概述

ARXML解读 

ISOLAR A:ARXML文件实例分析

应用组件类型

系统

FlatMap 

部件类型

ISOLAR B:ARXML文件实例分析

模块配置

服务软件实例描述

基础软件实例描述


ARXML概述

ARXML文件实质是一个XML(Extensible Markup Language)文件,通过AUTOSAR标准的XSD(XML Schema Definition)文件进行约束,XML文档必须包含根元素。该元素是所有其他元素的父元素。XML 文档中的元素形成了一棵文档树。这棵树从根部开始,并扩展到树的最底端。
所有的元素都可以有子元素。下面是一个XML的树形结构和对应的文档示例(例子来自菜鸟教程)。

<bookstore>
    <book category="COOKING">
        <title lang="en">Everyday Italian</title>
        <author>Giada De Laurentiis</author>
        <year>2005</year>
        <price>30.00</price>
    </book>
    <book category="CHILDREN">
        <title lang="en">Harry Potter</title>
        <author>J K. Rowling</author>
        <year>2005</year>
        <price>29.99</price>
    </book>
    <book category="WEB">
        <title lang="en">Learning XML</title>
        <author>Erik T. Ray</author>
        <year>2003</year>
        <price>39.95</price>
    </book>
</bookstore>

针对ARXML文件,虽然ISOLAR-AB工具不仅提供了可视化的界面用于配置与生成,并且提供了AUTOSAR Explorer用于查看和编辑具体的ARXML文件,但是作为我们经常打交道的文件,照葫芦画瓢难免落得一个一知半解的结果,下面我们基于规范《AUTOSAR_TPS_GenericStructureTemplate.pdf》来理解一下ARXML文件的内容。


ARXML解读 

内容第一行是文档的声明,包含文档版本和文档字符编码。

<?xml version="1.0" encoding="UTF-8"?>

文件第一级元素是根元素,每个文档有且只有一个根元素,元素由开始标签、元素内容、结束标签组成。

<AUTOSAR xmlns="http://autosar.org/schema/r4.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://autosar.org/schema/r4.0 AUTOSAR_4-2-2.xsd">
...元素内容...
</AUTOSAR>

 标签中的属性完成了XSD与命名空间的绑定,标签其中包含一下属性说明如下。

  • xmlns:xml NameSpace的缩写,表明文档元素的命名空间,避免命名冲突。命名空间的声明是默认的,元素前不用添加前缀。
  • xmlns:xsi:又定义了一个命名空间,前缀为xsi ,对应http://www.w3.org/2001/XMLSchema-instance,其通常作为XSD的命名空间。
  • xsi:schemaLocation:xsi命名空间下schemaLocation属性,后边跟的两个值分别为命名空间 命名空间对应的XSD。

第二级为AUTOSAR包集合,里边包含了各个定义在此文件内的AUTOSAR包。

<AR-PACKAGES>
...
</AR-PACKAGES>

第三级为AUTOSAR包,AUTOSAR包中包含了AUTOSAR的元素,AUTOSAR包中同样可以再包含AUTOSAR包集合,如下所示。UUID为全局唯一标识符。

<AR-PACKAGE UUID="fe961ec7-0abe-508e-3e6a-54993ef5a69e">
    <SHORT-NAME>AUTOSAR_XXX</SHORT-NAME>
    ...包其他内容...
    <AR-PACKAGES>
        <AR-PACKAGE>
            ...包内容...
        </AR-PACKAGE>
      </AR-PACKAGES>
</AR-PACKAGE>

arxml注释为<!-- 注释内容 --> 。

<ELEMENTS> 标签内可以包含ARElement与FibexElement,它是一个可以独立定义的元素,即不属于另一个元素(当然PACKAGE除外)。下图包含所有ARElement的种类。

下图包含了所有的FibexElement的种类。

下图为ARXML的顶层架构。


ISOLAR A:ARXML文件实例分析

应用组件类型

下图为一个应用组件及其内部包含的Attribute。

我们来分别说明一下属性包含的内容信息。

  • ShortName:组件名称。
  • AdiminData:AdminData表示元素所管理的信息。此管理信息将被视为元数据,如修订ID或文件的状态等。
    <ADMIN-DATA>
        <SDGS>
            <SDG GID="Master">
                <SD>true</SD>
            </SDG>
        </SDGS>
    </ADMIN-DATA>
  • Ports:此SwComponentType可通过定义的Port进行通信.
    <PORTS>
        <P-PORT-PROTOTYPE UUID="6c3821e7-083e-4107-aabe-78e2b3fec89a">
            <SHORT-NAME>PPortPrototype_0</SHORT-NAME>
            <PROVIDED-INTERFACE-TREF DEST="SENDER-RECEIVER-INTERFACE">/SenderReceiverInterface/SenderReceiverInterface_0</PROVIDED-INTERFACE-TREF>
        </P-PORT-PROTOTYPE>
    </PORTS>
  • internalBehavior:描述了软件组件相对于RTE的相关方面的内容,即Runnable Entitities和它们响应的RTE Event。
    <INTERNAL-BEHAVIORS>
    	<SWC-INTERNAL-BEHAVIOR UUID="6131a7d7-2eb4-443c-af46-b440c9e69731">
    	  <SHORT-NAME>IB_Base_SWC</SHORT-NAME>
    	  <DATA-TYPE-MAPPING-REFS>
    		<DATA-TYPE-MAPPING-REF DEST="DATA-TYPE-MAPPING-SET">/DataTypeMapping/DataTypeMappingSet_0</DATA-TYPE-MAPPING-REF>
    	  </DATA-TYPE-MAPPING-REFS>
    	  <EVENTS>
    		<TIMING-EVENT UUID="53fe7a8e-aacc-4a45-b555-e33f1061ac74">
    		  <SHORT-NAME>TimingEvent_0</SHORT-NAME>
    		  <START-ON-EVENT-REF DEST="RUNNABLE-ENTITY">/Base_SWC/Test1/IB_Base_SWC/RunnableEntity_0</START-ON-EVENT-REF>
    		  <PERIOD>1.0</PERIOD>
    		</TIMING-EVENT>
    	  </EVENTS>
    	  <RUNNABLES>
    		<RUNNABLE-ENTITY UUID="31408035-5651-4258-a999-72d54c796e74">
    		  <SHORT-NAME>RunnableEntity_0</SHORT-NAME>
    		  <DATA-SEND-POINTS>
    			<VARIABLE-ACCESS UUID="c85b3d4b-2b73-4991-868e-c59bca22fb3f">
    			  <SHORT-NAME>DSP_TestState_0</SHORT-NAME>
    			  <ACCESSED-VARIABLE>
    				<AUTOSAR-VARIABLE-IREF>
    				  <PORT-PROTOTYPE-REF DEST="P-PORT-PROTOTYPE">/Base_SWC/Test1/PPortPrototype_0</PORT-PROTOTYPE-REF>
    				  <TARGET-DATA-PROTOTYPE-REF DEST="VARIABLE-DATA-PROTOTYPE">/SenderReceiverInterface/SenderReceiverInterface_0/TestState</TARGET-DATA-PROTOTYPE-REF>
    				</AUTOSAR-VARIABLE-IREF>
    			  </ACCESSED-VARIABLE>
    			</VARIABLE-ACCESS>
    		  </DATA-SEND-POINTS>
    		  <SYMBOL>RunnableEntity_0_func</SYMBOL>
    		</RUNNABLE-ENTITY>
    	  </RUNNABLES>
    	</SWC-INTERNAL-BEHAVIOR>
    </INTERNAL-BEHAVIORS>

系统

下图为一个ECU抽取之后,生成的系统以及其内部包含的Attribute。其为系统描述的顶层元素,系统描述定义了五个主要元素:拓扑、软件、通信、映射和映射约束。

我们来分别说明一下属性包含的内容信息。

  • ShortName:系统名称。
  • Category:类别是专门用于可识别语义的关键字。它影响属性的预期存在性和约束的适用性。
  • ecuExtractVersion:如果系统类别为SYSTEMEXTRACT或ECU EXTRACT,则应定义executeExtractVersion属性
  • fibexElement:引用指定通信和拓扑的ASAM FIBEX元素。系统应该引用所有出现在DBC_SysDesc.arxml中与抽取Ecu相关的Fibex元素。
    <FIBEX-ELEMENTS>
    	<FIBEX-ELEMENT-REF-CONDITIONAL>
    	  <FIBEX-ELEMENT-REF DEST="I-SIGNAL">/DBC_SysDesc_Can_Network_ECAN/Pkg_ISignal/CHK12_Mcu</FIBEX-ELEMENT-REF>
    	</FIBEX-ELEMENT-REF-CONDITIONAL>
    	<FIBEX-ELEMENT-REF-CONDITIONAL>
    	  <FIBEX-ELEMENT-REF DEST="CAN-CLUSTER">/DBC_SysDesc_Can_Network_ECAN/Pkg_Cluster/Can_Network_ECAN</FIBEX-ELEMENT-REF>
    	</FIBEX-ELEMENT-REF-CONDITIONAL>
    	<FIBEX-ELEMENT-REF-CONDITIONAL>
    	  <FIBEX-ELEMENT-REF DEST="CAN-FRAME">/DBC_SysDesc_Can_Network_ECAN/Pkg_Frame/DV_Test_Message_1</FIBEX-ELEMENT-REF>
    	</FIBEX-ELEMENT-REF-CONDITIONAL>
    	<FIBEX-ELEMENT-REF-CONDITIONAL>
    	  <FIBEX-ELEMENT-REF DEST="I-SIGNAL-I-PDU">/DBC_SysDesc_Can_Network_ECAN/Pkg_Pdus/DV_Test_Message_1</FIBEX-ELEMENT-REF>
    	</FIBEX-ELEMENT-REF-CONDITIONAL>
    	<FIBEX-ELEMENT-REF-CONDITIONAL>
    	  <FIBEX-ELEMENT-REF DEST="I-SIGNAL">/DBC_SysDesc_Can_Network_ECAN/Pkg_ISignal/KL15_MON_MCU</FIBEX-ELEMENT-REF>
    	</FIBEX-ELEMENT-REF-CONDITIONAL>
    	<FIBEX-ELEMENT-REF-CONDITIONAL>
    	  <FIBEX-ELEMENT-REF DEST="CAN-FRAME">/DBC_SysDesc_Can_Network_ECAN/Pkg_Frame/Rx_Test_Message_01</FIBEX-ELEMENT-REF>
    	</FIBEX-ELEMENT-REF-CONDITIONAL>
    	<FIBEX-ELEMENT-REF-CONDITIONAL>
    	  <FIBEX-ELEMENT-REF DEST="I-SIGNAL-I-PDU">/DBC_SysDesc_Can_Network_ECAN/Pkg_Pdus/Rx_Test_Message_01</FIBEX-ELEMENT-REF>
    	</FIBEX-ELEMENT-REF-CONDITIONAL>
    	<FIBEX-ELEMENT-REF-CONDITIONAL>
    	  <FIBEX-ELEMENT-REF DEST="I-SIGNAL">/DBC_SysDesc_Can_Network_ECAN/Pkg_ISignal/Rx_Test_Signal_01</FIBEX-ELEMENT-REF>
    	</FIBEX-ELEMENT-REF-CONDITIONAL>
    	<FIBEX-ELEMENT-REF-CONDITIONAL>
    	  <FIBEX-ELEMENT-REF DEST="I-SIGNAL">/DBC_SysDesc_Can_Network_ECAN/Pkg_ISignal/Rx_Test_Signal_02</FIBEX-ELEMENT-REF>
    	</FIBEX-ELEMENT-REF-CONDITIONAL>
    	<FIBEX-ELEMENT-REF-CONDITIONAL>
    	  <FIBEX-ELEMENT-REF DEST="ECU-INSTANCE">/DBC_SysDesc_Can_Network_ECAN/Pkg_Ecu/Test</FIBEX-ELEMENT-REF>
    	</FIBEX-ELEMENT-REF-CONDITIONAL>
    	<FIBEX-ELEMENT-REF-CONDITIONAL>
    	  <FIBEX-ELEMENT-REF DEST="CAN-FRAME">/DBC_SysDesc_Can_Network_ECAN/Pkg_Frame/Tx_Test_Message_01</FIBEX-ELEMENT-REF>
    	</FIBEX-ELEMENT-REF-CONDITIONAL>
    	<FIBEX-ELEMENT-REF-CONDITIONAL>
    	  <FIBEX-ELEMENT-REF DEST="I-SIGNAL-I-PDU">/DBC_SysDesc_Can_Network_ECAN/Pkg_Pdus/Tx_Test_Message_01</FIBEX-ELEMENT-REF>
    	</FIBEX-ELEMENT-REF-CONDITIONAL>
    	<FIBEX-ELEMENT-REF-CONDITIONAL>
    	  <FIBEX-ELEMENT-REF DEST="I-SIGNAL">/DBC_SysDesc_Can_Network_ECAN/Pkg_ISignal/Tx_Test_Signal_01</FIBEX-ELEMENT-REF>
    	</FIBEX-ELEMENT-REF-CONDITIONAL>
    	<FIBEX-ELEMENT-REF-CONDITIONAL>
    	  <FIBEX-ELEMENT-REF DEST="I-SIGNAL">/DBC_SysDesc_Can_Network_ECAN/Pkg_ISignal/Tx_Test_Signal_02</FIBEX-ELEMENT-REF>
    	</FIBEX-ELEMENT-REF-CONDITIONAL>
    	<FIBEX-ELEMENT-REF-CONDITIONAL>
    	  <FIBEX-ELEMENT-REF DEST="I-SIGNAL">/DBC_SysDesc_Can_Network_ECAN/Pkg_ISignal/VBAT_MON_MCU</FIBEX-ELEMENT-REF>
    	</FIBEX-ELEMENT-REF-CONDITIONAL>
    </FIBEX-ELEMENTS>
  • mapping:所有映射方面的聚合(软件组件到ECU的映射,数据元素到信号的映射以及映射约束)。
    <MAPPINGS>
    	<SYSTEM-MAPPING>
    	  <SHORT-NAME>SystemMapping</SHORT-NAME>
    	  <DATA-MAPPINGS>
    		<SENDER-RECEIVER-TO-SIGNAL-MAPPING>
    		  <DATA-ELEMENT-IREF>
    			<CONTEXT-COMPONENT-REF DEST="SW-COMPONENT-PROTOTYPE">/TopLevelComposition/TopLevelComposition/CPT_Test1</CONTEXT-COMPONENT-REF>
    			<CONTEXT-COMPOSITION-REF DEST="ROOT-SW-COMPOSITION-PROTOTYPE">/System/System/RootSwCompositionPrototype</CONTEXT-COMPOSITION-REF>
    			<CONTEXT-PORT-REF DEST="R-PORT-PROTOTYPE">/Base_SWC/Test1/RPortPrototype_0</CONTEXT-PORT-REF>
    			<TARGET-DATA-PROTOTYPE-REF DEST="VARIABLE-DATA-PROTOTYPE">/Interfaces/SenderReceiverInterface_uint16/VDP_uint16</TARGET-DATA-PROTOTYPE-REF>
    		  </DATA-ELEMENT-IREF>
    		  <SYSTEM-SIGNAL-REF DEST="SYSTEM-SIGNAL">/DBC_SysDesc_Can_Network_ECAN/Pkg_Signal/Rx_Test_Signal_01</SYSTEM-SIGNAL-REF>
    		</SENDER-RECEIVER-TO-SIGNAL-MAPPING>
    	  </DATA-MAPPINGS>
    	  <SW-MAPPINGS>
    		<SWC-TO-ECU-MAPPING>
    		  <SHORT-NAME>SwcToEcuMapping_1</SHORT-NAME>
    		  <COMPONENT-IREFS>
    			<COMPONENT-IREF>
    			  <CONTEXT-COMPOSITION-REF DEST="ROOT-SW-COMPOSITION-PROTOTYPE">/System/System/RootSwCompositionPrototype</CONTEXT-COMPOSITION-REF>
    			  <TARGET-COMPONENT-REF DEST="SW-COMPONENT-PROTOTYPE">/TopLevelComposition/TopLevelComposition/CPT_Test1</TARGET-COMPONENT-REF>
    			</COMPONENT-IREF>
    			<COMPONENT-IREF>
    			  <CONTEXT-COMPOSITION-REF DEST="ROOT-SW-COMPOSITION-PROTOTYPE">/System/System/RootSwCompositionPrototype</CONTEXT-COMPOSITION-REF>
    			  <TARGET-COMPONENT-REF DEST="SW-COMPONENT-PROTOTYPE">/TopLevelComposition/TopLevelComposition/CPT_Test2</TARGET-COMPONENT-REF>
    			</COMPONENT-IREF>
    		  </COMPONENT-IREFS>
    		  <ECU-INSTANCE-REF DEST="ECU-INSTANCE">/DBC_SysDesc_Can_Network_ECAN/Pkg_Ecu/Test</ECU-INSTANCE-REF>
    		</SWC-TO-ECU-MAPPING>
    	  </SW-MAPPINGS>
    	</SYSTEM-MAPPING>
    </MAPPINGS>
  • rootSoftwareComposition:聚合的根软件部件,包含系统中所有软件组件的层次结构。当系统描述用于network-only情况时,不需要此元素。
    <ROOT-SOFTWARE-COMPOSITIONS>
    	<ROOT-SW-COMPOSITION-PROTOTYPE>
    	  <SHORT-NAME>CPT_Test_FlatView</SHORT-NAME>
    	  <FLAT-MAP-REF DEST="FLAT-MAP">/Test_FlatView/Test_FlatMap</FLAT-MAP-REF>
    	  <SOFTWARE-COMPOSITION-TREF DEST="COMPOSITION-SW-COMPONENT-TYPE">/Test_FlatView/SwComponentTypes/Test_FlatView</SOFTWARE-COMPOSITION-TREF>
    	</ROOT-SW-COMPOSITION-PROTOTYPE>
    </ROOT-SOFTWARE-COMPOSITIONS>
  • systemVersion:系统描述的版本号。

FlatMap 

包含对软件对象引用的平面列表。此列表用于标识实例和解决名称冲突。引用范围由使用它的RootSwCompositionPrototype给出,即它可以应用于系统、系统提取或ECU提取。
FlatMap的实例也可用于前期的ARXML中,例如在集成到系统中之前的软件组件的ARXML中。在这种情况下,它不是由RootSwCompositionPrototype给出。

 我们来分别说明一下属性包含的内容信息。

  • ShortName:FlatMap名称。
  • instance:平面映射中描述符实例的聚合。
    • FlatInstanceDescriptor:表示软件系统实例树的一个节点(例如,组件实例或数据元素)。这个元素的用途是将这个实例的各种嵌套关系映射到一个平面表示,并为其分配一个惟一的名称(shortName)。
      <FLAT-INSTANCE-DESCRIPTOR>
        <SHORT-NAME>CPT_Test1</SHORT-NAME>
        <UPSTREAM-REFERENCE-IREF>
      	<CONTEXT-ELEMENT-REF DEST="ROOT-SW-COMPOSITION-PROTOTYPE">/System/System/RootSwCompositionPrototype</CONTEXT-ELEMENT-REF>
      	<TARGET-REF DEST="SW-COMPONENT-PROTOTYPE">/TopLevelComposition/TopLevelComposition/CPT_Test1</TARGET-REF>
        </UPSTREAM-REFERENCE-IREF>
        <ECU-EXTRACT-REFERENCE-IREF>
      	<CONTEXT-ELEMENT-REF DEST="ROOT-SW-COMPOSITION-PROTOTYPE">/System_EcuExtract/EXTR_Test/CPT_Test_FlatView</CONTEXT-ELEMENT-REF>
      	<TARGET-REF DEST="SW-COMPONENT-PROTOTYPE">/Test_FlatView/SwComponentTypes/Test_FlatView/CPT_Test1</TARGET-REF>
        </ECU-EXTRACT-REFERENCE-IREF>
      </FLAT-INSTANCE-DESCRIPTOR>
      <FLAT-INSTANCE-DESCRIPTOR>
        <SHORT-NAME>TestState</SHORT-NAME>
        <SW-DATA-DEF-PROPS>
      	<SW-DATA-DEF-PROPS-VARIANTS>
      	  <SW-DATA-DEF-PROPS-CONDITIONAL>
      		<SW-REFRESH-TIMING>
      		  <CSE-CODE>6</CSE-CODE>
      		  <CSE-CODE-FACTOR>1</CSE-CODE-FACTOR>
      		</SW-REFRESH-TIMING>
      	  </SW-DATA-DEF-PROPS-CONDITIONAL>
      	</SW-DATA-DEF-PROPS-VARIANTS>
        </SW-DATA-DEF-PROPS>
        <UPSTREAM-REFERENCE-IREF>
      	<CONTEXT-ELEMENT-REF DEST="ROOT-SW-COMPOSITION-PROTOTYPE">/System/System/RootSwCompositionPrototype</CONTEXT-ELEMENT-REF>
      	<CONTEXT-ELEMENT-REF DEST="SW-COMPONENT-PROTOTYPE">/TopLevelComposition/TopLevelComposition/CPT_Test1</CONTEXT-ELEMENT-REF>
      	<CONTEXT-ELEMENT-REF DEST="P-PORT-PROTOTYPE">/Base_SWC/Test1/PPortPrototype_0</CONTEXT-ELEMENT-REF>
      	<TARGET-REF DEST="VARIABLE-DATA-PROTOTYPE">/SenderReceiverInterface/SenderReceiverInterface_0/TestState</TARGET-REF>
        </UPSTREAM-REFERENCE-IREF>
        <ECU-EXTRACT-REFERENCE-IREF>
      	<CONTEXT-ELEMENT-REF DEST="ROOT-SW-COMPOSITION-PROTOTYPE">/System_EcuExtract/EXTR_Test/CPT_Test_FlatView</CONTEXT-ELEMENT-REF>
      	<CONTEXT-ELEMENT-REF DEST="SW-COMPONENT-PROTOTYPE">/Test_FlatView/SwComponentTypes/Test_FlatView/CPT_Test1</CONTEXT-ELEMENT-REF>
      	<CONTEXT-ELEMENT-REF DEST="P-PORT-PROTOTYPE">/Base_SWC/Test1/PPortPrototype_0</CONTEXT-ELEMENT-REF>
      	<TARGET-REF DEST="VARIABLE-DATA-PROTOTYPE">/SenderReceiverInterface/SenderReceiverInterface_0/TestState</TARGET-REF>
        </ECU-EXTRACT-REFERENCE-IREF>
      </FLAT-INSTANCE-DESCRIPTOR>

部件类型

部件类型聚合了软件组件类型以及Sw Connector,后者主要用于将SwComponentPrototype彼此连接并连接。通过这种方法,可以创建软件组件的层次结构。

我们来分别说明一下属性包含的内容信息。

  • ShortName:部件名称。
  • Ports:此文件为抽取出来的连接系统信号的端口。
    <PORTS>
    	<R-PORT-PROTOTYPE>
    	  <SHORT-NAME>RPortPrototype_System_0</SHORT-NAME>
    	  <REQUIRED-INTERFACE-TREF DEST="SENDER-RECEIVER-INTERFACE">/Interfaces/SenderReceiverInterface_uint32</REQUIRED-INTERFACE-TREF>
    	</R-PORT-PROTOTYPE>
    </PORTS>
  • component:构成此部件的实例化组件。
    <COMPONENTS>
    	<SW-COMPONENT-PROTOTYPE>
    	  <SHORT-NAME>CPT_Test1</SHORT-NAME>
    	  <TYPE-TREF DEST="APPLICATION-SW-COMPONENT-TYPE">/Base_SWC/Test1</TYPE-TREF>
    	</SW-COMPONENT-PROTOTYPE>
    	<SW-COMPONENT-PROTOTYPE>
    	  <SHORT-NAME>CPT_Test2</SHORT-NAME>
    	  <TYPE-TREF DEST="APPLICATION-SW-COMPONENT-TYPE">/CDD_SWC/Test2</TYPE-TREF>
    	</SW-COMPONENT-PROTOTYPE>
    </COMPONENTS>
  • connector:连接表征在组件间通过端口建立的关系。连接分为ASSEMBLY-SW-CONNECTOR与DELEGATION-SW-CONNECTOR。一个表征组件间的连接,一个表征组件与ECU通信信号的连接。
    <CONNECTORS>
    	<ASSEMBLY-SW-CONNECTOR>
    	  <SHORT-NAME>ASC_CPT_Test1_PPortPrototype_0_CPT_Test2_RPortPrototype_0</SHORT-NAME>
    	  <PROVIDER-IREF>
    		<CONTEXT-COMPONENT-REF DEST="SW-COMPONENT-PROTOTYPE">/Test_FlatView/SwComponentTypes/Test_FlatView/CPT_Test1</CONTEXT-COMPONENT-REF>
    		<TARGET-P-PORT-REF DEST="P-PORT-PROTOTYPE">/Base_SWC/Test1/PPortPrototype_0</TARGET-P-PORT-REF>
    	  </PROVIDER-IREF>
    	  <REQUESTER-IREF>
    		<CONTEXT-COMPONENT-REF DEST="SW-COMPONENT-PROTOTYPE">/Test_FlatView/SwComponentTypes/Test_FlatView/CPT_Test2</CONTEXT-COMPONENT-REF>
    		<TARGET-R-PORT-REF DEST="R-PORT-PROTOTYPE">/CDD_SWC/Test2/RPortPrototype_0</TARGET-R-PORT-REF>
    	  </REQUESTER-IREF>
    	</ASSEMBLY-SW-CONNECTOR>
    	<DELEGATION-SW-CONNECTOR>
    	  <SHORT-NAME>DelegationSwConnector_0_0</SHORT-NAME>
    	  <INNER-PORT-IREF>
    		<R-PORT-IN-COMPOSITION-INSTANCE-REF>
    		  <CONTEXT-COMPONENT-REF DEST="SW-COMPONENT-PROTOTYPE">/Test_FlatView/SwComponentTypes/Test_FlatView/CPT_Test1</CONTEXT-COMPONENT-REF>
    		  <TARGET-R-PORT-REF DEST="R-PORT-PROTOTYPE">/Base_SWC/Test1/RPortPrototype_System_0</TARGET-R-PORT-REF>
    		</R-PORT-IN-COMPOSITION-INSTANCE-REF>
    	  </INNER-PORT-IREF>
    	  <OUTER-PORT-REF DEST="R-PORT-PROTOTYPE">/Test_FlatView/SwComponentTypes/Test_FlatView/RPortPrototype_System_0</OUTER-PORT-REF>
    	</DELEGATION-SW-CONNECTOR>
    </CONNECTORS>


ISOLAR B:ARXML文件实例分析

模块配置

模块可以是BSW模块以及RTE和ECU基础模块,Ecuc Module Configuration Values元素有两个不同的角色:

  • recommendedConfiguration包含BSW模块供应商推荐的参数值。
  • preconfiguredConfiguration包含的参数值是由实现固定的,不能更改。

我们来分别说明一下属性包含的内容信息。

  • ShortName:模块名称。
  • DefinitionRef:模块定义的引用,这个标签会引用到..\Config\BSW\ParamDefs目录下的模块参数定义。
  • implementationConfigVariant:指定此Ecu Module ConfigurationValues元素提供的配置信息是在软件开发到使用的哪个阶段内生效的。
  • container:一组相关配置形成一个容器,容器还能包含子容器,子容器同样还能继续包含子容器。

下图是CanIf第一层容器包含的内容,根据箭头可以找到与BSW Editor的对应关系,首先CanIf包含了五个子容器,打开CanIfInitCfg子容器,里边包含一个参数CanIfInitCfgSet和四个子容器。

下图可以看到针对子容器CanIfInitHohCfg,它下面包含的三个子容器的关系。

下图可以看到针对子容器CanIfHrhCfg的一个参数和两个引用与BSW Editor中的关系。

可以看出直接看ARXML包含关系不是很直观,并且因为他们的容器内参数引用的为..\Config\BSW\ParamDefs目录下的模块参数定义并且是可以分裂定义(同一种引用针对不同实例重复定义),建议BSW基础模块在BSW Editor中进行配置和理解,BSW Editor会将相同的参数引用聚合到一起,并形成可视化的层级关系,帮助我们更好的完成BSW等基础模块的配置 。


服务软件实例描述

我们以ComM_Cfg_SWCD.arxml文件为例,来讲解SWCD一般包含那些内容。

我们分别介绍一下这四个PACKAGE都包含的内容。

  • SwcImplementation: 对单个软件组件或模块实现的描述。下面的例子描述了组件的编程语言以及组件类型等信息。
    <SWC-IMPLEMENTATION>
      <SHORT-NAME>ComM_Imp</SHORT-NAME>
      <CODE-DESCRIPTORS>
    	<CODE>
    	  <SHORT-NAME>ComM_Imp_Code</SHORT-NAME>
    	  <ARTIFACT-DESCRIPTORS>
    		<AUTOSAR-ENGINEERING-OBJECT>
    		  <SHORT-LABEL>Code</SHORT-LABEL>
    		  <CATEGORY>SWSRC</CATEGORY>
    		</AUTOSAR-ENGINEERING-OBJECT>
    	  </ARTIFACT-DESCRIPTORS>
    	</CODE>
      </CODE-DESCRIPTORS>
      <PROGRAMMING-LANGUAGE>C</PROGRAMMING-LANGUAGE>
      <BEHAVIOR-REF DEST="SWC-INTERNAL-BEHAVIOR">/AUTOSAR_ComM/SwComponentTypes/ComM/ComM_Int</BEHAVIOR-REF>
    </SWC-IMPLEMENTATION>
  • ImplementationDataTypes:描述属于本组件的ImplementationData。这通常对应于C代码中的typedef,是对基本数据类型的一层封装。下面的例子描述了结构体数据类型的ComM_UserHandleArrayType,结构体包含一个uint8类型的numberOfRequesters以一个ComM_UserHandleType类型的数组handleArray。

    <IMPLEMENTATION-DATA-TYPE>
      <SHORT-NAME>ComM_UserHandleArrayType</SHORT-NAME>
      <CATEGORY>STRUCTURE</CATEGORY>
      <SUB-ELEMENTS>
    	<IMPLEMENTATION-DATA-TYPE-ELEMENT>
    	  <SHORT-NAME>numberOfRequesters</SHORT-NAME>
    	  <CATEGORY>TYPE_REFERENCE</CATEGORY>
    	  <SW-DATA-DEF-PROPS>
    		<SW-DATA-DEF-PROPS-VARIANTS>
    		  <SW-DATA-DEF-PROPS-CONDITIONAL>
    			<IMPLEMENTATION-DATA-TYPE-REF DEST="IMPLEMENTATION-DATA-TYPE">/AUTOSAR_Platform/ImplementationDataTypes/uint8</IMPLEMENTATION-DATA-TYPE-REF>
    		  </SW-DATA-DEF-PROPS-CONDITIONAL>
    		</SW-DATA-DEF-PROPS-VARIANTS>
    	  </SW-DATA-DEF-PROPS>
    	</IMPLEMENTATION-DATA-TYPE-ELEMENT>
    	<IMPLEMENTATION-DATA-TYPE-ELEMENT>
    	  <SHORT-NAME>handleArray</SHORT-NAME>
    	  <CATEGORY>ARRAY</CATEGORY>
    	  <ARRAY-SIZE-SEMANTICS>FIXED-SIZE</ARRAY-SIZE-SEMANTICS>
    	  <SUB-ELEMENTS>
    		<IMPLEMENTATION-DATA-TYPE-ELEMENT>
    		  <SHORT-NAME>handleArrayElement</SHORT-NAME>
    		  <CATEGORY>TYPE_REFERENCE</CATEGORY>
    		  <ARRAY-SIZE SHORT-LABEL="size">1</ARRAY-SIZE>
    		  <SW-DATA-DEF-PROPS>
    			<SW-DATA-DEF-PROPS-VARIANTS>
    			  <SW-DATA-DEF-PROPS-CONDITIONAL>
    				<IMPLEMENTATION-DATA-TYPE-REF DEST="IMPLEMENTATION-DATA-TYPE">/AUTOSAR_ComM/ImplementationDataTypes/ComM_UserHandleType</IMPLEMENTATION-DATA-TYPE-REF>
    			  </SW-DATA-DEF-PROPS-CONDITIONAL>
    			</SW-DATA-DEF-PROPS-VARIANTS>
    		  </SW-DATA-DEF-PROPS>
    		</IMPLEMENTATION-DATA-TYPE-ELEMENT>
    	  </SUB-ELEMENTS>
    	</IMPLEMENTATION-DATA-TYPE-ELEMENT>
      </SUB-ELEMENTS>
    </IMPLEMENTATION-DATA-TYPE>
  • SwComponentTypes:软件组件类型,包括ApplicationSwComponentType、ServiceProxySwComponentType、SensorActuatorSwComponentType、ComplexDeviceDriverSwComponentType、ServiceSwComponentType、EcuAbstractionSwComponentType这几种类型,下面截图的为服务软件组件类型,它同样由端口和组件内部行为构成,组件内部行为包含了Runnables(实体)以及EVENTS(事件)以及DataTypeMappingRefs(应用数据与实现数据映射引用)。

  • PortInterfaces:端口接口类型,包括SenderReceiverInterface、NvDataInterface、ParameterInterface、ModeSwitchInterface、ClientServerInterface、TriggerInterface这几种类型,下面的arxml定义了一个SenderReceiverInterface。
    <SENDER-RECEIVER-INTERFACE>
      <SHORT-NAME>ComM_CurrentChannelRequest</SHORT-NAME>
      <IS-SERVICE>true</IS-SERVICE>
      <DATA-ELEMENTS>
    	<VARIABLE-DATA-PROTOTYPE>
    	  <SHORT-NAME>fullComRequestors</SHORT-NAME>
    	  <TYPE-TREF DEST="IMPLEMENTATION-DATA-TYPE">/AUTOSAR_ComM/ImplementationDataTypes/ComM_UserHandleArrayType</TYPE-TREF>
    	</VARIABLE-DATA-PROTOTYPE>
      </DATA-ELEMENTS>
    </SENDER-RECEIVER-INTERFACE>

基础软件实例描述

我们以ComM_Cfg_BSWMD.arxml,来讲解以下BSWMD都包含哪些内容。

我们下面来看一下八个PACKAGE都包含了什么内容。

  • ApplicationDataTypes:应用数据类型定义,如下图为例,第一个为原始类型数据ComM_uint8_App,它可以跟一个计算方法和数据约束绑定下例中还包含数组与结构体,他们都需要引用原始数据类型。

  • BswImplementations:其中除了通用规范(BswModule Definition和BswBehavior)外,还包含特定于实现的信息。

  • BswModuleDescriptions:用于描述单个BSW模块或BSW集群的根元素。在描述BSW模块的情况下该元素的短名称等于BSW模块的名称。下图中包含了模块的需要的变量(基于定义的应用数据类型和应用类型到实现类型映射)以及可运行实体与事件信息。

  • DataConstraints:数据约束,针对应用数据约束它的上下限以及单位引用等。

  • DataTypeMappingSets:应用数据到实现数据的映射。

  • ImplementationDataTypes:描述属于本组件的ImplementationData,它引用了AUTOSAR提供的几种基本的ImplementationData,如果工程中没有需要在ISOLAR_PlatformTypes.arxml补充相应的定义。

  • Units:与该数据对象的语义相关联的物理单元定义。如果未指定compuMethod,则此属性适用。如果指定了compuMethod,则两种定义应保持一致。

  • PhysicalDimensions:单元对应的物理维度信息,可以被Units引用。


 十六宿舍 原创作品,转载必须标注原文链接。

©2023 Yang Li. All rights reserved.

欢迎关注 『十六宿舍』,大家喜欢的话,给个👍,更多关于嵌入式相关技术的内容持续更新中。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1689680.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

[数据集][目标检测]吸烟检测数据集VOC+YOLO格式1449张1类别

数据集格式&#xff1a;Pascal VOC格式YOLO格式(不包含分割路径的txt文件&#xff0c;仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数)&#xff1a;1449 标注数量(xml文件个数)&#xff1a;1449 标注数量(txt文件个数)&#xff1a;1449 标注…

鸿蒙开发配置官方地图

一共需要配置 p12 p7b cer csr 四个文件 p12文件配置 注意创建文件名必须是.p12 到AGC创建项目 AppGallery Connect 添加自己的项目名称 我没有开启 暂时不需要 看个人需求 下载刚创建的cer证书 回到我的项目中 点击刚创建的项目 点击这里 四个文件齐全了 "metadata&qu…

近临算法(个人总结版)

背景 近邻算法&#xff08;Nearest Neighbor Algorithm&#xff09;是一种基本但非常有效的分类和回归方法。最早由Fix和Hodges在1951年提出&#xff0c;经过几十年的发展和改进&#xff0c;已成为数据挖掘、模式识别和机器学习领域的重要工具。近邻算法基于相似性原则&#x…

DVWA登录页面空白问题解决

问题&#xff1a; 创建完成后打开登录页面&#xff0c;发现打不开&#xff0c;一片空白 解决&#xff1a; php版本不对&#xff0c;更换版本即可

VueHooks Plus:Vue 3 Hooks 的全面解决方案

VueHooks Plus&#xff1a;Vue 3 Hooks 的全面解决方案 文章目录 VueHooks Plus&#xff1a;Vue 3 Hooks 的全面解决方案〇、元信息一、概述快速开始TypeScript 支持交互式 Demo 演示服务器端渲染&#xff08;SSR&#xff09;支持基于插件模式的请求函数按需加载安全性和测试 二…

PHP生成二维码+二维码包含logo图片展示

composer require chillerlan/php-qrcode 用到的扩展自己安装&#xff08;注&#xff1a;只生成二维码只要开gd扩展就行&#xff09; 仅生成二维码看这个&#xff1a; use chillerlan\QRCode\QRCode;public function QRCode(){$qrcode new QRCode();$url "http://ww…

如何利用51建模网,实现3D模型线上展示和应用?

按照下面的步骤&#xff0c;在51建模网上传3D模型&#xff0c;并编辑完成后&#xff0c;接下来就是如何让这些3D模型得到更好的展示、传播和应用。 一、3D内容快速分享与传播 3D模型在51建模网上传发布后&#xff0c;即可获得一个可分享的链接和二维码&#xff0c;直接分享给客…

jenkins插件之Warnings

Warnings插件&#xff0c;收集静态分析工具报告的编译器警告或问题&#xff0c;并将结果可视化。它内置了对许多编译器的支持&#xff08;cpp&#xff0c;clang&#xff0c;java等&#xff09;和工具&#xff08;spotbugs&#xff0c;pmd&#xff0c;checkstyle&#xff0c;esl…

力扣226. 翻转二叉树(DFS的两种思路)

Problem: 226. 翻转二叉树 文章目录 题目描述思路复杂度Code 题目描述 思路 涉及二叉树的递归解法时往往需要考虑两种思路&#xff1a; 1.在递归遍历时执行题目需要的具体要求&#xff1b; 2.将一个大问题分解为多个小子问题 具体到本体&#xff1a; 思路1&#xff1a;遍历 先…

作业-day-240521

多点思维导图 面试题 1、项目中如何实现TCP的并发 1&#xff09;、一般的TCP服务器通信&#xff0c;只能完成一个客户端的操作。要实现多客户端的通信&#xff0c;可使服务器端循环创建并收发客户端的通信。 2&#xff09;、但仅循环服务器使用的情况&#xff0c;由于accept…

股指期权和股指期货的区别

今天期权懂带你了解股指期权和股指期货的区别。在金融衍生品市场&#xff0c;既有股指期货又有股指期权&#xff0c;期货与期权是两种不同的资产。 股指期权和股指期货的区别 权利与义务&#xff1a; 股指期货是一种协议&#xff0c;买卖双方都有义务在合约到期时按照约定的价…

CSS demo演示 20240524

说明&#xff1a;不修改父盒子的样式&#xff0c;只在子盒子上设置定位&#xff0c;让子盒子定位在父盒子右侧。 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>Document</title><style>…

CGAN|生成手势图像|可控制生成

&#x1f368; 本文为&#x1f517;365天深度学习训练营 中的学习记录博客&#x1f366; 参考文章&#xff1a;TensorFlow入门实战&#xff5c;第3周&#xff1a;天气识别&#x1f356; 原作者&#xff1a;K同学啊|接辅导、项目定制 CGAN&#xff08;条件生成对抗网络&#xf…

项目十二:简单的python基础爬虫训练

许久未见&#xff0c;甚是想念&#xff0c;今日好运&#xff0c;为你带好运。ok&#xff0c;废话不多说&#xff0c;希望这门案例能带你直接快速了解并运用。&#x1f381;&#x1f496; 基础流程 第一步&#xff1a;安装需要用到的requests库&#xff0c;命令如下 pip inst…

Vue3实战笔记(41)—自己封装一个计时器Hooks

文章目录 前言计时器钩子总结 前言 在Vue项目中&#xff0c;封装一个计时器挂钩&#xff08;Hook&#xff09;是一种实用的技术&#xff0c;它允许你在组件中方便地管理定时任务&#xff0c;如倒计时、计时器等&#xff0c;而无需在每个使用场景重复编写相同的逻辑代码。 计时…

uniapp如何使用自定义的图标

http://t.csdnimg.cn/8KenC 以上是原文章,下面内容是从这篇文章转发的 一、导入 1.在官方&#xff08;iconfont-阿里巴巴矢量图标库&#xff09;选择自己想要的图标&#xff0c;加入购物车 2. 在点击购物车下载代码 3.解压文件夹 并更改名字 4.将文件夹&#xff08;iconfont&…

Xline社区会议Call Up|在 CURP 算法中实现联合共识的安全性

为了更全面地向大家介绍Xline的进展&#xff0c;同时促进Xline社区的发展&#xff0c;我们将于2024年5月31日北京时间11:00 p.m.召开Xline社区会议。 欢迎您届时登陆zoom观看直播&#xff0c;或点击“阅读原文”链接加入会议&#xff1a; 会议号: 832 1086 6737 密码: 41125…

软件开发成本估算 5大注意事项

一般来说&#xff0c;软件开发成本估算分为&#xff1a;软件规模估算、工作量估算、成本估算和确定软件开发成本等四个过程&#xff0c;其估算基本流程如下&#xff1a; 软件开发成本估算流程 为了进一步确保估算的准确性&#xff0c;提高资源规划和分配效率&#xff0c;确保软…

Redis篇 在linux系统上安装Redis

安装Redis 在Ubuntu上安装Redis 在Ubuntu上安装Redis 在linux系统中,我们安装Redis,必须先使它有root权限. 那么在linux中,如何切换到root用户权限呢? sudo su 就可切换到用户权限了. 在切换到用户权限后,我们需要用一条命令来搜索Redis相关的软件包 apt search redis 会出现非…

Labelme自定义数据集COCO格式【实例分割】

参考博客 labelme标注自定义数据集COCO类型_labelme标注coco-CSDN博客 LabelMe使用_labelme中所有的create的作用解释-CSDN博客 1制作自己的数据集 1.1labelme安装 自己的数据和上面数据的区别就在于没有.json标签文件&#xff0c;所以训练自己的数据关键步骤就是获取标签文…