2、工作空间与工程:创建工作空间、导入/导出工程、工程结构解析

好,咱们正式开始动手了。这一章我带你搞定 EB tresos 里最基础、也最绕不开的两个概念:工作空间工程

说实话,我刚接触 EB tresos 那会儿,也被这俩东西搞晕过。工作空间是啥?工程又是啥?为啥不能直接打开一个 .c 文件就开干?嗯,别急,咱们一步步来。

2.1 工作空间(Workspace)是个什么玩意儿?

你可以把工作空间理解成一个“项目收纳盒”。它本身不存代码,但它知道你的工程放在哪、你用了哪些配置、你上次打开了什么窗口。

我个人习惯是:一个产品平台建一个工作空间。比如我做某款车身控制器,所有相关的 AUTOSAR 工程都放在同一个工作空间里。这样切换工程时,配置环境不用重新折腾。

小提示:工作空间的路径里不要有中文,也不要带空格。我曾经有个同事,路径里写了个“项目_v2”,结果 EB tresos 死活加载不了配置库。折腾了一下午才发现是中文惹的祸。

2.2 创建工作空间

操作其实很简单。启动 EB tresos 时,它会弹出一个对话框让你选工作空间路径。你点 Browse,选一个空文件夹,或者新建一个文件夹,然后点 Launch 就行。

如果你已经进了界面,想换个工作空间,可以这样:

  1. 菜单栏选 File → Switch Workspace
  2. 选择新的路径
  3. OK,它会自动重启

为什么会自动重启?因为 EB tresos 要重新加载工作空间的元数据。说白了,就是让它“换个脑子”。

注意:切换工作空间前,记得保存当前工程的所有修改。我吃过这个亏——切完工作空间回来,发现没保存的配置全丢了。

2.3 导入工程(Import Project)

工作空间建好了,接下来就是把工程弄进来。EB tresos 的工程通常是一个完整的文件夹,里面包含了 .epf 文件(工程文件)、配置描述文件(.arxml)、代码生成模板等等。

导入步骤:

  1. 右键点击 Project Explorer 的空白区域
  2. 选择 Import...
  3. 在弹出的窗口里,展开 General,选 Existing Projects into Workspace
  4. Select root directory,找到你的工程文件夹
  5. 勾选你要导入的工程,点 Finish

嗯,这里要注意:EB tresos 的工程导入和 Eclipse 很像,但有个坑——它不会自动识别工程类型。如果你导入后看到工程图标上有个小红叉,别慌。多半是 工程配置文件(.project) 损坏了,或者路径引用不对。

避坑指南:我曾经从同事那拷了一个工程,导入后怎么都编译不过。折腾了半天,发现是工程里引用了绝对路径(比如 D:/workspace/xxx),而我的电脑上根本没有 D 盘。解决办法:把工程里的路径引用改成相对路径,或者统一放到工作空间下。

2.4 导出工程(Export Project)

导出工程,说白了就是把你的劳动成果打包带走。EB tresos 没有一键导出为 .zip 的功能,但你可以手动操作:

  • 在工程上右键 → Export...General → File System
  • 勾选你要导出的文件和文件夹
  • 选择目标目录,点 Finish

我个人更推荐直接复制工程文件夹。因为 EB tresos 的工程本质上就是一堆文件,复制粘贴最保险。但记得把 .metadata 文件夹删掉——那是工作空间的缓存,换台机器就没用了。

小技巧:导出前,先执行一次 Project → Clean,把临时生成的文件清掉。这样导出的工程体积小,别人导入时也不容易出问题。

2.5 工程结构解析

好,现在咱们来看看一个标准的 EB tresos 工程里到底装了些什么。你打开工程文件夹,会看到类似这样的结构:

MyProject/
├── .project              # Eclipse 工程描述文件
├── .cproject             # C/C++ 工程配置
├── .settings/            # 编辑器偏好设置
├── config/               # 配置描述文件(.arxml)
│   ├── EcuC.arxml
│   ├── Can.arxml
│   └── ...
├── generated/            # 代码生成输出目录
│   ├── src/
│   ├── include/
│   └── ...
├── templates/            # 代码生成模板(.ftl 文件)
├── scripts/              # 自定义脚本
└── output/               # 编译输出

咱们挑几个重点说说:

文件夹/文件 作用 我的经验
.project 告诉 EB tresos 这是个工程 别手改它,容易崩
config/ 存放所有 .arxml 配置 这是核心,丢了就得重配
generated/ 代码生成器吐出来的代码 别手动改,下次生成会覆盖
templates/ 控制代码生成模板 高级玩法,新手先别碰

你想想看,config/ 文件夹里的 .arxml 文件,其实就是 AUTOSAR 的“设计图纸”。你所有的 ECU 配置、通信矩阵、SWC 描述,全写在这里面。而 generated/ 里的代码,就是根据这些图纸自动生成的“施工文件”。

核心理解:EB tresos 的工作流就是:
配置(.arxml)→ 生成(代码)→ 编译(.elf)
你大部分时间都在和 config/ 打交道。

2.6 工程与工作空间的关系

最后,我再用一句话总结一下两者的关系:

  • 工作空间是“办公室”,它管理你所有的工程
  • 工程是“办公桌”,每个桌上放着一套完整的配置和代码

你可以把多个工程放在同一个工作空间里,比如一个 Bootloader 工程、一个 App 工程。切换工程时,EB tresos 会保留每个工程的独立配置,互不干扰。

嗯,这一章的内容就到这。下一章咱们开始真正上手配置一个 ECU 工程,到时候你会用到今天学的这些知识。

课后小练习:自己动手创建一个新工作空间,然后导入一个示例工程(EB tresos 安装目录下通常有 Sample 工程)。看看它的 config/ 文件夹里有哪些 .arxml 文件,试着打开一个看看。