分享

为什么是ARXML?

 微他博 2021-08-29

在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文档中的元素形成了一棵文档树。这棵树从根部开始,并扩展到树的最底端。
所有元素均可拥有子元素,所有元素均可拥有文本内容和属性。
举个例子。

<?xml version="1.0" encoding="UTF-8" standalone="no"?><bookstore><book category="汽车电控">  <title>汽车电子的ARXML文件解读</title>  <author>Demu</author>  <year>2021</year>  <price>35.00</price></book><book category="机械制造">  <title>内燃机学</title>  <author>周龙保</author>  <year>2005</year>  <price>36.00</price></book></bookstore>

XML文档具有自我描述性的语法:
声明放在XML文档的第一行,声明由以下几个部分组成:
  • version:文档符合XML1.0规范,我们学习1.0

  • encoding :文档字符编码,比如”GB2312”或者”UTF-8”

  • standalone :文档定义是否独立使用,

    standalone:yes代表独立使用,no代表非独立使用,默认值为“no”。

每个XML文档有且只有一个根元素:
  1. 根元素是完全包括文档中其他所有元素的元素

  2. 根元素的起始标记要放在所有其他元素的起始标记之前

  3. 跟元素的结束标记要放在所有其他元素的结束标记之后

上面例子中,根元素是 <bookstore>,文档中的所有 <book> 元素都被包含在 <bookstore> 中。<book>元素有 4 个子元素:<title>、< author>、<year>、<price>。

ARXML 语法规则

ARXML 的语法规则比较简单,且逻辑清晰。这些规则很容易学习和使用。ARXML 元素必须有关闭标签,省略关闭标签是非法的。



<p>我是第一段</p><p>我是第二段</p>

当然,声明不属于ARXML本身的组成部分。所以,它不是ARXML 的元素,不需要关闭标签。

ARXML标签对大小写敏感

ARXML 元素使用标签进行定义,且标签对大小写敏感。在ARXML 中,标签 <Demu> 与标签 <DEMU> 是不同的。
必须使用相同的大小写来编写打开标签和关闭标签:
<Demu>这是错误的</DEMU><Demu>这是正确的</Demu>
成对的标签,可以称为打开标签和关闭标签,也可以称为开始标签和结束标签。

ARXML必须正确嵌套

在 ARXML 中,所有元素都必须彼此正确地嵌套:
<p><l>汽车电控与人工智能</l></p>
正确嵌套的意思是:由于 <l> 元素是在 <p> 元素内打开的,那么它必须在 <p> 元素内关闭。

ARXML文档必须有根元素

ARXML文档必须有一个元素是所有其他元素的父元素,该元素称为根元素。

<root>  <FUNCTION>    <subfunction>.....</subfunction>  </FUNCTION></root>

ARXML的属性值须加引号

在ARXML 中,对应的属性值须加引号。下面两个文件中前者是错误的,后者是正确的。

<root date=04/01/2021><name>Demu</name></root>


<root date="04/01/2021"><name>Demu</name></root>

支持实体引用

在ARXML中,一些字符拥有特殊的意义。
如果你把字符 "<" 放在ARXML元素中,会发生错误,这是因为解析器会把它当作新元素的开始。
这样会产生ARXML错误:
<message> custmer < 500 </message>
为了避免这个错误,请用实体引用来代替 "<" 字符:
<message> custmer < 500 </message>
在 XML 中,有 5 个预定义的实体引用:
<<
小于
>
>
大于
&&和号
''
单引号
""引号

ARXML中的注释

在ARXML中编写注释如下:
<!-- 我就是一行注释 -->
  1. 被注释的内容不要出现--

  2. 不要把注释放在标记中间;

  3. 注释一定不能嵌;

  4. 在标记以外的任何地方都可以注释

 ARXML命名规则

ARXML元素必须遵循以下命名规则:
  • 名称可以含字母、数字以及其他字符

  • 名称不能以数字或者标点符号开始

  • 名称不能包含空格

  • 名称中间不能包含冒号(:)

  • 可使用任何名称,没有保留字。

  • 可以使用中文,但不推荐使用

比较好的命名习惯:使名称具有描述性;使用下划线的名称;名称尽可能简短;避免使用连词符 "-";避免使用点".";避免使用冒号 ":"。

图片

ARXML的应用场景

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

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多