第二章 工程创建与管理:新建工程、工程结构解析、导入与导出工程、版本管理建议
好,咱们正式开始动手了。
上一章我们把 EB tresos 装好了,环境也配通了。但说实话,装软件只是热身,真正干活的第一步,是创建一个像样的工程。我见过不少新手,一上来就对着模板乱改,结果配置到一半发现路径全乱了,或者导入导出时丢了一堆文件。嗯,这章咱们就把这些坑填上。
2.1 新建工程——别急着点“Next”
打开 EB tresos Studio,你会看到欢迎界面。我个人习惯直接关掉它,然后点 File → New → Project。
这时候会弹出一个向导,让你选工程类型。注意了,这里有两个选项:
- Empty Project:空工程,啥都没有,适合从零开始搭。
- Project from Template:从模板创建,一般芯片厂商会提供。
我建议新手先用模板。为什么?因为空工程里连基本的 BSW 模块都没有,你得一个个手动加,太容易漏了。我在项目中遇到过一位同事,用空工程搭了三天,结果发现少了 EcuM 的配置,整个工程启动不了……
选好模板后,填几个关键信息:
- Project name:别用中文,别带空格。我习惯用“项目名_芯片型号_日期”这种格式,比如
BCM_TC397_20250115。 - Location:路径也别有中文。最好统一放在一个工作目录下,比如
D:\AUTOSAR_Workspace。 - Target Hardware:选你的芯片型号。如果列表里没有,说明你没装对应的插件包。
.project 文件和 .cproject 文件。这两个文件记录了工程的所有元信息,千万别手贱去删。
2.2 工程结构解析——别被文件夹吓到
工程建好后,你会看到左侧的 Project Explorer 里多了一堆文件夹。第一次看的人可能会懵,其实结构很清晰。我拆开来讲:
| 文件夹/文件 | 作用 | 我的备注 |
|---|---|---|
config |
存放所有模块的配置描述文件(.arxml) | 这是核心,改配置就是改这里 |
generate |
代码生成器输出的源文件 | 别手动改,下次生成会被覆盖 |
include |
头文件,比如模块的 API 声明 | 有些厂商会放一些固定头文件 |
src |
用户自定义的源代码 | 你的应用层代码放这里 |
tools |
编译器、链接器等工具的配置 | 一般不用动 |
.project |
Eclipse 工程文件 | 删了工程就打不开了 |
你想想看,这么多文件夹,其实真正需要你频繁操作的,只有 config 和 src。其他文件夹,说白了是 EB tresos 和编译器自己用的。
举个例子,你打开 config 文件夹,里面会有一个 Modules 子文件夹。每个 BSW 模块(比如 Can、Lin、EcuM)都有一个独立的 .arxml 文件。我习惯按模块名排序,找起来快。
generate 文件夹里的代码,是 EB tresos 根据你的配置自动生成的。如果你手动改了里面的代码,下次一生成,改的东西就全没了。我曾经犯过这个错,调了一天的 CanIf 代码,结果重新生成后全白干了……
2.3 导入与导出工程——团队协作的命门
做项目很少是一个人单干。你从 SVN 或 Git 上拉下来一个工程,或者同事发给你一个压缩包,怎么导入?
EB tresos 的导入方式有两种:
2.3.1 导入已有工程(推荐)
点 File → Import → General → Existing Projects into Workspace。然后选择工程所在的根目录,EB tresos 会自动识别出所有 .project 文件。勾上你要导入的工程,Finish 就行。
这里有个坑:如果工程路径变了,EB tresos 可能会报错,说找不到某些文件。别慌,检查一下 Project → Properties → C/C++ Build → Settings 里的路径配置,手动修正一下即可。
2.3.2 导入 Archive 文件
如果同事发给你的是 .zip 或 .tar 包,用 File → Import → General → Archive File。选好压缩包,它会自动解压并导入。
我个人不太喜欢这种方式,因为解压后的文件散落在工作空间里,不好管理。我更倾向于先手动解压到固定目录,再用第一种方式导入。
2.3.3 导出工程
导出很简单:右键工程名 → Export → General → Archive File。选好要导出的内容,一般全选,然后生成一个 .zip 文件。
generate 文件夹。但如果你团队里其他人用的编译器版本不同,生成的代码可能不兼容。我建议导出前先 Clean 一下工程(Project → Clean),把生成的文件清掉,只保留配置和源码。这样对方导入后,在自己的环境里重新生成一遍,更稳妥。
2.4 版本管理建议——别让代码“裸奔”
做嵌入式开发,版本管理是底线。我见过有人用“工程名_v1_final_真的最终版.zip”这种命名方式,结果一周后自己都分不清哪个是最新的。嗯,别笑,真事。
EB tresos 工程本质上是一堆文本文件(.arxml、.c、.h),所以用 Git 或 SVN 管理完全没问题。但有几个地方要特别注意:
2.4.1 哪些文件该提交?
- 必须提交:
config文件夹、src文件夹、.project、.cproject、Makefile 或链接脚本。 - 建议忽略:
generate文件夹、Debug/Release编译输出目录、.metadata文件夹(Eclipse 的工作空间配置)。
为什么忽略 generate?因为它是根据配置生成的,只要有配置,谁都能重新生成。提交它只会让仓库变得臃肿,而且容易产生冲突。
2.4.2 .gitignore 怎么写?
我贴一个我常用的模板:
# EB tresos generated files
generate/
Debug/
Release/
# Eclipse workspace
.metadata/
*.launch
# OS files
Thumbs.db
.DS_Store
# Backup files
*.bak
*~
2.4.3 分支策略建议
我个人习惯用 Trunk-based Development,也就是主干开发。对于 AUTOSAR 工程,分支不宜太多,否则合并配置时容易出问题。我建议这样分:
- master/main:稳定版本,只合入经过测试的代码。
- develop:日常开发分支,大家往这里合。
- feature/xxx:某个功能的分支,比如
feature/add_can_wakeup,开发完合入 develop。
2.5 小结
这一章的内容,说白了就是让你学会怎么“伺候”好你的工程。创建时选对模板,理解文件夹的作用,导入导出时注意路径和生成文件,版本管理时别偷懒。这些基础打好了,后面配置模块时才不会手忙脚乱。
下一章,咱们开始真正配置第一个 BSW 模块——EcuM。那是 AUTOSAR 启动流程的起点,也是很多问题的根源。做好准备。