第2章:开发环境搭建——AURIX Development Studio 安装、配置与第一个工程
好,咱们直接进入正题。
做嵌入式开发,尤其是玩 TC3xx 这种多核芯片,开发环境就是你的武器。武器不称手,后面全是坑。我个人习惯是,拿到新板子第一件事,先把环境捋顺了,再谈别的。
这一章,我带你把 AURIX Development Studio(简称 ADS)装好、配好,然后跑起第一个工程。嗯,咱们不搞虚的,直接上手。
2.1 为什么选 ADS?
你可能听说过 Tasking、HighTec、Green Hills 这些编译器。它们都很强,但有个共同点——贵。而且配置起来,说实话,有点折腾。
ADS 是英飞凌官方基于 Eclipse 打造的免费 IDE。说白了,它把编译器、调试器、例程库全打包好了。你装一个,就全有了。我在项目初期做方案验证时,经常用 ADS 快速搭原型,等方案定了再切到商业编译器做量产优化。
所以,学习阶段,ADS 是最省心的选择。
2.2 下载与安装
先讲下载。去英飞凌官网搜 "AURIX Development Studio",找到对应版本。注意,ADS 目前主要支持 Windows,Linux 用户得用命令行工具链,咱们这里以 Windows 为例。
下载下来是一个 .exe 文件,大概 1GB 左右。安装过程很简单,一路 Next 就行。但有几点我提醒你注意:
- 路径不要有中文:我曾经有个同事,装在了 "D:\开发工具\ADS" 下,结果编译时各种莫名其妙报错。Eclipse 对中文路径支持很差,老老实实用英文路径。
- 关闭杀毒软件:安装过程中会写注册表、装驱动,杀毒软件可能会拦截。我建议装完再开。
- 安装路径不要有空格:比如 "Program Files (x86)" 这种,虽然大部分情况没问题,但个别脚本会解析出错。我习惯放 "C:\Infineon\ADS"。
安装完成后,桌面会有两个图标:一个是 ADS IDE,另一个是 ADS Command Prompt(命令行工具)。咱们先打开 IDE。
2.3 工作空间配置
第一次打开 ADS,会弹窗让你选工作空间(Workspace)。工作空间就是存放你工程的地方。我建议单独建一个文件夹,比如 "D:\TC3xx_Workspace"。别放桌面,别放 C 盘,这是基本素养。
选好后,点击 Launch,进入主界面。嗯,Eclipse 风格,熟悉的味道。
2.4 导入第一个例程
ADS 自带了很多官方例程,涵盖 GPIO、PWM、ADC、CAN 等等。咱们先拿一个最简单的 "GPIO_Toggle" 来试试水。
操作步骤:
- 点击菜单栏 File → Import
- 选择 Infineon → AURIX Development Studio Project
- 点击 Next,会看到一长串例程列表
- 在搜索框输入 "GPIO_Toggle",找到它
- 选中,点击 Finish
导入完成后,左侧 Project Explorer 里就会出现这个工程。展开看看,结构很清晰:
- 0_Src:用户代码目录,你的 main.c 就在这
- Libraries:iLLD 底层驱动库,别乱改
- Config:芯片配置,比如时钟、中断向量表
每次导入新工程,我会先看一眼 Config → Ifx_Cfg.h。这里面定义了模块的开关,比如你用不到 CAN,就可以把它关掉,编译会快很多。
2.5 编译与下载
工程导入完了,咱们编译一下。点击工具栏上的锤子图标(Build),或者按 Ctrl+B。
第一次编译会慢一些,因为要生成依赖。看到控制台输出 "Build Finished" 且没有错误,就说明成功了。
接下来是下载。你需要一块 TC3xx 开发板,比如 TC375 Lite Kit 或者 TC397 评估板。用 USB 线连上电脑,安装好驱动(ADS 安装时已经带了)。
点击工具栏上的绿色虫子图标(Debug),或者按 F11。ADS 会自动识别调试器,弹窗让你确认配置。直接点 OK。
程序下载到 Flash 后,会自动停在 main() 函数入口。这时候你可以按 F8(Resume)让它全速运行。如果板子上有 LED,你应该能看到它在闪烁。
如果你点击 Debug 后报错 "No debug probe found",别慌。先检查 USB 线是不是数据线(有些充电线不能用)。然后打开设备管理器,看看有没有 "Infineon DAS" 相关的设备。如果没有,手动安装驱动:在 ADS 安装目录下找 driver 文件夹,运行 das_drv_install.bat。
我曾经被这个问题卡了半小时,最后发现是 USB 线的问题。嗯,从那以后我桌上常备一根标注了 "数据线" 的线。
2.6 工程结构解析
咱们简单看看这个 GPIO_Toggle 工程里,代码是怎么组织的。打开 main.c,核心代码其实就几行:
#include "Ifx_Types.h"
#include "IfxCpu.h"
#include "IfxScuWdt.h"
#include "IfxPort.h"
#define LED_PIN &MODULE_P00, 5 // 假设 LED 接在 P00.5
void initLED(void)
{
IfxPort_setPinMode(LED_PIN, IfxPort_Mode_outputPushPullGeneral);
}
void toggleLED(void)
{
IfxPort_togglePin(LED_PIN);
}
int core0_main(void)
{
// 关闭看门狗
IfxScuWdt_disableCpuWatchdog(IfxScuWdt_getCpuWatchdogPassword());
IfxScuWdt_disableSafetyWatchdog(IfxScuWdt_getSafetyWatchdogPassword());
initLED();
while(1)
{
toggleLED();
// 简单延时
for(uint32 i = 0; i < 1000000; i++);
}
return 0;
}
你看,结构很清晰:
- 先关看门狗(这是 TC3xx 上电后的标准操作,不然它会不断复位)
- 初始化 GPIO 为推挽输出
- 主循环里翻转电平,加个软件延时
这就是一个最简的嵌入式程序骨架。后面咱们做 PWM 控制电机,也是在这个基础上加东西。
2.7 调试技巧
ADS 的调试功能很强大。我常用的几个:
- 断点:双击行号就能加断点。注意,TC3xx 硬件断点有限(一般 4 个),别加太多。
- 变量监视:在调试视角下,右键变量 → Add Watch Expression,就能实时看值。
- 寄存器查看:打开 Peripherals 视图,可以直接看某个外设寄存器的值。调试 PWM 时这个特别有用。
如果你发现程序跑飞了,先别急着怀疑代码。点一下暂停按钮,看看 PC(程序计数器)停在哪里。如果停在某个外设寄存器地址附近,多半是配置错了。如果停在 0x80000000 之类的地址,可能是中断向量表没配好。
2.8 小结
到这,你的开发环境就搭好了。第一个工程也跑起来了。你想想看,其实没那么复杂,对吧?
下一章,咱们开始真正接触 PWM。我会带你配置 TC3xx 的 GTM(通用定时器模块),生成一路可调占空比的 PWM 信号。嗯,那才是电机控制的起点。
记住,环境只是工具,后面的实战才是硬功夫。有问题随时翻翻 ADS 自带的例程,那是最好的学习资料。
公众号:蓝海资料掘金营,微信deep3321