编辑推荐: |
本文主要介绍了ARXML文件的注意事项、常见问题以及解读与编辑相关内容。 希望对您的学习有所帮助。
本文来自于CSDN,由火龙果软件Linda编辑、推荐。 |
|
1 摘要
本文主要对ARXML文件的注意事项、常见问题以及解读与编辑进行详细介绍。
上文回顾: ARXML文件解析-1
2 常见ARXML文件注意事项以及常见问题
2.1 注意事项
语法规则
起始符:<?xml(严格小写,无空格)。
属性顺序:version → encoding → standalone(顺序不可调换)。
引号:属性值必须用 ASCII双引号 " 包裹。
结束符:?>(无空格)
ARXML文件的特殊要求
工具链兼容性:
ARXML常用于汽车软件架构(如AUTOSAR),需确保工具链(如Vector PREEvision、ETAS
ISOLAR)能解析该声明。
编码一致性:
若文件含非英文字符(如中文注释),必须保存为UTF-8且声明匹配,否则会乱码。
格式验证:
建议通过XML验证工具(如Notepad++ XML插件、在线校验器)检查语法。
工具链注意事项
语言切换:
工具(如Vector PREEvision)会根据<LANGUAGE>显示默认语言的文本。
若未找到匹配语言,可能回退到EN或显示空值。
版本兼容性:
AUTOSAR R4.0+ 强制要求 <ADMIN-DATA>,但部分旧工具可能忽略其内容。
验证规则:
<L-2> 中的语言代码必须在 <USED-LANGUAGES> 中声明,否则可能报错。
工具验证建议
XML语法检查:
使用 XMLSpy 或 Oxygen XML Editor 验证文件格式。
在线工具:https://www.xmlvalidation.com/
编码检测:
通过 Notepad++ → 「编码」菜单确认文件编码。
AUTOSAR工具链验证:
在Vector PREEvision或ETAS ISOLAR中导入文件,检查是否报错。
TAG的命名规则
大小写敏感:
所有TAG名称区分大小写(如<SHORT-NAME>不能写成<short-name>)。
命名风格:
使用大写字母+连字符(如<ECUC-CONTAINER-VALUE>)。
唯一性:
同一父元素下,<SHORT-NAME>必须唯一。
如何查看完整的TAG类型?
AUTOSAR官方XSD文件:
下载对应版本的XSD(如AUTOSAR_4-2-2.xsd),所有合法TAG均在其中定义。
工具链文档:
Vector PREEvision/ETAS ISOLAR的文档会列出支持的TAG类型。
实例文件参考:
通过工具生成的ARXML文件学习实际用法。
提示:具体TAG类型需参考AUTOSAR版本对应的规范文档,不同版本(如R4.0 vs R21-11)可能有差异。
2.2 常见问题
错误1:XML parsing failure: Invalid byte 1 of 1-byte
UTF-8 sequence
原因:文件实际编码与声明的encoding属性不一致。
错误2:XML declaration allowed only at the start of the
document
原因:XML声明前有空格、注释或其他内容。
错误3:Invalid content starting with 'AR-PACKAGE'
原因:元素顺序不符合XSD要求(如AR-PACKAGE必须位于AR-PACKAGES内)。
错误4:Undefined UUID reference
原因:引用的UUID未在文件中定义。
错误5:Encoding mismatch
解决:确保文件实际编码与XML声明的encoding一致(推荐UTF-8无BOM)。
错误6:Unbound namespace prefix 'xsi'
原因:未声明xmlns:xsi命名空间。
解决:添加 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"。
错误7:SchemaLocation Warning: No XSD found
原因:xsi:schemaLocation指定的XSD文件路径错误。
解决:确保XSD文件存在,并修正路径(如使用绝对路径 C:\AUTOSAR\AUTOSAR_4-2-2.xsd)。
错误8:Element not allowed in namespace
原因:元素未在默认命名空间或指定命名空间中定义。
解决:检查命名空间URI是否与AUTOSAR版本匹配。
错误9:未定义的TAG
<MY-CUSTOM-TAG>
Value
</MY-CUSTOM-TAG>
|
后果:工具链报错(如Unknown element 'MY-CUSTOM-TAG')。
错误10:TAG顺序错误
<AR-PACKAGE>
<ELEMENTS>...</ELEMENTS>
<SHORT-NAME>Com</SHORT-NAME>
</AR-PACKAGE>
|
解决:遵循XSD中定义的子元素顺序。
其他错误表格示例:
2.3 答疑
Q1: 能否省略<ADMIN-DATA>?
答案:不建议。AUTOSAR规范要求保留该节点(内容可为空),否则工具可能警告。
Q2: 如何添加自定义语言(如法语)?
<USED-LANGUAGES>
<L-2 L="FR" xml:space="default"/>
</USED-LANGUAGES>
<DESC>
<L-2 L="FR" xml:space="default">Configuration Réseau</L-2>
</DESC>
|
Q3: xml:space="default" 能否省略?
答案:可以省略(工具通常默认处理为default),但显式声明可提高可读性。
Q4: UUID是否可以手动指定?
答案:可以,但需确保全局唯一性。推荐使用工具(如Vector PREEvision)自动生成。
Q5: <SHORT-NAME>能否重复?
答案:同一父元素下不能重复,但不同包内可以同名(如两个<AR-PACKAGE>均可包含<SHORT-NAME>Comunication)。
Q6: 如何定义具体的转换链(Transformer Chain)?
答案:需在另一个<AR-PACKAGE>中定义<TRANSFORMER-CHAIN>,并通过<TARGET-REF>引用其路径或UUID。
Q7: <L-10>能否嵌套其他标签?
答案:通常不允许,其内容应为纯文本。若需结构化内容,应使用其他专用标签(如<DESC>中的<P>段落标签,需工具支持)。
Q8: 为什么工具不显示<L-10>的内容?
可能原因:
未在<USED-LANGUAGES>中声明对应语言。
工具未激活多语言切换功能。
标签名称不兼容(如工具期望<LONG-TEXT>而非<L-10>)。
Q9: 如何提取所有语言的<L-10>文本?
方法:
使用XPath查询(示例):
//L-10[@L='EN']/text() <!-- 提取英文文本 -->
//L-10[@L='CN']/text() <!-- 提取中文文本 -->
|
3 ARXML解读/编辑指南
3.1 解读ARXML文件的步骤
步骤1:确定目标内容
通信配置:查找EthernetFrame、PDU、Signal相关标签。
服务接口:搜索SERVICE-INTERFACE、METHOD、EVENT。
ECU信息:定位ECU-INSTANCE、ETHERNET-INTERFACE。
步骤2:理解元素属性
关键属性示例:
<SERVICE-ID>0x1234</SERVICE-ID>:服务唯一标识符(16进制)。
<METHOD-ID>0x01</METHOD-ID>:方法ID,与服务内唯一。
<START-BIT>0</START-BIT>:信号在PDU中的起始位。
步骤3:追踪引用关系
通过<REF>或<TYPE-TREF>追踪跨元素的依赖:
<SIGNAL-TO-PDU-MAPPING>
<I-SIGNAL-REF DEST="I-SIGNAL">/Signals/SpeedSignal</I-SIGNAL-REF>
</SIGNAL-TO-PDU-MAPPING>
|
步骤4:验证逻辑一致性
检查ID唯一性(如SERVICE-ID不可重复)。
确认信号映射的位范围不重叠(如两个信号不能占用PDU的同一段比特位)。
3.2 编辑ARXML文件的方法
方法1:使用专业工具(推荐)
工具示例:
Vector PREEvision:图形化编辑通信矩阵和服务接口。
ETAS ISOLAR:AUTOSAR兼容的完整开发环境。
Elektrobit Tresos:专注于基础软件配置。
优势:自动处理引用关系、语法验证和版本兼容性。
方法2:手动编辑(需谨慎)
文本编辑器:使用VSCode、Notepad++等支持XML高亮和折叠的工具。
注意事项:
备份文件:编辑前复制原始文件以防错误。
修改属性:直接调整标签内的值(如更改<CYCLE-TIME>100</CYCLE-TIME>为200)。
添加元素:遵循现有结构插入新节点(如新增METHOD)。
处理引用:确保新元素的ID唯一,且引用路径正确。
示例:手动添加一个方法
<METHODS>
<CLIENT-SERVER-OPERATION>
<SHORT-NAME>NewMethod</SHORT-NAME>
<METHOD-ID>0x02</METHOD-ID>
<CALL-TYPE>FIRE_AND_FORGET</CALL-TYPE>
</CLIENT-SERVER-OPERATION>
</METHODS>
|
方法3:脚本自动化
Python + XML库:使用xml.etree.ElementTree解析和修改ARXML。
示例脚本:批量修改服务端口号
import xml.etree.ElementTree as ET
tree = ET.parse('example.arxml')
root = tree.getroot()
for elem in root.findall(".//ENDPOINT-PORT"):
elem.text = "30500"
tree.write('modified.arxml')
|
3.3 验证与调试
验证工具:
XML Schema验证:使用AUTOSAR提供的XSD文件检查语法。
xmllint --schema AUTOSAR_4-2-2.xsd example.arxml
|
AUTOSAR工具链:如ISOLAR的完整性检查功能,检测逻辑错误。
常见错误处理:
ID冲突:重复的SERVICE-ID或METHOD-ID导致通信失败。
引用失效:删除被引用的元素后未更新相关引用。
位映射错误:信号超出PDU长度或位重叠。
4 总结
ARXML文件通过分层包和元素描述汽车电子系统,解读需关注模块功能及引用关系,编辑推荐使用专业工具或谨慎手动调整,并始终验证文件正确性。本专题相关介绍有利于更好地理解ARXML文件。
|