> 技术文档 > 【ETAS CP AUTOSAR工具链】ARXML文件详解

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


本篇文章首先对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的树形结构和对应的文档示例(例子来自菜鸟教程)。

  Everyday Italian Giada De Laurentiis 2005 30.00   Harry Potter J K. Rowling 2005 29.99   Learning XML Erik T. Ray 2003 39.95 

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


ARXML解读 

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

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

...元素内容...

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

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

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

...

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

 AUTOSAR_XXX ...包其他内容...   ...包内容...  

arxml注释为 。

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

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

下图为ARXML的顶层架构。


ISOLAR A:ARXML文件实例分析

应用组件类型

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

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

  • ShortName:组件名称。
  • AdiminData:AdminData表示元素所管理的信息。此管理信息将被视为元数据,如修订ID或文件的状态等。
       true  
  • Ports:此SwComponentType可通过定义的Port进行通信.
      PPortPrototype_0 /SenderReceiverInterface/SenderReceiverInterface_0 
  • internalBehavior:描述了软件组件相对于RTE的相关方面的内容,即Runnable Entitities和它们响应的RTE Event。
     IB_Base_SWC /DataTypeMapping/DataTypeMappingSet_0   TimingEvent_0 /Base_SWC/Test1/IB_Base_SWC/RunnableEntity_0 1.0   RunnableEntity_0  DSP_TestState_0  /Base_SWC/Test1/PPortPrototype_0 /SenderReceiverInterface/SenderReceiverInterface_0/TestState   RunnableEntity_0_func 

系统

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

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

  • ShortName:系统名称。
  • Category:类别是专门用于可识别语义的关键字。它影响属性的预期存在性和约束的适用性。
  • ecuExtractVersion:如果系统类别为SYSTEMEXTRACT或ECU EXTRACT,则应定义executeExtractVersion属性
  • fibexElement:引用指定通信和拓扑的ASAM FIBEX元素。系统应该引用所有出现在DBC_SysDesc.arxml中与抽取Ecu相关的Fibex元素。
     /DBC_SysDesc_Can_Network_ECAN/Pkg_ISignal/CHK12_Mcu /DBC_SysDesc_Can_Network_ECAN/Pkg_Cluster/Can_Network_ECAN /DBC_SysDesc_Can_Network_ECAN/Pkg_Frame/DV_Test_Message_1 /DBC_SysDesc_Can_Network_ECAN/Pkg_Pdus/DV_Test_Message_1 /DBC_SysDesc_Can_Network_ECAN/Pkg_ISignal/KL15_MON_MCU /DBC_SysDesc_Can_Network_ECAN/Pkg_Frame/Rx_Test_Message_01 /DBC_SysDesc_Can_Network_ECAN/Pkg_Pdus/Rx_Test_Message_01 /DBC_SysDesc_Can_Network_ECAN/Pkg_ISignal/Rx_Test_Signal_01 /DBC_SysDesc_Can_Network_ECAN/Pkg_ISignal/Rx_Test_Signal_02 /DBC_SysDesc_Can_Network_ECAN/Pkg_Ecu/Test /DBC_SysDesc_Can_Network_ECAN/Pkg_Frame/Tx_Test_Message_01 /DBC_SysDesc_Can_Network_ECAN/Pkg_Pdus/Tx_Test_Message_01 /DBC_SysDesc_Can_Network_ECAN/Pkg_ISignal/Tx_Test_Signal_01 /DBC_SysDesc_Can_Network_ECAN/Pkg_ISignal/Tx_Test_Signal_02 /DBC_SysDesc_Can_Network_ECAN/Pkg_ISignal/VBAT_MON_MCU
  • mapping:所有映射方面的聚合(软件组件到ECU的映射,数据元素到信号的映射以及映射约束)。
     SystemMapping  /TopLevelComposition/TopLevelComposition/CPT_Test1/System/System/RootSwCompositionPrototype/Base_SWC/Test1/RPortPrototype_0/Interfaces/SenderReceiverInterface_uint16/VDP_uint16  /DBC_SysDesc_Can_Network_ECAN/Pkg_Signal/Rx_Test_Signal_01   SwcToEcuMapping_1  /System/System/RootSwCompositionPrototype /TopLevelComposition/TopLevelComposition/CPT_Test1 /System/System/RootSwCompositionPrototype /TopLevelComposition/TopLevelComposition/CPT_Test2  /DBC_SysDesc_Can_Network_ECAN/Pkg_Ecu/Test 
  • rootSoftwareComposition:聚合的根软件部件,包含系统中所有软件组件的层次结构。当系统描述用于network-only情况时,不需要此元素。
     CPT_Test_FlatView /Test_FlatView/Test_FlatMap /Test_FlatView/SwComponentTypes/Test_FlatView
  • systemVersion:系统描述的版本号。

FlatMap 

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

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

  • ShortName:FlatMap名称。
  • instance:平面映射中描述符实例的聚合。
    • FlatInstanceDescriptor:表示软件系统实例树的一个节点(例如,组件实例或数据元素)。这个元素的用途是将这个实例的各种嵌套关系映射到一个平面表示,并为其分配一个惟一的名称(shortName)。
       CPT_Test1 /System/System/RootSwCompositionPrototype/TopLevelComposition/TopLevelComposition/CPT_Test1  /System_EcuExtract/EXTR_Test/CPT_Test_FlatView/Test_FlatView/SwComponentTypes/Test_FlatView/CPT_Test1  TestState   6 1   /System/System/RootSwCompositionPrototype/TopLevelComposition/TopLevelComposition/CPT_Test1/Base_SWC/Test1/PPortPrototype_0/SenderReceiverInterface/SenderReceiverInterface_0/TestState  /System_EcuExtract/EXTR_Test/CPT_Test_FlatView/Test_FlatView/SwComponentTypes/Test_FlatView/CPT_Test1/Base_SWC/Test1/PPortPrototype_0/SenderReceiverInterface/SenderReceiverInterface_0/TestState 

部件类型

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

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

  • ShortName:部件名称。
  • Ports:此文件为抽取出来的连接系统信号的端口。
     RPortPrototype_System_0 /Interfaces/SenderReceiverInterface_uint32
  • component:构成此部件的实例化组件。
     CPT_Test1 /Base_SWC/Test1 CPT_Test2 /CDD_SWC/Test2
  • connector:连接表征在组件间通过端口建立的关系。连接分为ASSEMBLY-SW-CONNECTOR与DELEGATION-SW-CONNECTOR。一个表征组件间的连接,一个表征组件与ECU通信信号的连接。
     ASC_CPT_Test1_PPortPrototype_0_CPT_Test2_RPortPrototype_0 /Test_FlatView/SwComponentTypes/Test_FlatView/CPT_Test1/Base_SWC/Test1/PPortPrototype_0  /Test_FlatView/SwComponentTypes/Test_FlatView/CPT_Test2/CDD_SWC/Test2/RPortPrototype_0  DelegationSwConnector_0_0  /Test_FlatView/SwComponentTypes/Test_FlatView/CPT_Test1 /Base_SWC/Test1/RPortPrototype_System_0  /Test_FlatView/SwComponentTypes/Test_FlatView/RPortPrototype_System_0

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: 对单个软件组件或模块实现的描述。下面的例子描述了组件的编程语言以及组件类型等信息。
     ComM_Imp  ComM_Imp_Code  Code SWSRC   C /AUTOSAR_ComM/SwComponentTypes/ComM/ComM_Int
  • ImplementationDataTypes:描述属于本组件的ImplementationData。这通常对应于C代码中的typedef,是对基本数据类型的一层封装。下面的例子描述了结构体数据类型的ComM_UserHandleArrayType,结构体包含一个uint8类型的numberOfRequesters以一个ComM_UserHandleType类型的数组handleArray。

     ComM_UserHandleArrayType STRUCTURE  numberOfRequesters TYPE_REFERENCE  /AUTOSAR_Platform/ImplementationDataTypes/uint8   handleArray ARRAY FIXED-SIZE  handleArrayElement TYPE_REFERENCE 1  /AUTOSAR_ComM/ImplementationDataTypes/ComM_UserHandleType    
  • SwComponentTypes:软件组件类型,包括ApplicationSwComponentType、ServiceProxySwComponentType、SensorActuatorSwComponentType、ComplexDeviceDriverSwComponentType、ServiceSwComponentType、EcuAbstractionSwComponentType这几种类型,下面截图的为服务软件组件类型,它同样由端口和组件内部行为构成,组件内部行为包含了Runnables(实体)以及EVENTS(事件)以及DataTypeMappingRefs(应用数据与实现数据映射引用)。

  • PortInterfaces:端口接口类型,包括SenderReceiverInterface、NvDataInterface、ParameterInterface、ModeSwitchInterface、ClientServerInterface、TriggerInterface这几种类型,下面的arxml定义了一个SenderReceiverInterface。
     ComM_CurrentChannelRequest true  fullComRequestors /AUTOSAR_ComM/ImplementationDataTypes/ComM_UserHandleArrayType 

基础软件实例描述

我们以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.

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