3. RTE配置工具入门:Vector DaVinci Configurator与EB tresos Studio的界面与基本操作
好,咱们进入第三讲。说实话,很多刚接触AUTOSAR的朋友,一上来就被这两个工具搞懵了——DaVinci Configurator和EB tresos Studio,到底选哪个?界面长得也不一样,操作逻辑也有区别。我当年第一次打开DaVinci时,盯着满屏的英文菜单愣了好几分钟。
别急,这一讲我就带你把这俩工具的底裤扒干净。你想想看,RTE配置说白了就是给ECU画一张「谁跟谁通信」的地图,工具只是画笔而已。咱们先搞清楚画笔怎么用,后面画图才顺手。
3.1 两大工具的核心定位
先给个结论:DaVinci Configurator偏重配置灵活性,EB tresos Studio偏重代码生成效率。这不是说谁好谁差,而是设计哲学不同。
| 对比维度 | Vector DaVinci Configurator | EB tresos Studio |
|---|---|---|
| 开发商 | Vector Informatik | Elektrobit (EB) |
| 核心优势 | 配置项丰富,支持深度定制 | 代码生成速度快,模板化程度高 |
| 上手难度 | 中等偏上,菜单层级较深 | 相对友好,向导式操作多 |
| 典型场景 | 复杂ECU、多核、多分区 | 标准ECU、快速原型、量产项目 |
| 许可证模式 | 按模块授权,价格较高 | 按项目授权,性价比不错 |
我个人习惯是:做前期架构探索时用DaVinci,因为它的配置项多,可以随时调整;到了量产阶段,我倾向于用EB tresos,生成代码稳定,不容易出幺蛾子。当然,这完全看团队积累,没有标准答案。
3.2 DaVinci Configurator界面速览
打开DaVinci Configurator,你会看到这样一个布局——嗯,我第一次看到时也觉得信息量有点大。
界面分四大块,我一个个说:
- 左侧项目浏览器:树形结构,展示SWC、RTE、BSW等模块。双击任意节点,右侧编辑区就会显示对应的配置页。
- 中央编辑区:核心工作区。配置RTE端口、连接、runnables都在这里。支持表格和图形两种视图,我一般用表格视图,信息更密集。
- 右侧属性面板:选中某个元素后,这里显示它的详细属性。比如端口的数据类型、触发方式、周期等。
- 底部状态栏:显示当前项目状态、错误和警告数量。嗯,这里要养成习惯——每次生成代码前,先瞄一眼错误数是不是0。
3.3 EB tresos Studio界面速览
再来看EB tresos Studio。它的界面风格跟DaVinci不太一样,更「清爽」一些。我个人觉得EB的布局更符合直觉,尤其是新手。
EB tresos Studio的界面特点:
- 配置导航器:类似资源管理器,按模块组织。双击直接打开配置页,操作路径短。
- 中央编辑区:支持表格和图形两种模式。图形模式下可以直接拖拽连线,非常直观。我教新人时,都让他们先用图形模式理解端口连接关系。
- 属性视图:选中元素后,右侧显示属性。跟DaVinci类似,但EB的布局更紧凑。
- 底部输出区:显示配置验证结果、代码生成日志。每次生成代码前,先看这里有没有红色错误。
3.4 基本操作:创建第一个RTE配置
光说不练假把式。咱们走一遍基本流程,以DaVinci为例(EB的操作逻辑类似,只是菜单位置不同)。
3.4.1 新建项目
打开DaVinci Configurator,点击 File → New → Project。输入项目名称,选择模板。这里要注意:模板决定了初始的BSW模块集合。如果你做的是Classic AUTOSAR,选 Classic Platform 模板;如果是Adaptive,选 Adaptive Platform。
我曾经犯过一个错:选了Adaptive模板,结果后面发现项目其实是Classic的,所有配置都得重来。所以第一步就确认好平台类型。
3.4.2 导入SWC描述文件
项目建好后,第一步是导入SWC的ARXML文件。这些文件通常由系统设计师提供,里面定义了SWC的端口、数据类型、runnables等。
操作路径:Project → Import → ARXML Files。选择文件后,工具会自动解析并生成SWC实例。
Validate,看有没有未匹配的端口。
3.4.3 配置端口连接
在RTE配置页中,找到 Port Connections 选项卡。你会看到所有SWC的端口列在两侧,中间是连接线。
操作很简单:从源端口拖到目标端口。工具会自动检查数据类型是否匹配。如果不匹配,会弹出红色警告。
举个例子:
// 假设有两个SWC:
// SpeedController 提供端口:VehicleSpeed (uint32)
// DisplaySWC 需求端口:SpeedValue (uint32)
// 操作:从 VehicleSpeed 拖到 SpeedValue
// 工具自动生成连接配置:
<CONNECTION>
<SOURCE-PORT>SpeedController/VehicleSpeed</SOURCE-PORT>
<TARGET-PORT>DisplaySWC/SpeedValue</TARGET-PORT>
<DATA-TYPE>uint32</DATA-TYPE>
</CONNECTION>
3.4.4 配置Runnable调度
端口连好了,还得告诉RTE:这些runnable什么时候执行?在 Runnable Mapping 页中,你可以设置:
- 触发事件:周期性(如每10ms)、数据到达触发、外部中断触发等
- 优先级:数值越小优先级越高
- 任务分配:把runnable分配到哪个OS任务中
这里有个坑:不要把两个周期相差很大的runnable放在同一个任务里。比如一个1ms的runnable和一个100ms的runnable放一起,1ms的那个会被100ms的任务拖累,导致抖动。我遇到过因为这个问题导致CAN报文超时的案例,排查了两天才找到原因。
3.4.5 生成RTE代码
所有配置完成后,点击 Generate → RTE。工具会生成:
Rte.h:RTE头文件,包含所有API声明Rte.c:RTE实现文件,包含端口连接逻辑、runnable调度逻辑Rte_Type.h:数据类型定义
生成后,建议先编译一次。如果编译报错,99%是端口类型不匹配或者runnable参数定义不一致。别慌,看错误信息定位到具体行,回工具里修改配置再重新生成。
3.5 两个工具的切换技巧
有些项目会同时用到两个工具(比如客户指定了工具链)。这时候要注意:
- ARXML文件是通用的:DaVinci导出的配置可以导入EB,反之亦然。但要注意版本兼容性——AUTOSAR 4.2的ARXML在4.4的工具里可能报错。
- 代码生成结果不同:同样的配置,两个工具生成的RTE代码风格不一样。DaVinci生成的代码偏「啰嗦」,注释多;EB生成的代码偏「精简」,执行效率高。但功能上等价。
- 不要混用:一个项目里,RTE配置只用一种工具。混用会导致配置不一致,排查起来非常痛苦。
好了,这一讲的内容就是这些。工具只是手段,关键是理解RTE的配置逻辑。下一讲咱们会深入RTE的运行时行为,看看生成的代码到底是怎么跑起来的。
公众号:蓝海资料掘金营,微信deep3321