4. 开发环境搭建与工具链

Jacinto C7x 的开发环境不是“装一个 IDE 就能跑”的简单组合,而是由 主机端 IDE + 编译器 + SDK + 目标板连接 + 调试探针 五层构成的工具链。任何一层版本不匹配,都会在编译、链接或加载阶段以难以定位的错误暴露出来。本节按“先建立版本对应关系,再逐层落地”的顺序展开,重点说明每一步实际要做什么、关键参数如何设置、以及如何判断是否成功。

一、先确定版本对应关系,再动手安装

TI 的 Jacinto 平台对版本一致性要求很高。以常见的 TDA4VM / J721E 为例,处理器 SDK(PROCESSOR-SDK-RTOS-J721E 或 PROCESSOR-SDK-LINUX-J721E)会明确绑定:CCS 版本、C7000 编译器版本(C7x Code Generation Tools)、PDK 版本、以及仿真器固件版本。安装前应先从 SDK 发布说明(Release Notes)中抄下这张对应表,而不是先装最新版 CCS 再回头找 SDK。

一个典型的对应关系示例(属于合理示例,实际以所用 SDK 发布说明为准):

组件示例版本作用
CCS12.x工程管理、编译、加载、调试前端
C7000 CGT3.x编译 C7x 的 C/C++ 与 intrinsic
PROCESSOR-SDK-RTOS08.06.xPDK、驱动、示例、启动镜像
XDS110 / XDS560v2随 CCS 安装JTAG 调试探针与目标连接

二、安装 CCS 与 C7000 编译器

CCS 安装时选择自定义安装,勾选目标器件族 C7000 与 Jacinto 系列,并勾选对应的仿真器支持。安装完成后,编译器通常不会自动就位,需要单独安装 C7000 CGT,或在 CCS 的 Help → Install New Software 中安装。安装后必须在 CCS 中显式注册编译器路径:

Window → Preferences → Code Composer Studio → Build → Compilers
→ 添加 C7000 CGT 安装目录,例如:
   C:\ti\ti-cgt-c7000_3.x.x
确认列表中 C7000 编译器状态为 Available

判断编译器是否可用的最直接方式,是新建一个空的 C7000 工程并编译。若报 Cannot find compiler,说明路径未注册或版本与 SDK 不匹配;若报 unresolved symbol,则通常是链接脚本或库路径问题,而不是编译器本身。

三、安装 SDK 并建立环境变量

SDK 安装后,需要设置 PDK_INSTALL_PATH、CGT_ROOT 等环境变量,并确认 rules.make 中的路径与实际安装一致。SDK 自带的示例工程通常通过 make 或 CCS 导入两种方式使用。导入时注意:

  • 工程属性中的 Compiler version 必须与 SDK 要求一致;
  • Include paths 应指向 SDK 的 pdk_jacinto_xx/packages;
  • 链接脚本(.cmd)需与目标核(如 C7x_1)匹配,不能混用 MCU 或 A72 的脚本。
建议在导入示例工程后,先执行一次完整编译,确认无错误再连接目标板。编译通过是工具链自洽的最低验证标准。

四、目标板连接与调试配置

连接阶段的核心是“探针—目标—配置”三者一致。以 XDS110 为例,实际步骤是:

  1. 用 JTAG 排线连接探针与目标板 JTAG 接口,确认目标板已上电且启动模式正确;
  2. 在 CCS 中新建 Target Configuration(.ccxml),选择器件 TDA4VM 或对应 Jacinto 型号;
  3. 在 Connection 中选择 XDS110,设置 JTAG 时钟(示例:1 MHz,长排线可降至 500 kHz);
  4. 点击 Test Connection,应看到各核(A72、R5F、C7x)被正确识别。

若 Test Connection 失败,按以下顺序排查:目标板是否上电、启动模式是否进入调试模式、JTAG 排线是否松动、探针固件是否与 CCS 匹配、以及目标核是否被其他调试会话占用。这些是实际调试中最常见的失败点。

Jacinto C7x 开发工具链与调试连接关系 主机端(Host) Code Composer Studio 工程 / 编译 / 加载 / 调试 C7000 CGT 编译器 C7x C/C++ / intrinsic PROCESSOR-SDK PDK / 驱动 / 示例 / 镜像 Target Configuration .ccxml / 器件与探针选择 调试探针 XDS110 / XDS560v2 JTAG 时钟示例 1 MHz 固件需与 CCS 匹配 目标板(TDA4VM / J721E) A72 核 Linux / 主控 R5F 核 实时控制 / 安全 C7x 核 视觉加速 / 算法部署 JTAG 接口 连接探针 / 启动模式 Test Connection 验证各核识别 加载/调试 JTAG 版本一致性约束:CCS ↔ C7000 CGT ↔ SDK ↔ 探针固件 必须按 SDK 发布说明匹配

五、加载与调试配置的实际判断

连接成功后,下一步是把编译产物加载到 C7x 核并运行。以 RTOS 示例为例,通常需要先通过 CCS 脚本或 GEL 文件初始化 DDR 与时钟,再加载 .out 文件。加载后观察:

  • PC 是否停在 main 或指定入口;
  • Console 是否打印 SDK 示例的启动信息;
  • 若使用 C7x 视觉示例,是否能看到 app_init、app_run 等阶段的日志。

若加载后立即跑飞,优先检查 GEL 初始化是否执行、DDR 配置是否与板卡一致、以及链接脚本中的内存段是否落在有效地址范围。这些判断依据比反复重装工具链更有效。

不要在同一目标板上同时开启多个 CCS 调试会话;C7x 核被占用时,新的连接会报 “target not responding”,容易被误判为硬件故障。

六、一份可执行的检查清单

为便于复现,下面给出本节可直接使用的环境自检清单(字段与判断依据均针对 Jacinto C7x 场景):

检查项期望结果不通过时的处理
CCS 中 C7000 编译器已注册Preferences 中状态 Available重新指定 CGT 安装路径
SDK 环境变量与 rules.make 一致make 可找到 PDK 路径修正 PDK_INSTALL_PATH
示例工程编译通过生成 .out,无 unresolved symbol检查 include 与链接脚本
Test Connection 成功A72/R5F/C7x 均被识别查上电、启动模式、JTAG 排线
加载后 PC 停在入口可单步、可查看寄存器检查 GEL 初始化与 DDR 配置

完成以上步骤后,工具链即达到“可编译、可连接、可加载、可调试”的可用状态。后续的 C7x 算法部署、kernel 优化与性能分析,都建立在这一稳定环境之上。