🔧 C66x DSP 工具链 — 从零构建四件套
TI(德州仪器)C6000 系列 DSP 芯片的完整开源工具链:编译器、汇编器、链接器、集成开发环境。全部从零自研,替代 TI 官方商业工具。
四件套关系全景
flowchart TB
C["📝 C 源代码"] --> COMPILER["🔧 Compiler66x
LLVM-based C→汇编
17条核心指令已启用"] COMPILER --> ASM["📄 汇编代码(.asm)"] ASM --> ASSEMBLER["⚙️ FT-asm66x
汇编器
417/417测试通过
DSPlib 161/161 .text匹配"] ASSEMBLER --> OBJ["📦 目标文件(.obj)"] OBJ --> LINKER["🔗 FT-Link66x
链接器
段分配·重定位·符号解析"] LINKER --> EXE["▶️ 可执行文件(.out)"] EXE --> IDE["🖥️ FT-IDE
集成开发环境
编辑·编译·调试一体"] IDE -.->|"调用"| COMPILER IDE -.->|"调用"| ASSEMBLER IDE -.->|"调用"| LINKER style COMPILER fill:#3987e5,color:#fff style ASSEMBLER fill:#199e70,color:#fff style LINKER fill:#c98500,color:#000 style IDE fill:#e66767,color:#fff
LLVM-based C→汇编
17条核心指令已启用"] COMPILER --> ASM["📄 汇编代码(.asm)"] ASM --> ASSEMBLER["⚙️ FT-asm66x
汇编器
417/417测试通过
DSPlib 161/161 .text匹配"] ASSEMBLER --> OBJ["📦 目标文件(.obj)"] OBJ --> LINKER["🔗 FT-Link66x
链接器
段分配·重定位·符号解析"] LINKER --> EXE["▶️ 可执行文件(.out)"] EXE --> IDE["🖥️ FT-IDE
集成开发环境
编辑·编译·调试一体"] IDE -.->|"调用"| COMPILER IDE -.->|"调用"| ASSEMBLER IDE -.->|"调用"| LINKER style COMPILER fill:#3987e5,color:#fff style ASSEMBLER fill:#199e70,color:#fff style LINKER fill:#c98500,color:#000 style IDE fill:#e66767,color:#fff
工具链总览
🔧 Compiler66x
LLVM-based C66x DSP 编译器。将 C 代码编译为 C66x 汇编。已启用 17 条核心指令(浮点/位操作/旋转/DSP点积)。CC66x 后端实现完成,CompilerSploop 循环优化专项。
⚙️ FT-asm66x
C66x DSP 汇编器。Python 引擎基准:417/417 单元测试通过,DSPlib 161/161 .text 匹配,MATHLIB 144/144 same-source 通过,full-ISA 63/63 probes 全覆盖。
🔗 FT-Link66x
C66x DSP 链接器。目标文件链接、段分配、重定位、符号解析。与 TI lnk6x 二进制兼容。
🖥️ FT-IDE
C66x DSP 集成开发环境(IDE)。代码编辑器、项目管理、编译调试一体化。含编译器集成模块 FT-IDE-CC 和自动化测试套件。
为什么要自研这套工具链?
TI(德州仪器)的 C6000 系列 DSP 芯片广泛用于通信、音频、工业控制。TI 官方提供 CCS(Code Composer Studio)开发环境和 C6000 编译器,但:
- 闭源——不能定制优化、不能集成到自有流程
- 授权费贵——商业使用需要购买 license
- Windows 绑定——难以在 Linux CI/CD 中使用
这套自研工具链的目标:完全开源替代,从 C 代码到 DSP 可执行文件的全链路自主可控。对标 TI 官方工具,用 .text 逐字节对比作为质量基准。
四个项目的进展对比
| 项目 | 核心基准 | 测试覆盖 | TI 兼容性 | 状态 |
|---|---|---|---|---|
| Compiler66x | 17条指令已启用 | LLVM TableGen 验证 | ~50条指令待启用 | ⚠️ 后端实现完成,待构建验证 |
| FT-asm66x | 417/417 pytest | DSPlib+MATHLIB+ISA probes | DSPlib 161/161 .text 完全匹配 | ✅ 核心功能已验证 |
| FT-Link66x | 段分配+重定位 | 目标文件链接验证 | 与 lnk6x 二进制兼容 | ⚠️ 活跃开发中 |
| FT-IDE | 编辑+编译+调试 | IDE 功能回归 | 集成三件套 | ⚠️ 活跃开发中 |
统一时间线:整个工具链的关键里程碑
2026年5月~7月 工具链全景时间线
timeline
title C66x DSP 工具链全景时间线
2026-05 : Compiler66x LLVM 后端启动 : FT-asm66x M0 脚手架搭建 : FT-Link66x 初始架构
2026-06-11 : CC66x 17条指令 TableGen 完成 : LLVM 构建启动(8并行)
2026-06-20 : FT-asm66x M2 导入冒烟汇编器 : FT-IDE 编译器集成模块启动
2026-06-27 : CC66x LLVM 实现完成 : FT-asm66x DSPlib 编码器 M3
2026-07-01 : CompilerSploop 循环优化专项启动 : FT-Link66x ELF 兼容
2026-07-04 : FT-asm66x MATHLIB same-source 144/144 : Full-ISA probes 63/63
2026-07-10 : FT-asm66x DSPlib .text 161/161 : DSS C6678 运行时验证
2026-07-12 : FT-asm66x SUBSP closure : 417/417 pytest : CCS5 静态库通过