🔗 FT-Link66x — C66x DSP 链接器
负责将汇编器产生的 .obj 目标文件链接成可执行的 .out 文件。处理段分配、重定位表、符号解析——对标 TI lnk6x。
项目时间线
FT-Link66x 开发历程
timeline
title FT-Link66x 开发时间线
2026-05 : 初始架构设计 : COFF 格式解析 : 段合并逻辑
2026-06 : 基础对象文件解析 : 符号表构建 : 重定位条目处理
2026-06-20 : ELF 兼容层 : lnk6x 二进制兼容 : 与 asm66x 联调
2026-07 : 段分配优化 : 符号解析引擎 : 交付目录结构建立
链接器是做什么的?
链接过程
flowchart LR
OBJ1["📦 main.obj"] --> LINK["🔗 FT-Link66x
链接器"] OBJ2["📦 dsp_func.obj"] --> LINK LIB["📚 DSP库 .lib"] --> LINK LINK -->|"段合并"| SEC[".text: 所有代码段拼接
.data: 所有数据段拼接
.bss: 所有未初始化段拼接"] LINK -->|"重定位"| RELOC["🔧 修正地址引用
解决外部符号
填写跳转目标"] LINK -->|"导出"| OUT["▶️ program.out
可执行文件"] style LINK fill:#c98500,color:#000 style OUT fill:#199e70,color:#fff
链接器"] OBJ2["📦 dsp_func.obj"] --> LINK LIB["📚 DSP库 .lib"] --> LINK LINK -->|"段合并"| SEC[".text: 所有代码段拼接
.data: 所有数据段拼接
.bss: 所有未初始化段拼接"] LINK -->|"重定位"| RELOC["🔧 修正地址引用
解决外部符号
填写跳转目标"] LINK -->|"导出"| OUT["▶️ program.out
可执行文件"] style LINK fill:#c98500,color:#000 style OUT fill:#199e70,color:#fff
核心功能
| 功能 | 说明 | TI 对标 |
|---|---|---|
| 段分配 | 多个 .obj 的 .text/.data/.bss 段合并排序 | lnk6x SECTION 指令 |
| 重定位 | 修正跨文件的地址引用、填写绝对地址 | COFF 重定位条目 |
| 符号解析 | 解决外部符号引用、库符号查找 | lnk6x --library |
| ELF 兼容 | 兼容 lnk6x 链接器格式和输出 | TI lnk6x |
🔗 链接器与汇编器的配合
汇编器产生 .obj 时会在重定位条目中标记"这里引用了一个外部符号,我还不知道它的地址"。链接器负责查找这个符号的定义(可能在另一个 .obj 或库里),计算地址,填回对应的机器码位置。两者通过 COFF 格式的重定位表协作。