4. ARXML导入与导出
ARXML的导出,说白了就是把你在CANoe里配好的通信矩阵、ECU行为、信号映射这些东西,再吐回成标准的AUTOSAR描述文件。很多人觉得导入难,其实导出才是真正容易踩坑的地方——我见过太多人导出的文件,拿到别的工具里根本打不开。
这一章,我就带你走一遍完整的导出流程。从菜单入口开始,到选项配置,最后验证文件对不对。每一步我都会告诉你,哪些地方容易出问题。
4.1 导出菜单路径
先找到入口。CANoe的ARXML导出功能藏得不算深,但版本不同位置略有差异。我以CANoe 15.x为例,这是最常用的版本。
操作路径如下:
- 打开你的CANoe工程,确保已经加载了ARXML文件(没加载的话,导出选项是灰色的)
- 点击菜单栏 File → Export → ARXML...
- 或者直接在 Simulation → Bus Systems 里,右键点击你的总线类型(比如CAN、LIN、FlexRay),选择 Export ARXML
如果你用的是CANoe 16或17,路径稍微有点变化:
| CANoe版本 | 菜单路径 | 备注 |
|---|---|---|
| 15.x | File → Export → ARXML... | 经典路径,最稳定 |
| 16.x | File → Export → AUTOSAR → ARXML... | 多了AUTOSAR子菜单 |
| 17.x | Home → Export → ARXML | Ribbon界面,位置变了 |
嗯,这里要注意:不管哪个版本,导出前一定要确认你的工程里至少有一个配置好的ECU。空工程点导出,只会弹出一个错误提示框。
4.2 导出选项配置
点完导出,会弹出一个对话框。这才是真正的重头戏。选项配不对,导出的文件就是废的。
对话框里主要有以下几块配置:
4.2.1 基本配置
- Export File Path:输出路径。我建议单独建一个文件夹,别跟源文件混在一起。
- ARXML Version:版本选择。常见的有4.2.2、4.3.0、4.4.0。选哪个?看你下游工具支持什么版本。我一般选4.3.0,兼容性最好。
- Export Scope:导出范围。可以选整个工程,也可以只选某个ECU或某个总线。
4.2.2 内容过滤选项
这部分最容易让人懵。选项很多,但真正需要动的就几个:
| 选项名称 | 说明 | 我的建议 |
|---|---|---|
| Include Signals | 是否包含信号定义 | 默认勾选,别动 |
| Include PDUs | 是否包含PDU结构 | 默认勾选,别动 |
| Include ECU Extract | 是否只导出ECU级别的配置 | 看需求。如果对方只要单个ECU的配置,勾上 |
| Include System Signals | 系统信号(跨ECU的) | 我一般勾选,除非明确不需要 |
| Include Data Mapping | 数据映射关系 | 如果你用了Signal Mapping,必须勾 |
你想想看,这些选项其实就是在控制导出的粒度。勾得太多,文件会很大;勾得太少,对方拿过去缺胳膊少腿。我的原则是:不确定的就勾上,大不了对方自己删。
4.2.3 高级选项
点开对话框里的 Advanced 按钮,还有几个隐藏选项:
- Generate Short Names:生成短名称。建议勾选,有些工具对长名称支持不好。
- Include Comments:包含注释。我强烈建议勾上。你写的注释,可能就是别人调试时的救命稻草。
- Validate Before Export:导出前先做校验。这个必须勾!我后面会细说。
4.3 导出文件验证
文件导出来了,别急着发。先做三步验证。这是我个人的工作流程,用了好几年,基本没出过问题。
4.3.1 第一步:结构完整性检查
用文本编辑器(我推荐Notepad++或VS Code)打开导出的ARXML文件。别怕,不用全看,就看几个关键点:
- 文件开头是不是
<?xml version="1.0" encoding="utf-8"?> - 根节点是不是
<AUTOSAR> - 文件结尾是不是
</AUTOSAR> - 有没有明显的乱码或空行
如果这些都对不上,那基本就是导出失败了。我遇到过几次,都是因为磁盘空间不够,文件写到一半停了。
4.3.2 第二步:Schema校验
这一步很多人会跳过,但我建议你别省。CANoe自带了ARXML的Schema文件,你可以手动做一次校验:
# 用xmllint做校验(Windows下可以用Git Bash)
xmllint --noout --schema AUTOSAR_4-3-0.xsd your_exported_file.arxml
# 如果输出为空,说明校验通过
# 如果有错误,会显示具体行号和错误信息
当然,如果你不想敲命令,也可以用CANoe自带的校验功能。在导出对话框里勾了 Validate Before Export 的话,CANoe会在导出完成后自动弹出一个校验结果窗口。
4.3.3 第三步:反向导入验证
这是最笨但最有效的方法。把导出的ARXML文件,重新导入到一个空白的CANoe工程里。如果导入成功,且所有信号、PDU、ECU信息都完整,那这个文件就是可用的。
具体操作:
- 新建一个CANoe工程
- File → Import → ARXML...,选择你刚导出的文件
- 导入完成后,检查Simulation Setup里的ECU列表
- 随便点开一个ECU,看信号和PDU是不是都在
如果反向导入报错,那就说明导出文件有问题。别慌,回去检查导出选项,多半是某个过滤选项没勾对。
4.4 导出流程总览
说了这么多,我画了一张流程图,把整个导出流程串起来。你照着这个走,基本不会漏步骤。
这张图里,我把整个流程分成了5步。其中第3步(配置导出选项)和第5步(文件验证)是红色和紫色的节点,说明这两个地方最容易出问题。你照着走一遍,基本就能拿到一个可用的ARXML文件了。