在AUTOSAR架构下,ARXML文件作为通用配置文件或数据库文件,在数据传输和存储中起到关键作用,今天我们来看看ARXML的前世今生。 XML(eXtensible Markup Language)可扩展标记语言,是一种类似于 HTML的标记语言,它的设计宗旨是传输数据,而非显示数据,XML 具有自我描述性,其标签没有被预定义,需要自行定义。同时,XML 是 W3C 的推荐标准。先来看看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”。
根元素是完全包括文档中其他所有元素的元素 根元素的起始标记要放在所有其他元素的起始标记之前 跟元素的结束标记要放在所有其他元素的结束标记之后 上面例子中,根元素是 <bookstore>,文档中的所有 <book> 元素都被包含在 <bookstore> 中。<book>元素有 4 个子元素:<title>、< author>、<year>、<price>。ARXML 语法规则 ARXML 的语法规则比较简单,且逻辑清晰。这些规则很容易学习和使用。ARXML 元素必须有关闭标签,省略关闭标签是非法的。
当然,声明不属于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元素中,会发生错误,这是因为解析器会把它当作新元素的开始。<message> custmer < 500 </message> 为了避免这个错误,请用实体引用来代替 "<" 字符:<message> custmer < 500 </message> ARXML中的注释 被注释的内容不要出现-- 不要把注释放在标记中间; 注释一定不能嵌; 在标记以外的任何地方都可以注释
ARXML命名规则 名称可以含字母、数字以及其他字符 名称不能以数字或者标点符号开始 名称不能包含空格 名称中间不能包含冒号(:) 可使用任何名称,没有保留字。 可以使用中文,但不推荐使用 比较好的命名习惯:使名称具有描述性;使用下划线的名称;名称尽可能简短;避免使用连词符 "-";避免使用点".";避免使用冒号 ":"。
ARXML的应用场景
在AUTOSAR规范下,ARXML文档的解析均已实现工具化,如Vector DavinciDeveloper、Artop、AutosarExplorer等,当然也有部分企业基于Eclipse自主开发了工具。将ARXML文件导入支持其文件格式的工具,可查看到里面的信息。首先,鉴于整车OEM更加关注系统应用层功能,因而,OEM端将提供系统的描述文件,文件中包含ECU的应用功能需求,不包含基础软件组件。然后,控制器供应商基于OEM提供的系统描述文档,加载到工具链,引入系统的虚拟功能总线上,即AUTOSAR RTE层的VFB,如此就可以和系统的其它模块进行通讯。最后,因OEM提供的系统功能描述文件包含了系统部件到ECU的映射关系,信号的映射关系,供应商可进行ECU内部硬件结构和接口的设计,并将信号分配给实际的接口,如此就完成了arxml创建。
|