1、概述
在工具里面已经实现脚本解析arxml,照葫芦画瓢,难免一知半解,文档记录一下如何去查看arxml文件,基于规范。
ARXML文件实质是一个XML文件,一般通过AUTOSAR标准的XSD进行约束,ARXML文档中的元素形成了一棵文档树,这棵树从根部开始,并扩展到树的最底端。所有元素均可拥有子元素,所有元素均可拥有文本内容和属性。
参考文档
《AUTOSAR_TR_XMLPersistenceRules.pdf》
2、ARXML解读
第一行:文档声明,包含文档版本和文档字符编码;
第二行:根元素,每个文档有且只有一个根元素,元素由开始标签、元素内容、结束标签组成,没有被其它元素包围的元素称为根元素。属性:xmls: 引用Schema的约束,xmlns:xsi:声明当前的XML文件是schema一个实例,xsi:schemaLocation:引用schema的位置;
. . .
第三行:顶级包,此元素是添加到文件中的所有AUTOSAR元素的容器。
. . .
第四行:AUTOSAR包,包是AUTOSAR的主要组件,它包含彼此相关的AUTOSAR元素,如软件组件、行为和受支持的数据类型。它由一个名称和称为UUID的全局唯一标识符定义。它也可能包含子包
<AR-PACKAGE UUID="8348d5fa-cd36-5935-e72f-9ac3852cc24f">
Package Name
. . .
. . .
2.1、arxml注释
从AUTOSAR模型的命名到XML的命名手册举例如下
下表显示了从元模型名称到XML模式中使用的名称的一些转换示例
创建表
2.2、命名空间
AUTOSAR的命名空间的声明必须是默认的,就是下面这个http://autosar.org/schema/r.<minor>,这意味着AUTOSAR XML不需要一个命名空间前缀。AUTOSAR XML的编码格式必须是UTF-8,假设不是注意转码。
开始模式确定是
在文档《AUTOSAR_TR_XMLPersistenceRules.pdf》的第六章节。
2.3、解析定义
<ECUC-MODULE-DEF>
定义模块参数,该部分规范及限制了容器参数的使用方法,取值范围等
</ECUC-MODULE-DEF>
<ECUC-MODULE-CONFIGURATION-VALUES>
用来存储模块配置参数数据。
</ECUC-MODULE-CONFIGURATION-VALUES>
规范里面有个点:带有stereotype 构造型标签的元素可以被拆分到不同的arxml里面,例如就是此标签。
2.3.1、AR-PACKGE
会有好几个AR-PACKGE,成对出现,有的属于顶级包,有的属于本身我们需要使用的次级包。
2.3.2、:要素
此层结构包含了我们需要配置的模块信息,包含模块,模块配置项等。
2.3.3、:容器
包含了配置工具的配置界面
此处对应于配置项,数据都是五个已配置,展开之后NAME也是下面五个。
展开ECUC-CONTAINER-VALUE可以看到如下排列
上图包含了与即参数(一个配置项)与子配置包(4个),对应于下图
展开之后查看
CanIfInitCfgSet对应了,其值是0,符合配置
注意点,这点和我们的思维稍微有些异常的点
CanIfInitCfg 里面有子服务 CanIfInitHohCfg 注意第二个红框是CanIfInitHohCfgs 多了一个s
其实在工具里面很容易理解,CanIfInitCfg
但是CanIfInitHohCfgs有一个配置包
也就是说CanIfInitCfg里面只有一个配置包
符合此ARXML的格式:子包里面又有一个子包去配置
这个参数值对应于配置
由此可以看出,每个配置项都在arxml里面找到出处。
:ECUC的参考值,这个地方一般是引用其他地方的信息
2.3.4、:定义参考
一般参数定义来源与指向本容器配置项的路径,第一个红框是参数,第二个是自己本身的路径。
2.3.5、:参数值
参数定义里面可以包含