3、开发环境搭建:安装Code Composer Studio (CCS) 或 IAR,配置TI安全芯片SDK,搭建交叉编译与调试环境。

好,咱们进入实战环节的第一步——搭环境。

说实话,我见过太多工程师在芯片选型和代码设计上花了大把精力,结果卡在环境搭建上。尤其是TI的安全芯片,它不像普通MCU那样随便装个Keil就能跑。交叉编译链、调试器驱动、SDK路径,任何一个环节出问题,你连个LED都点不亮。

这一章,我带你把CCS和IAR这两个主流IDE的安装、SDK配置、以及交叉调试环境全部捋一遍。你跟着我的步骤走,别跳,保证一次过。

3.1 选择IDE:CCS还是IAR?

先说说我的个人习惯。TI自家的芯片,我首选CCS(Code Composer Studio)。为什么?因为它基于Eclipse,TI对自家芯片的支持最彻底,尤其是安全芯片的寄存器头文件、链接脚本、启动代码,CCS里都是现成的。

但如果你团队里其他人用IAR,或者你手头有现成的IAR License,那用IAR也行。IAR的编译器优化确实比CCS的GCC版本要激进一些,代码密度更高。不过要注意,IAR对TI安全芯片的某些调试特性(比如硬件断点数量、Trace功能)支持不如CCS完整。

我的建议: 如果你刚开始接触TI安全芯片,先用CCS。等熟悉了底层机制,再考虑IAR。我在项目中遇到过用IAR死活连不上调试器,换CCS一次成功的案例——后来发现是IAR的调试器驱动版本太老。

3.2 安装Code Composer Studio (CCS)

CCS的安装其实不复杂,但有几个坑你得避开。

3.2.1 下载与版本选择

去TI官网下载CCS。目前最新稳定版是12.x。别追新,选你芯片支持的版本就行。TI安全芯片(比如MSP430系列、TM4C系列、或者带安全协处理器的CC系列)一般要求CCS 10.0以上。

下载时注意选择离线安装包。在线安装包在国内网络环境下经常断,我吃过这个亏——下到一半断了,重新来,折腾了一下午。

3.2.2 安装步骤

  1. 双击安装包,选择安装路径。路径不要有中文,不要有空格。我习惯用 C:\ti\ccs12xx
  2. 组件选择时,勾选你需要的芯片系列。比如你用的是MSP430F5xxx系列的安全芯片,就勾选MSP430 Ultra-Low Power MCUs。别全选,全选安装包会很大,而且很多你用不上。
  3. 调试器驱动:如果你用TI的XDS110或XDS200调试器,记得勾选对应的驱动。如果你用第三方调试器(比如J-Link),那需要单独安装SEGGER的驱动。
  4. 安装完成后,重启电脑。
注意: 安装过程中如果杀毒软件弹出警告,请允许CCS的安装程序修改系统。我曾经因为360拦截了驱动安装,导致XDS110无法识别,折腾了半天才发现是杀毒软件搞的鬼。

3.3 安装IAR Embedded Workbench

如果你坚持用IAR,那步骤类似,但有几个不同点。

3.3.1 下载与License

IAR是收费软件,但TI安全芯片的评估板通常附带了30天试用License。去IAR官网下载对应芯片架构的版本。比如MSP430就用IAR for MSP430,ARM Cortex-M系列就用IAR for ARM。

3.3.2 安装要点

  • 安装路径同样不要有中文。
  • 安装过程中会提示选择调试器驱动。IAR自带J-Link和I-jet驱动,但XDS110需要单独安装TI的驱动包。
  • License激活:如果你有License文件,在Help -> License Manager里导入。如果是试用版,选择Evaluation License。
一个小技巧: IAR的工程文件(.ewp)和CCS的工程文件(.projectspec)不兼容。如果你团队里有人用CCS有人用IAR,建议统一用Makefile管理源码,两个IDE都导入Makefile工程。我在一个项目里就是这么干的,虽然前期配置麻烦点,但后期维护省心很多。

3.4 配置TI安全芯片SDK

IDE装好了,接下来就是SDK。TI安全芯片的SDK通常包含:驱动库、例程、文档、以及关键的启动代码和链接脚本。

3.4.1 下载SDK

去TI官网的“产品”页面,找到你的安全芯片型号,然后下载对应的SDK。比如MSP430的安全芯片,SDK叫MSP430Ware;TM4C系列的安全芯片,SDK叫TivaWare。

下载后解压到某个目录。我习惯放在 C:\ti\sdk 下,和CCS安装目录平级。

3.4.2 在CCS中导入SDK

  1. 打开CCS,点击菜单栏 View -> Resource Explorer
  2. 在Resource Explorer中,点击右上角的 Add 按钮,选择 Add from Local
  3. 浏览到你解压的SDK目录,选中 .metadataproducts.json 文件(具体文件名看SDK版本)。
  4. 导入成功后,你就能在Resource Explorer里看到SDK的例程和文档了。

3.4.3 在IAR中配置SDK路径

IAR没有像CCS那样的图形化SDK管理器。你需要手动配置头文件路径和库路径。

  • 右键工程 -> Options -> C/C++ Compiler -> Preprocessor。
  • Additional include directories 里添加SDK的 inc 目录。
  • Linker -> Library 里添加SDK的 lib 目录。
核心要点: 无论你用CCS还是IAR,SDK路径配置的核心就是两件事:让编译器能找到头文件,让链接器能找到库文件。别被IDE的花哨界面迷惑了。

3.5 搭建交叉编译与调试环境

TI安全芯片的调试环境和普通MCU不太一样。安全芯片往往有调试锁定机制(比如JTAG/SWD接口的密码保护),防止未授权读取固件。所以调试环境的搭建要格外小心。

3.5.1 交叉编译链

CCS自带GCC交叉编译链,IAR自带IAR编译器。你不需要额外安装。

但如果你用命令行编译(比如CI/CD流水线),那需要手动设置环境变量。以CCS为例:

# 设置CCS的GCC路径
export PATH=$PATH:/c/ti/ccs12xx/ccs/tools/compiler/ti-cgt-arm_20.2.5.LTS/bin

# 验证是否生效
arm-none-eabi-gcc --version

嗯,这里要注意:TI的GCC和ARM官方的GCC不完全一样。TI的GCC对TI芯片的优化更好,但如果你用ARM官方的GCC编译TI的工程,可能会报链接错误。我建议直接用TI自带的GCC。

3.5.2 调试器配置

TI安全芯片常用的调试器有XDS110、XDS200、以及J-Link。我个人推荐XDS110,性价比高,而且TI官方支持最好。

连接调试器时,注意以下几点:

  • 接线:SWDIO、SWCLK、GND、VCC(如果目标板不自供电)。
  • 复位引脚:有些安全芯片需要外部复位信号才能进入调试模式。我在项目中遇到过MSP430死活连不上调试器,后来发现是复位引脚没拉高。
  • 调试锁定:如果芯片之前烧录了带调试锁定的固件,你需要先解锁才能调试。解锁方法因芯片而异,一般是通过擦除整个Flash来实现。
警告: 解锁调试锁定会擦除芯片内所有数据,包括生产后的密钥和证书。如果你在调试开发板,没问题。但如果是已经部署的设备,千万别随便解锁!我曾经帮客户救回一块砖头设备,就是因为他误操作解锁了调试接口,导致密钥丢失,整个设备报废。

3.5.3 创建第一个调试工程

咱们用CCS创建一个最简单的工程,验证环境是否搭建成功。

  1. File -> New -> CCS Project。
  2. 选择芯片型号(比如MSP430FR5994)。
  3. 工程模板选择 Empty Project (with main.c)
  4. 编译:点击锤子图标。如果编译通过,说明交叉编译链配置正确。
  5. 连接调试器,点击绿色虫子图标(Debug)。
  6. 如果一切正常,你会看到程序停在main函数的入口处。

如果卡在连接调试器这一步,别慌。检查以下几点:

  • 调试器驱动是否安装?在设备管理器里能看到调试器设备吗?
  • 接线是否正确?SWDIO和SWCLK有没有接反?
  • 目标板是否上电?
  • 芯片是否被锁定?如果是,尝试用TI的UniFlash工具解锁。
避坑指南: 我曾经在调试一个TM4C129x的安全芯片时,发现每次连接调试器都会报错“Error connecting to the target: Unknown device”。折腾了两天,最后发现是调试器的固件版本太老,不支持这个芯片。升级XDS110的固件后,问题解决。所以,记得定期更新调试器固件。

3.6 验证环境:点个灯吧

环境搭好了,咱们写个最简单的程序验证一下。以MSP430为例:

#include <msp430.h>

void main(void)
{
    WDTCTL = WDTPW | WDTHOLD;   // 关闭看门狗
    P1DIR |= BIT0;              // 设置P1.0为输出
    P1OUT |= BIT0;              // 点亮LED

    while(1);
}

编译、下载、运行。如果LED亮了,恭喜你,环境搭建成功!

如果没亮,别急着怀疑硬件。先检查一下原理图,看看LED是不是接在P1.0上。我遇到过好几次,明明程序写对了,结果LED接在别的引脚上,白白浪费半小时。

3.7 小结

这一章内容不少,但都是实打实的操作。你跟着走一遍,以后搭建任何TI芯片的开发环境都不会再发怵。

下一章,咱们开始真正接触TI安全芯片的硬件架构。你会看到,安全芯片和普通MCU到底有什么本质区别。