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

1元 10元 50元





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



文章 咨询 工具 课程  
会员   
   
嵌入式软件架构-高级实践
12月11-12日 北京+线上
LLM大模型与智能体开发实战
12月18-19日 北京+线上
需求分析与管理
2026年1月22-23日 北京+线上
     
   
 订阅
Autosar 的ARXML配置数据库文件协议
 
 
  51   次浏览      8 次
 2025-11-24
 
编辑推荐:
本文介绍了Autosar 的 `ARXML` 配置数据库文件协议相关内容。希望对您的学习有所帮助。
本文来自于千千寰宇 ,由火龙果软件Alice编辑、推荐。

序: 缘起 ARXML

//ARXML_AP_V1.1.arxml
<AUTOSAR xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://autosar.org/schema/r4.0" xsi:schemaLocation="http://autosar.org/schema/r4.0 AUTOSAR_00048.xsd">
//ARXML_CP_V1.1.arxml
<AUTOSAR xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://autosar.org/schema/r4.0" xsi:schemaLocation="http://autosar.org/schema/r4.0 AUTOSAR_4-3-0.xsd">

 

概述 : Autosar 的 ARXML 配置数据库文件协议

ARXML 文件

ARXML文件: AUTOSAR系统描述文件,后缀*.arxml

实质是一个XML文件,一般通过Autosar标准的XSD进行约束

可用专用工具Artop,Systemdesk,Matlab,DaVinci developer,Autosar Explorer…生成。

和XML、DBC文件一样,ARXML是一个通用的配置/数据库文件。

所以,这里只需了解ARXML文件的结构(方便在将ARXML导入工具前,能够检查一些基本的错误),无需想着用过多的时间手动生成它(生成的工作,专业工具已经帮你做解决了)。

前置知识:XML

XML简介

XML : 可扩展标记语言(eXtensible Markup Language),是是一种非常灵活的标记语言,没有固定的标签,所有的标签,在符合XML命名规则的基础上,都可以自定义,但是在写标签名的时候一定要有含义。

通常,XML被用于信息的记录和传递。因此,XML经常被用来充当“配置文件”和“数据库”。

一般可通过“Eclipse”和“网页浏览器”等软件工具打开XML文件。

将ARXML文件的后缀名修改为XML,可以通过这些工具打开。

XML 文件数据结构

以下是一个简单Demo

<?xml version="1.0" encoding="utf-8"?>
<books>
<!-- 图书信息 -->
    <book id="book_1">
        <author>张三</author>
       <title>XML高级教程</title>
       <description>介绍XML和XML实战</description>
    </book>
</books>

XML文档是树状结构;

第1行:XML声明。 必须放在第一行,第一列,声明语句之前,不能有任何的空格和注释。定义了XML版本和编码信息。其中,版本永远都是1.0;编码方式一般都使用UTF-8(该编码支持中文标签),编码信息不区分大小写。

第2行:根元素 : <books>。XML有且仅有一个根元素。元素由开始标签、元素内容、结束标签组成,没有被其它元素包围的元素称为根元素;

第3行:注释的写法 : <!-- 注释内容 -->,但不能嵌套使用。

第4行:属性 : id="book_1"。属性必有值,值必须使用引号(单引号,双引号)。属性其实是描述标签一些额外的信息,一个标签可以有多个属性。可以将属性看为元素的另一种写法。

第5~7行:表示元素。

XML中的标签区分大小写,对应的开始标签和结束标签必须大小写一致。

标签命名:普通字符有:字母,数字,-中横线,_下划线,.点号,数字不能作为首字母出现等。大段内容有许多特殊符号内容,使用转义,如下的例子:了看可是ljlkdjlsjd lsksj lsjdlks d]]>

XML中的标签是成对的,而且要正确嵌套:标签可以嵌套,但不可以交叉嵌套。

实际的项目当中,第4~8行这部分经常是重复的。

特殊符号使用符号实体:

单引号:用&apos表示

双引号:用&quot表示

空格:用&nbsp表示

&符号:用&amp表示

>符号:用&gt表示

<符号:用&lt表示

如下根元素下,可以存在多个并列的元素:

<?xml version="1.0" encoding="utf-8"?>
<books>
<!-- 图书信息 -->
    <book id="book_1">
       <author>张三</author>
       <title>XML高级教程</title>
       <description>介绍XML和XML实战</description>
    </book>
    <book id="book_2">
       <author>李四</author>
       <title>XML中级教程</title>
       <description>介绍XML和XML实战</description>
    </book>
</books>

有效的XML

XML首先必须是格式良好的,一般使用DTD和XSD(XML Schema)定义语义约束。ARXML文件使用XSD进行约束。

认识DTD

DTD简介

DTD全称: Document Type Definition

用于约束XML的文档格式,保证XML是一个有效的XML。定义好接口和格式,方便多个人同时开发。

DTD可以分为两种:内部DTD;外部DTD

DTD和XML之间的关系:

类(人类)和对象(我)

数据库(表)和行(一条记录)

DTD的缺点:

DTD约束XML的时候,不能对XML中数据类型做详细的限定。

DTD约束有自己的语法,书写时必须遵守DTD的语法;

一个XML文件中只能引入一个DTD约束,而无法通过多个DTD文件来约束同一个XML文件。

内部的 DOCTYPE 声明

内部DTD的定义,语法如下:

a)

b) 元素声明语法:

<!ELEMENT 元素名 (子元素[,子元素...])>

 

c) 数量词:

+:表示元素出现至少出现一次
?:表示元素出现0次或1次
*:表示元素出现任意次。举例<!ELEMENT books (book*)>

d) 属性声明语法:

属性类型:CDATA,表示字符数据(character data)

默认值:

#REQUIRED,表示必须出现
#IMPLIED,表示不是必须出现

带内部DTD的完整XML:

<?xml version="1.0" encoding="utf-8"?>
<!-- 声明内部DTD -->
<!DOCTYPE books [
<!ELEMENT books (book+)>
<!ELEMENT book (author, title, description)>
<!ATTLIST book id CDATA #REQUIRED >
<!ELEMENT author (#PCDATA)>
<!ELEMENT title (#PCDATA)>
<!ELEMENT description (#PCDATA)>
]>
<books>
<!-- 图书信息 -->
    <book id="book_1">
       <author>张三</author>
       <title>XML高级教程</title>
       <description>介绍XML和XML实战</description>
    </book>
    <book id="book_2">
      <author>李四</author>
       <title>XML中级教程</title>
       <description>介绍XML和XML实战</description>
    </book>
</books>

 

外部的 DOCTYPE 声明

创建一各独立的外部DTD文件,内容如下:

<?xml version="1.0" encoding="utf-8"?>
<!—声明内部DTD-->
<!ELEMENT books (book+)>
<!ELEMENT book (author, title, description)>
<!ATTLIST book id CDATA #REQUIRED >
<!ELEMENT author (#PCDATA)>
<!ELEMENT title (#PCDATA)>
<!ELEMENT description (#PCDATA)>

在XML中引入外部DTD文件,完整的语法如下:

<!DOCTYPE 根元素 SYSTEM "文件名">

 

带外部DTD的完整XML:

<?xml version="1.0" encoding="utf-8"?>
<!-- 声明外部DTD -->
<!DOCTYPE books SYSTEM "books.dtd">
<books>
<!-- 图书信息 -->
    <book id="book_1">
       <author>张三</author>
       <title>XML高级教程</title>
       <description>介绍XML和XML实战</description>
    </book>
    <book id="book_2">
       <author>李四</author>
       <title>XML中级教程</title>
       <description>介绍XML和XML实战</description>
    </book>
</books>

 

认识XSD

XSD简介

XSD全称:XML结构定义(XML Schema Definition),是DTD的替代者。

不仅可以定义XML文档的结构,还可以规范XML文档的内容。XSD本身也是XML文档。

XSD采用XML文档来定义语义约束,比DTD要复杂一些,但是功能强大的多:

定义可出现在文档中的元素;

定义可出现在文档中的属性;

定义哪个元素是子元素;

定义子元素的次序;

定义子元素的数目;

定义元素是否为空,或者是否可包含文本;

定义元素的数据类型;

定义元素和属性的默认值以及固定值。

允许开发这自定义数据类型

可读性强

可针对未来需求进行扩展

一个XML中可以引入N个Schema进行约束。

书写的时候,它遵守XML的语法规则,它的文件扩展名XSD。

XSD举例

这一章节仅做了解,无需过多深入。知道XML和XSD的之间的关系就行。

book.xsd文件

<?xml version="1.0" encoding="utf-8">
<!--
    Schema文件中使用W3C对Schema文件的约束信息
    不管是XML还是XSD文件,都需要被约束
    在根标签上使用xmls属性(xmlns="http://www.w3.org/2001/XMLSchema")引用W3C的约束
    在schema中使用
    targetNamespace定义当前schema被xml引用是的名称(名称空间);
    targetNamespace="http://www.example.org/book"定义当前的schema的名称为:http://www.example.org/book值,这个值可以随便写,用来标识约束文件
-->
<schema xmlns="http://www.w3.org/2001/XMLSchema"
    targetNamespace="http://www.example.org/book"
    xmlns:tns="http://www.example.org/book"
    elementFormDefault="qualified">
<!--
在Schema文件中使用element标签来定义xml中可以书写的标签名
-->
<element name="books">
<!--
    在books中的子标签,需要在Schema中定义的books的标签内部嵌入element来定义。
    简单标签:如果一个标签没有子标签,也没有属性,这个标签是一个简单标签。
    复杂标签:如果标签拥有属性或者拥有子标签,那么这个标签就是一个复杂标签。
    在element标签中
    complexType来声明当前element定义的那个标签是一个复杂标签
    simpleType来声明当前element定义的那个标签是一个简单标签
    -->
    <complexType>
       <!--在complexType使用sequence定义子标签之间的顺序-->
       <sequence>
          <element name="book">
          <complexType>
             <sequence>
                <element name="name" type="string"></element>
                <element name="price" type="double"></element>
                <element name="author" type="string"></element>
             </sequence>
          </complexType>
       </element>
    </sequence>
   </complexType>
  </element>
</schema>

book.xml文件

<?xml version="1.0" encoding="utf-8">
<!--
    在根标签上使用xmls属性(xmlns="http://www.example.org/book")引用Schema的约束
    当引用多个约束时,需要在xmlns后追加
    xmlns:context="***"
    xmlns:p="***"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    声明当前的XML文件是schema一个实例(当前这是一个自定义的xml文件,是被某个schema文件约束)
    xsi:schemaLocation="http://www.example.org/book book.xsd"引用schema的位置,其中的“http://www.example.org/book”要与XSD中的targetNamespace里的字符串保持一致
-->
<books
    xmlns="http://www.example.org/book"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://www.example.org/book book.xsd"
>
    <book>
       <name>XML高级教程</name>
       <price>59</price>
       <author>张三</author>
    </book>
</books>

 

如何解读 AUTOSAR ARXML?

缘起

在工具里面已经实现脚本解析arxml,照葫芦画瓢,难免一知半解,文档记录一下如何去查看arxml文件,基于规范。

ARXML文件实质是一个XML文件,一般通过AUTOSAR标准的XSD进行约束,ARXML文档中的元素形成了一棵文档树,这棵树从根部开始,并扩展到树的最底端。所有元素均可拥有子元素,所有元素均可拥有文本内容和属性。

参考文档

《AUTOSAR_TR_XMLPersistenceRules.pdf》

基础组件

第一行:文档声明

包含文档版本和文档字符编码;

第二行:根元素

每个文档有且只有一个根元素,元素由开始标签、元素内容、结束标签组成,没有被其它元素包围的元素称为根元素。属性:xmls:

引用Schema的约束,xmlns:xsi:声明当前的XML文件是schema一个实例,xsi:schemaLocation:引用schema的位置;**

. . .

第三行:顶级包

此元素是添加到文件中的所有AUTOSAR元素的容器。**

. . .

第四行:AUTOSAR包

包是AUTOSAR的主要组件,它包含彼此相关的AUTOSAR元素,如软件组件、行为和受支持的数据类型。它由一个名称和称为UUID的全局唯一标识符定义。它也可能包含子包

<AR-PACKAGE UUID="8348d5fa-cd36-5935-e72f-9ac3852cc24f">

Package Name

. . .

. . .

arxml注释

p class="artcon"> 从AUTOSAR模型的命名到XML的命名手册举例如下

下表显示了从元模型名称到XML模式中使用的名称的一些转换示例

创建表

命名空间

AUTOSAR的命名空间的声明必须是默认的 http://autosar.org/schema/r.

这意味着AUTOSAR XML不需要一个命名空间前缀。

AUTOSAR XML的编码格式必须是UTF-8。

开始模式确定在文档《AUTOSAR_TR_XMLPersistenceRules.pdf》的第六章节。

解析定义

<ECUC-MODULE-DEF>
    定义模块参数,该部分规范及限制了容器参数的使用方法,取值范围等
</ECUC-MODULE-DEF>

 

<ECUC-MODULE-CONFIGURATION-VALUES>
    用来存储模块配置参数数据。
</ECUC-MODULE-CONFIGURATION-VALUES>

 

规范里面有个点:带有 stereotype 构造型标签的元素可以被拆分到不同的arxml里面,例如此标签。

AR-PACKGE/包

会有好几个AR-PACKGE,成对出现,有的属于顶级包,有的属于本身我们需要使用的次级包。

Elements/要素

此层结构包含了我们需要配置的模块信息,包含模块,模块配置项等。

Container/容器

包含了配置工具的配置界面

此处对应于配置项,数据都是五个已配置,展开之后NAME也是下面五个。

展开ECUC-CONTAINER-VALUE可以看到如下排列

上图包含了与即参数(一个配置项)与子配置包(4个),对应于下图

展开之后查看

width="900px"

CanIfInitCfgSet对应了,其值是0,符合配置

注意点,这点和我们的思维稍微有些异常的点

CanIfInitCfg 里面有子服务 CanIfInitHohCfg 注意第二个红框是CanIfInitHohCfgs 多了一个s

其实在工具里面很容易理解,CanIfInitCfg

但是CanIfInitHohCfgs有一个配置包

也就是说CanIfInitCfg里面只有一个配置包

符合此ARXML的格式:子包里面又有一个子包去配置

这个参数值对应于配置

由此可以看出,每个配置项都在arxml里面找到出处。

:ECUC的参考值,这个地方一般是引用其他地方的信息

Definition-Ref / 定义参考

一般参数定义来源与指向本容器配置项的路径,第一个红框是参数,第二个是自己本身的路径。

Parameter-Values / 参数值

参数定义里面可以包含

应用场景

CASE: 创建一个Classic CAN(经典CAN2.0)的系统描述ARXML文件

参考文献

创建一个Classic CAN(经典CAN2.0)的系统描述ARXML文件 - Zhihu 【推荐】

0 序言

AUTOSAR System Description Network Explorer是一个文件编辑器,支持可视化和编辑系统描述的AUTOSAR系统描述文件(.arxml)和ECU摘录的通信内容

它支持架构版本4.0.3、4.1.2、4.2.1、4.2.2和4.3.0。

AUTOSAR系统描述(ARXML)文件是基于XML的文件格式,描述网络通信的元素基于AUTOSAR系统模板。

其界面如下:

1 创建一个AUTOSAR系统描述

双击“AUTOSAR Explorer 2.0”快捷方式(见图1-1),打开“AUTOSAR System Description Network Explorer”(见图1-2)。

图1-1

图1-2

在菜单栏中,依次选择 File --> New File …(见图1-3),弹出“Create New File”对话框。接着在该对话框中选择项目需要的“Autosar格式版本”和“物理层的通信方式”,单击“OK” (见图1-4)。

图1-3

图1-4

注意:

创建完成后,就无法再修改“Autosar格式版本”。

根据所选类型创建一个具有通信Cluster和物理通道的AUTOSAR系统描述文件(见图1-5)。单击“保存”按钮,选择合适的路径,并命名这个描述文件(见图1-6)。

图1-5

图1-6

2 物理层命名以及创建ECU

完成第1章后,重新打开Test_CAN.arxml(见图2-1),选中通信Cluster,在其右侧的属性视图中,重命名这个Cluster,并设置这个CAN通信的波特率(见图2-2)。

图2-1

图2-2

创建ECU方法,有两种:

菜单栏中,依次选择“Edit”à“Create Ecu…”(见图2-3);

工具栏中,单击“Create ECU”(见图2-4)。

图2-3

图2-4

弹出“New ECU”对话框(见图2-5)。

图2-5

重命名ECU,单击“OK”(见图2-6)。

图2-6

完成后的效果如下(见图2-7):

图2-7

3 新建一个Frame

创建Frame方法,有三种:

+先在“导航栏”中选择“Frames”,然后在主视图中鼠标右键,在上下文中选择“Create Frame…”(见图3-1);

图3-1

依次在菜单栏中选择“Edit-->“Create Frame…”(见图3-2);

图3-2

工具栏中,单击“Create Frame”(见图3-3)。

图3-3

弹出“Edit Frame”对话框(见图3-4)。

“Edit Frame”对话框修改如下(见图3-5)。

图3-5

注意:

1、“Edit Frame”对话框中的“Name”,可以理解为“DBC中Message名称”;

2、“Edit Frame”对话框中的“Length”表示帧的数据域长度,单位Byte;

3、“Edit Frame”对话框中的“ID”表示CAN_ID,十六进制表示;

4、“Edit Frame”对话框中的“Addressing Mode”有:Standard(标准帧)和Extended(扩展帧)两个选项,表示“帧类型”,可以理解为“DBC中Message里的Type”;

5、“Edit Frame”对话框中的“CAN FD Supported”选项:不勾选,表示是经典CAN2.0帧;勾选,表示是CAN FD帧;

6、“Edit Frame”对话框中的“Sender/Receiver Relations”用来定义该Frame帧的发送和接收ECU。图3-6表示该Frame帧的发送节点是OBC;图3-7表示该Frame帧的接收节点是OBC。

图3-6

图3-7

完成后的效果如下(见图3-8) ,按照此方法可以添加其它的Frame帧:

图3-8

4 新建一个PDU(协议数据单元)

PDU的概念在DBC中是没有的。

PDU(Protoco> +Data Unit:协议数据单元)代表在帧上传输的数据单元。

它包含在协议栈中交换的有效负载和控制信息。

根据PDU的应用和AUTOSAR格式版本,AUTOSAR模型可以区分不同类型的PDU。

实际的使用:将Signal信号映射的PDU当中。

接着图3-5,在PDU-Frame-Mapping中,选择“Signal-I-PDU” (见图4-1),弹出“Edit Signal-I-PDU”对话框,根据需要编辑相关的信息(见图4-2)。

图4-1

注意:常用的有以下PDU。

Signal-I-PDU:

N-PDU: 网络层PDU。由传输协议模块用于分段I-PDU;

NM-PDU:

XCP-PDU:

General-Purpose-I-PDU(XCP):

multiplexed I-PDU: I-PDU在两个COM I-PDU中组装在IpduM模块中, 将Signal-I-PDU映射到静态和动态段。

DCM-I-PDU:

图4-2

注意:

“Edit Signal-I-PDU”中的信息一般默认不修改。

5 新建一个signal

接着图3-5,在Mapped Signals中,选择“Signal” (见图5-1),弹出“Edit Signal”对话框(见图5-2)。

图5-1

图5-2

根据需要编辑相关的信息(见图5-3,图5-4,图5-5,图5-6)。

图5-3

图5-4

图5-5

图5-6

注意:

“Edit Signal”对话框中的“Name”,可以理解为“DBC中Signal名称”;

“Edit Signal”对话框中的“Length”,表示信号的长度,单位Bit;

+“Edit Signal”对话框中的“Data Type Policy”,对于每个ISignal,都有一个DataTypePolicy定义,在大多数情况下将确定信息源。

+“Edit Signal”对话框中的“Position[Bit]”,表示信号的起始位;

+“Edit Signal”对话框中的“Update Bit”,表示信号的更新位;

+“Edit Signal”对话框中的“Byte Order”,表示信号的字节顺序:Intel,Motorola,Opaque;

+“Edit Signal”对话框中的“Transfer Property”,表示信号的触发方式:Pending,Triggered,TriggeredOnChange,TriggeredWithoutRepetition,TriggeredOnChangeWithoutRepetition。相关的解释参加AUTOSAR COM标准;

+“Edit Signal”对话框中的“Sender/Receiver Relations”,表示该信号是接收信号,还是发送信号,或者及不接收也发不发送;

+“Edit Signal”对话框中的“Base Type”,定义了信号的一种编码:数据类型名称,符号类型(是否有符号),长度。当多个信号表示的物理含义相同,且信号长度相同时,可以在下拉框中选择相同的Base Type;

+“Edit Signal”对话框中的“Computation Method”,描述了将信号传输的原始值转换为物理值的转换规则,信号的范围,信号的单位,无效信号的定义

完成后的效果如下(见图5-7),按照此方法可以添加其它的Signal信号:

图5-7

自此一个AUTOSAR的系统描述ARXML文件就生成好了。

CASE: 在CAN FD/2.0的ARXML文件实现Multiplexor多路复用信号

推荐文献

【ARXML专题】-3-在CAN FD/2.0的ARXML文件实现Multiplexor多路复用信号 - Zhihu/汽车电子Autosar

ARXML 软件工具支持 : 有哪些开源项目支持解析 .ARXML 文件?

解析 ARXML(AUTOSAR XML)文件的开源工具相对较少,因为 AUTOSAR 标准在汽车电子领域较为复杂且通常依赖商业工具链(如 Vector CANoe)。

不过,以下开源项目和工具可以支持 ARXML 文件的解析或部分处理:(CANoe除外)

Vector CANoe (商业/闭源/付费)

CANoe是Vector公司的商业工具,常用于汽车网络分析和仿真

Cogu/autosar

简介:一个 Python 库,专注于读写 AUTOSAR 4.x 标准的 ARXML 文件,支持解析和生成 ARXML 文件中的 ECU 配置、通信矩阵、软件组件等。

功能:

解析 ARXML 文件并提取通信矩阵(Signals、PDUs、ECU 配置等)。

支持 AUTOSAR 4.x 的核心模型。

提供简单的 API 用于生成或修改 ARXML 内容。

URL

GitHub: https://github.com/cogu/autosar

Python AUTOSAR 项目推荐: cogu/autosar - CSDN

适用场景:适合需要自动化处理 ARXML 文件的开发者,例如生成代码或配置 SOME/IP 服务。

fork出来的分支

https://github.com/autoas/arxml

Autosar XML Parser (AUTOSAR Schema Tools)

简介:部分开源项目基于 AUTOSAR 的 XML Schema(XSD)提供基础解析功能,例如使用通用 XML 解析库(如 lxml 或 xml.etree)结合 AUTOSAR Schema 解析 ARXML。

实现方式:

使用 Python 的 lxml 或 xml.etree.ElementTree 解析 XML。

通过 XPath 或手动遍历节点提取数据。

示例代码:

import xml.etree.ElementTree as ET
tree = ET.parse("example.arxml")
root = tree.getroot()
# 提取信号定义(示例)
for signal in root.findall(".//{http://autosar.org/schema/r4.0}SYSTEM-SIGNAL"):
name = signal.find("{http://autosar.org/schema/r4.0}SHORT-NAME").text
length = signal.find("{http://autosar.org/schema/r4.0}LENGTH").text
print(f"Signal: {name}, Length: {length}")

 

限制:需要开发者熟悉 AUTOSAR 的 XML 结构和命名空间,适合简单需求。

ARXML Converter (开源工具链)

简介:某些开源工具链(如 COVESA Vehicle Signal Specification 相关工具)支持将 ARXML 转换为其他格式(如 JSON、YAML 或 FIBEX),便于后续处理。

工具示例:

vsomeip 的代码生成工具:通过 ARXML 提取 SOME/IP 服务定义(需自行实现解析逻辑)。

Franca IDL 转换工具:将 ARXML 转换为 Franca 接口定义文件(需定制脚本)。

Eclipse 插件(部分开源)

简介:Eclipse 生态中有一些支持 AUTOSAR 开发的插件(如 ARTop),但通常需要结合商业工具链使用,开源功能有限。

通用 XML 工具

如果仅需简单解析,可以使用通用 XML 工具(如 xmllint 或 Python 的 xmltodict)结合 AUTOSAR Schema 进行验证和数据提取:

xmllint:验证 ARXML 是否符合 AUTOSAR XSD。

xmllint --schema AUTOSAR_4.3.0.xsd example.arxml --noout

xmltodict(Python 库):将 ARXML 转换为 Python 字典,方便处理。

import xmltodict
with open("example.arxml") as f:
arxml_dict = xmltodict.parse(f.read())

 

注意事项

AUTOSAR 版本兼容性:不同版本的 AUTOSAR(如 3.x 和 4.x)的 ARXML 结构差异较大,需确认工具支持的版本。

复杂度:ARXML 文件通常包含数千行 XML 代码,手动解析耗时且易出错,建议优先使用 cogu/autosar。

自定义需求:如果开源工具无法满足需求,可能需要基于 XML 解析库自行开发解析逻辑。

推荐方案

快速解析:使用 cogu/autosar(支持 AUTOSAR 4.x)。

简单提取:用 Python 的 lxml 或 xmltodict 结合 XPath 查询。

格式转换:开发自定义脚本将 ARXML 转换为 JSON/YAML,再结合其他工具链处理。

小结:ARXML文档的解析工具

在AUTOSAR规范下,ARXML文档的解析均已实现工具化,如:

Vector DavinciDeveloper

Artop

Vector Autosar Explorer等

EB tresos Studio

软件开发环境 EB tresos Studio 是我们的 EB tresos AutoCore 和 EB tresos OsekCore的工具环境。

凭借其导入器和生成器接口,该工具可完美地融入汽车开放系统架构 AUTOSAR 工作流程,并且可以无缝集成到现有工具链中。这样就能实现公司特定的汽车基础软件模块以及传统软件组件的集成。

https://www.elektrobit.cn/products/ecu/eb-tresos/evaluation-package/

EB配置的arxml导入到DaVinci Configurator - CSDN

当然也有部分企业基于Eclipse自主开发了工具。

将ARXML文件导入支持其文件格式的工具,可查看到里面的信息。

首先,鉴于整车OEM更加关注系统应用层功能

因而,OEM端将提供系统的描述文件,文件中包含ECU的应用功能需求,不包含基础软件组件。

然后,控制器供应商基于OEM提供的系统描述文档,加载到工具链,引入系统的虚拟功能总线上

即AUTOSAR RTE层的VFB,如此就可以和系统的其它模块进行通讯。

最后,因OEM提供的系统功能描述文件包含了系统部件到ECU的映射关系,信号的映射关系

供应商可进行ECU内部硬件结构和接口的设计,并将信号分配给实际的接口,如此就完成了arxml创建。

Y 推荐文献

AUTOSAR

http://autosar.org/schema/r4.0

http://autosar.org/schema/r4.0 AUTOSAR_4-3-0.xsd

 

《AUTOSAR_TPS_GenericStructureTemplate》 【推荐】

https://www.autosar.org/fileadmin/standards/R22-11/FO/AUTOSAR_TPS_GenericStructureTemplate.pdf

https://www.autosar.org/fileadmin/standards/R21-11/FO/AUTOSAR_TPS_GenericStructureTemplate.pdf

《Model Persistence Rules for XML》 / 《AUTOSAR_TR_XMLPersistenceRules.pdf》【推荐】

https://www.autosar.org/fileadmin/standards/R3.2.3/CP/AUTOSAR_ModelPersistenceRulesforXML.pdf

Model Persistence Rules for XML - AUTOSAR/V2.1.1

 

Model Persistence Rules for XML - R3.2 - autosar/V2.2.1

SW-C and System Modeling Guide - R4.2.2 - autosar

Autosar 学习资料

https://github.com/GreyZhang/hack_autosar

Github 相关项目

https://github.com/autoas/as/ [已废止]

This repo is no longer active supported, a new project
is started and source code opened at https://github.com/autoas/ssas-public

https://github.com/autoas/ssas-public

支持 someip / arxml

https://github.com/autoas/ssas-public/blob/master/doc/EN/SOMEIP-SD.md

https://github.com/ebroecker/canmatrix

支持 arxml , 但不支持 some ip

https://canmatrix.readthedocs.io/en/latest/installation.html

Converting Can (Controller Area Network) Database Formats .arxml .dbc .dbf .kcd ...

https://github.com/cogu/autosar 【推荐】

python / 支持 arxml

A set of python modules for working with AUTOSAR XML files

主要用例是使Python能够生成ARXML文件,以便在其他(商业)AUTOSAR工具链中导入。它还对解析AUTOSAR XML文件提供了一些支持。

https://github.com/pengnianchun/AUTOSAR

整理了丰富的 AUTOSAR 相关文档

https://github.com/mahmut-aksakalli/arxml-viewer

基于Vue+Node JS的纯前端/ARXML可视化项目

This tool aims to visualize ARXML files in human readable form with easy search operations.

 

AutoSARioDeveloper/ArxmlEditor

https://github.com/AutoSARioDeveloper/ArxmlEditor/blob/
master/popcornsar.arxmleditor/plugin.xml

https://github.com/AutoSARioDeveloper/ArxmlEditor/blob/master/
popcornsar.arxmleditor/META-INF/MANIFEST.MF

https://github.com/itemis/webinar-artop (盗版/Copy: ArxmlEditor)

https://github.com/itemis/webinar-artop/blob/master/
standalone-example/com.demo.itemis.webinar.artop/META-INF/MANIFEST.MF

AUTOSAR_ARXML文件介绍(英文字幕) - Bilibili

https://www.youtube.com/watch?v=QrvI07KpujU&t=24s

 

ARXML文件格式解析 - CSDN 【推荐】

逐一讲解了解析逻辑

【Autosar CP】AUTOSAR工具链 ARXML文件详解 - CSDN 【推荐】

开发者通常基于规范《AUTOSAR_TPS_GenericStructureTemplate.pdf》来理解ARXML文件的内容

   
51   次浏览       8 次
相关文章

中央计算的软件定义汽车架构设计
汽车电子控制系统中的软件开发过程
一文读懂汽车芯片-有线通信芯片
OTA在汽车上有哪些难点痛点?
相关文档

汽车设计-汽车的整体结构及动力系统
自动驾驶汽车软件计算框架
SysML在汽车领域的应用实践
电子电气架构-大陆汽车系统架构平台
相关课程

AutoSAR原理与实践
功能安全管理体系(基于ISO26262)
MBSE(基于模型的系统工程)
基于SOA的汽车电子架构设计与开发

最新活动计划
基于模型的数据治理与中台 11-11[北京]
软件架构设计方法、案例实践 11-13[北京]
AI智能化软件测试方法与实践11-20[北京]
UML与面向对象分析设计 11-25[北京]
LLM大模型与智能体开发实战 11-13[北京]
配置管理方法、实践、工具 12-11[北京]
 
 
最新文章
ASPICE中配置管理是个什么东西?
了解软件安全分析与组件鉴定
掌握Autosar ComStack的精髓!
基于整车功能的正向诊断需求开发
搞定Autosar SWC开发秘籍,码住!
汽车OTA更新的系统性威胁评估
最新课程
基于SOA的汽车电子架构设计与开发
Auto SAR原理与实践
AUTOSAR架构与实践(从CP到 AP )
AUTOSAR架构建模方法与工具(EA)
ASPICE4.0核心开发过程指南
MBSE(基于模型的系统工程)
更多...   
成功案例
某知名车企 AUTOSAR应用设计与开发
吉利汽车 MBSE工程体系汽车建模及评估
某整车企业 《功能需求分析与设计》
富奥汽车零部件 建模工具EA
零跑汽车 建模工具EA及服务
北汽福田 建模工具EA
小鹏汽车 建模工具EA
更多...