为什么是ARXML?
编者荐语:
我的好朋友Demu,传统汽车电控向智能驾驶转变的汽车人,有丰富的ECU系统和软件设计经验。他的文章你一定不能错过!
以下文章来源于汽车控制与人工智能 ,作者Demu
汽车控制与人工智能

让人工智能更好地服务出行,智行天下
在AUTOSAR架构下,ARXML文件作为通用配置文件或数据库文件,在数据传输和存储中起到关键作
用,今天我们来看看ARXML的前世今生。
什么是XML?
XML(eXtensible Markup Language)可扩展标记语言,是一种类似于 HTML的标记语言,它的设计宗旨是传输数据,而非显示数据,XML 具有自我描述性,其标签没有被预定义,需要自行定义。同时,XML 是 W3C 的推荐标准。先来看看xml的历史。1969,gml(通用标记语言)目的是要在不同的机器之间进行通信的数据规范1985,sgml(标准通用标记语言)1993,html(超文本标记语言,万维网)1998,xml ( 可扩展标记语言)

其实中间还曾经历过渡语言:xhtml。需要注意的是,XML 并不是 HTML 的替代,XML 和 HTML 为不
同的目的而设计:XML 被设计用来传输和存储数据,其焦点是数据的内容。
HTML 被设计用来显示数据,其焦点是数据的外观。
所以,HTML 旨在显示信息,而 XML 旨在传输信息。
在xml文件的基础上,AUTOSAR规范基于汽车电子的应用场景,将传输信息的文件格式定义为arxml,ar
即architecture。
从上面的介绍可以知道,XML是从互联网行业引入到我们汽车电子行业的,引入后发展为arxml的。
ARXML的结构
ARXML文档中的元素形成了一棵文档树。这棵树从根部开始,并扩展到树的最底端。
所有元素均可拥有子元素,所有元素均可拥有文本内容和属性。
举个例子。
1 <?xml version="1.0" encoding="UTF-8" standalone="no"?>
2 <bookstore>
3 <book category="汽车电控">
4 <title>汽车电子的ARXML文件解读</title>
5 <author>Demu</author>
6 <year>2021</year>
7 <price>35.00</price>
8 </book>
9 <book category="机械制造">
10 <title>内燃机学</title>
11 <author>周龙保</author>
12 <year>2005</year>
13 <price>36.00</price>
14 </book>
15 </bookstore>
XML文档具有自我描述性的语法:
声明放在XML文档的第一行,声明由以下几个部分组成:
version:文档符合XML1.0规范,我们学习1.0 encoding :文档字符编码,比如”GB2312”或者”UTF-8”standalone :文档定义是否独立使用,standalone:yes代表独立使用,no代表非独立使用,默认值为“no”。
每个XML文档有且只有一个根元素:
-
根元素是完全包括文档中其他所有元素的元素
-
根元素的起始标记要放在所有其他元素的起始标记之前
-
跟元素的结束标记要放在所有其他元素的结束标记之后
上面例子中,根元素是 <bookstore>,文档中的所有 <book> 元素都被包含在 <bookstore> 中。
<book>元素有 4 个子元素:<title>、< author>、<year>、<price>。
ARXML 语法规则
ARXML 的语法规则比较简单,且逻辑清晰。这些规则很容易学习和使用。ARXML 元素必须有关闭标
签,省略关闭标签是非法的。
1 <p>我是第一段</p>
2 <p>我是第二段</p>
当然,声明不属于ARXML本身的组成部分。所以,它不是ARXML 的元素,不需要关闭标签。
ARXML标签对大小写敏感
ARXML 元素使用标签进行定义,且标签对大小写敏感。在ARXML 中,标签 <Demu> 与标签 <DEMU>
是不同的。
必须使用相同的大小写来编写打开标签和关闭标签:
1 <Demu>这是错误的</DEMU>
2 <Demu>这是正确的</Demu>
成对的标签,可以称为打开标签和关闭标签,也可以称为开始标签和结束标签。
ARXML必须正确嵌套
在 ARXML 中,所有元素都必须彼此正确地嵌套:
1 <p><l>汽车电控与人工智能</l></p>
正确嵌套的意思是:由于 <l> 元素是在 <p> 元素内打开的,那么它必须在 <p> 元素内关闭。
ARXML文档必须有根元素
ARXML文档必须有一个元素是所有其他元素的父元素,该元素称为根元素。
1 <root>
2 <FUNCTION>
3 <subfunction>.....</subfunction>
4 </FUNCTION>
5 </root>
ARXML的属性值须加引号
在ARXML 中,对应的属性值须加引号。下面两个文件中前者是错误的,后者是正确的。
1 <root date=04/01/2021>
2 <name>Demu</name>
3 </root>
1 <root date="04/01/2021">
2 <name>Demu</name>
3 </root>
支持实体引用
在ARXML中,一些字符拥有特殊的意义。
如果你把字符 “<” 放在ARXML元素中,会发生错误,这是因为解析器会把它当作新元素的开始。
这样会产生ARXML错误:
1 <message> custmer < 500 </message>
为了避免这个错误,请用实体引用来代替 “<” 字符:
1 <message> custmer < 500 </message>
在 XML 中,有 5 个预定义的实体引用:
< < 小于
> > 大于
& & 和号
' ’ 单引号
" “ 引号
ARXML中的注释
在ARXML中编写注释如下:
1 <!-- 我就是一行注释 -->
-
被注释的内容不要出现–
-
不要把注释放在标记中间;
-
注释一定不能嵌;
-
在标记以外的任何地方都可以注释
ARXML命名规则
ARXML元素必须遵循以下命名规则:
名称可以含字母、数字以及其他字符名称不能以数字或者标点符号开始名称不能包含空格名称中间不能包含冒号(:)可使用任何名称,没有保留字。可以使用中文,但不推荐使用
比较好的命名习惯:使名称具有描述性;使用下划线的名称;名称尽可能简短;避免使用连词符 “-”;避
免使用点”.“;避免使用冒号 “:”。

ARXML的应用场景
在AUTOSAR规范下,ARXML文档的解析均已实现工具化,如Vector DavinciDeveloper、Artop、
AutosarExplorer等,当然也有部分企业基于Eclipse自主开发了工具。将ARXML文件导入支持其文件格
式的工具,可查看到里面的信息。
首先,鉴于整车OEM更加关注系统应用层功能,因而,OEM端将提供系统的描述文件,文件中包含ECU
的应用功能需求,不包含基础软件组件。
然后,控制器供应商基于OEM提供的系统描述文档,加载到工具链,引入系统的虚拟功能总线上,即
AUTOSAR RTE层的VFB,如此就可以和系统的其它模块进行通讯。
最后,因OEM提供的系统功能描述文件包含了系统部件到ECU的映射关系,信号的映射关系,供应商可进
行ECU内部硬件结构和接口的设计,并将信号分配给实际的接口,如此就完成了arxml创建。
完