您可以捐助,支持我们的公益事业。

1元 10元 50元





认证码:  验证码,看不清楚?请点击刷新验证码 必填



  求知 文章 文库 Lib 视频 iPerson 课程 认证 咨询 工具 讲座 Model Center   模型库  
会员   
   
人工智能、机器学习 TensorFlow
6月30日-7月1日 直播
基于 UML 和EA进行分析设计
7月30-31日 北京+线上
图数据库与知识图谱
8月21日-22日 北京+线上
   
 
 订阅
【ETAS CP AUTOSAR工具链】ARXML文件详解
 
 
  56  次浏览      4 次
 2025-6-27
 
编辑推荐:
本篇文章首先对ARXML这种文件格式做了一个概述,叙述了这种标签语言的基本语法,然后对ARXML文件都会包含的一些基本信息做了详细的解读,最后基于使用ISOLAR-AB从A到B的开发过程,将涉及到的ARXML文件进行了详细的解析。希望对您的学习有所帮助。
本文来自于CSDN,由火龙果软件Linda编辑、推荐。

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

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

ARXML概述

ARXML文件实质是一个XML(Extensible Markup Language)文件,通过AUTOSAR标准的XSD(XML Schema Definition)文件进行约束,XML文档必须包含根元素。该元素是所有其他元素的父元素。XML 文档中的元素形成了一棵文档树。这棵树从根部开始,并扩展到树的最底端。

所有的元素都可以有子元素。下面是一个XML的树形结构和对应的文档示例(例子来自菜鸟教程)。

  1. <bookstore>
  2. <book category="COOKING">
  3. <title lang="en">Everyday Italian</title>
  4. <author>Giada De Laurentiis</author>
  5. <year>2005</year>
  6. <price>30.00</price>
  7. </book>
  8. <book category="CHILDREN">
  9. <title lang="en">Harry Potter</title>
  10. <author>J K. Rowling</author>
  11. <year>2005</year>
  12. <price>29.99</price>
  13. </book>
  14. <book category="WEB">
  15. <title lang="en">Learning XML</title>
  16. <author>Erik T. Ray</author>
  17. <year>2003</year>
  18. <price>39.95</price>
  19. </book>
  20. </bookstore>

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

ARXML解读

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

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

 

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

  1. <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">
  2. ...元素内容...
  3. </AUTOSAR>

 

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

xmlns:xml NameSpace的缩写,表明文档元素的命名空间,避免命名冲突。命名空间的声明是默认的,元素前不用添加前缀。

xmlns:xsi:又定义了一个命名空间,前缀为xsi ,对应http://www.w3.org/2001/XMLSchema-instance,其通常作为XSD的命名空间。

xsi:schemaLocation:xsi命名空间下schemaLocation属性,后边跟的两个值分别为命名空间 命名空间对应的XSD。

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

  1. <AR-PACKAGES>
  2. ...
  3. </AR-PACKAGES>

 

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

  1. <AR-PACKAGE UUID="fe961ec7-0abe-508e-3e6a-54993ef5a69e">
  2. <SHORT-NAME>AUTOSAR_XXX</SHORT-NAME>
  3. ...包其他内容...
  4. <AR-PACKAGES>
  5. <AR-PACKAGE>
  6. ...包内容...
  7. </AR-PACKAGE>
  8. </AR-PACKAGES>
  9. </AR-PACKAGE>

 

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

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

下图包含所有ARElement的种类。

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

下图为ARXML的顶层架构。

ISOLAR A:ARXML文件实例分析

应用组件类型

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

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

ShortName:组件名称。

AdiminData:AdminData表示元素所管理的信息。此管理信息将被视为元数据,如修订ID或文件的状态等。

  1. <ADMIN-DATA>
  2. <SDGS>
  3. <SDG GID="Master">
  4. <SD>true</SD>
  5. </SDG>
  6. </SDGS>
  7. </ADMIN-DATA>

Ports:此SwComponentType可通过定义的Port进行通信.

  1. <PORTS>
  2. <P-PORT-PROTOTYPE UUID="6c3821e7-083e-4107-aabe-78e2b3fec89a">
  3. <SHORT-NAME>PPortPrototype_0</SHORT-NAME>
  4. <PROVIDED-INTERFACE-TREF DEST="SENDER-RECEIVER-INTERFACE">/SenderReceiverInterface/SenderReceiverInterface_0</PROVIDED-INTERFACE-TREF>
  5. </P-PORT-PROTOTYPE>
  6. </PORTS>

internalBehavior:描述了软件组件相对于RTE的相关方面的内容,即Runnable Entitities和它们响应的RTE Event。

  1. <INTERNAL-BEHAVIORS>
  2. <SWC-INTERNAL-BEHAVIOR UUID="6131a7d7-2eb4-443c-af46-b440c9e69731">
  3. <SHORT-NAME>IB_Base_SWC</SHORT-NAME>
  4. <DATA-TYPE-MAPPING-REFS>
  5. <DATA-TYPE-MAPPING-REF DEST="DATA-TYPE-MAPPING-SET">
    /DataTypeMapping/DataTypeMappingSet_0</DATA-TYPE-MAPPING-REF>
  6. </DATA-TYPE-MAPPING-REFS>
  7. <EVENTS>
  8. <TIMING-EVENT UUID="53fe7a8e-aacc-4a45-b555-e33f1061ac74">
  9. <SHORT-NAME>TimingEvent_0</SHORT-NAME>
  10. <START-ON-EVENT-REF DEST="RUNNABLE-ENTITY">/Base_SWC/Test1
    /IB_Base_SWC/RunnableEntity_0</START-ON-EVENT-REF>
  11. <PERIOD>1.0</PERIOD>
  12. </TIMING-EVENT>
  13. </EVENTS>
  14. <RUNNABLES>
  15. <RUNNABLE-ENTITY UUID="31408035-5651-4258-a999-72d54c796e74">
  16. <SHORT-NAME>RunnableEntity_0</SHORT-NAME>
  17. <DATA-SEND-POINTS>
  18. <VARIABLE-ACCESS UUID="c85b3d4b-2b73-4991-868e-c59bca22fb3f">
  19. <SHORT-NAME>DSP_TestState_0</SHORT-NAME>
  20. <ACCESSED-VARIABLE>
  21. <AUTOSAR-VARIABLE-IREF>
  22. <PORT-PROTOTYPE-REF DEST="P-PORT-PROTOTYPE">/Base_SWC/
    Test1/PPortPrototype_0</PORT-PROTOTYPE-REF>
  23. <TARGET-DATA-PROTOTYPE-REF DEST="VARIABLE-DATA-
    PROTOTYPE"
    >
    /SenderReceiverInterface/
    SenderReceiverInterface_0/TestState</TARGET-DATA-PROTOTYPE-REF>
  24. </AUTOSAR-VARIABLE-IREF>
  25. </ACCESSED-VARIABLE>
  26. </VARIABLE-ACCESS>
  27. </DATA-SEND-POINTS>
  28. <SYMBOL>RunnableEntity_0_func</SYMBOL>
  29. </RUNNABLE-ENTITY>
  30. </RUNNABLES>
  31. </SWC-INTERNAL-BEHAVIOR>
  32. </INTERNAL-BEHAVIORS>

系统

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

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

ShortName:系统名称。

Category:类别是专门用于可识别语义的关键字。它影响属性的预期存在性和约束的适用性。

ecuExtractVersion:如果系统类别为SYSTEMEXTRACT或ECU EXTRACT,则应定义executeExtractVersion属性

fibexElement:引用指定通信和拓扑的ASAM FIBEX元素。系统应该引用所有出现在DBC_SysDesc.arxml中与抽取Ecu相关的Fibex元素。

  1. <FIBEX-ELEMENTS>
  2. <FIBEX-ELEMENT-REF-CONDITIONAL>
  3. <FIBEX-ELEMENT-REF DEST="I-SIGNAL">/DBC_SysDesc_Can_Network_ECAN/Pkg_ISignal/CHK12_Mcu</FIBEX-ELEMENT-REF>
  4. </FIBEX-ELEMENT-REF-CONDITIONAL>
  5. <FIBEX-ELEMENT-REF-CONDITIONAL>
  6. <FIBEX-ELEMENT-REF DEST="CAN-CLUSTER">/DBC_SysDesc_Can_Network_ECAN/Pkg_Cluster/Can_Network_ECAN</FIBEX-ELEMENT-REF>
  7. </FIBEX-ELEMENT-REF-CONDITIONAL>
  8. <FIBEX-ELEMENT-REF-CONDITIONAL>
  9. <FIBEX-ELEMENT-REF DEST="CAN-FRAME">/DBC_SysDesc_Can_Network_ECAN/Pkg_Frame/DV_Test_Message_1</FIBEX-ELEMENT-REF>
  10. </FIBEX-ELEMENT-REF-CONDITIONAL>
  11. <FIBEX-ELEMENT-REF-CONDITIONAL>
  12. <FIBEX-ELEMENT-REF DEST="I-SIGNAL-I-PDU">/DBC_SysDesc_Can_Network_ECAN/Pkg_Pdus/DV_Test_Message_1</FIBEX-ELEMENT-REF>
  13. </FIBEX-ELEMENT-REF-CONDITIONAL>
  14. <FIBEX-ELEMENT-REF-CONDITIONAL>
  15. <FIBEX-ELEMENT-REF DEST="I-SIGNAL">/DBC_SysDesc_Can_Network_ECAN/Pkg_ISignal/KL15_MON_MCU</FIBEX-ELEMENT-REF>
  16. </FIBEX-ELEMENT-REF-CONDITIONAL>
  17. <FIBEX-ELEMENT-REF-CONDITIONAL>
  18. <FIBEX-ELEMENT-REF DEST="CAN-FRAME">/DBC_SysDesc_Can_Network_ECAN/Pkg_Frame/Rx_Test_Message_01</FIBEX-ELEMENT-REF>
  19. </FIBEX-ELEMENT-REF-CONDITIONAL>
  20. <FIBEX-ELEMENT-REF-CONDITIONAL>
  21. <FIBEX-ELEMENT-REF DEST="I-SIGNAL-I-PDU">/DBC_SysDesc_Can_Network_ECAN/Pkg_Pdus/Rx_Test_Message_01</FIBEX-ELEMENT-REF>
  22. </FIBEX-ELEMENT-REF-CONDITIONAL>
  23. <FIBEX-ELEMENT-REF-CONDITIONAL>
  24. <FIBEX-ELEMENT-REF DEST="I-SIGNAL">/DBC_SysDesc_Can_Network_ECAN/Pkg_ISignal/Rx_Test_Signal_01</FIBEX-ELEMENT-REF>
  25. </FIBEX-ELEMENT-REF-CONDITIONAL>
  26. <FIBEX-ELEMENT-REF-CONDITIONAL>
  27. <FIBEX-ELEMENT-REF DEST="I-SIGNAL">/DBC_SysDesc_Can_Network_ECAN/Pkg_ISignal/Rx_Test_Signal_02</FIBEX-ELEMENT-REF>
  28. </FIBEX-ELEMENT-REF-CONDITIONAL>
  29. <FIBEX-ELEMENT-REF-CONDITIONAL>
  30. <FIBEX-ELEMENT-REF DEST="ECU-INSTANCE">/DBC_SysDesc_Can_Network_ECAN/Pkg_Ecu/Test</FIBEX-ELEMENT-REF>
  31. </FIBEX-ELEMENT-REF-CONDITIONAL>
  32. <FIBEX-ELEMENT-REF-CONDITIONAL>
  33. <FIBEX-ELEMENT-REF DEST="CAN-FRAME">/DBC_SysDesc_Can_Network_ECAN/Pkg_Frame/Tx_Test_Message_01</FIBEX-ELEMENT-REF>
  34. </FIBEX-ELEMENT-REF-CONDITIONAL>
  35. <FIBEX-ELEMENT-REF-CONDITIONAL>
  36. <FIBEX-ELEMENT-REF DEST="I-SIGNAL-I-PDU">/DBC_SysDesc_Can_Network_ECAN/Pkg_Pdus/Tx_Test_Message_01</FIBEX-ELEMENT-REF>
  37. </FIBEX-ELEMENT-REF-CONDITIONAL>
  38. <FIBEX-ELEMENT-REF-CONDITIONAL>
  39. <FIBEX-ELEMENT-REF DEST="I-SIGNAL">/DBC_SysDesc_Can_Network_ECAN/Pkg_ISignal/Tx_Test_Signal_01</FIBEX-ELEMENT-REF>
  40. </FIBEX-ELEMENT-REF-CONDITIONAL>
  41. <FIBEX-ELEMENT-REF-CONDITIONAL>
  42. <FIBEX-ELEMENT-REF DEST="I-SIGNAL">/DBC_SysDesc_Can_Network_ECAN/Pkg_ISignal/Tx_Test_Signal_02</FIBEX-ELEMENT-REF>
  43. </FIBEX-ELEMENT-REF-CONDITIONAL>
  44. <FIBEX-ELEMENT-REF-CONDITIONAL>
  45. <FIBEX-ELEMENT-REF DEST="I-SIGNAL">/DBC_SysDesc_Can_Network_ECAN/Pkg_ISignal/VBAT_MON_MCU</FIBEX-ELEMENT-REF>
  46. </FIBEX-ELEMENT-REF-CONDITIONAL>
  47. </FIBEX-ELEMENTS>

mapping:所有映射方面的聚合(软件组件到ECU的映射,数据元素到信号的映射以及映射约束)。

  1. <MAPPINGS>
  2. <SYSTEM-MAPPING>
  3. <SHORT-NAME>SystemMapping</SHORT-NAME>
  4. <DATA-MAPPINGS>
  5. <SENDER-RECEIVER-TO-SIGNAL-MAPPING>
  6. <DATA-ELEMENT-IREF>
  7. <CONTEXT-COMPONENT-REF DEST="SW-COMPONENT-PROTOTYPE">/TopLevel
    Composition/TopLevelComposition/CPT_Test1</CONTEXT-COMPONENT-REF>
  8. <CONTEXT-COMPOSITION-REF DEST="ROOT-SW-COMPOSITION-PROTOTYPE">/
    System/System/RootSwCompositionPrototype</CONTEXT-COMPOSITION-REF>
  9. <CONTEXT-PORT-REF DEST="R-PORT-PROTOTYPE">/Base_SWC/Test1
    /RPortPrototype_0</CONTEXT-PORT-REF>
  10. <TARGET-DATA-PROTOTYPE-REF DEST="VARIABLE-DATA-PROTOTYPE">/
    Interfaces/SenderReceiverInterface_uint16/VDP_uint16</TARGET-DATA-PROTOTYPE-REF>
  11. </DATA-ELEMENT-IREF>
  12. <SYSTEM-SIGNAL-REF DEST="SYSTEM-SIGNAL">/DBC_SysDesc_Can_Network
    _ECAN/Pkg_Signal/Rx_Test_Signal_01</SYSTEM-SIGNAL-REF>
  13. </SENDER-RECEIVER-TO-SIGNAL-MAPPING>
  14. </DATA-MAPPINGS>
  15. <SW-MAPPINGS>
  16. <SWC-TO-ECU-MAPPING>
  17. <SHORT-NAME>SwcToEcuMapping_1</SHORT-NAME>
  18. <COMPONENT-IREFS>
  19. <COMPONENT-IREF>
  20. <CONTEXT-COMPOSITION-REF DEST="ROOT-SW-COMPOSITION-PROTOTYPE">
    /System/System/RootSwCompositionPrototype</CONTEXT-COMPOSITION-REF>
  21. <TARGET-COMPONENT-REF DEST="SW-COMPONENT-PROTOTYPE">/
    TopLevelComposition/TopLevelComposition/CPT_Test1</TARGET-COMPONENT-REF>
  22. </COMPONENT-IREF>
  23. <COMPONENT-IREF>
  24. <CONTEXT-COMPOSITION-REF DEST="ROOT-SW-COMPOSITION-
    PROTOTYPE"
    >
    /System/System/RootSwCompositionPrototype</CONTEXT-COMPOSITION-REF>
  25. <TARGET-COMPONENT-REF DEST="SW-COMPONENT-PROTOTYPE">
    /TopLevelComposition/TopLevelComposition/CPT_Test2</TARGET-COMPONENT-REF>
  26. </COMPONENT-IREF>
  27. </COMPONENT-IREFS>
  28. <ECU-INSTANCE-REF DEST="ECU-INSTANCE">/DBC_SysDesc_Can_Network_ECAN/Pkg_Ecu/Test</ECU-INSTANCE-REF>
  29. </SWC-TO-ECU-MAPPING>
  30. </SW-MAPPINGS>
  31. </SYSTEM-MAPPING>
  32. </MAPPINGS>

rootSoftwareComposition:聚合的根软件部件,包含系统中所有软件组件的层次结构。当系统描述用于network-only情况时,不需要此元素。

  1. <ROOT-SOFTWARE-COMPOSITIONS>
  2. <ROOT-SW-COMPOSITION-PROTOTYPE>
  3. <SHORT-NAME>CPT_Test_FlatView</SHORT-NAME>
  4. <FLAT-MAP-REF DEST="FLAT-MAP">/Test_FlatView/Test_FlatMap</FLAT-MAP-REF>
  5. <SOFTWARE-COMPOSITION-TREF DEST="COMPOSITION-SW-COMPONENT-TYPE">
    /Test_FlatView/SwComponentTypes/Test_FlatView</SOFTWARE-COMPOSITION-TREF>
  6. </ROOT-SW-COMPOSITION-PROTOTYPE>
  7. </ROOT-SOFTWARE-COMPOSITIONS>

FlatInstanceDescriptor:表示软件系统实例树的一个节点(例如,组件实例或数据元素)。这个元素的用途是将这个实例的各种嵌套关系映射到一个平面表示,并为其分配一个惟一的名称(shortName)。

  1. <FLAT-INSTANCE-DESCRIPTOR>
  2. <SHORT-NAME>CPT_Test1</SHORT-NAME>
  3. <UPSTREAM-REFERENCE-IREF>
  4. <CONTEXT-ELEMENT-REF DEST="ROOT-SW-COMPOSITION-PROTOTYPE">/System/System/RootSwCompositionPrototype</CONTEXT-ELEMENT-REF>
  5. <TARGET-REF DEST="SW-COMPONENT-PROTOTYPE">/TopLevelComposition/TopLevelComposition/CPT_Test1</TARGET-REF>
  6. </UPSTREAM-REFERENCE-IREF>
  7. <ECU-EXTRACT-REFERENCE-IREF>
  8. <CONTEXT-ELEMENT-REF DEST="ROOT-SW-COMPOSITION-PROTOTYPE">/System_EcuExtract/EXTR_Test/CPT_Test_FlatView</CONTEXT-ELEMENT-REF>
  9. <TARGET-REF DEST="SW-COMPONENT-PROTOTYPE">/Test_FlatView/SwComponentTypes/Test_FlatView/CPT_Test1</TARGET-REF>
  10. </ECU-EXTRACT-REFERENCE-IREF>
  11. </FLAT-INSTANCE-DESCRIPTOR>
  12. <FLAT-INSTANCE-DESCRIPTOR>
  13. <SHORT-NAME>TestState</SHORT-NAME>
  14. <SW-DATA-DEF-PROPS>
  15. <SW-DATA-DEF-PROPS-VARIANTS>
  16. <SW-DATA-DEF-PROPS-CONDITIONAL>
  17. <SW-REFRESH-TIMING>
  18. <CSE-CODE>6</CSE-CODE>
  19. <CSE-CODE-FACTOR>1</CSE-CODE-FACTOR>
  20. </SW-REFRESH-TIMING>
  21. </SW-DATA-DEF-PROPS-CONDITIONAL>
  22. </SW-DATA-DEF-PROPS-VARIANTS>
  23. </SW-DATA-DEF-PROPS>
  24. <UPSTREAM-REFERENCE-IREF>
  25. <CONTEXT-ELEMENT-REF DEST="ROOT-SW-COMPOSITION-PROTOTYPE">/System/System/RootSwCompositionPrototype</CONTEXT-ELEMENT-REF>
  26. <CONTEXT-ELEMENT-REF DEST="SW-COMPONENT-PROTOTYPE">/TopLevelComposition/TopLevelComposition/CPT_Test1</CONTEXT-ELEMENT-REF>
  27. <CONTEXT-ELEMENT-REF DEST="P-PORT-PROTOTYPE">/Base_SWC/Test1/PPortPrototype_0</CONTEXT-ELEMENT-REF>
  28. <TARGET-REF DEST="VARIABLE-DATA-PROTOTYPE">/SenderReceiverInterface/SenderReceiverInterface_0/TestState</TARGET-REF>
  29. </UPSTREAM-REFERENCE-IREF>
  30. <ECU-EXTRACT-REFERENCE-IREF>
  31. <CONTEXT-ELEMENT-REF DEST="ROOT-SW-COMPOSITION-PROTOTYPE">/System_EcuExtract/EXTR_Test/CPT_Test_FlatView</CONTEXT-ELEMENT-REF>
  32. <CONTEXT-ELEMENT-REF DEST="SW-COMPONENT-PROTOTYPE">/Test_FlatView/SwComponentTypes/Test_FlatView/CPT_Test1</CONTEXT-ELEMENT-REF>
  33. <CONTEXT-ELEMENT-REF DEST="P-PORT-PROTOTYPE">/Base_SWC/Test1/PPortPrototype_0</CONTEXT-ELEMENT-REF>
  34. <TARGET-REF DEST="VARIABLE-DATA-PROTOTYPE">/SenderReceiverInterface/SenderReceiverInterface_0/TestState</TARGET-REF>
  35. </ECU-EXTRACT-REFERENCE-IREF>
  36. </FLAT-INSTANCE-DESCRIPTOR>

部件类型

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

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

ShortName:部件名称。

Ports:此文件为抽取出来的连接系统信号的端口。

  1. <PORTS>
  2. <R-PORT-PROTOTYPE>
  3. <SHORT-NAME>RPortPrototype_System_0</SHORT-NAME>
  4. <REQUIRED-INTERFACE-TREF DEST="SENDER-RECEIVER-INTERFACE">/
    Interfaces/SenderReceiverInterface_uint32</REQUIRED-INTERFACE-TREF>
  5. </R-PORT-PROTOTYPE>
  6. </PORTS>

component:构成此部件的实例化组件。

  1. <COMPONENTS>
  2. <SW-COMPONENT-PROTOTYPE>
  3. <SHORT-NAME>CPT_Test1</SHORT-NAME>
  4. <TYPE-TREF DEST="APPLICATION-SW-COMPONENT-TYPE">/Base_SWC/Test1</TYPE-TREF>
  5. </SW-COMPONENT-PROTOTYPE>
  6. <SW-COMPONENT-PROTOTYPE>
  7. <SHORT-NAME>CPT_Test2</SHORT-NAME>
  8. <TYPE-TREF DEST="APPLICATION-SW-COMPONENT-TYPE">/CDD_SWC/Test2</TYPE-TREF>
  9. </SW-COMPONENT-PROTOTYPE>
  10. </COMPONENTS>

connector:连接表征在组件间通过端口建立的关系。连接分为ASSEMBLY-SW-CONNECTOR与DELEGATION-SW-CONNECTOR。一个表征组件间的连接,一个表征组件与ECU通信信号的连接。

  1. <CONNECTORS>
  2. <ASSEMBLY-SW-CONNECTOR>
  3. <SHORT-NAME>ASC_CPT_Test1_PPortPrototype_0_CPT_Test2_RPortPrototype_0</SHORT-NAME>
  4. <PROVIDER-IREF>
  5. <CONTEXT-COMPONENT-REF DEST="SW-COMPONENT-PROTOTYPE">/Test_
    FlatView/SwComponentTypes/Test_FlatView/CPT_Test1</CONTEXT-COMPONENT-REF>
  6. <TARGET-P-PORT-REF DEST="P-PORT-PROTOTYPE">/Base_SWC/Test1/
    PPortPrototype_0</TARGET-P-PORT-REF>
  7. </PROVIDER-IREF>
  8. <REQUESTER-IREF>
  9. <CONTEXT-COMPONENT-REF DEST="SW-COMPONENT-PROTOTYPE">/Test_FlatView/SwComponentTypes/
    Test_FlatView/CPT_Test2</CONTEXT-COMPONENT-REF>
  10. <TARGET-R-PORT-REF DEST="R-PORT-PROTOTYPE">/CDD_SWC/Test2/RPortPrototype_0</TARGET-R-PORT-REF>
  11. </REQUESTER-IREF>
  12. </ASSEMBLY-SW-CONNECTOR>
  13. <DELEGATION-SW-CONNECTOR>
  14. <SHORT-NAME>DelegationSwConnector_0_0</SHORT-NAME>
  15. <INNER-PORT-IREF>
  16. <R-PORT-IN-COMPOSITION-INSTANCE-REF>
  17. <CONTEXT-COMPONENT-REF DEST="SW-COMPONENT-PROTOTYPE">/
    Test_FlatView/SwComponentTypes/Test_FlatView/CPT_Test1</CONTEXT-COMPONENT-REF>
  18. <TARGET-R-PORT-REF DEST="R-PORT-PROTOTYPE">/Base_SWC/Test1/
    RPortPrototype_System_0</TARGET-R-PORT-REF>
  19. </R-PORT-IN-COMPOSITION-INSTANCE-REF>
  20. </INNER-PORT-IREF>
  21. <OUTER-PORT-REF DEST="R-PORT-PROTOTYPE">/Test_FlatView/
    SwComponentTypes/Test_FlatView/RPortPrototype_System_0</OUTER-PORT-REF>
  22. </DELEGATION-SW-CONNECTOR>
  23. </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: 对单个软件组件或模块实现的描述。下面的例子描述了组件的编程语言以及组件类型等信息。

  1. <SWC-IMPLEMENTATION>
  2. <SHORT-NAME>ComM_Imp</SHORT-NAME>
  3. <CODE-DESCRIPTORS>
  4. <CODE>
  5. <SHORT-NAME>ComM_Imp_Code</SHORT-NAME>
  6. <ARTIFACT-DESCRIPTORS>
  7. <AUTOSAR-ENGINEERING-OBJECT>
  8. <SHORT-LABEL>Code</SHORT-LABEL>
  9. <CATEGORY>SWSRC</CATEGORY>
  10. </AUTOSAR-ENGINEERING-OBJECT>
  11. </ARTIFACT-DESCRIPTORS>
  12. </CODE>
  13. </CODE-DESCRIPTORS>
  14. <PROGRAMMING-LANGUAGE>C</PROGRAMMING-LANGUAGE>
  15. <BEHAVIOR-REF DEST="SWC-INTERNAL-BEHAVIOR">/AUTOSAR_ComM/SwComponentTypes/ComM/ComM_Int</BEHAVIOR-REF>
  16. </SWC-IMPLEMENTATION>

ImplementationDataTypes:描述属于本组件的ImplementationData。这通常对应于C代码中的typedef,是对基本数据类型的一层封装。下面的例子描述了结构体数据类型的ComM_UserHandleArrayType,结构体包含一个uint8类型的numberOfRequesters以一个ComM_UserHandleType类型的数组handleArray。

  1. <IMPLEMENTATION-DATA-TYPE>
  2. <SHORT-NAME>ComM_UserHandleArrayType</SHORT-NAME>
  3. <CATEGORY>STRUCTURE</CATEGORY>
  4. <SUB-ELEMENTS>
  5. <IMPLEMENTATION-DATA-TYPE-ELEMENT>
  6. <SHORT-NAME>numberOfRequesters</SHORT-NAME>
  7. <CATEGORY>TYPE_REFERENCE</CATEGORY>
  8. <SW-DATA-DEF-PROPS>
  9. <SW-DATA-DEF-PROPS-VARIANTS>
  10. <SW-DATA-DEF-PROPS-CONDITIONAL>
  11. <IMPLEMENTATION-DATA-TYPE-REF DEST="IMPLEMENTATION-DATA-TYPE">/AUTOSAR_
    Platform/ImplementationDataTypes/uint8</IMPLEMENTATION-DATA-TYPE-REF>
  12. </SW-DATA-DEF-PROPS-CONDITIONAL>
  13. </SW-DATA-DEF-PROPS-VARIANTS>
  14. </SW-DATA-DEF-PROPS>
  15. </IMPLEMENTATION-DATA-TYPE-ELEMENT>
  16. <IMPLEMENTATION-DATA-TYPE-ELEMENT>
  17. <SHORT-NAME>handleArray</SHORT-NAME>
  18. <CATEGORY>ARRAY</CATEGORY>
  19. <ARRAY-SIZE-SEMANTICS>FIXED-SIZE</ARRAY-SIZE-SEMANTICS>
  20. <SUB-ELEMENTS>
  21. <IMPLEMENTATION-DATA-TYPE-ELEMENT>
  22. <SHORT-NAME>handleArrayElement</SHORT-NAME>
  23. <CATEGORY>TYPE_REFERENCE</CATEGORY>
  24. <ARRAY-SIZE SHORT-LABEL="size">1</ARRAY-SIZE>
  25. <SW-DATA-DEF-PROPS>
  26. <SW-DATA-DEF-PROPS-VARIANTS>
  27. <SW-DATA-DEF-PROPS-CONDITIONAL>
  28. <IMPLEMENTATION-DATA-TYPE-REF DEST="IMPLEMENTATION-DATA-TYPE">/AUTOSAR
    _ComM/ImplementationDataTypes/ComM_UserHandleType</IMPLEMENTATION-DATA-TYPE-REF>
  29. </SW-DATA-DEF-PROPS-CONDITIONAL>
  30. </SW-DATA-DEF-PROPS-VARIANTS>
  31. </SW-DATA-DEF-PROPS>
  32. </IMPLEMENTATION-DATA-TYPE-ELEMENT>
  33. </SUB-ELEMENTS>
  34. </IMPLEMENTATION-DATA-TYPE-ELEMENT>
  35. </SUB-ELEMENTS>
  36. </IMPLEMENTATION-DATA-TYPE>

SwComponentTypes:软件组件类型,包括ApplicationSwComponentType、ServiceProxySwComponentType、SensorActuatorSwComponentType、ComplexDeviceDriverSwComponentType、ServiceSwComponentType、EcuAbstractionSwComponentType这几种类型,下面截图的为服务软件组件类型,它同样由端口和组件内部行为构成,组件内部行为包含了Runnables(实体)以及EVENTS(事件)以及DataTypeMappingRefs(应用数据与实现数据映射引用)。

PortInterfaces:端口接口类型,包括SenderReceiverInterface、NvDataInterface、ParameterInterface、ModeSwitchInterface、ClientServerInterface、TriggerInterface这几种类型,下面的arxml定义了一个SenderReceiverInterface。

  1. <SENDER-RECEIVER-INTERFACE>
  2. <SHORT-NAME>ComM_CurrentChannelRequest</SHORT-NAME>
  3. <IS-SERVICE>true</IS-SERVICE>
  4. <DATA-ELEMENTS>
  5. <VARIABLE-DATA-PROTOTYPE>
  6. <SHORT-NAME>fullComRequestors</SHORT-NAME>
  7. <TYPE-TREF DEST="IMPLEMENTATION-DATA-TYPE">/AUTOSAR_ComM/
    ImplementationDataTypes/ComM_UserHandleArrayType</TYPE-TREF>
  8. </VARIABLE-DATA-PROTOTYPE>
  9. </DATA-ELEMENTS>
  10. </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引用

   
56 次浏览       4
 
相关文章

CMM之后对CMMI的思考
对软件研发项目管理的深入探讨
软件过程改进
软件过程改进的实现
 
相关文档

软件过程改进框架
软件过程改进的CMM-TSP-PSP模型
过程塑造(小型软件团队过程改进)
软件过程改进:经验和教训
 
相关课程

以"我"为中心的过程改进(iProcess )
iProcess过程改进实践
CMMI体系与实践
基于CMMI标准的软件质量保证

最新活动计划
人工智能.机器学习TensorFlow 6-30[直播]
基于 UML 和EA进行分析设计 7-30[北京]
软件架构设计方法、案例与实践 7-24[北京]
用户体验、易用性测试与评估 7-25[西安]
图数据库与知识图谱 8-23[北京]
需求分析师能力培养 8-28[北京]
 
 
最新文章
iPerson的过程观:要 过程 or 结果
基于模型的需求管理方法与工具
敏捷产品管理之 Story
敏捷开发需求管理(产品backlog)
Kanban看板管理实践精要
最新课程
基于iProcess的敏捷过程
软件开发过程中的项目管理
持续集成与敏捷开发
敏捷过程实践
敏捷测试-简单而可行
更多...   
成功案例
英特尔 SCRUM-敏捷开发实战
某著名汽车 敏捷开发过程与管理实践
北京 敏捷开发过程与项目管理
东方证券 基于看板的敏捷方法实践
亚信 工作量估算
更多...