第三章 工程创建与配置:新建 AUTOSAR 工程、导入 DBC/ARXML 文件、工程结构解析
好,咱们进入实战环节。这一章我带你亲手创建一个AUTOSAR工程,把DBC和ARXML文件导进去,再把工程结构拆开看看。说实话,很多新手一上来就被EB tresos的界面吓住了,其实没那么复杂。
3.1 新建一个AUTOSAR工程
打开EB tresos,你会看到启动界面。我个人习惯先创建一个工作空间(Workspace),专门放这个项目的所有东西。别偷懒,一个项目一个工作空间,后面你会感谢我的。
新建工程的步骤很简单:
- 点击 File → New → AUTOSAR Project
- 输入工程名称,比如
MyCanProject - 选择AUTOSAR版本(我一般选4.2.2或4.4.0,看客户要求)
- 选择目标芯片的MCAL配置包
嗯,这里要注意:MCAL配置包必须提前装好。我记得第一次用EB时,没装MCAL包就点下一步,结果报错半天找不到原因。
3.2 导入DBC文件
DBC文件是CAN通信的描述文件。说白了,它就是告诉工具:总线上有哪些信号,每个信号多少位,怎么解析。
导入DBC的步骤:
- 在工程上右键 → Import → DBC
- 选择你的DBC文件(比如
VehicleCAN.dbc) - EB会自动解析,生成对应的CAN通信矩阵
导入完成后,你会看到工程里多了很多CAN相关的模块。比如Can、CanIf、CanTp等等。这些是AUTOSAR的通信栈模块,DBC一导入,它们就自动配置好了。
3.3 导入ARXML文件
ARXML是AUTOSAR的标准交换格式。客户或系统工程师通常会给你一个系统级的ARXML,里面定义了SWC(软件组件)、端口、接口、运行实体等。
导入ARXML的步骤:
- 右键工程 → Import → ARXML
- 选择ARXML文件(可以多选)
- EB会解析并生成对应的SWC和BSW配置
你想想看,ARXML其实就是把系统设计转成工具能识别的配置。导入后,你会在工程里看到SWC目录下多了很多组件,每个组件有对应的Runnable(运行实体)和Port(端口)。
3.4 工程结构解析
好了,现在工程建好了,文件也导入了。咱们来看看EB tresos的工程结构长什么样。
一个典型的AUTOSAR工程包含以下几个主要部分:
| 目录/模块 | 说明 |
|---|---|
| System | 系统级配置,包含ECU实例、通信矩阵、拓扑等 |
| SWC | 应用层软件组件,每个SWC有端口、Runnable、内部行为 |
| BSW | 基础软件层,包括MCAL、服务层、通信栈、诊断栈等 |
| RTE | 运行时环境,连接SWC和BSW的桥梁 |
| OS | 操作系统配置,任务、中断、调度表等 |
展开BSW目录,你会看到密密麻麻的模块。别慌,常用的就那几个:
- Can:CAN控制器驱动
- CanIf:CAN接口层
- CanTp:CAN传输层(用于UDS诊断)
- Dcm:诊断通信管理器
- EcuM:ECU状态管理器
- BswM:BSW模式管理器
我个人习惯先看 System → EcuInstance,这里定义了ECU的硬件信息,比如CAN通道数、波特率、引脚映射。这些是基础,错了后面全白搭。
3.5 配置生成与代码导出
配置完成后,最后一步是生成代码。EB tresos可以生成完整的AUTOSAR代码,包括BSW驱动、RTE、SWC骨架等。
生成代码的步骤:
- 点击 Project → Generate Code
- 选择要生成的模块(一般全选)
- 点击 Generate
生成完成后,你会在工程目录下看到 output 文件夹,里面就是生成的C代码和头文件。把这些文件复制到你的IDE工程里,编译烧录就行。
3.6 避坑指南
最后,分享几个我踩过的坑:
- DBC导入后信号丢失:检查DBC中是否有特殊字符(比如中文、空格),EB对某些字符支持不好。我建议DBC里全部用英文和下划线。
- ARXML导入报错:通常是版本不匹配。确认ARXML的AUTOSAR版本和工程设置一致。
- 生成代码编译报错:检查是否所有模块都生成了。有时候某个模块配置没完成,生成会跳过,导致头文件缺失。
好了,这一章的内容就到这。你跟着操作一遍,建个工程、导个DBC、看看结构,基本就上手了。下一章咱们深入聊聊BSW模块的具体配置,特别是CAN通信栈的调优。