2、开发环境搭建:ISOLAR-A与DaVinci Developer安装、工程创建、网络管理模块导入

好,咱们直接进入正题。这一章,我带你把吃饭的家伙先支棱起来。

做AUTOSAR网络管理,说白了就两样工具绕不开:ISOLAR-ADaVinci Developer。一个管系统级配置,一个管SWC和RTE。我刚开始接触那会儿,也分不清谁该干啥,后来踩过坑才明白——ISOLAR-A是画骨架的,DaVinci是填血肉的

2.1 工具链概览:谁负责什么?

先理清楚这两个工具的分工,不然你后面会乱。

工具 主要职责 我的理解
ISOLAR-A 系统级配置、ECU提取、BSW模块配置(含CanNm) 相当于总设计师,定通信矩阵、定网络拓扑
DaVinci Developer SWC设计、Port接口定义、RTE生成 相当于软件架构师,管应用层怎么跟底层交互

嗯,这里要注意:网络管理模块(CanNm)的配置主要在ISOLAR-A里完成。DaVinci Developer更多是帮你把网络管理状态机暴露给应用层。

2.2 ISOLAR-A安装与工程创建

安装过程我就不啰嗦了,ETAS的安装包一路Next就行。但有几个坑,我帮你提前排掉。

避坑指南: 我曾经因为安装路径带了中文,结果ISOLAR-A死活打不开工程。后来发现,安装路径和工作空间路径都不要有中文和空格。老老实实用全英文路径。

2.2.1 创建系统级工程

打开ISOLAR-A,选 File → New → System Project。这里你会看到几个模板选项:

  • Empty System:从零开始,适合老手
  • From ARXML:导入已有的系统描述文件,团队协作常用

我个人习惯选 Empty System,然后手动导入通信矩阵(DBC或LDF)。为什么?因为这样我能清楚每一步做了什么,心里有底。

创建完后,你会看到左侧的 System Explorer 视图。这里就是你的主战场了。

2.2.2 导入网络管理模块

这一步是关键。ISOLAR-A默认不会自动给你配好CanNm,你得手动把BSW模块加进来。

  1. 在System Explorer里,找到你的ECU实例
  2. 右键 → Add BSW Module
  3. 在弹出的列表里找到 CanNm,勾上
  4. 系统会自动帮你把依赖的模块(比如Can、EcuM)也带上
小技巧: 如果你发现列表里没有CanNm,八成是你的ISOLAR-A插件没装全。去 Help → Install New Software 里补上 ETAS BSW Package

导入成功后,你会看到CanNm出现在ECU的BSW模块列表里。双击它,就能进入配置界面了。

2.3 DaVinci Developer安装与工程创建

DaVinci Developer的安装相对简单。但有一点我要强调:版本一定要跟ISOLAR-A匹配。我见过有人用ISOLAR-A 2020配DaVinci Developer 2019,结果ARXML导来导去全是兼容性报错。

2.3.1 创建SWC工程

打开DaVinci Developer,选 File → New → Software Project。这里要注意:

  • Project Name:最好跟你的ECU名字一致,方便管理
  • Template:选 Empty Project,别选带示例的,那些示例反而容易干扰你

创建完后,你会看到一个空白的 Component Tree。嗯,这里先不急,等我们把ISOLAR-A的ARXML导过来再说。

2.3.2 导入ISOLAR-A的ARXML

在ISOLAR-A里,把你的系统配置导出成ARXML:

File → Export → ARXML
选择你的ECU实例
勾上 "Include BSW Configuration"
点击 Finish

然后在DaVinci Developer里:

File → Import → ARXML
选择刚才导出的文件
确保 "Merge with existing" 是勾选状态
重点: 导入后,你会看到CanNm相关的Port和Interface自动出现在Component Tree里。这就是ISOLAR-A和DaVinci Developer联动的结果。如果没出现,回去检查ISOLAR-A里CanNm的 Communication Interface 有没有配好。

2.4 网络管理模块的初步配置

好,工具搭好了,工程也建了。现在咱们看看CanNm模块长什么样。

在ISOLAR-A里打开CanNm配置,你会看到一堆参数。别慌,咱们先关注几个核心的:

参数名 作用 我常用的值
CanNmMsgCycleTime 网络管理报文发送周期 1000 ms(标准)
CanNmMsgTimeoutTime 超时时间,超过这个时间没收到NM报文就认为节点挂了 3000 ms(3个周期)
CanNmRepeatMsgTime 重复报文阶段的总时间 2000 ms
CanNmNodeId 当前节点的ID,用于源地址标识 根据项目分配

这些参数怎么来的?说白了就是跟OEM或者系统需求定的。我建议你一开始先用标准值,等后面调试时再微调。

注意: CanNmMsgTimeoutTime 一定要大于 CanNmMsgCycleTime 的2倍以上。我曾经在一个项目里设成了1.5倍,结果网络稍微有点抖动就误报超时,排查了一整天。

2.5 验证环境是否搭好

配置完了,怎么知道环境没问题?我一般做三步验证:

  1. ARXML导出导入无报错:ISOLAR-A导出的ARXML,DaVinci Developer能顺利导入,没有红色错误
  2. 代码生成能跑通:在ISOLAR-A里点 Generate Code,看控制台有没有Error
  3. RTE能生成:在DaVinci Developer里点 Generate RTE,确认没有接口不匹配的问题

这三步都过了,恭喜你,开发环境算是真正搭起来了。

2.6 本章小结

嗯,这一章内容不少,但都是实打实的操作。你想想看,工具链没搭好,后面所有配置都是空中楼阁。我个人习惯是每做一个新项目,都会重新走一遍这个流程,确保环境是干净的。

下一章,咱们就要真正进入CanNm的核心配置了——网络管理状态机。到时候我会把 Repeat Message StateNormal Operation State 的切换逻辑掰开揉碎讲给你听。

公众号:蓝海资料掘金营,微信deep3321