【ARXML专题】-1-什么是ARXML - 知乎首发于ARXML切换模式写文章登录/注册【ARXML专题】-1-什么是ARXML汽车电子Autosar目录0 XML简介1 XML文件内容2 有效的XML 2.1认识DTD 2.1.1 DTD简介 2.1.2 内部的 DOCTYPE 声明 2.1.3 外部的 DOCTYPE 声明 2.2 认识XSD 2.2.1 XSD简介 2.2.2 XSD举例3 结尾////////////////////////////////////ARXML文件实质是一个XML文件,一般通过Autosar标准的XSD进行约束,用专用的工具Artop,Systemdesk,Matlab,DaVinci developer,Autosar Explorer…生成。和XML文件一样,ARXML是一个通用的配置/数据库文件,所以这里只需了解ARXML文件的结构(方便在将ARXML导入工具前,能够检查一些基本的错误),无需想着用过多的时间手动生成它(生成的工作,专业工具已经帮你做解决了)。下面通过XML来介绍ARXML。0 XML简介XML:可扩展标记语言(Extensible Markup Language),是是一种非常灵活的标记语言,没有固定的标签,所有的标签,在符合XML命名规则的基础上,都可以自定义,但是在写标签名的时候一定要有含义。通常,XML被用于信息的记录和传递。因此,XML经常被用来充当“配置文件”和“数据库”。一般可通过“Eclipse”和“网页浏览器”等软件工具打开XML文件。将ARXML文件的后缀名修改为XML,可以通过这些工具打开。1 XML文件内容下面是XML文件中一小段内容:
XML文档是树状结构;第1行:XML声明。必须放在第一行,第一列,声明语句之前,不能有任何的空格和注释。定义了XML版本和编码信息。其中,版本永远都是1.0;编码方式一般都使用UTF-8(该编码支持中文标签),编码信息不区分大小写。第2行:根元素,XML有且仅有一个根元素。元素由开始标签、元素内容、结束标签组成,没有被其它元素包围的元素称为根元素;第3行:注释的写法:,但不能嵌套使用。第4行:” id=;book_1’”表示属性。属性必有值,值必须使用引号(单引号,双引号)。属性其实是描述标签一些额外的信息,一个标签可以有多个属性。可以将属性看为元素的另一种写法。第5~7行:表示元素。注意:XML中的标签区分大小写,对应的开始标签和结束标签必须大小写一致。标签命名:普通字符有:字母,数字,-中横线,_下划线,.点号,数字不能作为首字母出现等。大段内容有许多特殊符号内容,使用转义,如下的例子:了看可是lj
2 有效的XMLXML首先必须是格式良好的,一般使用DTD和XSD(XML Schema)定义语义约束。ARXML文件使用XSD进行约束。2.1认识DTD2.1.1 DTD简介DTD全称:Document Type Definition。用于约束XML的文档格式,保证XML是一个有效的XML。定义好接口和格式,方便多个人同时开发。DTD可以分为两种:内部DTD;外部DTD。DTD和XML之间的关系:类(人类)和对象(我)数据库(表)和行(一条记录)DTD的缺点:l DTD约束XML的时候,不能对XML中数据类型做详细的限定。l DTD约束有自己的语法,书写时必须遵守DTD的语法;l 一个XML文件中只能引入一个DTD约束,而无法通过多个DTD文件来约束同一个XML文件。2.1.2 内部的 DOCTYPE 声明内部DTD的定义,语法如下:a)b)元素声明语法:b)数量词:+:表示元素出现至少出现一次?:表示元素出现0次或1次*:表示元素出现任意次。举例c)属性声明语法:属性类型:CDATA,表示字符数据(character data)默认值:#REQUIRED,表示必须出现#IMPLIED,表示不是必须出现带内部DTD的完整XML:
]>
2.1.3 外部的 DOCTYPE 声明创建一各独立的外部DTD文件,内容如下:
在XML中引入外部DTD文件,完整的语法如下:带外部DTD的完整XML:
2.2 认识XSD2.2.1 XSD简介XSD全称:XML结构定义(XML Schema Definition),是DTD的替代者。不仅可以定义XML文档的结构,还可以规范XML文档的内容。XSD本身也是XML文档。XSD采用XML文档来定义语义约束,比DTD要复杂一些,但是功能强大的多:定义可出现在文档中的元素;定义可出现在文档中的属性;定义哪个元素是子元素;定义子元素的次序;定义子元素的数目;定义元素是否为空,或者是否可包含文本;定义元素的数据类型;定义元素和属性的默认值以及固定值。允许开发这自定义数据类型可读性强可针对未来需求进行扩展一个XML中可以引入N个Schema进行约束。书写的时候,它遵守XML的语法规则,它的文件扩展名XSD。2.2.2 XSD举例这一章节仅做了解,无需过多深入。知道XML和XSD的之间的关系就行。book.xsd文件内容:
targetNamespace="http://www.example.org/book" xmlns:tns="http://www.example.org/book" elementFormDefault="qualified">
xmlns="http://www.example.org/book" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.example.org/book book.xsd" >
为什么是ARXML? - 知乎首发于汽车控制与人工智能切换模式写文章登录/注册为什么是ARXML?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文档中的元素形成了一棵文档树。这棵树从根部开始,并扩展到树的最底端。所有元素均可拥有子元素,所有元素均可拥有文本内容和属性。举个例子。
XML文档具有自我描述性的语法:声明放在XML文档的第一行,声明由以下几个部分组成: version:文档符合XML1.0规范,我们学习1.0 encoding :文档字符编码,比如”GB2312”或者”UTF-8” standalone :文档定义是否独立使用,standalone:yes代表独立使用,no代表非独立使用,默认值为“no”。每个XML文档有且只有一个根元素: 根元素是完全包括文档中其他所有元素的元素 根元素的起始标记要放在所有其他元素的起始标记之前 跟元素的结束标记要放在所有其他元素的结束标记之后上面例子中,根元素是 我是第一段
我是第二段
当然,声明不属于ARXML本身的组成部分。所以,它不是ARXML 的元素,不需要关闭标签。ARXML标签对大小写敏感ARXML 元素使用标签进行定义,且标签对大小写敏感。在ARXML 中,标签元素内打开的,那么它必须在
元素内关闭。ARXML文档必须有根元素ARXML文档必须有一个元素是所有其他元素的父元素,该元素称为根元素。
ARXML的属性值须加引号在ARXML 中,对应的属性值须加引号。下面两个文件中前者是错误的,后者是正确的。
支持实体引用在ARXML中,一些字符拥有特殊的意义。如果你把字符 "<" 放在ARXML元素中,会发生错误,这是因为解析器会把它当作新元素的开始。这样会产生ARXML错误:
汽车架构解析:python解析Autosar架构的ARXML-CSDN博客
汽车架构解析:python解析Autosar架构的ARXML
自动驾驶simulation
已于 2023-11-22 19:16:42 修改
阅读量5.5k
收藏
75
点赞数
17
分类专栏:
通信协议
文章标签:
汽车
python
开发语言
于 2023-07-09 14:07:36 首次发布
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/zataji/article/details/131465764
版权
通信协议
专栏收录该内容
3 篇文章
14 订阅
订阅专栏
文章目录
前言一、Container-I-PDU概念引入二、以文本形式读取ARXML文件三、解析Frame的基本参数四、解析Frame中的PDU五、解析PDU中的Signals六、解析Signal中的初始值和长度七、解析Signal中的起始位置八、解析Signal中的枚举值或公式九、解析ARXML总结
前言
Autosar架构下arxml文件作为通用数据库文件,在数据传输和存储中起到关键作用。行业上其实有一些arxml的工具可以将arxml转换成dbc,再将dbc转换成自己想要的数据,但是拿到的数据是不完整的,arxml有一些数据dbc是没有的,也根据缺少的数据直接到ARXML拿,不用硬解ARXML。想要解析ARXML的最好的方法就是对原始数据进行处理。网上有一些python的库推荐,如xml.etree.ElementTree等,我试用了下,arxml的层级关系太多了感觉处理起来不太自由。于是我决定用python的正则表达式来解析,因为知道了所需数据存放的结构体,就可以通过正则表达式快速定位获取数据,而且可以自由的获取arxml的任意数据片段,按照自己的规则解析。
正则表达式相关学习点这里
一、Container-I-PDU概念引入
1、下图为autosar的协议栈,可以看出具备多种类型的PDU:Dcm-I-PDU、General-Purpose-PDU、General-Purpose-I-PDU、I-Signal-I-PDU、Multiplexed-I-PDU、NM-PDU、N-PDU、User-Defined-PDU、User-Defined-I-PDU、XCP-PDU、J1939-Dcm-I-PDU 和 Secured-I-PDU。
2、而Container-I-PDU 是一种在 AUTOSAR 中使用的数据单元,用于封装其他类型的 PDU(Protocol Data Unit)。它是一种容器,可以包含不同类型的 PDU 作为其成员。Container-I-PDU 的主要目的是将多个 PDU 组合成一个逻辑单元进行传输。通过将多个 PDU 打包到一个 Container-I-PDU 中,可以减少通信开销,并提高通信效率。
3、虽然有Container-I-PDU的概念,但是不代表I-PDU就一定需要通过Container-I-PDU去传输,因此也有两种传输方式。
1)通过Container-I-PDU打包传输:
如果是通过Container-I-PDU打包发出则需要先找到Container-I-PDU,再找到I-PDU,最后才能找到Signal。
2)不通过Container-I-PDU打包传输:
如果是直接通过I-PDU发出,则直接找到I-PDU,再找到Signal。
二、以文本形式读取ARXML文件
import re
file_path = r'C:\Users\Desktop\Demo.arxml'
# ============读取Arxml文件============
with open(file_path, 'r') as file:
# 读取文件内容
arxml_data = file.read()
三、解析Frame的基本参数
1、下面是arxml的片段其中就包括了CAN报文的名称DMS_ADCANFD_FrP01,寻址模式STANDARD,通讯协议CAN-FD,以及报文ID554;
2、我们查找报文相关的参数就可以通过查找
匹配片段中的
3、正则表达式处理数据
python代码:
#找出所有frame的数据片段
CANFrameNode_pattern = r'
CANFrameNodes_List = re.findall(CANFrameNode_pattern, arxml_data, re.DOTALL) # 使用 re.DOTALL 标志使 . 匹配任意字符,包括换行符
#设置CANFrame的匹配规则:报文名称:
CANFrame_pattern = r'
#开始匹配上述参数
for CANFrameNodes in CANFrameNodes_List:
CANFrames_match = re.findall(CANFrame_pattern, CANFrameNodes, re.DOTALL) # 使用 re.DOTALL 标志使 . 匹配任意字符,包括换行符
if CANFrames_match:
for CANFrame in CANFrames_match:
CAN_FrameData_dict = {"FrameName":"","AdressingMode":'',"Frametype":"","CanId":"","signals":[]}
CAN_FrameData_dict["FrameName"] = CANFrame[0].split("/")[-1]
CAN_FrameData_dict["AdressingMode"] = CANFrame[1]
CAN_FrameData_dict["Frametype"] = CANFrame[2]
CAN_FrameData_dict["CanId"] = CANFrame[3]
CAN_matrix.append(CAN_FrameData_dict)
print(CAN_matrix)
打印结果:
#打印结果只列举一个
[{'FrameName': 'DMS_ADCANFD_FrP01', 'AdressingMode': 'STANDARD', 'Frametype': 'CAN-FD', 'CanId': '554', 'signals': []}]
四、解析Frame中的PDU
1、这里举例解析Frame中的Container-I-PDU和Signal-I-PDU,这里强调必须注意是否存在Container-I-PDU,因为匹配的方法不太一样。
2、下面是arxml的片段其中就包括了CAN报文的名称DMS_ADCANFD_FrP01,PDU名称PduTrDMS_ADCANFD_050ms_Container01;
3、我们查找报文相关的参数就可以通过查找
匹配片段中的
4、正则表达式处理数据
python代码: 这里的参数不和上述的《三、解析Frame的基本参数》一起匹配的原因是Frame中的Container-I-PDU的数量可能不唯一,用贪婪匹配可以匹配多个结果。
#设置PDU的匹配规则:报文名称:
PDUS_pattern = r'
Frame_Pdus_Data = []
Pdus_data = []
#匹配FrameName和PDU
for CANFrameNode in CANFrameNodes_List:
Frame_Pdus_dict = {"FrameName":"","pduname":""}
PDUS_match = re.findall(PDUS_pattern, CANFrameNode,re.DOTALL)
Framepdu = [match[0].split("/")[-1] or match[1].split("/")[-1] for match in PDUS_match if match[0] or match[1]]
Frame_Pdus_dict["FrameName"] = Framepdu[0]
Frame_Pdus_dict["pduname"] = Framepdu[1:]
Frame_Pdus_Data.append(Frame_Pdus_dict)
print(Frame_Pdus_Data)
打印结果:
#打印结果只列举一个
[{'FrameName': 'DMS_ADCANFD_FrP01', 'pduname': ['PduTrDMS_ADCANFD_050ms_Container01']}]
5、下面是arxml的片段其中就包括了PDU的名称CCP_ADCANFD_020ms_Container11,Container-I-PDU中的I-PDUPduTrCCP_020ms_PDU00_AD,PduTrCCP_020ms_PDU02_AD,NewPduTriggering_a1955a2b08c2a3bb;
6、我们查找报文相关的参数就可以通过查找
匹配片段中的
python代码 匹配CONTAINER-I-PDU中的PDU
#============找出CONTAINER-I-PDU中的PDU===========
Container_PDUS_pattern = r'
#匹配具体参数获得I-PDU参数
Container_PDUS_match = re.findall(Container_PDUS_pattern, arxml_data, re.DOTALL) # 使用 re.DOTALL 标志使 . 匹配任意字符,包括换行符
ISignal_PDUS_pattern = r'
Container_PDUS = []
for Container_PDU in Container_PDUS_match:
ISignal_PDUS = []
ISignal_PDUS_match = re.findall(ISignal_PDUS_pattern, Container_PDU, re.DOTALL)
for ISignal_PDU in ISignal_PDUS_match:
a = [PDU.split("/")[-1] for PDU in ISignal_PDU if PDU !=""]
ISignal_PDUS.extend([PDU.split("/")[-1] for PDU in ISignal_PDU if PDU !=""])
Container_PDUS.append(ISignal_PDUS)
将Container-I-PDU中的iI-PDU成员整合到Frame中
#填充CONTAINER-I-PDU数据到字典
for Frame_Pdus in Frame_Pdus_Data:
for pdname in Frame_Pdus['pduname']:
for Container_PDU in Container_PDUS:
if any( element in pdname for element in Container_PDU) is True:
for Cp in Container_PDU:
PduData_dict = {"FrameName":"","pduname":""}
PduData_dict["FrameName"] = Frame_Pdus["FrameName"]
PduData_dict["pduname"] = Cp
Pdus_data.append(PduData_dict)
print(Pdus_data)
打印结果:
#这里只举例一个结果
[{'FrameName': 'CCP_ADCANFD_FrP02', 'pduname': 'CCP_ADCANFD_020ms_Container11'}, {'FrameName': 'CCP_ADCANFD_FrP02', 'pduname': 'PduTrCCP_020ms_PDU00_AD'}, {'FrameName': 'CCP_ADCANFD_FrP02', 'pduname': 'PduTrCCP_020ms_PDU02_AD'}, {'FrameName': 'CCP_ADCANFD_FrP02', 'pduname': 'NewPduTriggering_a1955a2b08c2a3bb'}]
7、拓展:假设有其他PDU,但是又不经过Container-I-PDU打包传输怎么办?直接在Frame中匹配到N-PDU或者I-Signal-PDUd等等,这种情况也很常见,大家在匹配PDU部分的时候一定要特别注意不要在Frame中匹配Container-I-PDU;
python代码:
NM_PDUS_Pattern = r'
NM_PDUs = re.findall(N_PDUS_pattern,arxml_data,re.DOTALL)
打印结果
#这里只举例一个结果
NmPDU_ADCANFD_DMS
可以直接查找有Frame中的PDU,而且PDU里面直接有signal参数,后面会正式一起匹配Signal的参数。
五、解析PDU中的Signals
1、匹配Signal名称的mapping关系,因为PDU中的Signal名称只是Mapping Signal name,真正的名称在其他arxml片段,我也不知道autosar为什么需要这么设计,还是按照他的规则办事吧。
2、下面是arxml的片段其中就包括了PDU中Signal的名称ISTrisDMSAdoWrnngDspCmd_0,以及真实用到的RealSignal名称isDMSAdoWrnngDspCmd;
3、我们查找报文相关的参数就可以通过查找
匹配片段中的
python代码
#因为PDU中的部分Signal名称有Mapping关系,所以需要拿到Real signal name名称
signalTrig_pattern = r'
signalTrig_match = re.findall(signalTrig_pattern,arxml_data,re.DOTALL)
signalTrig_str = ""
#存在
for signalTrig in signalTrig_match:
if '
signalTrig_str= signalTrig
#匹配signal name的Mapping关系
signalRealName_pattern = r'
signalRealName_match = re.findall(signalRealName_pattern,signalTrig_str,re.DOTALL)
signalsname_map = []
for num in range(0,len(signalRealName_match),2):
signalname_dict = {"MappingName":"","RealName":""}
signalRealName = signalRealName_match[num:num+2]
signalname_dict["MappingName"] = signalRealName[0][0]
signalname_dict["RealName"] = signalRealName[1][1].split("/")[-1]
signalsname_map.append(signalname_dict)
print(signalsname_map)
打印结果
#这里只举例一个结果
[{'MappingName': 'ISTrisDMSAdoWrnngDspCmd_0', 'RealName': 'isDMSAdoWrnngDspCmd'}]
匹配完Signal名称的Mapping关系之后,需要开始匹配PDU中的Mapping Signal name名称,并且替换Mapping Signal name为Real Signal name,因为只能通过真实的Real Signal name才能找到Signal的相关参数。
4、下面是arxml的片段其中就包括了PDU的名称PduTrDMS_050ms_PDU00,以及Mapping Signal name名称ISTrisDMSAdoWrnngDspCmd_0;
5、我们查找报文相关的参数就可以通过查找
匹配片段中的
6、匹配完Mapping Signal Name之后,顺便替换成Real Signal Name;
python代码
#============匹配PDU中的Signal信息==============
PDUSignals_pattern = r'
PDUSignals_match = re.findall(PDUSignals_pattern, arxml_data, re.DOTALL) # 使用 re.DOTALL 标志使 . 匹配任意字符,包括换行符
#============匹配PDU Name和signals name=============
signals_pattern = r'
PDUSignals_data = []
for PDUSignals in PDUSignals_match:
PDU_signals = []
PDU_signals_dict = {'pduname':'','signals':[]}
#开始查找signal的信息
signals_match = re.findall(signals_pattern, PDUSignals, re.DOTALL) # 使用 re.DOTALL 标志使 . 匹配任意字符,包括换行符
for cntr,signal_match in enumerate(signals_match):
signalsdata_dict = {"signalname":"","signaldata":[]}
if cntr == 0:
PDU_signals_dict['pduname'] = signal_match[0]
else:
signal_name = signal_match[1].split("/")[-1]
for signalname_map in signalsname_map:
#开始替换signal的名称
if signal_name in signalname_map["MappingName"]:
signalsdata_dict["signalname"] = signalname_map["RealName"]
PDU_signals.append(signalsdata_dict)
PDU_signals_dict['signals'] = PDU_signals
PDUSignals_data.append(PDU_signals_dict)
print(PDUSignals_data)
打印结果
#这里只举例一个结果
[{'pduname': 'PduTrDMS_050ms_PDU00', 'signals': [{'signalname': 'isDMSAdoWrnngDspCmd', 'signaldata': []}]
六、解析Signal中的初始值和长度
1、下面是arxml的片段其中就包括了Signal NameisDMSAdoWrnngDspCmd,初始值InitValue2,和长度Length2;
2、我们查找报文相关的参数就可以通过查找
匹配片段中的
python代码 有些信号是不存在初始值的,解析的时候要注意
#匹配
iSignals_pattern = r'
iSignals_match = re.findall(iSignals_pattern,arxml_data,re.DOTALL)
#匹配signal的初始值和长度的数据
iSignalsPara_pattern = r'
iSignalsPara_data = []
for iSignals in iSignals_match:
signal_dict = {'signalname':'','initvalue':None,'length':0 }
iSignal_match = re.findall(iSignalsPara_pattern,iSignals,re.DOTALL)
if len(iSignal_match) == 3:
signal_dict['signalname'] = iSignal_match[0][0]
signal_dict['initvalue'] = iSignal_match[1][1]
signal_dict['length'] = iSignal_match[2][2]
#iSignal_match长度为2,说明没有匹配到initvalue
elif len(iSignal_match) == 2:
signal_dict['signalname'] = iSignal_match[0][0]
signal_dict['length'] = iSignal_match[1][2]
iSignalsPara_data.append(signal_dict)
print(iSignalsPara_data)
打印结果
#这里只举例一个结果
[{'signalname': 'isDMSAdoWrnngDspCmd', 'initvalue': '2', 'length': '2'}]
七、解析Signal中的起始位置
1、下面是arxml的片段其中就包括了Signal NameisDMSAdoWrnngDspCmd_mtx,初始值StartPosition63;
2、我们查找报文相关的参数就可以通过查找
匹配片段中的
python代码
#匹配
signal2PDUs_pattern = r'
signal2PDUs_match = re.findall(signal2PDUs_pattern,arxml_data,re.DOTALL)
#匹配signal的真实名称和signal的start position
startPosition_pattern = r'
iSignalSPos_data = []
for signal2PDU in signal2PDUs_match:
#开始匹配
signalSPos_match = re.findall(startPosition_pattern,signal2PDU,re.DOTALL)
#每个signal有2个参数,signal名称,start position
for num in range(0,len(signalSPos_match),2):
signalSPos_dict = {'signalname':'','startposition': 0}
signalPara = signalSPos_match[num:num+2]
try:
signalname = signalPara[0][0].split("/")[-1]
if "PDU" not in signalname.upper():
#处理signalName,因为signal是路径加名称../signalName
signalSPos_dict['signalname'] = signalPara[0][0].split("/")[-1]
signalSPos_dict['startposition'] = signalPara[1][1]
iSignalSPos_data.append(signalSPos_dict)
except IndexError:
print("无法找到参数")
print(iSignalSPos_data)
打印结果
#这里只举例一个结果
[{'signalname': 'isDMSAdoWrnngDspCmd', 'startposition': '63'}]
八、解析Signal中的枚举值或公式
1、每个信号都有Internal-To-phys,有些类型是TEXTTABLE,有些是LINEAR;
TEXTTABLE: LINEAR:
因此匹配方法有两种情况
情况一:TEXTTABLE类型
2、下面是arxml的片段其中就包括了Signal NameDMSAdoWrnngDspCmd,Internal-To-phys类型TEXTTABLE,值的范围0-0,枚举值DMSAdoWrnngDspCmd_0_Unavailable/DMSAdoWrnngDspCmd_1_Off/DMSAdoWrnngDspCmd_2_On/DMSAdoWrnngDspCmd_3_laststatus;
3、我们查找报文相关的参数就可以通过查找
匹配片段中的
情况二:LINEAR类型
4、下面是arxml的片段其中就包括了Signal NameVehSpdAvg,Internal-To-phys类型LINEAR,值的范围0-32767,Offset分子0,Factor分子0.015625,Offset和Factor分母1,最终需要组合成(0-32767): (0.015625*raw) / 1;
5、我们查找报文相关的参数就可以通过查找
匹配片段中的
python代码
#匹配
compuMethod_pattern = r'
compuMethod_match = re.findall(compuMethod_pattern,arxml_data,re.DOTALL)
#匹配信号名和对应的值,有枚举值或者线性值
compuMethodPara_pattern = r'
#匹配TEXTTABLE中的枚举值
compuScale_pattern = r'
#匹配
compuScaleEnum_pattern = r'
#匹配
compuScaleLimit_pattern = r'
#匹配
compuScaleFormula_pattern = r'
compuMethodPara_data = []
for compuMethod in compuMethod_match:
enumrate = []
compuMethodPara_dic = {'signalname':'','category':'','TEXTTABLE':[],'formula':''}
#匹配信号名和对应的值,有枚举值或者线性值
compuMethodPara_match = re.findall(compuMethodPara_pattern,compuMethod,re.DOTALL)
if len(compuMethodPara_match) == 3:
#signalname
compuMethodPara_dic['signalname'] = compuMethodPara_match[0][0]
#值的类型,是TEXTTABLE或者LINEAR
category = compuMethodPara_match[1][1]
compuMethodPara_dic['category'] = category
#compuScales含有多个枚举的值和文本
compuScales_text = compuMethodPara_match[2][2]
#signal有枚举值
if category == "TEXTTABLE":
compuScales = re.findall(compuScale_pattern,compuScales_text,re.DOTALL)
for compuScale in compuScales:
#查找枚举值和枚举文本
compuScalePara = re.findall(compuScaleEnum_pattern,compuScale,re.DOTALL)
#字典形式存放枚举值和枚举文本
try:
enumrate_dict = {compuScalePara[0][0]:compuScalePara[0][1]}
enumrate.append(enumrate_dict)
except IndexError:
print(compuScalePara)
compuMethodPara_dic['TEXTTABLE'] = enumrate
#信号有factor和offset
elif category == "LINEAR":
Limit = re.findall(compuScaleLimit_pattern,compuMethod,re.DOTALL)
formula = re.findall(compuScaleFormula_pattern,compuMethod,re.DOTALL)
if len(Limit) == 1 and len(formula) ==3:
Limit_str = '('+Limit[0][0]+'-'+Limit[0][1]+'):'
formula_str = '('+'phys=raw'+'*'+formula[1]+'+'+formula[0]+')'+'/'+formula[2]
compuMethodPara_dic['formula'] = Limit_str + formula_str
compuMethodPara_data.append(compuMethodPara_dic)
print(compuMethodPara_data)
打印结果
[{'signalname': 'DMSAdoWrnngDspCmd', 'category': 'TEXTTABLE', 'TEXTTABLE': [{'0': 'DMSAdoWrnngDspCmd_0_Unavailable'}, {'1': 'DMSAdoWrnngDspCmd_1_Off'}, {'2': 'DMSAdoWrnngDspCmd_2_On'}, {'3': 'DMSAdoWrnngDspCmd_3_laststatus'}], 'formula': ''},{'signalname': 'VehSpdAvg', 'category': 'LINEAR', 'TEXTTABLE': [], 'formula': '(0-32767):(phys=raw*0.015625+0)/1'}]
九、解析ARXML总结
1、注意这不是完整版的ARXML解析代码,只是提供一种方法给大家参考,还有大量的参数需要大家去学习解读autosar规范,本人也是利用下班时间自己学习,如果有什么问题请大家指出。
2、另外正则表达式并不是行业内推荐的方法,大家在操作前可以先看看Python的库matrix,我更建议使用matrix将ARXML转换成DBC,然后缺少哪些数据再去ARXML拿,拿完之后再匹配到DBC矩阵中去。
优惠劵
自动驾驶simulation
关注
关注
17
点赞
踩
75
收藏
觉得还不错?
一键收藏
打赏
知道了
5
评论
汽车架构解析:python解析Autosar架构的ARXML
Autosar架构下arxml文件作为通用数据库文件,在数据传输和存储中起到关键作用。行业上其实有一些arxml的工具可以将arxml转换成dbc,再将dbc转换成自己想要的数据,但是拿到的数据是不完整的,arxml有一些数据dbc是没有的,也根据缺少的数据直接到ARXML拿,不用硬解ARXML。想要解析ARXML的最好的方法就是对原始数据进行处理。网上有一些python的库推荐,如xml.etree.ElementTree等,我试用了下,arxml的层级关系太多了感觉处理起来不太自由。
复制链接
扫一扫
专栏目录
AUTOSAR 之arxml文件解析
usstmiracle的博客
05-30
4549
Arxml代表AUTOSAR xml,是用xml语言(Extensible Markup Language)描述AUTOSAR模型的一种人机可读的文本格式。Autosar里面是以xml格式的文件为核心的,因为是autosar,所以叫Arxml,它包含了你在autosar开发过程中所需要的全部信息,通过这样一个文件的导入和导出实现了在不同工具切换,比如说在matlab simulink和VRTE工具之间的切换。描述文件即是ECU 参数定义文件 (Parameter Definition file)。
isignal(datamatrix,xcenter,xrange,sm,sw,em,dm,rm,s1,s2,sr,mw,spm):时间序列信号的交互式平滑、微分、功率谱和测量。-matlab开发
05-29
function function [pY,SpectrumOut]=isignal(DataMatrix,xcenter,xrange,sm,sw,em,dm,rm,s1,s2,sr,mw) 第 6 版,2017 年 12 月。添加分段平滑(按 Shift-Q 为分段平滑设置平滑宽度矢量); 添加 Shift-B 以在图形窗口 2 中显示前后信号。 一个对时间序列信号执行平滑、微分、峰值锐化和功率谱分析的交互函数,它可能是一个 2 列矩阵,第一列是自变量(x 值)和因变量(y 值) ) 在第二列中,或单独的 x 和 y 向量,或单个 y 向量。 返回处理后的独立轴 (Y) 向量作为输出参数。 图形窗口的下半部分显示了整个信号的曲线图,上半部分显示了分别由平移和缩放击键或可选输入参数“ xcenter”和“ xrange”控制的选定部分。 其他按键还允许您控制平滑类型、宽度和末端处理、导数
5 条评论
您还未登录,请先
登录
后发表或查看评论
ARXML文件格式解析
yyzhangyanyy的博客
10-24
1万+
AUTOSAR标准格式通讯文件,ARXML文件内容解析说明
AUTOSAR模型ECU配置参数——.arxml文件解读(入门级-一)
热门推荐
qq_40423998的博客
07-28
1万+
@AUTOSAR模型ECU配置参数——.arxml文件解读
今天博主带大家一家来解决一下AutoSAR官方提供的ECU配置参数.arxml文件,general的部分简单讲述,对于不易理解的信息,博主会分享自己的学习心得,理解这些文档的含义,才能更好的建立正确的XML模型,对于解读有异议的,也欢迎各位同行在评论区留言给我,我会进一步解读或纠正。
AutoSAR官方ECU配置参数.arxml文件获取方式
博主在上一篇文章中就提到过了,AutoSAR官方提供了spec的下载渠道,都是免费下载的,本文中解读的这个a
汽车架构解析:python cantools库快速解析arxml
zataji的博客
01-02
1195
曾经有拿cantools来解析过dbc,用得比较浅,不知道可以用来解析arxml。最近有个需求需要适配arxml的解析,其实有用过正则表达式来解析过arxml,后面用了cantools这个库,才发现自己做了傻事,直接调用别人开发的库,岂不美哉。简而言之,cantools官网有很多方法,大家可以到官网查阅,这里做个简单的记录,因为比较常用。
用m语言检查Arxml文件的连线问题
m0_58707821的博客
01-04
373
ARXML(AUTOSAR XML)是AUTOSAR(AUTomotive Open System ARchitecture)标准中定义的一种XML格式的文件,用于描述汽车电子系统的软件和硬件架构。ARXML文件包含了汽车电子系统的各种信息,如ECU(Electronic Control Unit)的定义和配置,信号和参数定义,软件组件和接口定义等。ARXML文件使用XML(eXtensible Markup Language)格式,可以被计算机系统和工具软件轻松解析和处理。
canmatrix:转换Can(控制器局域网)数据库格式.arxml .dbc .dbf .kcd ..
02-03
Canmatrix是一个python软件包,用于读取和写入几种CAN(控制器局域网)数据库格式。
关于
Canmatrix实现了一个“ Python Can Matrix对象”,该对象描述了can通信和所需的对象(Boardunits,帧,信号,值等) 。Canmatrix还包括两个工具(canconvert和cancompare),用于转换和比较CAN数据库。
安装说明
玩得开心,
如有任何建议,请随时与我联系
爱德华
ARXML简介
qq_37748525的博客
04-17
1万+
前言
简介
“AUTOSAR XML”,简称为“ARXML”;
该标准介绍了如何将AUTOSAR模型序列化为AUTOSAR XML描述的规则,为AUTOSAR工具之间的互操作性提供支持;为什么要将模型序列化?
AUTOSAR XML优点:
更规范的格式表达;
限制了XML不同风格的数量,减少工具实现的工作量;
AUTOSAR ARXML序列化规范与其他模板规范之间的关系,如下图所示:
软件组件模板、系统模板、ECU配置模板等,处理数据结构及其语义;
XML模式生成规则和ARXML序列化规则之间的关系,
1-5 AUTOSAR数据交换文件ARXML
qq_42357877的博客
09-11
1459
在整个AUTOSAR开发过程,根据描述文件ARXML所描述的内容和用途不同,将其分为关注软件构件本身的属性和接口的SWC描述文件、关注整个系统级的约束条件的系统约束描述文件、关注ECU的资源和能力的ECU资源描述文件、集合整个系统的配置信息的系统配置描述文件、以及从系统配置描述文件中提取的具体ECU配置信息的ECU萃取文件。arxml文件的主要作用是在AUTOSAR架构下实现软件组件的配置和集成。就是将系统配置描述文件的信息分配给单个ECU,使得单个ECU得到其需要的信息,不需要的信息就过滤掉了。
汽车电子AutoSAR从入门到精通视频课程
05-07
课程大纲1-什么是 AutoSAR 为什么要学习 AutoSAR2-AutoSAR课程大纲3-用Linux操作系统思维理解AutoSAR4-AutoSAR出现的背景和行业状况5-AutoSAR运行的硬件环境ECU6-AutoSAR优势和代码演示7-AutoSAR开发方法论8-汽车电子岗位介绍9-AUTOSAR工具链讲解10-BSW概述-111-BSW概述-212-CAN总线物理层讲解-113-CAN总线物理层讲解-214-CAN总线物理层讲解-标准和仲裁机制15-CAN总线物理层讲解-数据帧16-CAN总线物理层讲解-错误检测机制17-CAN总线物理层讲解-位时间和同步18-CAN总线DBC文件讲解19-AutoSAR通信概述-通信服务架构120-AutoSAR通信概述-通信服务架构221-AutoSAR通信概述-PDU和收发数据流22-CAN总线网络传输层CanTp讲解-Can诊断网络分层23-CAN总线网络传输层CanTp讲解-CanTp组帧拆帧过程-124-CAN总线网络传输层CanTp讲解-CanTp组帧拆帧过程-225-CAN总线网络传输层CanTp讲解-CanTp时间参数和诊断数据流26-车载以太网第一讲-车载以太网基础知识MAC PHY27-车载以太网第一讲-车载以太网和工业以太网区别28-车载以太网在Autosar上的应用-以太网协议栈软件架构29-车载以太网在AutoSAR上的应用-Soad PduR30-LIN总线入门到精通第一讲-Lin总线基础知识31-LIN总线入门到精通第一讲-Lin协议格式32-LIN总线入门到精通第一讲-Lin帧类型33-LIN总线的通信矩阵和LDF文件讲解34-LIN总线在AutoSAR上的应用35-Lin总线诊断应用-LinTp传输层36-Lin总线诊断应用-Lin主节点诊断流程37-SPI总线基础知识38-AutoSAR SPI应用39-协议数据单元PDU和服务数据单元SDU40-Pdu Router(PduR)模块详解41-Com模块讲解-报文和信号42-Com模块讲解-COM内部实现原理43-诊断功能第一讲-诊断基础知识44-诊断功能第二讲-UDS服务讲解-UDS基础知识45-诊断功能第二讲-UDS服务讲解-物理寻址和功能寻址46-诊断功能第二讲-UDS服务讲解-具体服务讲解-147-诊断功能第二讲-UDS服务讲解-具体服务讲解-248-诊断功能第二讲-DCM模块讲解49-诊断功能第四讲-OBD服务50-存储知识和AUTOSAR存储架构51-AUTOSAR 存储服务之Fee换页策略52-Autosar BswM模块讲解53-AutoSAR OS和OSEK OS54-AutoSAR应用软件层-RTE层概述55-AutoSAR应用软件层-AppL层概述
autosar:一组用于处理AUTOSAR XML文件的python模块
05-01
AUTOSAR
一组用于处理 XML文件的Python模块。
允许个人和团队使用Python代码逐步开发和维护AUTOSAR SWC模型。
执行Python脚本可以快速重新生成相同的ARXML文件(无需真正在版本控制中存储生成的ARXML文件)。
建议您使用商业化的AUTOSAR工具链将生成的SWC集成到ECU中。
AUTOSAR版本支持
AUTOSAR 3.0
AUTOSAR 4.2
目的是将来增加对AUTOSAR 4.3和4.4的支持。 (时间计划是未知的,因为我在业余时间从事大部分工作。)
先决条件
文献资料
文档发布。
最新发布
最新版本是 。
当前路线图
v0.4.0
维护跟踪(如果未发现问题,请重新标记v0.3.10)
v0.5.0
完全重写RTE合同阶段生成器(升级到AUTOSAR4)
同时将autosar-demo项目升级到AUTOSAR4
01 AUTOSAR汽车架构基础
11-09
内容概要:包含了AUTOSAR系统介绍及基本概念,讲解了AUTOSAR方法论和分层软件架构,其次针对BSW模块介绍,资源内列举了AUTOSAR的应用案列demo,并在最后针对AUTOSAR进行总结;
适合人群:具备一定编程基础,工作1-5年的研发人员
汽车电子咖啡厅 多核AUTOSAR架构开发
01-16
汽车电子咖啡厅 多核AUTOSAR架构开发 介绍多核AUTOSAR架构开发多核AUTOSAR架构开发
ARXML Demo
12-20
ARXML
汽车电子电气架构(EEA)与AUTOSAR-综合文档
05-19
编程技术_在Linux下用户空间与内核空间数据交换的方式剖析
AUTOSAR架构深度解析
01-27
软硬件分离的分层设计,对于OEM及供应商来说,提高了系统的整合能力,...图中所示,算上复杂驱动层(ComplexDeviceDrivers),AUTOSAR架构中共分六层:应用软件层(ApplicationLayer) 运行环境RTE(RuntimeEnvironment)
autosar(汽车开放系统架构)详解
12-14
Autosar是汽车开放系统架构的首字母缩写,是全球各大汽车整车厂、汽车零部件供应商、汽车电子软件系统公司联合建立的一套标准协议,是对汽车技术开发一百多年来的经验总结。以下是Autosar的特点及举例说明: 1、开放...
Autosar架构说明书
最新发布
02-19
Autosar架构说明书
pdf文件标志 为secured
01-26
PDF文件标志为secured,是指该文件已被加密或受到安全保护。
在PDF文档中,secured标志是一种保护文件内容不被未经授权的访问的符号。当一个PDF文件被标记为secured时,它意味着只有具备相应权限的用户可以打开、编辑或复制文件的内容。这种安全措施有助于保护敏感信息的安全性,以防止未授权的人员利用或篡改文件。
为了实现PDF文件的安全标记,通常会使用加密技术。通过密码或证书等安全策略,可以限制文件的访问权限。加密后的PDF文件在打开或编辑时需要输入正确的密码或证书信息,才能获取完整的访问权限。
除了加密,PDF文件还可以使用其他安全功能。例如,可以设置访问权限,限制用户对文档的操作,如禁止打印、复制、修改或注释。还可以使用数字签名或水印等方式,增加文档的真实性和防伪能力。
PDF文档的安全标志可以提供一定程度的保护,但并不是绝对安全的。如果密码过于简单或泄漏,文件依然可能被非法访问。因此,在使用PDF文件时,用户还应注意合理设置安全措施,确保文件内容的机密性和完整性。
“相关推荐”对你有帮助么?
非常没帮助
没帮助
一般
有帮助
非常有帮助
提交
自动驾驶simulation
CSDN认证博客专家
CSDN认证企业博客
码龄4年
企业员工
44
原创
1万+
周排名
1万+
总排名
22万+
访问
等级
1318
积分
890
粉丝
471
获赞
220
评论
2125
收藏
私信
关注
热门文章
【亲测有效】Linux系统安装NVIDIA显卡驱动
49156
汽车通信协议:一文搞懂Flexray通信
15897
CANoe:CAPL周期发送CANFD报文
13199
#Labview <如何给上位机界面化妆!UI美化设计!>
11480
车厂应该如何使用Python和Canmatrix将arxml格式的数据库转换成dbc
9030
分类专栏
Carla
9篇
通信协议
3篇
Veristand
3篇
OpenDrive
1篇
HIL仿真
12篇
opencv
1篇
python
1篇
Simulink
2篇
CANoe
2篇
最新评论
自动驾驶仿真:如何通过TCP方式进行VTD驾驶员仿真
图水田:
你好,结构体参数变量的详细定义在哪里查看
Carla自动驾驶仿真四:pygame渲染Camera画面及车辆控制(代码详解)
xcy8703:
这个代码运行起来会闯红灯怎么解决
自动驾驶仿真:ECU TEST自动化测试常用API调用
Shcchen:
请问ecutest和veristand关联后,我运行ecutest时veristand 没有自动部署成功是什么原因呢
自动驾驶仿真基础:使用Veristand自定义CAN报文的Checksum和Counter
自动驾驶simulation:
根据start bit和num of bit组合
自动驾驶仿真基础:使用Veristand自定义CAN报文的Checksum和Counter
自动驾驶simulation:
按照英特尔或者摩托罗拉协议组合成byte
您愿意向朋友推荐“博客详情页”吗?
强烈不推荐
不推荐
一般般
推荐
强烈推荐
提交
最新文章
Carla自动驾驶仿真九:车辆变道路径规划
Carla自动驾驶仿真八:两种查找CARLA地图坐标点的方法
Carla自动驾驶仿真七:CARLA&SUMO真实世界交通流仿真
2024年4篇
2023年12篇
2022年21篇
2021年7篇
目录
目录
分类专栏
Carla
9篇
通信协议
3篇
Veristand
3篇
OpenDrive
1篇
HIL仿真
12篇
opencv
1篇
python
1篇
Simulink
2篇
CANoe
2篇
目录
评论 5
被折叠的 条评论
为什么被折叠?
到【灌水乐园】发言
查看更多评论
添加红包
祝福语
请填写红包祝福语或标题
红包数量
个
红包个数最小为10个
红包总金额
元
红包金额最低5元
余额支付
当前余额3.43元
前往充值 >
需支付:10.00元
取消
确定
下一步
知道了
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝
规则
hope_wisdom 发出的红包
打赏作者
自动驾驶simulation
你的鼓励将是我创作的最大动力
¥1
¥2
¥4
¥6
¥10
¥20
扫码支付:¥1
获取中
扫码支付
您的余额不足,请更换扫码支付或充值
打赏作者
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额
0
抵扣说明:
1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。 2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。
余额充值
AUTOSAR 之arxml文件解析_arxml 解析-CSDN博客
AUTOSAR 之arxml文件解析
aFakeProgramer
已于 2023-08-11 16:28:03 修改
阅读量4.5k
收藏
44
点赞数
2
分类专栏:
AP AUTOSAR
汽车电子
文章标签:
汽车
于 2023-05-30 17:07:06 首次发布
原文链接:https://mp.weixin.qq.com/s/kF-CcpvOCkVd6dTT1DRGUQ
版权
AP AUTOSAR
同时被 2 个专栏收录
127 篇文章
21 订阅
¥39.90
¥99.00
订阅专栏
超级会员免费看
汽车电子
135 篇文章
367 订阅
订阅专栏
ECU.arxml是什么?有什么用途?
Arxml代表AUTOSAR xml,是用xml语言(Extensible Markup Language)描述AUTOSAR模型的一种人机可读的文本格式。
Autosar 里面是以xml格式的文件为核心的,因为是autosar,所以叫Arxml,
它包含了你在autosar开发过程中所需要的全部信息,通过这样一个文件的导入和导出实现了在不同工具切换,比如说在matlab simulink和VRTE工具之间的切换。
ECU.arxml 描述文件即是ECU 参数定义文件 (Parameter Definition file) 。
基于.arxml文件,就可以利用第三方提供的配置工具,将该文件作为输入导入配置工具进行相关的配置,
比如:将ADB LED控制器的.arxml导入Vector的DavinciDeveloper软件中,可以自动生成相关的配置,完整配置好后即可生成代码文件,这样就可以免去手写代码的时间,提高开发效率。
接下来看个.arxml文件,看看里面都是些什么信息,这个是AutoSAR Classic Platform提供的ECU configuration文件规范
将文件导入支持XML文件格式的工具即可查看到里面的信息,所使用的工具比如vector的工具,或者使用Microsoft visual studio产品开发工具也是可以的,如图所示,源文件是几万条的代码,感兴趣的同学可以直接到AutoSAR官方平台免费下载,在这里呢,博主仅截取了其中的部分信息示意,图中标注紫色的内容定义的是ADC(模拟信号与数字信号转换)模块的配置参数:
02.ECU.arxml创建流程
ECU.arXML创建流程如下:
1.OEM关注的点是系统级的功能和集成,因此OEM端会提供系统级的描述文件,该文件中包含多个ECU的实例,并不包含软件组件部分,只有ECU级的通讯关系,这部分的设计可以基于UML/SysUML建模,也可以使用PREEVISION建模或者是ARtop来建模。
2. 供应商supplier拿到OEM提供的系统级的功能描述文件并导入到工具链中,比如vector的PREEVISION,加入到系统的虚拟功能总线上,也就是AutoSAR的RTE,这样就可以和系统内的其它模块进行通讯,此时,还是系统级的ECU,并没有软件组件部分。
3. 因OEM提供的系统级的功能描述文件中包含了系统部件到ECU的映射,以及信号的映射,供应商基于此,可进行ECU内部硬件结构和借口的设计,并将信号分配给实际的接口, 至此,供应商即完成了ECU.arXML创建过程。
03.五种类型的arxml
针对AUTOSAR开发,共有五种类型的arxml,分别为:
System ConfigurationECU ExtractECU ConfigurationSWC DescriptionBSW Module Description
图 AUTOSAR方法论
System Configuration包含多个ECU的描述信息,它描述的是ECU之间的发送或接收信息以及跨ECU组件的接口和端口描述信息,另外还包含ECU的硬件资源信息。System Configuration从整车系统的角度描述ECU之间的交互信息。 ECU Extract属于System Configuration的子集,它描述单个ECU发送或接收的信息,同样它包含了单个ECU内部包含的SWC以及SWC的详细信息,如接口定义和port定义等。ECU Extract与我们当前使用的通讯矩阵一致。ECU Configuration属于单个ECU范畴,它描述了SWC Description、ECU Extract和BSW模块等配置之后所有的信息。SWC Description描述了所有用户自定义的设计信息,包含SWC定义、运行实体、接口、端口数据类型的定义。BSW Module Description属于标准模块信息,模块信息与代码包有关,不同供应商可能存在差异,但都符合AUTOSAR标准定义。
AUTOSAR标准参考文档:
1)AUTOSAR_TPS_BSWModuleDescriptionTemplate.pdf
2)AUTOSAR_TPS_ECUConfiguration.pdf
3)AUTOSAR_TPS_SystemTemplate.pdf
4)AUTOSAR_TPS_SoftwareComponentTemplate.pdf
5)AUTOSAR_TPS_ECUResourceTemplate.pdf
优惠劵
aFakeProgramer
关注
关注
2
点赞
踩
44
收藏
觉得还不错?
一键收藏
知道了
0
评论
AUTOSAR 之arxml文件解析
Arxml代表AUTOSAR xml,是用xml语言(Extensible Markup Language)描述AUTOSAR模型的一种人机可读的文本格式。Autosar里面是以xml格式的文件为核心的,因为是autosar,所以叫Arxml,它包含了你在autosar开发过程中所需要的全部信息,通过这样一个文件的导入和导出实现了在不同工具切换,比如说在matlab simulink和VRTE工具之间的切换。描述文件即是ECU 参数定义文件 (Parameter Definition file)。
复制链接
扫一扫
专栏目录
订阅专栏
AUTOSAR知识(二):如何解读arxml
梦想技术家
03-14
2070
定义模块参数,该部分规范及限制了容器参数的使用方法,取值范围等用来存储模块配置参数数据。规范里面有个点:带有stereotype 构造型标签的元素可以被拆分到不同的arxml里面,例如就是此标签。一般参数定义来源与指向本容器配置项的路径,第一个红框是参数,第二个是自己本身的路径。
autosar:一组用于处理AUTOSAR XML文件的python模块
05-01
AUTOSAR
一组用于处理 XML文件的Python模块。
允许个人和团队使用Python代码逐步开发和维护AUTOSAR SWC模型。
执行Python脚本可以快速重新生成相同的ARXML文件(无需真正在版本控制中存储生成的ARXML文件)。
建议您使用商业化的AUTOSAR工具链将生成的SWC集成到ECU中。
AUTOSAR版本支持
AUTOSAR 3.0
AUTOSAR 4.2
目的是将来增加对AUTOSAR 4.3和4.4的支持。 (时间计划是未知的,因为我在业余时间从事大部分工作。)
先决条件
文献资料
文档发布。
最新发布
最新版本是 。
当前路线图
v0.4.0
维护跟踪(如果未发现问题,请重新标记v0.3.10)
v0.5.0
完全重写RTE合同阶段生成器(升级到AUTOSAR4)
同时将autosar-demo项目升级到AUTOSAR4
参与评论
您还未登录,请先
登录
后发表或查看评论
ARXML文件格式解析
yyzhangyanyy的博客
10-24
1万+
AUTOSAR标准格式通讯文件,ARXML文件内容解析说明
汽车架构解析:python cantools库快速解析arxml
最新发布
zataji的博客
01-02
1195
曾经有拿cantools来解析过dbc,用得比较浅,不知道可以用来解析arxml。最近有个需求需要适配arxml的解析,其实有用过正则表达式来解析过arxml,后面用了cantools这个库,才发现自己做了傻事,直接调用别人开发的库,岂不美哉。简而言之,cantools官网有很多方法,大家可以到官网查阅,这里做个简单的记录,因为比较常用。
AUTOSAR架构深度解析
01-27
软硬件分离的分层设计,对于OEM及供应商来说,提高了系统的整合能力,尤其标准化交互接口以及软件组件模型的定义提高了各层的软件复用能力,从而降低了开发成本,使得系统集成与产品推出的速度极大提升。
图中所示,算上复杂驱动层(ComplexDeviceDrivers),AUTOSAR架构中共分六层:应用软件层(ApplicationLayer)
运行环境RTE(RuntimeEnvironment)
AUTOSAR架构下的控制系统建模及代码生成举例-HeadLamp_SWC_ARXML.rar
08-12
AUTOSAR架构下的控制系统建模及代码生成举例-HeadLamp_SWC_ARXML.rar
HeadLamp_SWC是一个控制头灯的Software Component的模型,这个Software Component中包含两个Runnables,分别控制近光灯(LowBeam)和远光灯(HighBeam),控制算法是象征性的给出的,实际控制中不可能有这么简单的东西,这里仅仅是为了说明Autosar建模以及代码生成的问题。
另外,实际应用中,也不会把头灯控制这么简单的模块做成一个Software Component,还是那句话,这里仅仅是为了说明AUTOSAR。
Scheduler模块是假定的一个调度器,主要用于模型的仿真和测试,不会被用于代码生成。
模型中输入、输出端口的命名,也按照AUTOSAR给出的建议,以HMI和CMD开头,输入分别是远光灯开关、位置灯开关和近光灯开关,输出是远光灯和近光灯控制命令。
AR_HeadLampSWC.mdl
ARXML简介
热门推荐
qq_37748525的博客
04-17
1万+
前言
简介
“AUTOSAR XML”,简称为“ARXML”;
该标准介绍了如何将AUTOSAR模型序列化为AUTOSAR XML描述的规则,为AUTOSAR工具之间的互操作性提供支持;为什么要将模型序列化?
AUTOSAR XML优点:
更规范的格式表达;
限制了XML不同风格的数量,减少工具实现的工作量;
AUTOSAR ARXML序列化规范与其他模板规范之间的关系,如下图所示:
软件组件模板、系统模板、ECU配置模板等,处理数据结构及其语义;
XML模式生成规则和ARXML序列化规则之间的关系,
汽车架构解析:python解析Autosar架构的ARXML
zataji的博客
07-09
5579
Autosar架构下arxml文件作为通用数据库文件,在数据传输和存储中起到关键作用。行业上其实有一些arxml的工具可以将arxml转换成dbc,再将dbc转换成自己想要的数据,但是拿到的数据是不完整的,arxml有一些数据dbc是没有的,也根据缺少的数据直接到ARXML拿,不用硬解ARXML。想要解析ARXML的最好的方法就是对原始数据进行处理。网上有一些python的库推荐,如xml.etree.ElementTree等,我试用了下,arxml的层级关系太多了感觉处理起来不太自由。
详解Autosar Arxml中的CANFD报文及格式
赞的博客
06-25
5982
Autosar CANFD报文详解
AUTOSAR ARXML数据库文件介绍
酒无忧的博客
02-08
1891
本文主要帮助读者理解AUTOSAR ARXML通信数据库文件。目前非常火热的AUTOSAR架构越来越得到车厂和零部件厂商的普遍应用,AUTOSAR又分为Classic Platform和Adaptive Platform。其中Classic Platform应用在实时性要求比较的处理器,而Adaptive Platform应用在需要大量计算的处理器。熟悉Classic Platform Autosar开发的朋友应该都知道,其工作流是需要导入整车通讯数据库作为输入文件进行开发的。
AutoSAR_GP
02-15
AutoSAR_GP
2_EB_Tresos中导入System desk生成的arxml文件.pdf
06-02
EB_Tresos中导入System desk生成的arxml文件,让Autosar配置不在高不可攀。减少汽车电子开发过程中的拦路虎。
Python解析Autosar 标准文件(arxml)---按行解析内容。
wsq119的博客
06-01
2015
使用Python解析AUTOSAR标准中定义的XML格式文件。Python中有许多XML解析库可供选择,其中比较常用的有ElementTree、lxml和xml.etree.ElementTree等。
Python解析Autosar 标准文件(arxml)---按struct类型解析内容
wsq119的博客
06-01
997
很多时候,我们需要提取arxml文件中的某些数据,然后再对这些数据进行二次开发或使用
学AutoSAR,敢不知道.arxml?
小胡同学的工程师学习之路
03-20
2075
arxml是一种交互文件,一种用于AtutoSAR工具链各工具之间沟通的桥梁。
python autosar 解析 arxml 文件
05-20
Python有许多库可以用于解析AUTOSAR XML(ARXML)文件。其中一些库包括:
1. autosar:这是一个Python库,用于处理AUTOSAR(Automotive Open System Architecture)标准的各种文件格式,包括ARXML文件。它提供了一些功能,如读取和解析ARXML文件、生成AUTOSAR模型等。
2. lxml:这是一个强大的Python库,用于处理XML和HTML文件。它提供了一些功能,如XPath表达式、命名空间支持、XML Schema验证等。lxml也可以用于解析ARXML文件。
3. xml.etree.ElementTree:这是Python标准库中的一个模块,用于解析XML文件。它提供了一些功能,如创建XML元素、遍历XML元素树、读取XML文件等。xml.etree.ElementTree可以用于解析ARXML文件。
这些库都可以用于解析ARXML文件,具体使用哪一个库取决于您的需求和偏好。例如,如果您需要快速解析ARXML文件并提取一些特定的信息,那么xml.etree.ElementTree可能是一个不错的选择。如果您需要处理复杂的AUTOSAR模型并执行一些高级操作,那么autosar库可能更适合您。
“相关推荐”对你有帮助么?
非常没帮助
没帮助
一般
有帮助
非常有帮助
提交
aFakeProgramer
CSDN认证博客专家
CSDN认证企业博客
码龄7年
暂无认证
376
原创
3186
周排名
1235
总排名
173万+
访问
等级
1万+
积分
5163
粉丝
2218
获赞
224
评论
1万+
收藏
私信
关注
热门文章
MPU和MCU的区别
35944
c++ class “xxxx“ does not name a type是怎么一回事
34729
智能指针make_unique 与make_shared 的知识介绍
33941
来来来!我告诉你 AUTOSAR架构深度解析从入门到放弃
31671
C++经典面试题100例及答案
22438
分类专栏
AP AUTOSAR
付费
127篇
汽车软件架构
3篇
工作笔记
17篇
密码学
5篇
嵌入式基础
55篇
计算机网络
8篇
Cmake
3篇
诊断
11篇
Android NDK
3篇
ROS
2篇
汽车总线合集
27篇
汽车电子
135篇
c++精华学习笔记
145篇
Linux学习笔记
110篇
功能安全
7篇
SOME/IP精华学习笔记
30篇
Docker
4篇
BSP
8篇
操作系统
24篇
QNX
2篇
Yocto
5篇
DDS
7篇
项目管理
2篇
c++11并发与多线程
52篇
CP AUTOSAR
19篇
mqtt
10篇
TCP/IP
7篇
c++小游戏
2篇
智能车联网C-V2X的秘密
10篇
系统架构
6篇
Go语言
1篇
力扣刷题记录
15篇
数据库sql Oracle
1篇
阿里云
1篇
c语言基础知识
54篇
python
34篇
Sql
2篇
面试题
83篇
数据结构和算法
24篇
数据库
4篇
人生感悟与读书
37篇
软件用法
3篇
头马精彩
1篇
工作效率提高
16篇
git
4篇
STL
6篇
通信知识
16篇
设计模式
5篇
V2X
20篇
机器学习人工智能
2篇
最新评论
cmakeList编译protobuf.pb.h时报错fatal error: google/protobuf/port_def.inc: No such file or directory
nanfengnan?:
冒昧一问,咱俩是一个protobuf吗?为什莫我2.5版本没有看到configure.
MPU和MCU的区别
aFakeProgramer:
你说的对
MPU和MCU的区别
panjian0430:
二者关键的区别就是mpu带mmu,可跑Linux,而mcu不带mmu,只能跑RTOS
Linux ipcs命令与ipcrm命令的用法详解
CSDN-Ada助手:
哇, 你的文章质量真不错,值得学习!不过这么高质量的文章, 还值得进一步提升, 以下的改进点你可以参考下: (1)增加条理清晰的目录;(2)提升标题与正文的相关性。
为什么要用AP? Adaptive AutoSAR到底给企业提供了一些什么?
aFakeProgramer:
AP通常会有一些FC组件模块是必须的,有些FC组件模块是可选的。
要具体看项目需要哪两个模块,才好具体分析。
您愿意向朋友推荐“博客详情页”吗?
强烈不推荐
不推荐
一般般
推荐
强烈推荐
提交
最新文章
认知觉醒 读书笔记
99%依赖神经网络,特斯拉FSD重大更新,V12到底有什么不一样?
C++代码性能优化的好处与缺点?有哪些编译器优化选项?
2024
03月
10篇
02月
27篇
01月
32篇
2023年249篇
2022年79篇
2021年121篇
2020年186篇
2019年141篇
2018年91篇
2017年11篇
目录
目录
分类专栏
AP AUTOSAR
付费
127篇
汽车软件架构
3篇
工作笔记
17篇
密码学
5篇
嵌入式基础
55篇
计算机网络
8篇
Cmake
3篇
诊断
11篇
Android NDK
3篇
ROS
2篇
汽车总线合集
27篇
汽车电子
135篇
c++精华学习笔记
145篇
Linux学习笔记
110篇
功能安全
7篇
SOME/IP精华学习笔记
30篇
Docker
4篇
BSP
8篇
操作系统
24篇
QNX
2篇
Yocto
5篇
DDS
7篇
项目管理
2篇
c++11并发与多线程
52篇
CP AUTOSAR
19篇
mqtt
10篇
TCP/IP
7篇
c++小游戏
2篇
智能车联网C-V2X的秘密
10篇
系统架构
6篇
Go语言
1篇
力扣刷题记录
15篇
数据库sql Oracle
1篇
阿里云
1篇
c语言基础知识
54篇
python
34篇
Sql
2篇
面试题
83篇
数据结构和算法
24篇
数据库
4篇
人生感悟与读书
37篇
软件用法
3篇
头马精彩
1篇
工作效率提高
16篇
git
4篇
STL
6篇
通信知识
16篇
设计模式
5篇
V2X
20篇
机器学习人工智能
2篇
目录
评论
被折叠的 条评论
为什么被折叠?
到【灌水乐园】发言
查看更多评论
添加红包
祝福语
请填写红包祝福语或标题
红包数量
个
红包个数最小为10个
红包总金额
元
红包金额最低5元
余额支付
当前余额3.43元
前往充值 >
需支付:10.00元
取消
确定
下一步
知道了
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝
规则
hope_wisdom 发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额
0
抵扣说明:
1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。 2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。
余额充值
【ARXML专题】-1-什么是ARXML_arxmal文件-CSDN博客
【ARXML专题】-1-什么是ARXML
最新推荐文章于 2023-09-11 21:54:32 发布
汽车电子助手
最新推荐文章于 2023-09-11 21:54:32 发布
阅读量2.1w
收藏
223
点赞数
36
分类专栏:
Autosar
# ARXML
文章标签:
ARXML
xml
dtd
xsd
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qfmzhu/article/details/111889111
版权
Autosar
同时被 2 个专栏收录
248 篇文章
700 订阅
订阅专栏
ARXML
37 篇文章
324 订阅
订阅专栏
目录
0 XML简介
1 XML文件内容
2 有效的XML
2.1认识DTD
2.1.1 DTD简介
2.1.2 内部的 DOCTYPE 声明
2.1.3 外部的 DOCTYPE 声明
2.2 认识XSD
2.2.1 XSD简介
2.2.2 XSD举例
3 结尾
ARXML文件实质是一个XML文件,一般通过Autosar标准的XSD进行约束,用专用的工具Artop,Systemdesk,Matlab,DaVinci developer,Autosar Explorer…生成。和XML文件一样,ARXML是一个通用的配置/数据库文件,所以这里只需了解ARXML文件的结构(方便在将ARXML导入工具时,能够检查一些基本的错误),无需想着用过多的时间手动生成它(生成的工作,专业工具已经帮你做解决了)。
下面通过XML来介绍ARXML。
《ARXML全系列精讲》专栏链接https://blog.csdn.net/qfmzhu/category_10698596.html《Autosar从入门到精通-实战篇》总目录--专栏链接https://blog.csdn.net/qfmzhu/article/details/112425670
推荐阅读(单击下方蓝色字体即可跳转):
【ARXML专题】-1-什么是ARXML
【ARXML专题】-2-创建一个Classic CAN(经典CAN2.0)/CANFD的系统描述ARXML文件
【ARXML专题】-3-在CANFD或CAN2.0的ARXML文件中实现Multiplexor多路复用信号
【ARXML专题】_4_提取Arxml的模板信息
【ARXML专题】_5_提取Arxml中CAN波特率属性New_CanCluster--Standard
【ARXML专题】_6_提取Arxml中描述信息New_CanCluster--Expert
【ARXML专题】_7_提取Arxml中CAN物理通道信息CANChannel--Physical Channel
【ARXML专题】_8_提取Arxml中CAN Node节点信息Creat_ECU
【ARXML专题】_9_提取Arxml中CAN采样点信息Creat_ECU--Standard
【ARXML专题】_10_提取Arxml中描述信息Creat_ECU--Expert
【ARXML专题】_11_提取Arxml中CAN的Frame/Message和CAN_ID信息
【ARXML专题】_12_提取Arxml中CAN PDU信息
【ARXML专题】_13_提取Arxml中CAN PDU周期信息
【ARXML专题】_14_提取Arxml中CAN Signal信号信息
0 XML简介
XML:可扩展标记语言(Extensible Markup Language),是是一种非常灵活的标记语言,没有固定的标签,所有的标签,在符合XML命名规则的基础上,都可以自定义,但是在写标签名的时候一定要有含义。
通常,XML被用于信息的记录和传递。因此,XML经常被用来充当“配置文件”和“数据库”。
一般可通过“Eclipse”和“网页浏览器”等软件工具打开XML文件。将ARXML文件的后缀名修改为XML,可以通过这些工具打开。
1 XML文件内容
下面是XML文件中一小段内容:
XML文档是树状结构;
第1行:XML声明。必须放在第一行,第一列,声明语句之前,不能有任何的空格和注释。定义了XML版本和编码信息。其中,版本永远都是1.0;编码方式一般都使用UTF-8(该编码支持中文标签),编码信息不区分大小写。
第2行:根元素,XML有且仅有一个根元素。元素由开始标签、元素内容、结束标签组成,没有被其它元素包围的元素称为根元素;
第3行:注释的写法:,但不能嵌套使用。
第4行:” id=;book_1’”表示属性。属性必有值,值必须使用引号(单引号,双引号)。属性其实是描述标签一些额外的信息,一个标签可以有多个属性。可以将属性看为元素的另一种写法。
第5~7行:表示元素。
注意:
XML中的标签区分大小写,对应的开始标签和结束标签必须大小写一致。标签命名:普通字符有:字母,数字,-中横线,_下划线,.点号,数字不能作为首字母出现等。大段内容有许多特殊符号内容,使用转义,如下的例子:了看可是lj
2 有效的XML
XML首先必须是格式良好的,一般使用DTD和XSD(XML Schema)定义语义约束。ARXML文件使用XSD进行约束。
2.1认识DTD
2.1.1 DTD简介
DTD全称:Document Type Definition。
用于约束XML的文档格式,保证XML是一个有效的XML。定义好接口和格式,方便多个人同时开发。
DTD可以分为两种:内部DTD;外部DTD。
DTD和XML之间的关系:
类(人类)和对象(我)
数据库(表)和行(一条记录)
DTD的缺点:
DTD约束XML的时候,不能对XML中数据类型做详细的限定。DTD约束有自己的语法,书写时必须遵守DTD的语法;一个XML文件中只能引入一个DTD约束,而无法通过多个DTD文件来约束同一个XML文件。
2.1.2 内部的 DOCTYPE 声明
内部DTD的定义,语法如下:
a)
b)元素声明语法:
b)数量词:
+:表示元素出现至少出现一次
?:表示元素出现0次或1次
*:表示元素出现任意次。举例
c)属性声明语法:
属性类型:CDATA,表示字符数据(character data)
默认值:
#REQUIRED,表示必须出现
#IMPLIED,表示不是必须出现
带内部DTD的完整XML:
]>
2.1.3 外部的 DOCTYPE 声明
创建一各独立的外部DTD文件,内容如下:
在XML中引入外部DTD文件,完整的语法如下:
带外部DTD的完整XML:
2.2 认识XSD
2.2.1 XSD简介
XSD全称:XML结构定义(XML Schema Definition),是DTD的替代者。
不仅可以定义XML文档的结构,还可以规范XML文档的内容。XSD本身也是XML文档。
XSD采用XML文档来定义语义约束,比DTD要复杂一些,但是功能强大的多:
定义可出现在文档中的元素;定义可出现在文档中的属性;定义哪个元素是子元素;定义子元素的次序;定义子元素的数目;定义元素是否为空,或者是否可包含文本;定义元素的数据类型;定义元素和属性的默认值以及固定值。允许开发这自定义数据类型可读性强可针对未来需求进行扩展一个XML中可以引入N个Schema进行约束。书写的时候,它遵守XML的语法规则,它的文件扩展名XSD。
2.2.2 XSD举例
这一章节仅做了解,无需过多深入。知道XML和XSD的之间的关系就行。
book.xsd文件内容:
targetNamespace="http://www.example.org/book" xmlns:tns="http://www.example.org/book" elementFormDefault="qualified">
book.xml文件内容:
xmlns="http://www.example.org/book" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.example.org/book book.xsd" >
3 结尾
优惠劵
汽车电子助手
关注
关注
36
点赞
踩
223
收藏
觉得还不错?
一键收藏
打赏
知道了
0
评论
【ARXML专题】-1-什么是ARXML
目录0 XML简介1 XML文件内容2 有效的XML2.1认识DTD2.1.1 DTD简介2.1.2 内部的 DOCTYPE 声明2.1.3 外部的 DOCTYPE 声明2.2 认识XSD2.2.1 XSD简介2.2.2 XSD举例3 结尾ARXML文件实质是一个XML文件,一般通过Autosar标准的XSD进行约束,用专用的工具Artop,Systemdesk,Matlab,DaVinci developer,Autosar Explorer…生成。和X..
复制链接
扫一扫
专栏目录
ARXML Demo
12-20
ARXML
autosar:一组用于处理AUTOSAR XML文件的python模块
05-01
AUTOSAR
一组用于处理 XML文件的Python模块。
允许个人和团队使用Python代码逐步开发和维护AUTOSAR SWC模型。
执行Python脚本可以快速重新生成相同的ARXML文件(无需真正在版本控制中存储生成的ARXML文件)。
建议您使用商业化的AUTOSAR工具链将生成的SWC集成到ECU中。
AUTOSAR版本支持
AUTOSAR 3.0
AUTOSAR 4.2
目的是将来增加对AUTOSAR 4.3和4.4的支持。 (时间计划是未知的,因为我在业余时间从事大部分工作。)
先决条件
文献资料
文档发布。
最新发布
最新版本是 。
当前路线图
v0.4.0
维护跟踪(如果未发现问题,请重新标记v0.3.10)
v0.5.0
完全重写RTE合同阶段生成器(升级到AUTOSAR4)
同时将autosar-demo项目升级到AUTOSAR4
参与评论
您还未登录,请先
登录
后发表或查看评论
AUTOSAR模型ECU配置参数——.arxml文件解读(入门级-一)
qq_40423998的博客
07-28
1万+
@AUTOSAR模型ECU配置参数——.arxml文件解读
今天博主带大家一家来解决一下AutoSAR官方提供的ECU配置参数.arxml文件,general的部分简单讲述,对于不易理解的信息,博主会分享自己的学习心得,理解这些文档的含义,才能更好的建立正确的XML模型,对于解读有异议的,也欢迎各位同行在评论区留言给我,我会进一步解读或纠正。
AutoSAR官方ECU配置参数.arxml文件获取方式
博主在上一篇文章中就提到过了,AutoSAR官方提供了spec的下载渠道,都是免费下载的,本文中解读的这个a
学AutoSAR,敢不知道.arxml?
小胡同学的工程师学习之路
03-20
2075
arxml是一种交互文件,一种用于AtutoSAR工具链各工具之间沟通的桥梁。
1-5 AUTOSAR数据交换文件ARXML
qq_42357877的博客
09-11
1459
在整个AUTOSAR开发过程,根据描述文件ARXML所描述的内容和用途不同,将其分为关注软件构件本身的属性和接口的SWC描述文件、关注整个系统级的约束条件的系统约束描述文件、关注ECU的资源和能力的ECU资源描述文件、集合整个系统的配置信息的系统配置描述文件、以及从系统配置描述文件中提取的具体ECU配置信息的ECU萃取文件。arxml文件的主要作用是在AUTOSAR架构下实现软件组件的配置和集成。就是将系统配置描述文件的信息分配给单个ECU,使得单个ECU得到其需要的信息,不需要的信息就过滤掉了。
ARXML简介
qq_37748525的博客
04-17
1万+
前言
简介
“AUTOSAR XML”,简称为“ARXML”;
该标准介绍了如何将AUTOSAR模型序列化为AUTOSAR XML描述的规则,为AUTOSAR工具之间的互操作性提供支持;为什么要将模型序列化?
AUTOSAR XML优点:
更规范的格式表达;
限制了XML不同风格的数量,减少工具实现的工作量;
AUTOSAR ARXML序列化规范与其他模板规范之间的关系,如下图所示:
软件组件模板、系统模板、ECU配置模板等,处理数据结构及其语义;
XML模式生成规则和ARXML序列化规则之间的关系,
汽车架构解析:python解析Autosar架构的ARXML
zataji的博客
07-09
5578
Autosar架构下arxml文件作为通用数据库文件,在数据传输和存储中起到关键作用。行业上其实有一些arxml的工具可以将arxml转换成dbc,再将dbc转换成自己想要的数据,但是拿到的数据是不完整的,arxml有一些数据dbc是没有的,也根据缺少的数据直接到ARXML拿,不用硬解ARXML。想要解析ARXML的最好的方法就是对原始数据进行处理。网上有一些python的库推荐,如xml.etree.ElementTree等,我试用了下,arxml的层级关系太多了感觉处理起来不太自由。
ARXML文件格式解析
yyzhangyanyy的博客
10-24
1万+
AUTOSAR标准格式通讯文件,ARXML文件内容解析说明
详解AUTOSAR:DaVinci Configurator导入ARXML配置(拓展篇—2)
不脱发的程序猿
04-12
1805
DaVinci Configurator导入ARXML配置。
2_EB_Tresos中导入System desk生成的arxml文件.pdf
06-02
EB_Tresos中导入System desk生成的arxml文件,让Autosar配置不在高不可攀。减少汽车电子开发过程中的拦路虎。
ArxmlEditor:Arxml编辑器,使用Eclipse XML编辑器
05-13
ARXML编辑器
版权
PopcornSAR AUTOSAR IDE Team(C)2015-2018版权所有(C)
执照
此源代码表单受Eclipse公共许可证v。2.0条款的约束。 如果该文件未分发EPL的副本,则可以在获得一个。
ARXML编辑器概述
实现ARXML编辑器是为了帮助更轻松地编写Arxml文件。 ARXML Editor是基于Eclipse XML Editor的,它基本上具有Eclipse XML Editor的功能,以及以下功能:
自动缩进,然后输入SHORT-NAME标签。
自动搜索架构位置
内容辅助,用于编写可引用类的路径
要求
面向Java和DSL开发人员的Eclipse IDE(建议使用氧气)
ARXML模式
注意事项
此ARXML编辑器没有ARXML架构,因此您需要在项目/ ARXML_Schema /中添加ARXML架构文件。
您可以在以下下载A
arxml参考资料
06-16
arcxml参考资料
修复isolar生成的dext相关的dem/dcm的arxml文件
最新发布
02-22
修复isolar生成的dext相关的dem/dcm的arxml文件
DaVinci MCAL Configurator配置ARXML(瑞萨RH850)
04-11
DaVinci MCAL Configurator配置ARXML(瑞萨RH850)
《Autosar从入门到精通-实战篇》总目录_培训教程持续更新中...
热门推荐
「汽车电子助手」的博客
01-10
8万+
欢迎大家订阅《Autosar从入门到精通-实战篇》,下方整理了相关博文的目录(单击蓝色字体即可跳转),方便大家获取。
本专栏旨在:扫除Autosar工具链配置过程中的障碍,加深对Autosar理论的理解。
温馨提醒:
如有疑问,可在博文的“评论区”给小编留言,进行技术交流(评论区开启了验证功能,审核通过后,会显示);
如有疑问,也可以通过博文中的第一个图片联系小编,获取专栏/博文的实时状态;
由于工作限制,仅做个人技术交流。添加好友时,请备注您的“姓名-公司-职务...
Autosar BSW开发必知的“术语”+“缩写”概念-1-诊断通信篇
「汽车电子助手」的博客
10-16
4万+
如何使用该博文?
==>您可以将该篇博文当做“字典”,遇到疑惑的Autosar“关键字”,使用组合键Ctrl+F,快速查找该关键字。
目录
1 Dcm模块:AUTOSAR_SWS_DiagnosticCommunicationManager.pdf
2 Dem模块:AUTOSAR_SWS_DiagnosticEventManager.pdf
3 CanTp模块:AUTOSAR_SWS_CANTransportLayer.pdf
4 ComM模块:AUTOSAR_SWS_COMManag..
《Autosar_BSW高阶配置》总目录_培训教程持续更新中...
「汽车电子助手」的博客
07-11
3万+
目录
一、Autosar COM Module
二、Autosar BswM Module
三、Autosar EcuM Module
四、Autosar DCM Module
五、Autosar DEM Module
六、其它Module陆续推出
欢迎大家订阅《Autosar_BSW高阶配置》专栏(可以理解为是Autosar培训教程),该专栏每周至少更新一篇,一次订阅,不再二次收费,献上常用的案例和配置方法。下方整理了相关博文的链接(单击蓝色字体即可跳转),方便大家获取。
本专栏...
【arxml专题】-2-创建一个classic can(经典can2.0)的系统描述arxml文件
05-01
创建一个Classic CAN (经典CAN 2.0)的系统描述ARXML文件,需要遵循以下步骤:
1. 在ARXML编辑器中创建一个新的ARXML文件,命名为“Classic_CAN_system_description.arxml”。
2. 在该文件中定义或导入Classic CAN的相关数据类型,如信号、信号组、节点、帧、簇等。
3. 为Classic CAN系统中的每个节点定义节点属性,包括名称、地址、网络管理器节点、网络管理器计时器和通信速率等。
4. 定义Classic CAN系统中使用的每个帧,为每个帧指定ID、长度、周期性传输的时间间隔、数据字节顺序,以及该帧中包含的信号等。
5. 为Classic CAN系统中的每个节点定义接收和发送帧的连接,即指定每个节点连接到系统中哪些帧,以及在何时开始/结束传输数据。
6. 可选地,定义网络管理器节点和计时器,并在Classic CAN系统中指定用于管理网络的节点。
7. 最后,编写描述Classic CAN系统的一些注释,以方便阅读和理解该系统。
完成以上步骤后,保存ARXML文件并进行验证。如果没有错误,Classic CAN系统描述文件就可以用于支持软件开发、硬件设计和系统测试等工作。
“相关推荐”对你有帮助么?
非常没帮助
没帮助
一般
有帮助
非常有帮助
提交
汽车电子助手
CSDN认证博客专家
CSDN认证企业博客
码龄9年
汽车电子软件与Autosar领域优秀作者
550
原创
2991
周排名
1243
总排名
176万+
访问
等级
1万+
积分
8447
粉丝
2589
获赞
683
评论
1万+
收藏
私信
关注
热门文章
《Autosar从入门到精通-实战篇》总目录_培训教程持续更新中...
88434
【图解UDS】UDS汽车诊断标准协议(ISO 14229)带你入门到精通
81676
Autosar BSW开发必知的“术语”+“缩写”概念-1-诊断通信篇
48644
【标准全文】GB 38031-2020 电动汽车用动力蓄电池安全要求
43650
【图解CDD】利用CANdelaStudio编辑诊断描述CDD文件带你入门到精通
40937
分类专栏
Autosar_BSW高阶配置
付费
101篇
Autosar_MCAL高阶配置
付费
11篇
UDS/OBD诊断需求编辑工具
付费
58篇
批处理BAT从入门到精通
付费
39篇
Autosar从入门到精通-实战篇
付费
122篇
S32K3_MCAL从入门到精通
21篇
DaVinci Developer
45篇
DaVinci Configurator
6篇
ARXML
37篇
DBC
13篇
EB_Tresos
12篇
DSpace System desk
9篇
读懂Autosar代码
7篇
UDS/OBD诊断/刷写
129篇
UDS诊断(ISO 14229)
51篇
Bootloader刷写
6篇
OBD诊断(ISO 15031)
14篇
诊断网络层/传输层(ISO 15765)
4篇
CDD诊断描述文件
24篇
ODX/PDX诊断描述文件
41篇
Autosar
248篇
DEM
4篇
DCM
18篇
NVM
2篇
功能安全E2E
8篇
COM
24篇
Nm(Network Management)
2篇
CanSM
6篇
IpduM
10篇
PduR
1篇
CanTp
13篇
CanNM
8篇
CanIf
5篇
BswM
2篇
RTE
5篇
CANDriver
8篇
SPI(全双工同步串行通信协议)
I2C/IIC(全双工同步串行通信协议)
UART(全双工异步串行通信协议)
3篇
嵌入式软件开发
32篇
嵌入式开发刷写/烧录文件
23篇
Tasking TriCore Eclipse IDE
1篇
汽车总线技术
8篇
以太网
3篇
CANFD/经典CAN/CANXL
30篇
LIN2.1总线
1篇
Vector工具链
28篇
CANape
6篇
CCP
4篇
XCP
4篇
汽车动力电池
10篇
电池管理系统BMS
4篇
工具使用
9篇
Source Insight
1篇
电力系统
1篇
GB和GB/T标准
10篇
ISO标准
13篇
微信小程序
2篇
最新评论
《Autosar_MCAL高阶配置》总目录_培训教程持续更新中...
汽车电子助手:
私信博主,即可入群。或者通过该博文末尾的“汽车电子助手”链接入群。
Vector CANdb++ Editor和CANdb++ Admin的区别
老黑说:
admin版本没有找到对比CAN database的功能
【S32DS RTD实战】-1.1-S32K3创建工程并控制一个GPIO点亮一个LED
十—:
您好 麻烦请教一下 我安装了 RTD 3.0的驱动后在安装2.0的驱动后 工程编译就报错了,有什么解决方法吗
【DaVinci Developer专题】-35-如何实现某个SWC的P-Port更新后另一个SWC才去读R-Port的值
LIVEdstar:
我也创建composition,我也链接了两个端口 为什么我生成的程序两个接口是没有连接的,按道理# define Rte_Write_CtApSwcDiagFaultCheck_Test_A_Port_Data(data) (RTE_E_OK)这个宏应该定义成另一个函数名 但是后面啥也没有 为什么 [code=csharp]
[/code]# define Rte_Write_Test_A_Port_Data Rte_Write_CtApSwcDiagFaultCheck_Test_A_Port_Data
# define Rte_Write_CtApSwcDiagFaultCheck_Test_A_Port_Data(data) (RTE_E_OK)
【S32DS RTD实战】-1.2-切换S32K3芯片的封装MAPBGA,HDQFP,LQFP Package
BruceDarwin:
175封装的没问题,切换到100封装以后重新生成代码提示:“该工具生成的代码需要SDK组件。如果工具链工程中未包含源代码,则无法被编译。”这种问题是缺少什么SDK呢
您愿意向朋友推荐“博客详情页”吗?
强烈不推荐
不推荐
一般般
推荐
强烈推荐
提交
最新文章
【S32K3驱动配置】-1.2-GPIO配置及其应用-DIO之高低电平输入-按键(基于SDK)
【S32K3 MCAL配置】-1.2-GPIO配置及其应用-DIO之高低电平输入-按键(基于MCAL)
【S32DS报错】-8-调用初始化函数Port_Init后,S32DS断开与调试器PEmicro/J-Link的连接,无法调试Debug(基于MCAL)
2024年9篇
2023年102篇
2022年193篇
2021年185篇
2020年61篇
目录
目录
分类专栏
Autosar_BSW高阶配置
付费
101篇
Autosar_MCAL高阶配置
付费
11篇
UDS/OBD诊断需求编辑工具
付费
58篇
批处理BAT从入门到精通
付费
39篇
Autosar从入门到精通-实战篇
付费
122篇
S32K3_MCAL从入门到精通
21篇
DaVinci Developer
45篇
DaVinci Configurator
6篇
ARXML
37篇
DBC
13篇
EB_Tresos
12篇
DSpace System desk
9篇
读懂Autosar代码
7篇
UDS/OBD诊断/刷写
129篇
UDS诊断(ISO 14229)
51篇
Bootloader刷写
6篇
OBD诊断(ISO 15031)
14篇
诊断网络层/传输层(ISO 15765)
4篇
CDD诊断描述文件
24篇
ODX/PDX诊断描述文件
41篇
Autosar
248篇
DEM
4篇
DCM
18篇
NVM
2篇
功能安全E2E
8篇
COM
24篇
Nm(Network Management)
2篇
CanSM
6篇
IpduM
10篇
PduR
1篇
CanTp
13篇
CanNM
8篇
CanIf
5篇
BswM
2篇
RTE
5篇
CANDriver
8篇
SPI(全双工同步串行通信协议)
I2C/IIC(全双工同步串行通信协议)
UART(全双工异步串行通信协议)
3篇
嵌入式软件开发
32篇
嵌入式开发刷写/烧录文件
23篇
Tasking TriCore Eclipse IDE
1篇
汽车总线技术
8篇
以太网
3篇
CANFD/经典CAN/CANXL
30篇
LIN2.1总线
1篇
Vector工具链
28篇
CANape
6篇
CCP
4篇
XCP
4篇
汽车动力电池
10篇
电池管理系统BMS
4篇
工具使用
9篇
Source Insight
1篇
电力系统
1篇
GB和GB/T标准
10篇
ISO标准
13篇
微信小程序
2篇
目录
评论
被折叠的 条评论
为什么被折叠?
到【灌水乐园】发言
查看更多评论
添加红包
祝福语
请填写红包祝福语或标题
红包数量
个
红包个数最小为10个
红包总金额
元
红包金额最低5元
余额支付
当前余额3.43元
前往充值 >
需支付:10.00元
取消
确定
下一步
知道了
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝
规则
hope_wisdom 发出的红包
打赏作者
汽车电子助手
你的鼓励将是我创作的最大动力
¥1
¥2
¥4
¥6
¥10
¥20
扫码支付:¥1
获取中
扫码支付
您的余额不足,请更换扫码支付或充值
打赏作者
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额
0
抵扣说明:
1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。 2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。
余额充值
【ARXML专题】-2-创建一个Classic CAN(经典CAN2.0)的系统描述ARXML文件 - 知乎首发于ARXML切换模式写文章登录/注册【ARXML专题】-2-创建一个Classic CAN(经典CAN2.0)的系统描述ARXML文件汽车电子Autosar目录1 创建一个AUTOSAR系统描述2 物理层命名以及创建ECU3 新建一个Frame4 新建一个PDU5 新建一个signal6 结尾/////////////////////////////////AUTOSAR System Description Network Explorer是一个文件编辑器,支持可视化和编辑系统描述的AUTOSAR系统描述文件和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-62 物理层命名以及创建ECU完成第1章后,重新打开Test_CAN.arxml(见图2-1),选中通信Cluster,在其右侧的属性视图中,重命名这个Cluster,并设置这个CAN通信的波特率(见图2-2)。 图2-1 图2-2创建ECU方法,有两种:l 菜单栏中,依次选择“Edit”à“Create Ecu…”(见图2-3);l 工具栏中,单击“Create ECU”(见图2-4)。 图2-3 图2-4弹出“New ECU”对话框(见图2-5)。图2-5重命名ECU,单击“OK”(见图2-6)。图2-6完成后的效果如下(见图2-7):图2-73 新建一个Frame创建Frame方法,有三种:l 先在“导航栏”中选择“Frames”,然后在主视图中鼠标右键,在上下文中选择“Create Frame…”(见图3-1);图3-1l 依次在菜单栏中选择“Edit-->“Create Frame…”(见图3-2);图3-2l 工具栏中,单击“Create Frame”(见图3-3)。图3-3弹出“Edit Frame”对话框(见图3-4)。图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-84 新建一个PDUPDU的概念在DBC中是没有的。PDU(Protocol 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注意:l “Edit Signal”对话框中的“Name”,可以理解为“DBC中Signal名称”;l “Edit Signal”对话框中的“Length”,表示信号的长度,单位Bit;l “Edit Signal”对话框中的“Data Type Policy”,对于每个ISignal,都有一个DataTypePolicy定义,在大多数情况下将确定信息源。l “Edit Signal”对话框中的“Position[Bit]”,表示信号的起始位;l “Edit Signal”对话框中的“Update Bit”,表示信号的更新位;l “Edit Signal”对话框中的“Byte Order”,表示信号的字节顺序:Intel,Motorola,Opaque;l “Edit Signal”对话框中的“Transfer Property”,表示信号的触发方式:Pending,Triggered,TriggeredOnChange,TriggeredWithoutRepetition,TriggeredOnChangeWithoutRepetition。相关的解释参加AUTOSAR COM标准;l “Edit Signal”对话框中的“Sender/Receiver Relations”,表示该信号是接收信号,还是发送信号,或者及不接收也发不发送;l “Edit Signal”对话框中的“Base Type”,定义了信号的一种编码:数据类型名称,符号类型(是否有符号),长度。当多个信号表示的物理含义相同,且信号长度相同时,可以在下拉框中选择相同的Base Type;l “Edit Signal”对话框中的“Computation Method”,描述了将信号传输的原始值转换为物理值的转换规则,信号的范围,信号的单位,无效信号的定义完成后的效果如下(见图5-7),按照此方法可以添加其它的Signal信号:图5-7自此一个AUTOSAR的系统描述ARXML文件就生成好了。END发布于 2020-12-29 21:08autosar赞同 133 条评论分享喜欢收藏申请转载文章被以下专栏收录ARXMLAUTOSAR系统描述文件,后缀*.ar
想问一下autosar 中.arxml是个什么样的格式啊 ? - 知乎首页知乎知学堂发现等你来答切换模式登录/注册视频格式文件格式格式转换格式工厂图像文件格式想问一下autosar 中.arxml是个什么样的格式啊 ?关注者4被浏览33,882关注问题写回答邀请回答好问题添加评论分享4 个回答默认排序经纬恒润致力于成为国际一流的汽车电子系统科技服务商! 关注上一篇我们介绍了SOME/IP矩阵的设计流程,这一篇重点介绍如何把SOME/IP矩阵顺利的交给下游软件团队进行开发。▎车载以太网通信矩阵开发完成后,下一步应该做什么?当我们完成SOME/IP矩阵开发,下一步需要把开发完成的矩阵换成固定格式的数据库文件,方便软件团队进行开发,目前普遍使用ARXML文件。ARXML数据库文件开发完成后,软件工程师可以导入到专用的配置工具中生成配置代码,将配置代码和核心软件代码一起编译,生成最终的软件代码。▎ARXML文件是什么?ARXML是AUTOSAR标准中的一种XML文件格式,用于描述汽车电子软件系统的软件架构和配置信息,是一个通用的配置/数据库文件。ARXML文件包含了各种AUTOSAR软件组件的定义、接口定义、模块定义、配置数据和元数据等。▎ARXML可以兼容所有软件平台吗?诚然我们在实际车型中使用的控制器通常会基于AP(Adaptive Platform)或CP(Classic Platform)软件平台进行开发,但是只要满足不同平台的格式要求,ARXML都可以满足下游软件开发需求。▎CP 和AP 有什么区别?对比维度CPAP硬件环境在MCU中使用在MPU/SOC中使用开发语言基于C语言开发基于C++语言开发实时性硬实时性软实时性操作系统基于AUTOSAR OS基于符合POSIX规范的OS程序运行方式主要运行在ROM运行在RAM通信方式基于信号通信面向服务通信地址空间分配所有任务共享地址空间每个进程拥有独立地址空间AUTOSAR提供的资源规范规范和实例代码▎如何开发车载以太网ARXML数据库文件?我们当前使用的是自研工具INTEWORK-VDE(Vehicle Database Editor)。INTEWORK-VDE是一款通信设计及数据库编辑工具,具备以下功能:支持以车系、车型、网段为网络架构进行通信数据库的设计支持CAN(FD)、LIN、J1939、Ethernet的通信数据库的设计,可提供中心服务器进行数据的统一管理,并且支持审批发布、邮件发送等功能▎如何操作?操作步骤是否简单易学呢?ARXML数据库的导出仅需两步。把已经设计好的SOME/IP矩阵导入INTEWORK-VDE工具中导出ARXML数据库文件为了满足不同软件平台的需求,目前INTEWORK-VDE可以参照实际开发需求分别导出AP 和CP的ARXML数据库。INTEWORK-VDE不但可以生成整车数据库也可以生成单个ECU节点的数据库,后续也支持生成单服务的数据库。生成的数据库支持导入CANoe、VBA等下游工具进行仿真测试,支持导入DaVinci、EAS等配置工具生成协议栈代码。此外,INTEWORK-VDE也支持从ARMXL导出EXCEL矩阵,方便工程师拿到数据库文件后,快速进行解析。图 1 VDE界面https://www.zhihu.com/video/1708781268840435712▎结语通信数据库的设计服务于后续软件开发工作,是软件开发的重要输入。对于车载以太网的通信系统设计来说,不同的操作系统需要各种不同的ARXML数据库来适配。合适的工具可以缩减开发周期,提升工作效率。VDE可以有效的帮忙工程师快速生成相应的ARXML数据库,做好通信工程师和软件工程师交互的桥梁。发布于 2023-11-17 09:49赞同 10添加评论分享收藏喜欢收起汽车软件开发 关注上篇介绍了使用Tresos配置开发环境,其中讲到一个很重要的文件格式Arxml。后续将对其进行深入介绍。Arxml代表AUTOSAR xml,是用xml语言(Extensible Markup Language)描述AUTOSAR模型的一种人机可读的文本格式。具体可以阅读下面链接的文章:https://mp.weixin.qq.com/s/6rHCC71iCwURe2IefeDI1A发布于 2020-03-29 22:06赞同 42 条评论分享收藏喜欢收起-1.7
%����
2 0 obj
<< /S /GoTo /D (chapter.1) >>
endobj
5 0 obj
(1 Introduction)
endobj
6 0 obj
<< /S /GoTo /D (section.1.1) >>
endobj
9 0 obj
(1.1 Document Conventions)
endobj
10 0 obj
<< /S /GoTo /D (chapter.2) >>
endobj
13 0 obj
(2 ARXML Serialization Rules)
endobj
14 0 obj
<< /S /GoTo /D (section.2.1) >>
endobj
17 0 obj
(2.1 Physical Level)
endobj
18 0 obj
<< /S /GoTo /D (subsection.2.1.1) >>
endobj
21 0 obj
(2.1.1 File separation)
endobj
22 0 obj
<< /S /GoTo /D (subsection.2.1.2) >>
endobj
25 0 obj
(2.1.2 File names)
endobj
26 0 obj
<< /S /GoTo /D (section.2.2) >>
endobj
29 0 obj
(2.2 Data Format)
endobj
30 0 obj
<< /S /GoTo /D (subsection.2.2.1) >>
endobj
33 0 obj
(2.2.1 XML Character Encoding)
endobj
34 0 obj
<< /S /GoTo /D (subsection.2.2.2) >>
endobj
37 0 obj
(2.2.2 XML Version)
endobj
38 0 obj
<< /S /GoTo /D (subsection.2.2.3) >>
endobj
41 0 obj
(2.2.3 XML Comments and Processing Instructions)
endobj
42 0 obj
<< /S /GoTo /D (subsection.2.2.4) >>
endobj
45 0 obj
(2.2.4 XML Root Element)
endobj
46 0 obj
<< /S /GoTo /D (subsection.2.2.5) >>
endobj
49 0 obj
(2.2.5 XML Formating / Indention)
endobj
50 0 obj
<< /S /GoTo /D (chapter.3) >>
endobj
53 0 obj
(3 Glossary)
endobj
54 0 obj
<< /S /GoTo /D (appendix.A) >>
endobj
57 0 obj
(A Change History)
endobj
58 0 obj
<< /S /GoTo /D (section.A.1) >>
endobj
61 0 obj
(A.1 Change History of R4.3.0)
endobj
62 0 obj
<< /S /GoTo /D (subsection.A.1.1) >>
endobj
65 0 obj
(A.1.1 Added Traceables)
endobj
66 0 obj
<< /S /GoTo /D (subsection.A.1.2) >>
endobj
69 0 obj
(A.1.2 Changed Traceables)
endobj
70 0 obj
<< /S /GoTo /D (subsection.A.1.3) >>
endobj
73 0 obj
(A.1.3 Deleted Traceables)
endobj
74 0 obj
<< /S /GoTo /D (section.A.2) >>
endobj
77 0 obj
(A.2 Change History of R4.3.1)
endobj
78 0 obj
<< /S /GoTo /D (subsection.A.2.1) >>
endobj
81 0 obj
(A.2.1 Added Traceables in R4.3.1)
endobj
82 0 obj
<< /S /GoTo /D (subsection.A.2.2) >>
endobj
85 0 obj
(A.2.2 Changed Traceables in R4.3.1)
endobj
86 0 obj
<< /S /GoTo /D (subsection.A.2.3) >>
endobj
89 0 obj
(A.2.3 Deleted Traceables in R4.3.1)
endobj
90 0 obj
<< /S /GoTo /D (subsection.A.2.4) >>
endobj
93 0 obj
(A.2.4 Added Constraints in R4.3.1)
endobj
94 0 obj
<< /S /GoTo /D (subsection.A.2.5) >>
endobj
97 0 obj
(A.2.5 Changed Constraints in R4.3.1)
endobj
98 0 obj
<< /S /GoTo /D (subsection.A.2.6) >>
endobj
101 0 obj
(A.2.6 Deleted Constraints in R4.3.1)
endobj
102 0 obj
<< /S /GoTo /D (section.A.3) >>
endobj
105 0 obj
(A.3 Change History of R4.4.0)
endobj
106 0 obj
<< /S /GoTo /D (subsection.A.3.1) >>
endobj
109 0 obj
(A.3.1 Added Traceables in R4.4.0)
endobj
110 0 obj
<< /S /GoTo /D (subsection.A.3.2) >>
endobj
113 0 obj
(A.3.2 Changed Traceables in R4.4.0)
endobj
114 0 obj
<< /S /GoTo /D (subsection.A.3.3) >>
endobj
117 0 obj
(A.3.3 Deleted Traceables in R4.4.0)
endobj
118 0 obj
<< /S /GoTo /D (subsection.A.3.4) >>
endobj
121 0 obj
(A.3.4 Added Constraints in R4.4.0)
endobj
122 0 obj
<< /S /GoTo /D (subsection.A.3.5) >>
endobj
125 0 obj
(A.3.5 Changed Constraints in R4.4.0)
endobj
126 0 obj
<< /S /GoTo /D (subsection.A.3.6) >>
endobj
129 0 obj
(A.3.6 Deleted Constraints in R4.4.0)
endobj
130 0 obj
<< /S /GoTo /D (section.A.4) >>
endobj
133 0 obj
(A.4 Change History of R19-11)
endobj
134 0 obj
<< /S /GoTo /D (subsection.A.4.1) >>
endobj
137 0 obj
(A.4.1 Added Traceables in R19-11)
endobj
138 0 obj
<< /S /GoTo /D (subsection.A.4.2) >>
endobj
141 0 obj
(A.4.2 Changed Traceables in R19-11)
endobj
142 0 obj
<< /S /GoTo /D (subsection.A.4.3) >>
endobj
145 0 obj
(A.4.3 Deleted Traceables in R19-11)
endobj
146 0 obj
<< /S /GoTo /D (subsection.A.4.4) >>
endobj
149 0 obj
(A.4.4 Added Constraints in R19-11)
endobj
150 0 obj
<< /S /GoTo /D (subsection.A.4.5) >>
endobj
153 0 obj
(A.4.5 Changed Constraints in R19-11)
endobj
154 0 obj
<< /S /GoTo /D (subsection.A.4.6) >>
endobj
157 0 obj
(A.4.6 Deleted Constraints in R19-11)
endobj
158 0 obj
<< /S /GoTo /D (section.A.5) >>
endobj
161 0 obj
(A.5 Change History of R20-11)
endobj
162 0 obj
<< /S /GoTo /D (subsection.A.5.1) >>
endobj
165 0 obj
(A.5.1 Added Traceables in R20-11)
endobj
166 0 obj
<< /S /GoTo /D (subsection.A.5.2) >>
endobj
169 0 obj
(A.5.2 Changed Traceables in R20-11)
endobj
170 0 obj
<< /S /GoTo /D (subsection.A.5.3) >>
endobj
173 0 obj
(A.5.3 Deleted Traceables in R20-11)
endobj
174 0 obj
<< /S /GoTo /D (subsection.A.5.4) >>
endobj
177 0 obj
(A.5.4 Added Constraints in R20-11)
endobj
178 0 obj
<< /S /GoTo /D (subsection.A.5.5) >>
endobj
181 0 obj
(A.5.5 Changed Constraints in R20-11)
endobj
182 0 obj
<< /S /GoTo /D (subsection.A.5.6) >>
endobj
185 0 obj
(A.5.6 Deleted Constraints in R20-11)
endobj
186 0 obj
<< /S /GoTo /D (appendix.B) >>
endobj
189 0 obj
(B Mentioned Class Tables)
endobj
190 0 obj
<< /S /GoTo /D [191 0 R /Fit] >>
endobj
193 0 obj
<<
/Length 1652
/Filter /FlateDecode
>>
stream
xڽZ[o�6~ϯ��`�<��[��źt�Ȋµ�F�cg�����;��Rt��"@l��w.��xH��|&��v��?#�F���hE�d�x��!��7��_e��^�y��r��1j<6�?�/R�E���ū+�s���'��cBc�-�rC�f�o�y��|��n�����Y�چ�VQ��%�o���0��|K@R�,YpI��)�\���˹d����7�#W�����g/X����_����Ci1_���0���l��p�|��|$R�g&����b~J�c0G�Rm������Q�ءW%8kU.�n�2�i
��{��Ɣ� 0�5(O��H� �j�MRx�_�]��lF� NY)%��ܞO^
�W�{�Sp��ƐR(�� �rg�Ve!���qmQRN�x�?�٥�k�(3����/;�w#����xɍ��m"v�b=�j��&V�ԋɈ=��"Vk*��#�&8<�w��S� ��-���?��A�a�o�!��
��>��bX�w8(�0�f�o��p]$�ܷ0=8�6��~��l��.B�v�Vvc�q|T�(�)7U��FU��E]��F��xh����UDя��9��6<<���n�«��i�(Z�Ui;�'�1�*��c����\��
�E�Ӕ��}�Z;F�w�oߴ�?8��K�^y�G�!���@�|ڍ+ �)Wf�8��* %(��� J\���-����_����%|��*������� C�hǐ����� Cࠅ<`:��HW������)���3e� ^^�~�7Հ��Fu�[�M��Np���&%I*�NJ�*Ađ9�]����}��&�Ʌ��C���|��c~V��B�ܸ"��p&���tG(x��}8+�����&{����kp��t8��la��j3. �LN�?��b8j�@��y�9��h���x�pa�a�<���e8Er8P���@��U
� ����3��8P�E�C9�e����V�K0�qX:[Q��s��>
endobj
1 0 obj
<<
/Type /XObject
/Subtype /Form
/FormType 1
/PTEX.FileName (D:/jenkins/workspace/BuildRelease/01_Sources/TPS_ARXMLSerializationRules_779/../../80_Tooling/00_live/401_LaTexStyle/00_runtime/logo.pdf)
/PTEX.PageNumber 1
/PTEX.InfoDict 200 0 R
/BBox [0 0 726 74]
/Resources <<
/ProcSet [ /PDF ]
/ExtGState <<
/GS4 201 0 R
>>>>
/Length 1897
/Filter [/FlateDecode]
>>
stream
X�m�[�t5��{YA���,`$@b~$��%��9�i��_�e租��ǿ��Fd���-�?Fiy��������-���Y��ף�ʳ{��Ku�(k��#E�2&�����-�Q�/:��9��3�j���<�6F�y�-�ҏ2�%��6KKQ=�\)
��\V~n��7μ$�K�:k*Ƈ���97�O4*^x�i�:GM��+NYY5��y7]K�GˆG���%��2�W�;V�]v
n��
hŬU[*���r�H��1$&�Yr}�~�����=�*��jk��ֶ��\c����d�p��k�1<�����dG�YY#.�?��|�U������X��>��1�;�IP@P-F��iu&N[F���!GB4����V.s�V�h�Y�ťD�t6������ʅ�֕�#H*�0bm.�AX������fC�cD��0`ZV�E�/�h톄
h��: Cg�Atf�Fͣ�s��U�f��.��w�pvXu[���6��Q�Pxj.�k�UŔ�� ���C��D�"b�E��Dv��5]J�<5<%˄i�Ұ"�� aTm�h������K��vk�;�0����#@�k�p)r y��0��1*��� f|��%R�+�8���p��3�S/��p���E�}�b�f[��Z��%��픟B��'��ϵQZݩ�y �dym)G+�P��G�؆n���i�ΨP��|��@��BU
�=m2�����^v\���IVK�%ʎ=�Q��a�A����6��S$��F)F#d�� ��-p�&�9r$=~�K��,E#�y������[�VD��>I�z;� �gb����{�%0�Q��7*�X��%~d'���!Q��P�4>�h����B()�)�.d\)W�UW�c�FC-D(�ٕ�)�qJL;�����D��Š��ᳳf$b�Q��F��a�%Y�Ɇ�%�蕩���N Ka�k�� �.asuI�Lѡ��w:��`'��Z���.N��Q'V@��U34�L�� ��57���> Y���� �G Wޒ�Q�2(t�-D�;#Y�%�b��.�,~��<�?�WF�c�BC�#O}9�%wv�&pٿ�ϥ炳~�r$נ|�1y�Ш�=�RF0��D*��C$�
�\������]�n@m���9�yT����4�\�oi�C�u�M��̿G��A�tl�V��r��$�ו0s�?�,�����~�uҶ�ʗ�,�3BY�*�[��Q�2�l� k��2�mF��DE4 xG3��P�=�x#�W�d�� #����".��Tu
�d3XU�zN�{�k>wn=+�V�ߞ�4i���a���C��ŀ����N�Z�|a$������yH��&{}Aw�=�����1"��a��f2|u�;y0H��Q�8�$_�d��pcj��q¼�[q!�Z�'oE/A�������f@ ��1��"W_�p� Ʋ�^�!��{$�O����\5��I��:�X��z@ ��P/5�[����_AS'3��UJ�g����ᵍ=\94�~4)� �W�q�^�`�pK^N���-��c��o'����:Yo �%8 _���-yƣ���M���-8�]�!�5�%/���<��5�
endstream
endobj
200 0 obj
<<
/CreationDate (D:20040915135526-01'00')
/Creator (Adobe Illustrator\(R\) 9.0)
/Producer (Jaws PDF Creator v3.3.1711)
/Author (marquardt@N140)
/Title (autosar_logo.eps)
>>
endobj
201 0 obj
<<
/SA false
/Type /ExtGState
>>
endobj
194 0 obj
<<
/D [191 0 R /XYZ 69.866 808.885 null]
>>
endobj
196 0 obj
<<
/D [191 0 R /XYZ 70.866 733.166 null]
>>
endobj
192 0 obj
<<
/Font << /F32 195 0 R /F33 197 0 R /F22 198 0 R >>
/XObject << /Im1 1 0 R >>
/ProcSet [ /PDF /Text ]
>>
endobj
204 0 obj
<<
/Length 1106
/Filter /FlateDecode
>>
stream
x�}V�n�6}�W�b���r߶HS�h�m���B����$j%����;álI�,r8�3��~�D�σ(�<̅��B�%AYo�l�8Ic�&Kw4�y��Cwf��x(Q7�_����D�����}Q�,/A��X�RơIp8�؇�?~�y��eΞT��E�E��-�6 ��J�ۿ?qf<vQ���
�g��)g�><���G/�]��{H�/x�L��%I&�HdqI��t_ncΪB��(ZFŃ]�����s8�l���m#���7����[U�]�������7/$��)�躭T��$@EDt���=)�S�!���t�<�n�|��7x�Y��g�u�RE�`�� ��z�� Q��{qQ��\�E; %�5���/�xnt���Ӧz�8A,�+�&�ܛY��4u[4Z�T�TXZ�
�-UDA|8t3��~�wF~/ש/���B+�j(U3�z,�~(O���3HY`�/1X� �E]%Huᒇ�����0ZQ��((��N�ǡ$:goڞ�`��\�N�9����O �9g����R�^I�UѸ�݄���4��t>hzb�ϒ��#"�GL��+y�gb�1��>O��:9�|'a���(/y��]^RΗy����%/�H
�k`�` � �(�F����6㟢�J��FNW��L�=�H�_o�L�n^���L=N]��@�Q�r����\^�2�Nx/��Y��VG��4�+�#��(kjc�8��m+_�^ߴB��ك]l��Cn���/7�5�o���r���^�!2��ۭ?�9��շݖӌ��U�Տ*zy�������|%vh�8�����xxy_M��"���f"��=EO�Ü��7�тO���G�Δ��H��}��yK�e���>}v������y�\���!�U
endstream
endobj
203 0 obj
<<
/Type /Page
/Contents 204 0 R
/Resources 202 0 R
/MediaBox [0 0 595.276 841.89]
/Parent 199 0 R
>>
endobj
205 0 obj
<<
/D [203 0 R /XYZ 69.866 808.885 null]
>>
endobj
202 0 obj
<<
/Font << /F32 195 0 R /F33 197 0 R >>
/XObject << /Im1 1 0 R >>
/ProcSet [ /PDF /Text ]
>>
endobj
250 0 obj
<<
/Length 1161
/Filter /FlateDecode
>>
stream
x��]o�6���+t)]�!���y�Z�Mu(P�f��[�,e���GJ�bKt�+&)`�JxH><缇1���`�vF�+v�#1
�p��Hr�,��?g(Y�����W�n���ݖ8W����Hj���ٺo����f7BP�98�g��e�����N�r>��Ň_�x>��}Hv�O���7��b������&ɽߢ�`���� C� c���}y�o拪��[��O��;�ɾU���gzv>�Q�VA%��2yv��=��MR��>W�e�IZ�Ƹ�{4@���ce��eCe�x~Ș{��l��,{8K�O���'�멇j>`���$�h�j�W��i��W�����w�C5X� �"����aaح��kK!�"+����d@����SA�K��.{����(v����xS �&�O�m�4cT��<���dO�*H�By�!a����z�y�G�Ӂۂ�x-�p��h����B���e���`�|�"6:��7SDE�6.Z!L�{-o��u$����e�s�~t�.��:}l9,ӈU���<~�5K��-YM�A&�E�srD[�m�e%W~��U��~�-�<�nT~�K��z��yH��>�\�"�Lx�Iʢ�Y�H6Z��x�P#M�[~���UU57� �&�Mc�F%J���v��J��.F[�B�q���*\Eb��g~@�N�飩$~Z�Evº:�`�}Q�lJ�yY?S�'G9:�-�)���!%#υ5�N�:7�1ܝ�V��}�G�y��j������'1�.����M]�IU�֍��zC��:fW �HW�&):B
�M�o�<螷��뗷�K�*�N�F���� tKT/�#�:��)%� W5�������2+9ɺ>}�E@��X�,�-`z�`,3a� ��9� ��]E�M�p���4=G�-$+Ҽ�*��D�g@"�=���Dڂcx"݇J�����H�~"m�1j���Dڂax"-z�4�&�$l^
)�{�]�E'�����i+I����������V*T�1�8C��8B�GgY���&)=d�J#�(��C��y�H����M�۷3_��������شw��{�!
��V���Z���PO}�E=0f{���LWdﮪV��������O��ç�bh�Jh�2辽�f�ȴB�
endstream
endobj
249 0 obj
<<
/Type /Page
/Contents 250 0 R
/Resources 248 0 R
/MediaBox [0 0 595.276 841.89]
/Parent 199 0 R
/Annots [ 206 0 R 207 0 R 208 0 R 209 0 R 210 0 R 211 0 R 212 0 R 213 0 R 214 0 R 215 0 R 216 0 R 217 0 R 218 0 R 219 0 R 220 0 R 221 0 R 222 0 R 223 0 R 224 0 R 225 0 R 226 0 R 227 0 R 228 0 R 229 0 R 230 0 R 231 0 R 232 0 R 233 0 R 234 0 R 235 0 R 236 0 R 237 0 R 238 0 R 239 0 R 240 0 R 241 0 R 242 0 R 243 0 R 244 0 R 245 0 R 246 0 R ]
>>
endobj
206 0 obj
<<
/Type /Annot
/Subtype /Link
/Border[0 0 0]/H/I/C[1 0 0]
/Rect [69.87 687.604 152.26 698.359]
/A << /S /GoTo /D (chapter.1) >>
>>
endobj
207 0 obj
<<
/Type /Annot
/Subtype /Link
/Border[0 0 0]/H/I/C[1 0 0]
/Rect [87.803 667.18 248.176 678.211]
/A << /S /GoTo /D (section.1.1) >>
>>
endobj
208 0 obj
<<
/Type /Annot
/Subtype /Link
/Border[0 0 0]/H/I/C[1 0 0]
/Rect [69.87 646.757 233.471 657.787]
/A << /S /GoTo /D (chapter.2) >>
>>
endobj
209 0 obj
<<
/Type /Annot
/Subtype /Link
/Border[0 0 0]/H/I/C[1 0 0]
/Rect [87.803 624.062 199.854 637.089]
/A << /S /GoTo /D (section.2.1) >>
>>
endobj
210 0 obj
<<
/Type /Annot
/Subtype /Link
/Border[0 0 0]/H/I/C[1 0 0]
/Rect [115.3 609.616 254.154 622.643]
/A << /S /GoTo /D (subsection.2.1.1) >>
>>
endobj
211 0 obj
<<
/Type /Annot
/Subtype /Link
/Border[0 0 0]/H/I/C[1 0 0]
/Rect [115.3 597.442 234.333 608.197]
/A << /S /GoTo /D (subsection.2.1.2) >>
>>
endobj
212 0 obj
<<
/Type /Annot
/Subtype /Link
/Border[0 0 0]/H/I/C[1 0 0]
/Rect [87.803 582.996 190.839 593.752]
/A << /S /GoTo /D (section.2.2) >>
>>
endobj
213 0 obj
<<
/Type /Annot
/Subtype /Link
/Border[0 0 0]/H/I/C[1 0 0]
/Rect [115.3 566.135 309.302 579.581]
/A << /S /GoTo /D (subsection.2.2.1) >>
>>
endobj
214 0 obj
<<
/Type /Annot
/Subtype /Link
/Border[0 0 0]/H/I/C[1 0 0]
/Rect [115.3 554.212 243.347 564.86]
/A << /S /GoTo /D (subsection.2.2.2) >>
>>
endobj
215 0 obj
<<
/Type /Annot
/Subtype /Link
/Border[0 0 0]/H/I/C[1 0 0]
/Rect [115.3 537.244 411.912 550.689]
/A << /S /GoTo /D (subsection.2.2.3) >>
>>
endobj
216 0 obj
<<
/Type /Annot
/Subtype /Link
/Border[0 0 0]/H/I/C[1 0 0]
/Rect [115.3 525.32 276.199 535.968]
/A << /S /GoTo /D (subsection.2.2.4) >>
>>
endobj
217 0 obj
<<
/Type /Annot
/Subtype /Link
/Border[0 0 0]/H/I/C[1 0 0]
/Rect [115.3 508.352 316.678 521.797]
/A << /S /GoTo /D (subsection.2.2.5) >>
>>
endobj
218 0 obj
<<
/Type /Annot
/Subtype /Link
/Border[0 0 0]/H/I/C[1 0 0]
/Rect [69.87 488.072 137.316 501.374]
/A << /S /GoTo /D (chapter.3) >>
>>
endobj
219 0 obj
<<
/Type /Annot
/Subtype /Link
/Border[0 0 0]/H/I/C[1 0 0]
/Rect [69.87 461.527 172.536 474.973]
/A << /S /GoTo /D (appendix.A) >>
>>
endobj
220 0 obj
<<
/Type /Annot
/Subtype /Link
/Border[0 0 0]/H/I/C[1 0 0]
/Rect [87.803 441.104 259.042 454.55]
/A << /S /GoTo /D (section.A.1) >>
>>
endobj
221 0 obj
<<
/Type /Annot
/Subtype /Link
/Border[0 0 0]/H/I/C[1 0 0]
/Rect [115.3 429.073 271.094 439.829]
/A << /S /GoTo /D (subsection.A.1.1) >>
>>
endobj
222 0 obj
<<
/Type /Annot
/Subtype /Link
/Border[0 0 0]/H/I/C[1 0 0]
/Rect [115.3 412.212 285.046 425.658]
/A << /S /GoTo /D (subsection.A.1.2) >>
>>
endobj
223 0 obj
<<
/Type /Annot
/Subtype /Link
/Border[0 0 0]/H/I/C[1 0 0]
/Rect [115.3 400.182 277.729 410.937]
/A << /S /GoTo /D (subsection.A.1.3) >>
>>
endobj
224 0 obj
<<
/Type /Annot
/Subtype /Link
/Border[0 0 0]/H/I/C[1 0 0]
/Rect [87.803 383.321 259.042 396.766]
/A << /S /GoTo /D (section.A.2) >>
>>
endobj
225 0 obj
<<
/Type /Annot
/Subtype /Link
/Border[0 0 0]/H/I/C[1 0 0]
/Rect [115.3 371.29 322.262 382.045]
/A << /S /GoTo /D (subsection.A.2.1) >>
>>
endobj
226 0 obj
<<
/Type /Annot
/Subtype /Link
/Border[0 0 0]/H/I/C[1 0 0]
/Rect [115.3 354.429 336.213 367.875]
/A << /S /GoTo /D (subsection.A.2.2) >>
>>
endobj
227 0 obj
<<
/Type /Annot
/Subtype /Link
/Border[0 0 0]/H/I/C[1 0 0]
/Rect [115.3 342.398 328.897 353.154]
/A << /S /GoTo /D (subsection.A.2.3) >>
>>
endobj
228 0 obj
<<
/Type /Annot
/Subtype /Link
/Border[0 0 0]/H/I/C[1 0 0]
/Rect [115.3 327.952 325.262 338.983]
/A << /S /GoTo /D (subsection.A.2.4) >>
>>
endobj
229 0 obj
<<
/Type /Annot
/Subtype /Link
/Border[0 0 0]/H/I/C[1 0 0]
/Rect [115.3 311.092 339.214 324.537]
/A << /S /GoTo /D (subsection.A.2.5) >>
>>
endobj
230 0 obj
<<
/Type /Annot
/Subtype /Link
/Border[0 0 0]/H/I/C[1 0 0]
/Rect [115.3 299.061 331.897 310.091]
/A << /S /GoTo /D (subsection.A.2.6) >>
>>
endobj
231 0 obj
<<
/Type /Annot
/Subtype /Link
/Border[0 0 0]/H/I/C[1 0 0]
/Rect [87.803 282.2 259.042 295.645]
/A << /S /GoTo /D (section.A.3) >>
>>
endobj
232 0 obj
<<
/Type /Annot
/Subtype /Link
/Border[0 0 0]/H/I/C[1 0 0]
/Rect [115.3 270.169 322.262 280.925]
/A << /S /GoTo /D (subsection.A.3.1) >>
>>
endobj
233 0 obj
<<
/Type /Annot
/Subtype /Link
/Border[0 0 0]/H/I/C[1 0 0]
/Rect [115.3 253.308 336.213 266.754]
/A << /S /GoTo /D (subsection.A.3.2) >>
>>
endobj
234 0 obj
<<
/Type /Annot
/Subtype /Link
/Border[0 0 0]/H/I/C[1 0 0]
/Rect [115.3 241.277 328.897 252.033]
/A << /S /GoTo /D (subsection.A.3.3) >>
>>
endobj
235 0 obj
<<
/Type /Annot
/Subtype /Link
/Border[0 0 0]/H/I/C[1 0 0]
/Rect [115.3 226.832 325.262 237.862]
/A << /S /GoTo /D (subsection.A.3.4) >>
>>
endobj
236 0 obj
<<
/Type /Annot
/Subtype /Link
/Border[0 0 0]/H/I/C[1 0 0]
/Rect [115.3 209.971 339.214 223.416]
/A << /S /GoTo /D (subsection.A.3.5) >>
>>
endobj
237 0 obj
<<
/Type /Annot
/Subtype /Link
/Border[0 0 0]/H/I/C[1 0 0]
/Rect [115.3 197.94 331.897 208.97]
/A << /S /GoTo /D (subsection.A.3.6) >>
>>
endobj
238 0 obj
<<
/Type /Annot
/Subtype /Link
/Border[0 0 0]/H/I/C[1 0 0]
/Rect [87.803 181.079 263.024 194.525]
/A << /S /GoTo /D (section.A.4) >>
>>
endobj
239 0 obj
<<
/Type /Annot
/Subtype /Link
/Border[0 0 0]/H/I/C[1 0 0]
/Rect [115.3 169.048 326.243 179.804]
/A << /S /GoTo /D (subsection.A.4.1) >>
>>
endobj
240 0 obj
<<
/Type /Annot
/Subtype /Link
/Border[0 0 0]/H/I/C[1 0 0]
/Rect [115.3 152.187 340.194 165.633]
/A << /S /GoTo /D (subsection.A.4.2) >>
>>
endobj
241 0 obj
<<
/Type /Annot
/Subtype /Link
/Border[0 0 0]/H/I/C[1 0 0]
/Rect [115.3 140.157 332.878 150.912]
/A << /S /GoTo /D (subsection.A.4.3) >>
>>
endobj
242 0 obj
<<
/Type /Annot
/Subtype /Link
/Border[0 0 0]/H/I/C[1 0 0]
/Rect [115.3 125.711 329.243 136.741]
/A << /S /GoTo /D (subsection.A.4.4) >>
>>
endobj
243 0 obj
<<
/Type /Annot
/Subtype /Link
/Border[0 0 0]/H/I/C[1 0 0]
/Rect [115.3 108.85 343.195 122.296]
/A << /S /GoTo /D (subsection.A.4.5) >>
>>
endobj
244 0 obj
<<
/Type /Annot
/Subtype /Link
/Border[0 0 0]/H/I/C[1 0 0]
/Rect [115.3 96.819 335.878 107.85]
/A << /S /GoTo /D (subsection.A.4.6) >>
>>
endobj
245 0 obj
<<
/Type /Annot
/Subtype /Link
/Border[0 0 0]/H/I/C[1 0 0]
/Rect [87.803 79.958 263.024 93.404]
/A << /S /GoTo /D (section.A.5) >>
>>
endobj
246 0 obj
<<
/Type /Annot
/Subtype /Link
/Border[0 0 0]/H/I/C[1 0 0]
/Rect [115.3 67.927 326.243 78.683]
/A << /S /GoTo /D (subsection.A.5.1) >>
>>
endobj
251 0 obj
<<
/D [249 0 R /XYZ 69.866 808.885 null]
>>
endobj
252 0 obj
<<
/D [249 0 R /XYZ 70.866 742.525 null]
>>
endobj
248 0 obj
<<
/Font << /F32 195 0 R /F33 197 0 R >>
/XObject << /Im1 1 0 R >>
/ProcSet [ /PDF /Text ]
>>
endobj
260 0 obj
<<
/Length 475
/Filter /FlateDecode
>>
stream
x�ՕMO�0���s�6�o�[�-ڬ��V(ۆn�6m���I��"�U���μ�<��E��y"B� �!�ւ��;�`�H�.���}a㶝z �G�:� r�h��WgQ�m�d�љ� O���=��!LipNrgdS�'����Oʤ�d\,)�������˺��G��bEg� 57� ͵�Q�$�2��\��.��:�JdB4� F$}�l}9�9��`�{�a����p�5��o^͊i'�Q!�,�@�O�� O�N�ɲzwpϔ��Sf���ڄ����P����8T�1,���p�a��p���8��+�ӺZ�;e��/�7@�lf�I� ������;��Iw0����P>�k�� e^)rUTM!1�W��rї����v*�Y{�|ZwIyj�m�%|
�ƨX�u�J���ҿ+�o��]{dXO�!�N�b��Υǔ)����!�?���kfo6�cE?�����
endstream
endobj
259 0 obj
<<
/Type /Page
/Contents 260 0 R
/Resources 258 0 R
/MediaBox [0 0 595.276 841.89]
/Parent 199 0 R
/Annots [ 247 0 R 253 0 R 254 0 R 255 0 R 256 0 R 257 0 R ]
>>
endobj
247 0 obj
<<
/Type /Annot
/Subtype /Link
/Border[0 0 0]/H/I/C[1 0 0]
/Rect [115.3 717.554 340.194 731]
/A << /S /GoTo /D (subsection.A.5.2) >>
>>
endobj
253 0 obj
<<
/Type /Annot
/Subtype /Link
/Border[0 0 0]/H/I/C[1 0 0]
/Rect [115.3 705.523 332.878 716.279]
/A << /S /GoTo /D (subsection.A.5.3) >>
>>
endobj
254 0 obj
<<
/Type /Annot
/Subtype /Link
/Border[0 0 0]/H/I/C[1 0 0]
/Rect [115.3 691.077 329.243 702.108]
/A << /S /GoTo /D (subsection.A.5.4) >>
>>
endobj
255 0 obj
<<
/Type /Annot
/Subtype /Link
/Border[0 0 0]/H/I/C[1 0 0]
/Rect [115.3 674.217 343.195 687.662]
/A << /S /GoTo /D (subsection.A.5.5) >>
>>
endobj
256 0 obj
<<
/Type /Annot
/Subtype /Link
/Border[0 0 0]/H/I/C[1 0 0]
/Rect [115.3 662.186 335.878 673.216]
/A << /S /GoTo /D (subsection.A.5.6) >>
>>
endobj
257 0 obj
<<
/Type /Annot
/Subtype /Link
/Border[0 0 0]/H/I/C[1 0 0]
/Rect [69.87 641.762 216.351 652.793]
/A << /S /GoTo /D (appendix.B) >>
>>
endobj
261 0 obj
<<
/D [259 0 R /XYZ 69.866 808.885 null]
>>
endobj
258 0 obj
<<
/Font << /F32 195 0 R >>
/XObject << /Im1 1 0 R >>
/ProcSet [ /PDF /Text ]
>>
endobj
268 0 obj
<<
/Length 890
/Filter /FlateDecode
>>
stream
xڥV[��6~ϯ�#H���`ؗj:�m��L��4]�XⰨ�R �m}6��8�D�H���w|.�(C=N<)bHP�O���=!��]��p���vfÄ�`衚�?JD�
�:���/��y﹈1�����B0�8�%"�P�D������G�"���1�