2. 开发环境搭建:CCS/IAR/Keil 等 IDE 安装、仿真器驱动配置、工程模板创建、第一个 LED 点灯程序

说实话,很多刚入行的朋友觉得移植算法嘛,核心是数学和代码,开发环境随便装装就行。我当年也这么想,结果第一个项目就栽在环境上——仿真器死活连不上,折腾了两天才发现是驱动版本不对。所以这一章,咱们把地基打牢。

DSP 开发不像写 PC 软件,点一下运行就行。你得跟 IDE、编译器、仿真器、芯片本身打交道。说白了,环境搭好了,后面的事才顺。

2.1 三大主流 IDE 的选择与安装

目前 DSP 开发用得最多的就是这三家:TI 的 CCS、IAR 的 Embedded Workbench、ARM 系的 Keil。我个人的习惯是:TI 的 DSP 用 CCS,ARM 内核的 DSP 用 IAR 或 Keil。具体选哪个,看芯片厂商的推荐。

IDE 适用芯片 编译器 调试器支持 我的推荐场景
CCS (Code Composer Studio) TI C2000/C5000/C6000 系列 TI CGT (Code Generation Tools) XDS100/200/560, 内置仿真器 TI DSP 首选,生态最全
IAR Embedded Workbench ARM Cortex-M/R, 部分 DSP IAR C/C++ Compiler J-Link, I-jet, CMSIS-DAP 代码优化强,适合量产项目
Keil MDK ARM Cortex-M, 部分 DSP ARM Compiler (AC5/AC6) J-Link, ULINK, ST-Link 入门简单,教程多
小提示:如果你用的是 TI 的 C6748 或 C6678 这类浮点 DSP,直接上 CCS。IAR 虽然也支持部分 TI 芯片,但 CCS 的寄存器视图和 TI-RTOS 集成度更高,调试时能省不少事。

2.2 安装步骤与避坑

安装过程其实不复杂,但有几个坑我得提前说。我曾经在 CCS 安装时选了默认路径,结果路径里有中文,编译时各种报错,查了半天才发现是路径问题。

2.2.1 CCS 安装要点

  1. 去官网下载离线安装包——在线安装慢到怀疑人生。
  2. 安装路径不要有中文和空格。我习惯用 C:\ti\ccs12xx 这种纯英文路径。
  3. 组件选择:根据你的芯片系列勾选对应的器件支持包。比如 C2000 就勾选 C2000 的编译器。
  4. 仿真器驱动:CCS 安装包自带 XDS 驱动,但建议装完后去 TI 官网更新到最新版。

2.2.2 IAR 安装要点

  1. IAR 是收费软件,但可以申请 30 天评估版。
  2. 安装时注意选择 ARM 版本,别下成 8051 或 AVR 的。
  3. 装完后需要手动添加器件支持包(.pack 文件),从芯片厂商官网下载。

2.2.3 Keil 安装要点

  1. Keil MDK 同样收费,社区版有代码大小限制(32KB)。
  2. 安装后必须通过 Pack Installer 安装对应芯片的 Device Family Pack。
  3. 我遇到过 Keil 和 CCS 同时装在一台电脑上,环境变量冲突导致编译失败。解决办法:分别用不同的命令行窗口启动。
警告:无论装哪个 IDE,安装前都关掉杀毒软件。有些杀毒会把编译器识别为威胁,直接隔离掉。我有个同事因此折腾了一下午。

2.3 仿真器驱动配置

仿真器是连接 PC 和 DSP 开发板的桥梁。常见的仿真器有 TI 的 XDS100/200、SEGGER 的 J-Link、以及各开发板自带的 CMSIS-DAP。

驱动配置的核心就一句话:让操作系统正确识别仿真器,并让 IDE 能找到它。

2.3.1 XDS 仿真器驱动

  • 插上仿真器后,打开设备管理器,看有没有出现 TI XDS100 Channel A/B 或类似设备。
  • 如果显示黄色感叹号,说明驱动没装好。手动指定驱动路径到 CCS 安装目录下的 ccs_base\emulation\drivers。
  • 我遇到过 XDS100 在 Win10 下需要禁用驱动签名才能正常安装。具体操作:重启时按 F8 选择「禁用驱动程序强制签名」。

2.3.2 J-Link 驱动

  • 从 SEGGER 官网下载 J-Link 软件包,安装后会自动配置驱动。
  • 在 IAR 或 Keil 中,调试器选择 J-Link / J-Trace,然后配置接口类型(SWD 或 JTAG)和速度。
  • 速度别设太高,我一般用 1MHz 或 4MHz。设成 10MHz 以上容易掉线。

2.3.3 常见问题排查

现象 可能原因 解决办法
IDE 找不到仿真器 驱动未安装或版本不匹配 重装驱动,或换 USB 口
连接后提示 "Error -2131" 仿真器固件版本过低 更新 XDS 固件(CCS 自带工具)
调试时频繁断开 USB 线质量差或供电不足 换带屏蔽的 USB 线,不要用延长线
J-Link 灯不亮 驱动冲突或硬件损坏 卸载其他仿真器驱动,重启

核心经验:仿真器驱动配置是环境搭建中最容易出问题的环节。我的建议是:先装 IDE,再插仿真器,最后装驱动。顺序错了,系统可能会自动安装不兼容的驱动。

2.4 工程模板创建

每次新建项目都从头配置链接脚本、启动文件、中断向量表?太累了。我习惯做一个最小工程模板,以后直接复制。

一个标准的 DSP 工程模板包含以下文件:

  • 启动文件(.asm 或 .s):初始化堆栈、中断向量表、C 运行时环境。
  • 链接脚本(.cmd 或 .ld):定义内存映射和段分配。
  • 主程序(main.c):空的 main 函数,留给你写业务逻辑。
  • 头文件:芯片寄存器定义、系统时钟配置。

2.4.1 以 CCS + TMS320F28335 为例

  1. 打开 CCS,点击 File → New → CCS Project。
  2. 输入项目名,芯片型号选 TMS320F28335。
  3. 工程模板选 Empty Project (with main.c)。
  4. 编译器版本选最新版。
  5. 点击 Finish,CCS 会自动生成 .cmd 文件和启动文件。

生成后,我一般会做两件事:

  • 把 .cmd 文件里的堆栈大小改成 0x400(1KB),默认的 0x200 太小。
  • 在 main.c 里加上 InitSysCtrl() 和 DINT 宏,初始化系统时钟和关闭全局中断。

2.4.2 以 IAR + STM32F4 为例

  1. 打开 IAR,点击 Project → Create New Project。
  2. 选择 Empty project,芯片选 STM32F407VG。
  3. 右键项目 → Options,配置以下内容:
    • General Options → Target:选择 FPU 类型(有 DSP 指令的芯片选单精度)。
    • Linker → Config:选择对应的 .icf 链接文件。
    • Debugger → Setup:选择 J-Link 或 CMSIS-DAP。
  4. 添加启动文件 startup_stm32f40xx.s 和系统时钟配置文件 system_stm32f4xx.c。
我的习惯:模板建好后,我会把工程目录整个压缩备份。以后做新项目,直接解压改名字,省去重复配置的时间。尤其是链接脚本,调一次就够了。

2.5 第一个 LED 点灯程序

好了,环境搭好了,模板也有了。咱们来写第一个程序——点灯。别小看这个程序,它能验证整个工具链是否通畅:编译 → 链接 → 下载 → 运行。

以 TI TMS320F28335 为例,GPIO 控制 LED 的代码很简单:

#include "F2833x_Device.h"     // 芯片头文件
#include "F2833x_Examples.h"   // 例程头文件

void main(void)
{
    // 1. 初始化系统控制
    InitSysCtrl();

    // 2. 关闭看门狗
    EALLOW;
    SysCtrlRegs.WDCR = 0x00;
    EDIS;

    // 3. 初始化 GPIO
    EALLOW;
    GpioCtrlRegs.GPAMUX1.bit.GPIO0 = 0;  // 设置为普通 GPIO
    GpioCtrlRegs.GPADIR.bit.GPIO0 = 1;   // 设置为输出
    EDIS;

    // 4. 主循环:闪烁 LED
    while(1)
    {
        GpioDataRegs.GPASET.bit.GPIO0 = 1;   // 拉高,LED 亮
        DELAY_US(500000);                     // 延时 0.5 秒
        GpioDataRegs.GPACLEAR.bit.GPIO0 = 1; // 拉低,LED 灭
        DELAY_US(500000);
    }
}

代码写完后,点一下编译按钮(锤子图标)。如果编译通过,再点一下调试按钮(小虫子图标)。CCS 会自动下载程序到 DSP 的 RAM 或 Flash 中,然后停在 main 函数入口。

按 F5 运行,你应该能看到开发板上的 LED 开始闪烁。

注意:如果 LED 不亮,先检查硬件连接——LED 正极接的 GPIO0 吗?限流电阻焊了吗?我见过太多人软件调半天,结果是 LED 插反了。

2.6 本章知识体系

下面这张图总结了本章的核心流程,从 IDE 安装到第一个程序跑通,每一步都环环相扣:

开发环境搭建知识体系 开发环境搭建核心流程 选择 IDE CCS (TI DSP) IAR (ARM DSP) Keil (ARM DSP) 安装 IDE + 仿真器驱动 创建工程模板 编写 LED 点灯程序 ✅ 编译 → 下载 → 运行 避坑提醒 路径不要有中文 先装 IDE 再插仿真器