从拆开开发板包装到让一颗 LED 真正闪起来,很多人卡住的地方其实不是代码,而是前面那几步环境搭建。AURIX Development Studio 的安装使用,说白了就是一套"IDE + 编译器 + 调试器驱动 + 授权"的组合拳,任何一个环节没对上,你都会在屏幕上看到一句冷冰冰的"No target connected"。这篇内容就是把我这几年在 TC2xx、TC3xx 系列上反复装机、反复踩坑的过程整理出来,从下载安装、工作空间规划、例程导入,到编译配置、下载调试和故障排查,一条线走到底。不管你是刚从 STM32 转过来的新手,还是被公司临时派来做 AURIX 项目的工程师,照着做基本能少折腾一两个晚上。
1. 为什么 AURIX 项目值得先用 ADSW 起步
1.1 ADSW 到底是什么:一个被 Eclipse 撑起来的官方免费 IDE
AURIX Development Studio,圈子里一般直接叫 ADSW,是英飞凌官方给出的免费集成开发环境,基于 Eclipse CDT 框架搭起来的。它不是一个从零写的编辑器,而是把 Eclipse 这个老牌壳子,加上 TriCore 的工具链、iLLD 底层驱动库、示例工程模板、调试器前端整合到一起。你打开之后的界面会非常眼熟——左边 Project Explorer,中间编辑器,下面是 Console 和 Problems,右侧 Outline,和用过 Eclipse 写 Java、写 C 的人看到的几乎一模一样。
它主要面向 AURIX 家族的 TriCore 架构 MCU,覆盖 TC2xx 和 TC3xx 这两大代。TC3xx 现在用得最多,比如 TC375、TC387、TC397 这些型号,广泛出现在车身域控制器、电机控制、BMS、ADAS 传感器融合盒子里。ADSW 自带的例程基本能覆盖 GPIO、GPT、CAN/CAN-FD、ADC、PWM、SPI、Ethernet 这些常用外设,而且例程是基于 iLLD 写的,不是那种寄存器硬编码的裸例子,读起来结构清晰,改起来也方便。
我个人的判断是:ADSW 的最大价值不是"好用",而是"统一"。在一个团队里,如果大家都用同一套官方 IDE 和同一套驱动库,代码交接、例程复用、问题复现的成本会低很多。相比之下,各人用各自的商业工具链、各写各的启动代码,最后交接的时候就是一场灾难。
1.2 授权与工具链的坑:为什么它敢免费
这里必须说清楚一件事,很多人装完 ADSW 发现编译能过,就以为万事大吉,直到某天工程变大,链接突然报错才发现问题。ADSW 里集成的 TriCore 编译工具链本质上是 TASKING 的 VX-toolset,官方提供的是一个免费入门版本,它对代码尺寸是有上限约束的。也就是说,小工程、点灯、跑例程完全没问题,但当你把整个 AUTOSAR 栈、TCP/IP 协议栈、大段标定表都塞进去之后,就可能触到那个天花板。
注意:免费工具链的代码尺寸阈值会随着版本调整,具体数字请以你安装后许可证说明和官方发布说明为准。做量产项目之前,务必先确认清楚授权范围,不要等代码写到一半才发现要换工具链,那时候重构构建脚本会非常痛苦。
另外还有一个容易忽略的点:ADSW 只是"开发环境",不等于"生产工具链"。很多公司的量产构建流程用的是商业版 TASKING、Green Hills 或者 HighTec 的 GCC 版本。你在 ADSW 里写的代码、工程结构、iLLD 调用方式,理论上可以迁移,但构建脚本、优化选项、内联汇编语法会有差异。所以我的建议是,从第一天起就把源码目录结构设计得干净一点,把"工程文件"和"源代码"尽量分离,将来换工具链的时候,只换工程配置,不动源码。
1.3 这套环境适合谁,不适合谁
适合的人群很明确:第一类是刚接触 AURIX 的学习者,手上有一块 Lite Kit 或者评估板,想先跑通最小系统;第二类是项目前期做原型验证的工程师,需要快速把外设跑起来,验证硬件设计;第三类是需要阅读和调试 iLLD 例程的人,ADSW 的工程组织方式让例程很容易被索引和跳转。
不太适合的场景也要讲清楚。如果你要做的项目已经确定走 AUTOSAR 工具链,那 ADSW 更多是作为"辅助阅读和调试器",而不是主构建环境。如果你需要极致的编译优化和代码尺寸控制,商业工具链的调优空间会大得多。还有一些团队用 CMake + 命令行做 CI,这时候 ADSW 的角色就退化成"调试前端",构建交给脚本。想清楚定位,后面才不会来回折腾。
2. 安装前的准备工作:别急着点下一步
2.1 硬件盘点:板子、调试器、线材
软件装不好的很多问题,根源其实在硬件侧。动手装 ADSW 之前,先把这几样东西确认清楚。
第一是开发板。常见的有 TC375 Lite Kit、TC397 系列评估板、TC275 Lite Kit 这些。板子上通常会标注型号和默认的调试接口。要注意的是,有些 Lite Kit 板载了调试器(比如通过 USB 直接连 DAP),有些则需要外接。
第二是调试器。AURIX 主流的调试通道是 DAP(Device Access Port),两线或三线制,官方的小工具叫 miniWiggler。除此之外还有 Lauterbach TRACE32、PLS UDE、iSYSTEM 这些商业调试器,功能更强但价格也更高。初学者用 miniWiggler 就够了,注意买的时候确认是支持你目标芯片的那一版。
第三是线材和供电。DAP 接口一般需要接 DAP、DAP 时钟(部分配置)、Reset 和 GND。供电方面,很多 Lite Kit 支持 USB 供电,但如果你外接了功率负载或者电机驱动板,一定要用独立电源,并且把地共起来。我见过有人因为调试器和目标板各自供电、地没共,导致连接时断时续,查了一整天才发现是接地问题。
2.2 系统与磁盘规划
ADSW 是跨平台的,Windows 和 Linux 都有对应安装包。Windows 这边建议 Win10 64 位以上,Win11 也没问题。Linux 下通常是压缩包解压即用,需要注意给可执行文件加执行权限。
磁盘空间要留够。安装包本身加上解压后的文件,再算上工作空间、编译中间产物、多个版本的 iLLD 和例程,预留 20GB 以上比较稳妥。我一般会把 IDE 装在系统盘以外的独立分区,比如 D 盘建一个D:\Tools\AURIX目录,工作空间放在D:\Workspace,这样以后重装系统不会丢工程。
还有一个容易被忽略的点:安装路径和工作空间路径都不要包含中文、空格和特殊字符。Eclipse 系的工具在一些路径处理上比较脆,尤其当构建脚本、makefile、链接脚本里出现空格时,很容易出现"文件找不到"的诡异错误。用纯英文加下划线,最省心。
2.3 目录与中文路径的坑
再强调一次路径问题,因为它实在太常见了。我曾经帮一个同事排查编译报错,报的是make: *** No rule to make target,看起来像是 makefile 写错了,实际原因是他把工作空间建在了桌面上一个叫"新建文件夹"的目录里。改到英文路径之后,一次编译通过。
同样的坑还有几类:路径太长(Windows 有 260 字符限制)、路径在同步盘里(OneDrive、坚果云这类)、路径在网络盘上。同步盘的问题特别隐蔽,因为同步进程会锁文件,编译到一半突然报"资源被占用",或者增量编译结果莫名其妙不更新。把工作空间放在本地物理磁盘的短路径下,比如D:\aurix_ws,能避开一大半玄学问题。
3. ADSW 安装全流程拆解
3.1 下载与校验
先从官方渠道拿到安装包。打开英飞凌官网的 AURIX Development Studio 页面,选择对应操作系统版本下载。下载完成后,建议核对一下文件大小和校验值,尤其是网络不稳定的情况下,分包下载导致的安装包损坏是真实存在的。
提示:不要从第三方站点下载 IDE 安装包。这类工程软件体量大,第三方镜像的版本经常滞后,甚至被替换过内容。为了后续少出问题,直接从官方渠道拿。
Windows 版本通常是一个可执行的安装程序或者自解压包,Linux 版本一般是 tar.gz。拿到之后先看官方文档里的安装说明,不同大版本的安装方式会有差别。我印象中从 1.x 中期开始,官方就统一成了带安装向导的方式,不再需要手动配环境变量。
3.2 安装向导逐项说明
运行安装程序后,流程大致是这样:
- 欢迎页,直接下一步。
- 许可协议,勾选接受。这里可以顺便看一眼免费工具链的使用条款。
- 安装路径选择,按前面说的,用纯英文短路径。
- 组件选择,通常默认全选即可,包括 IDE 主体、TriCore 工具链、iLLD 库、例程、调试器插件。如果你磁盘紧张,可以取消不用的器件系列,但不建议,因为后面导入例程时可能找不到对应型号。
- 开始安装,等待进度条走完。这一步耗时取决于磁盘速度,机械盘上十几分钟很正常。
安装过程中如果杀毒软件弹窗拦截,选择允许。某些安全软件会把编译器的可执行文件当成可疑程序,因为它会频繁读写和调用子进程。如果安装到一半被拦截,后面就会出现"找不到编译器"的报错。
3.3 首次启动:工作空间与许可证确认
第一次启动会让你选择工作空间目录,这就是你以后所有工程的根目录。选定之后,如果里面已经有工程,它会自动扫描;如果是空的,就是一个干净的界面。这个选择后面可以在启动参数里改,也可以在首选项里切换,但建议一开始就定好,别到处散落工程。
启动后第一件值得做的事,是确认工具链被正确识别。打开Window > Preferences,找到 AURIX 或者 TriCore 相关的配置页,看看编译器路径是否是安装目录下的ctc目录。有些版本需要手动指定,有些版本会自动检测。如果这里为空,后面新建工程会直接失败。
关于许可证,首次编译时可能会弹出确认窗口,或者需要在某个菜单里激活。免费版本一般不需要联网激活,随装随用。如果编译时提示许可证相关错误,先检查是不是装到了受限制的目录(比如某些系统保护路径),换到普通目录再试。
3.4 装完必做的三件事
第一件,装驱动。miniWiggler 这类调试器需要驱动支持,插上后到设备管理器里看一眼,有没有出现未识别设备。正常情况应该能在通用串行总线设备或者端口类别下找到对应的 DAS 设备。有黄色感叹号就说明驱动没装好,去安装目录里找驱动文件夹手动指定,或者装官方提供的驱动包。
第二件,跑一次空工程编译。不要一上来就上复杂例程,先建一个最简单的空工程,点一下锤子图标(Build),看控制台输出是不是Build Finished且没有 error。这一步能把工具链、路径、权限问题全部暴露出来,比在复杂工程里排查轻松得多。
第三件,备份一份干净的工作空间。装好、验证通过之后,把整个工作空间打个压缩包存起来。以后环境被搞乱了,直接解压回来,比重装一遍 IDE 快得多。这个习惯我是被逼出来的,有一次升级工具链出了问题,回滚花了半天。
4. 新建与导入工程:从点亮一颗 LED 开始
4.1 用内置例程模板建工程
ADSW 提供了非常方便的工程创建入口。菜单里选File > New > AURIX Project(不同版本的菜单位置略有差异,有的直接叫New AURIX Project),会弹出一个向导。向导里要选三样东西:器件型号、工具链、例程。
器件型号这一项很关键,它决定了链接脚本、寄存器定义、启动代码用哪一套。比如你手上是 TC375,就选对应型号;选错了能编译,但下载后会跑飞或者根本连不上。不确定型号的话,看板子上的丝印,或者在调试器连接后读取芯片 ID。
工具链一般选 TriCore 那个选项。例程列表里会有一堆,从最简单的 GPIO 翻转,到 CAN、ADC、GPT 各种外设。初学者就选 Blinky 或者 GPIO toggle 之类的,目标明确——让板子上的 LED 闪起来。
向导完成后,工程会自动生成一套完整目录结构,包括启动代码、链接脚本、驱动库引用和主程序。这时候直接点编译,大概率能过。
4.2 导入 iLLD 例程的两种姿势
除了向导创建,另一种常见做法是导入现成的 iLLD 例程。安装目录里通常有一个examples或者iLLD文件夹,里面按器件系列分门别类放着一堆工程。
导入方式有两种。第一种是File > Import > Existing Projects into Workspace,指向具体例程目录,直接导入。这种方式适合你只想看某一个例程。
第二种是先在文件系统里把例程目录整体复制到工作空间下,然后刷新工程视图,让它自动被识别。这种方式适合批量导入,也方便你直接改源码。
实操心得:导入例程之前,先看一眼例程目录里的
.project和.cproject文件,确认里面引用的库路径是相对路径还是绝对路径。如果例程是从别人电脑上拷来的,绝对路径很可能指向一个不存在的目录,导入后一堆红叉。这时候要么手动改路径,要么干脆按向导新建一个,再把源码搬过去。
4.3 工程结构速读
一个典型的 ADSW 工程结构大致长这样:根目录下有.project、.cproject、.settings这些 Eclipse 元数据;然后是src目录放用户代码;Libraries目录挂载 iLLD 驱动;Configurations或者Debug目录放链接脚本和调试配置;还有cstart、crt0之类的启动相关文件。
理解这个结构对排查问题特别有用。比如报"找不到某个头文件",你就去 Libraries 的引用路径里看;报"内存溢出",就看链接脚本和 map 文件;报"启动代码重复定义",就看是不是同时引用了两套启动文件。
我一般会额外建一个doc目录放笔记,一个tools目录放脚本。这样工程既能当代码仓,也能当个人知识库,交接的时候也好看。
5. 编译配置与参数详解
5.1 构建配置:Debug 与 Release
工程默认通常有两个构建配置,Debug 和 Release。它们的区别不只是优化等级,还包括是否生成调试信息、是否定义 NDEBUG 宏、是否开启某些断言。
Debug 配置一般用-O0或-Og,保留完整调试信息,代码体积大、运行慢,但单步调试的时候变量值准确、行号对得上。Release 配置用-O2或-Os,会做大量内联和重排,单步调试的时候你会看到执行顺序跳来跳去,某些变量还被优化掉了,显示成<optimized out>。
我的习惯是:功能调试期一律用 Debug 配置,等逻辑稳定、要做性能评估或者刷进样机长时间跑的时候,才切到 Release。切换配置在工程右键菜单的Build Configurations > Set Active里操作。
注意:切换配置之后,最好做一次 Clean,再全量 Build。增量编译在切换优化等级时经常出现中间文件残留,导致链接出一些莫名其妙的符号错误。
5.2 编译器选项与优化等级
优化等级的选择直接影响代码尺寸和运行效率的平衡。常见几档:
| 优化选项 | 说明 | 适用场景 |
|---|---|---|
| -O0 | 不做优化,调试信息最完整 | 功能调试、单步跟踪 |
| -O1 | 基础优化,兼顾可调试性 | 一般开发 |
| -O2 | 较激进优化,性能提升明显 | 性能敏感的逻辑 |
| -Os | 以代码尺寸为优先 | 接近容量上限时 |
| -O3 | 最激进,可能改变浮点精度行为 | 计算密集型,慎用 |
这里有个很实际的取舍。免费工具链有代码尺寸约束,如果你一上来就用-O0编译一个大工程,很可能体积超标;但换成-O2之后,有些原本能单步调试的地方就跳步了。一个折中办法是:把体积大的驱动库单独编成库文件并用较高优化等级,把你自己在调试的业务逻辑用-O0,通过工程级别的选项覆盖来实现。
5.3 链接脚本与内存布局
链接脚本决定了代码放哪、数据放哪、堆栈多大。AURIX 的多核架构让这件事比单核 MCU 复杂不少。以 TC3xx 为例,每个核有自己的程序存储区、数据存储区,还有本地 RAM 和全局 RAM 的区分。链接脚本里会把这些区域一一列出来。
启动代码一般负责把初始化数据从 Flash 拷到 RAM、清零 BSS 段、设置各核的栈指针,最后跳到main。如果链接脚本和启动代码不匹配,就会出现"程序下载后没有任何反应"这种情况。
排查内存问题最好的工具是 map 文件。工程构建之后会生成一个.map文件,里面详细列出了每个段、每个符号的大小和地址。当你遇到 RAM 不够或者 Flash 超容的时候,打开 map 文件按大小排序,往往能一眼看出是哪个数组或者哪个库占了大头。我就靠这个办法发现过一个被静态分配的 8KB 缓冲区,改成一个 512 字节的环形缓冲之后,问题迎刃而解。
6. 下载调试:从编译通过到真正跑起来
6.1 调试器选型与驱动
编译通过只是第一步,能下载进去、能停下来看变量,才算环境真正通了。AURIX 的调试链路通常是:IDE → 调试器前端 → 调试器服务(DAS)→ 调试器硬件 → 目标芯片。
miniWiggler 走的是 DAP 接口,需要 DAS 服务支持。安装 ADSW 的时候一般会一并装上,但你如果在别的电脑上只装了调试器软件,没装 DAS,就会报找不到服务。这时候去官方工具页面单独下载 DAS 安装包,装完之后重启一次,通常就好。
如果用的是 Lauterbach 或者 PLS,需要装各自的上位机软件,ADSW 侧只是通过一个插件去调用它。这种情况下 IDE 里的报错信息往往比较笼统,真正的错误要去调试器服务自己的日志窗口看。
6.2 调试配置关键项
每个工程都可以有自己的调试配置(Launch Configuration)。右键工程,选Debug As > Debug Configurations,新建一个配置。几个关键项要填对:
- Project:选对工程。
- C/C++ Application:指向编译产物
.elf文件。如果这里是空的,先确认有没有编译成功。 - Debugger 选项卡:选择调试器类型,比如 DAS 或者 UDE。
- Target 配置:选择目标芯片型号或者配置文件。
一个常见的坑是:改了代码、重新编译之后,调试配置里指向的还是旧的 elf 路径,或者路径写死了绝对路径,换台电脑就失效。我的做法是把它设成工程相对路径,比如${workspace_loc:/MyProject/Debug/MyProject.elf},这样可移植性会好很多。
6.3 断点、寄存器与变量观察
环境通了之后,调试效率取决于你会不会用这些视图。常用的几个:
- Breakpoints 视图:管理所有断点,可以按条件设置命中次数。
- Registers 视图:看 CPU 寄存器,调试启动阶段的问题时特别有用。
- Variables 视图:看局部变量和全局变量,注意优化等级高的时候可能显示不准确。
- Memory 视图:直接按地址看内存,配合外设手册看寄存器,比读代码直观。
- Expressions 视图:手写表达式做计算,比如把两个字节拼成一个 16 位值。
实操心得:调试外设的时候,我习惯把外设寄存器地址填进 Memory 视图,边跑边看寄存器值有没有被正确写入。很多时候代码逻辑没错,是时钟没使能、引脚复用没配,寄存器一看就明白。
6.4 多核调试的特殊处理
TC3xx 是多核架构,调试的时候要指定当前连的是哪个核。有些调试配置需要选择 "Debug Target",比如 CPU0 或者某个具体的子核。如果你在 CPU1 上打了断点却不生效,很可能是因为调试会话连的是 CPU0。
我的经验是:先把 CPU0 跑起来,确认主流程正常,再逐个挂接其他核。多核同步启动的问题排查起来比较麻烦,因为一个核在等另一个核的信号,而另一个核还没起来,整个系统就静默了。这时候用寄存器视图看各个核的 PC 指针停在哪儿,往往比读代码快。
7. 常见问题与排查实录
7.1 启动类问题
IDE 打不开或者一启动就闪退:先看工作空间路径是不是有问题,其次看是不是同时开了多个实例导致锁文件冲突。解决办法是删除工作空间下的.metadata/.lock文件,或者干脆换一个干净的工作空间启动。如果是 Java 运行时的问题,看一下安装目录里自带的 JRE 有没有被杀毒软件隔离。
新建工程向导是灰色的:多半是 AURIX 插件没加载成功。检查安装目录下插件文件夹是否完整,或者在命令行里用-clean参数启动一次,强制重新加载插件缓存。
编译按钮点了没反应:确认当前是否有工程被选中,以及构建配置是否有效。有时候工程上有红色感叹号,说明元数据损坏,右键Refresh或者重新导入一次通常能解决。
7.2 编译类问题
找不到头文件:这是最高频的错误。先确认 iLLD 库路径有没有被正确引用。在工程属性里的C/C++ General > Paths and Symbols中检查 include 路径。如果路径是对的还报错,看看头文件本身是不是被条件编译宏挡住了。
链接报 undefined reference:说明有符号声明了但没实现。常见原因包括:源文件没被加入编译列表(.c文件不在 src 目录下)、库文件没链接、函数名大小写写错。用 Ctrl+Shift+R 打开资源搜索,确认文件真的在工程里。
代码尺寸超限:提高优化等级、去掉不用的库、把大数组改成按需分配、检查有没有无意中引入的浮点库。map 文件是排查这类问题的第一手资料。
7.3 下载调试类问题
Could not connect to target:按顺序排查。先看目标板有没有上电,再看调试器有没有被识别,然后看 DAP 线有没有接反、Reset 有没有接、地有没有共。很多时候问题就出在一根线松了。
下载成功但程序没跑:检查链接脚本里的入口地址、启动代码是否被正确执行、看门狗有没有在启动阶段就被打开。有些例程会先关看门狗,如果你换了自己写的启动流程忘了这一步,芯片会反复复位,表现就是"下载成功但一直在重启"。
断点打不上、显示空心圆:说明该位置没有对应的调试信息,通常是文件没参与编译,或者优化等级过高把该行优化没了。降低优化等级、重新编译一次。
7.4 问题速查表
| 现象 | 可能原因 | 优先排查项 |
|---|---|---|
| IDE 启动崩溃 | 工作空间锁冲突、JRE 被拦截 | 删 .lock、换工作空间 |
| 头文件找不到 | 路径未引用、中文路径 | Paths and Symbols、路径字符 |
| 符号未定义 | 源文件未加入编译、库未链接 | src 目录、链接库列表 |
| 代码超容 | 优化等级低、库冗余 | map 文件、改优化选项 |
| 无法连接目标 | 供电、线序、驱动 | 上电状态、DAP 接线、DAS |
| 下载后不运行 | 启动代码、看门狗 | 入口地址、WDT 配置 |
| 断点不生效 | 优化过高、文件未编译 | 优化等级、编译日志 |
| 多核断点无效 | 调试会话连错核 | Debug Target 选择 |
8. 一些提高效率的实操心得
8.1 快捷键与常用视图
Eclipse 的快捷键体系在这一套工具里是通用的。我常用的几个:Ctrl+Shift+R打开任意文件,Ctrl+Shift+T打开任意符号,F3跳转到定义,Ctrl+Space补全,Ctrl+/注释当前行,F11启动调试,F8继续运行,F5单步进入,F6单步跳过。
视图方面,我会把 Problems 和 Console 并排放在下方,调试时再切到 Debug 和 Variables。布局可以保存成透视(Perspective),下次一键切换。团队里如果统一了布局,远程协助的时候沟通会顺畅很多,说"看左下角 Console"对方立刻就知道在哪。
8.2 版本管理与工程共享
Eclipse 工程里有一堆.settings、.cproject、.project文件,这些要不要进版本库,是个老话题。我的做法是:进,但要做减法。删掉里面所有跟本机绝对路径有关的内容,保留工具链配置、包含路径、源文件列表。这样别人拉下来能直接导入编译,不用重新配一遍。
源码目录建议单独管理。我一般把src和Configurations纳入版本控制,Debug、Release这类构建输出目录加进忽略列表。链接脚本这种跟工程强相关的文件,要纳入,因为它决定了下载行为。
. 提示:换工具链版本的时候,
.cproject里的配置格式可能会变。升级之前先提交一次,出问题直接回滚,别在本地硬改。
8.3 与外部工具链和命令行结合
ADSW 虽然是图形界面为主,但也支持命令行构建。基于 CDT 的 headless build 可以在不打开界面的情况下编译工程,这对搭 CI 很有用。基本形式是调用安装目录下的eclipsec可执行文件,指定工作空间和要构建的工程,示例:
eclipsec -nosplash -application org.eclipse.cdt.managedbuilder.core.headlessbuild -data "D:/aurix_ws" -build "MyProject/Debug"这条命令跑通之后,你就可以把它塞进批处理脚本或者流水线里,实现"提交代码自动编译"。
烧录环节如果不想开 IDE,官方还有一个独立的烧录工具,通常叫 AURIX Flasher 之类,支持命令行传参,指定 hex 文件、擦除范围、是否复位重启。具体参数每个版本略有差异,用之前先跑一遍帮助命令看一眼。这样调试和生产刷写可以分开,生产线不需要装整套 IDE。
我在实际项目里踩过最深的一个坑,是工作空间建在同步盘里,编译时好时坏,查了两天才定位到同步进程锁文件。后来把工作空间统一放到本地短路径,再也没出现过类似问题。另一个反复出现的经验是:每次升级 IDE 或者工具链版本之前,先把工作空间整体备份一份,升级带来的配置格式变化有时候会让你回不到旧版本,备份是唯一的安全绳。如果后面你要往更复杂的多核工程、AUTOSAR 集成走,建议在现在就把工程结构梳理干净,把库、源码、配置分层放好,那时候你会庆幸自己做过这件事。