4、开发环境搭建:CCS安装与配置、TI MCU SDK安装、交叉编译工具链(GCC ARM)配置
说实话,做嵌入式开发这么多年,我见过太多人在环境搭建这一步就卡住了。不是装不上,就是版本不匹配,折腾半天连个LED都点不亮。这一章,我就把CCS、SDK、GCC ARM这三件套的安装配置流程,掰开了揉碎了讲清楚。
4.1 CCS(Code Composer Studio)安装与配置
CCS是TI官方的IDE,基于Eclipse魔改的。我个人习惯用最新LTS版本,稳定,坑少。
4.1.1 下载与安装
去TI官网搜"CCS download",找到对应你操作系统的版本。Windows、Linux、macOS都有。下载时注意选择包含所有TI MCU支持的离线安装包,大概2-3GB。
安装过程很简单,一路Next就行。但有两个地方要注意:
- 选择组件:勾选你需要的MCU系列。比如你做C2000,就勾选C2000;做MSP430,就勾选MSP430。全选也行,就是占空间大点。
- 安装路径:不要有中文和空格。我习惯放C:\ti\ccs12xx\下。
4.1.2 首次启动配置
装完后第一次启动CCS,会让你选工作空间(Workspace)。工作空间就是存放你工程的地方。我建议单独建一个文件夹,比如D:\Workspaces\TI_Projects。别放C盘,你懂的。
进去之后,界面是英文的。如果你看着不习惯,可以装中文语言包。但我建议用英文,因为报错信息、论坛讨论都是英文,切来切去反而麻烦。
4.1.3 导入已有工程
拿到别人的代码或者TI官方的例程,怎么导入?
- 菜单栏选
Project → Import CCS Projects - 浏览到工程文件夹,CCS会自动识别
- 勾选你要导入的工程,点Finish
嗯,这里要注意:如果工程是用旧版本CCS建的,可能会提示迁移。点确定就行,CCS会自动处理。
4.2 TI MCU SDK安装
SDK就是软件开发包,里面包含了驱动库、例程、文档等。没有它,你连个GPIO都点不亮。
4.2.1 下载SDK
同样去TI官网,搜"SimpleLink SDK"或者你具体MCU型号的SDK。比如TM4C1294的SDK叫"TivaWare",C2000的叫"C2000Ware"。
下载时注意版本。我建议用最新的稳定版,别追beta版。我在项目中遇到过用beta版SDK,结果某个外设驱动有bug,排查了两天才发现是SDK的问题。
4.2.2 安装SDK
SDK一般是自解压安装包。双击运行,选择安装路径。我习惯和CCS放在一起,比如C:\ti\TivaWare_C_Series-2.2.0.295。
安装完成后,你会看到一堆文件夹:
| 文件夹 | 说明 |
|---|---|
| driverlib | 外设驱动库源码和库文件 |
| examples | 例程代码,按外设分类 |
| docs | API文档、用户手册 |
| tools | 辅助工具,如烧录脚本 |
4.2.3 在CCS中关联SDK
SDK装好了,CCS怎么知道它在哪里?
- 打开CCS,菜单栏选
Window → Preferences - 找到
Code Composer Studio → Products - 点
Add,浏览到SDK的安装目录 - CCS会自动识别,点OK
之后新建工程时,CCS就能自动找到SDK里的驱动库和例程了。
4.3 交叉编译工具链(GCC ARM)配置
CCS自带的编译器是TI的CL2000或ARMCLANG。但有时候我们需要用GCC,比如移植Linux上的代码,或者用开源工具链。
4.3.1 下载GCC ARM工具链
去ARM官网或者GNU Arm Embedded Toolchain页面下载。选适合你操作系统的版本。Windows下我推荐用gcc-arm-none-eabi-10.3-2021.10-win32.exe这个版本,稳定,兼容性好。
安装时同样注意路径不要有中文。我习惯放C:\gcc-arm-none-eabi\下。
4.3.2 配置环境变量
安装完后,需要把GCC的bin目录加到系统PATH里。这样在命令行里就能直接调用arm-none-eabi-gcc了。
Windows下操作:
- 右键"此电脑" → 属性 → 高级系统设置 → 环境变量
- 在系统变量里找到Path,点编辑
- 新建一行,填入GCC的bin目录路径,比如C:\gcc-arm-none-eabi\bin
- 确定保存
验证是否成功:打开命令行,输入 arm-none-eabi-gcc --version。如果显示版本信息,就说明配置好了。
4.3.3 在CCS中使用GCC
CCS默认用TI的编译器。想换成GCC,需要手动配置:
- 右键工程 → Properties
- 找到
Build → Arm Compiler - 在
Compiler version下拉菜单里,选择你安装的GCC版本 - 如果没出现,点
Manage Tool Chains手动添加
配置完成后,编译时就会调用GCC了。不过要注意,GCC和TI编译器的语法有些差异,比如内联汇编的写法、attribute的用法。移植代码时一定要仔细检查。
4.3.4 一个简单的测试
为了验证环境是否搭好,我习惯写一个最简单的main.c:
#include <stdint.h>
int main(void)
{
volatile uint32_t i;
while(1)
{
i++;
}
return 0;
}
用GCC编译:
arm-none-eabi-gcc -c -mcpu=cortex-m4 -mthumb -o main.o main.c
如果没报错,说明工具链正常工作。嗯,这一步虽然简单,但能帮你快速排除环境问题。
4.4 常见问题与避坑
最后,分享几个我踩过的坑:
- CCS卡在启动界面:一般是工作空间里的.metadata文件夹损坏。删掉它,重新启动CCS。
- SDK例程编译报错:检查SDK版本和CCS版本是否匹配。我遇到过SDK太新,CCS太旧,导致某些宏定义找不到。
- GCC链接报错:多半是链接脚本(.ld文件)没配置对。从SDK里复制一个对应芯片的链接脚本过来改改。
我曾经有一次,因为GCC版本太新,生成的elf文件格式和烧录工具不兼容,折腾了一下午。后来换回10.3版本就好了。所以,工具链不是越新越好,稳定才是王道。
好了,环境搭建就讲到这里。下一章我们开始写第一个Bootloader程序,点亮LED,验证整个开发流程。