第二章 工作区与项目创建
好,咱们正式开始动手了。这一章我带你走一遍EB tresos的入门操作——创建工作区、创建新项目、导入现有项目,最后再拆开项目结构看看里面到底装了啥。说白了,就是让你知道怎么“开张干活”。
2.1 创建工作区
打开EB tresos,第一件事就是选工作区。工作区是什么?你可以把它理解成一个“项目收纳盒”。你所有的AUTOSAR项目、配置数据、生成代码,都会放在这个目录下。
我个人习惯把工作区放在一个独立的盘符,比如 D:\AUTOSAR_Workspace。为什么?因为EB tresos在工作区里会产生不少临时文件和元数据,放在C盘容易把系统盘塞满。我曾经遇到过同事C盘爆红,结果EB直接崩溃,项目没保存……嗯,那滋味不好受。
操作步骤很简单:
- 启动EB tresos,弹出工作区选择对话框
- 点击“Browse”,选择或新建一个文件夹
- 勾选“Use this as the default and do not ask again”(如果你不想每次启动都选一遍)
- 点击“Launch”
第一次进入工作区,EB会初始化一些插件和配置。别急,等右下角的进度条跑完就行。我第一次用的时候还以为卡死了,其实它只是在加载。
2.2 创建新项目
工作区准备好了,接下来创建项目。在EB里,一个项目对应一个ECU的完整配置。比如你做一个BCM(车身控制器),那就建一个BCM项目。
创建步骤:
- 菜单栏:
File → New → AUTOSAR Project - 输入项目名称,比如
MyBCM_Project - 选择AUTOSAR版本(比如4.2.2或4.4.0)——这个要跟你用的MCAL和BSW模块版本匹配
- 选择目标微控制器型号(比如Infineon TC3xx或NXP S32K)
- 点击“Finish”
创建完成后,你会看到项目结构树。别急着点来点去,先看看EB自动生成了什么:
- .project 和 .autosar 文件——项目描述文件,别手贱去改
- config 文件夹——存放所有BSW模块的配置
- generate 文件夹——生成代码的输出目录
- src 文件夹——放你的SWC代码
2.3 导入现有项目
工作中更多的情况是接手别人的项目。导入现有项目,比新建还常用。
导入步骤:
- 菜单栏:
File → Import → General → Existing Projects into Workspace - 点击“Select root directory”,找到项目所在的文件夹
- EB会自动扫描出项目列表,勾选你要导入的项目
- 勾选“Copy projects into workspace”(建议勾上,避免污染原始文件)
- 点击“Finish”
导入后,如果项目里引用了某些模块的路径(比如MCAL的驱动库),EB可能会报路径错误。这时候需要去 Project → Properties → AUTOSAR → Paths 里重新配置一下。
C:\Users\xxx\MCAL),而你电脑上没有这个路径,EB会报“Resource is out of sync”。解决办法就是重新映射路径,或者把相关文件复制到工作区内,改用相对路径。
我曾经从同事那拷了一个项目,导入后报了几十个错误。后来发现他用的MCAL版本跟我装的不一样,模块接口都变了。所以导入项目前,最好先确认一下对方的工具链版本。
2.4 项目结构解析
项目建好了,咱们来拆开看看。一个典型的AUTOSAR项目,在EB里大致长这样:
MyBCM_Project/
├── .project
├── .autosar
├── config/
│ ├── BswM/
│ ├── Can/
│ ├── CanIf/
│ ├── CanTp/
│ ├── Dcm/
│ ├── EcuM/
│ ├── Os/
│ ├── SchM/
│ └── ...
├── generate/
│ ├── BswM/
│ ├── Can/
│ └── ...
├── src/
│ ├── Rte/
│ └── Swc/
└── tools/
└── ...
这里面最核心的三个部分:BSW、RTE、SWC。我一个个说。
2.4.1 BSW(基础软件层)
BSW就是ECU的“操作系统”和“驱动程序”。它负责管理硬件资源、通信、诊断、存储等底层功能。在EB里,每个BSW模块都是一个独立的配置项。
常见的BSW模块:
| 模块 | 功能 |
|---|---|
| EcuM | ECU状态管理(启动、休眠、唤醒) |
| BswM | BSW模式管理(协调各模块状态) |
| Can / CanIf / CanTp | CAN通信栈(驱动、接口、传输层) |
| Dcm | 诊断通信管理(UDS协议) |
| Os | 实时操作系统(任务调度、中断管理) |
| SchM | 调度管理器(BSW模块的调度) |
每个模块的配置都在 config/ 文件夹下,以 .arxml 文件形式存在。双击就能在EB的图形化界面里编辑。
2.4.2 RTE(运行时环境)
RTE是BSW和SWC之间的“桥梁”。它负责把SWC的虚拟通信(比如Sender-Receiver、Client-Server)映射到BSW的实际通信机制上。
在EB里,RTE不是一个独立的模块,而是由RTE Generator生成的代码。你配置好SWC的接口和通信关系后,点击“Generate RTE”,EB就会自动生成RTE代码,放在 src/Rte/ 目录下。
生成的RTE代码包括:
- Rte.h / Rte.c —— 主文件,包含所有接口函数
- Rte_Type.h —— 数据类型定义
- Rte_SwcName.h —— 每个SWC对应的头文件
你想想看,如果没有RTE,SWC之间通信就得直接调用BSW的API,那耦合度得多高?RTE的存在,让SWC开发者可以完全不用关心底层硬件。
2.4.3 SWC(应用层软件组件)
SWC就是你的业务逻辑。比如控制车窗升降、处理传感器数据、执行诊断策略等。在EB里,SWC的配置主要在 src/Swc/ 目录下。
每个SWC包含:
- 端口(Ports) —— 定义输入输出接口
- 内部行为(Internal Behavior) —— 定义运行实体(Runnable)、触发事件等
- 实现(Implementation) —— 实际的C代码
配置SWC时,你需要在EB里定义好端口类型(Sender-Receiver还是Client-Server)、数据元素、触发方式(周期性、事件触发等)。然后编写对应的C代码,实现具体的功能。
2.5 本章小结
这一章我们走了一遍EB tresos的入门操作:
- 创建工作区——选好路径,别用中文
- 创建新项目——选对AUTOSAR版本和芯片型号
- 导入现有项目——注意路径和版本兼容性
- 项目结构——BSW、RTE、SWC各司其职
下一章,咱们开始真正配置BSW模块。我会从最基础的EcuM讲起,带你一步步搭起一个能跑的项目框架。到时候你会发现,配置这东西,说白了就是“填表”——但填错了表,车可就跑不起来了。