第一次接触XDS100V3调试器是在调试TI DSP时遇到的。当时官方调试器价格昂贵,而市面上兼容产品又鱼龙混杂,于是萌生了自己动手制作的想法。XDS100V3本质上是一个基于FT2232HL USB转接芯片和FPGA的JTAG调试器,它最大的优势是完全开源——TI官方提供了完整的原理图、FPGA代码和工具链。
这个项目特别适合两类人:一是嵌入式开发爱好者,想深入了解JTAG调试器的工作原理;二是经常使用TI DSP/ARM芯片的工程师,需要稳定可靠的调试工具。我前后做了三个版本,第一个版本因为FPGA选型问题失败了,第二个版本USB枚举不稳定,直到第三个版本才完全成功。下面就把这些经验教训完整分享出来。
FT2232HL是这个项目的灵魂芯片,负责USB协议到JTAG协议的转换。这里有个重要细节:一定要选择FT2232HL而不是FT2232D,因为HL版本支持高速USB(480Mbps),而D版本只支持全速(12Mbps)。我在第一版用了FT2232D,调试C6748 DSP时经常出现连接超时。
FPGA选用的是Microsemi(现为Microchip)的A3P060VQ100,这是官方设计采用的型号。有个坑要注意:市面上有些A3P060是预编程了固件的OTP版本(比如某些拆机件),这种无法重新烧录。建议购买时明确询问卖家是否支持用户编程。如果买不到A3P060,可以用A3P125替代,但需要修改FPGA工程的器件设置。
电源部分建议使用TPS7333Q(TI的LDO),比AMS1117更稳定。实测中AMS1117在USB插拔时容易导致FPGA配置丢失。关键电路设计要点:
原理图中容易出错的是FT2232HL的TEST引脚(Pin41),必须通过10k电阻接地,否则芯片无法正常工作。这个细节在官方文档里没有特别强调,但我实测发现不接会导致USB枚举失败。
Microsemi的Libero SoC是必须的开发工具,最新版本是v12.6。安装时注意:
我第一次安装时没注意磁盘空间,默认安装在C盘导致编译失败。建议至少预留20GB空间,最好安装在SSD上以加快编译速度。
打开官方提供的v3_fpga_125.prjx工程后,常见两个报错:
编译步骤详解:
关键技巧:在Generate Programming File时,一定要勾选"Generate STP File",这是后续烧录必需的二进制文件。我第二次失败就是因为漏选了这个选项。
使用FTDI官方工具FT_Prog进行配置时,有几个参数必须严格设置:
配置完成后,建议先用"Scan and Parse"功能验证E2PROM内容是否正确。常见问题:
烧录使用官方提供的xds100v3_progfpga.exe工具,命令示例:
bash复制xds100v3_progfpga.exe -aPROGRAM dtsa_a3p060.stp
常见错误及解决方法:
成功烧录后,在设备管理器应该能看到两个COM端口:
在CCS中创建新Target Configuration时,关键设置:
实测发现,在调试C2000系列DSP时,需要修改CCS的初始化脚本:
javascript复制xdc.loadPackage('ti.csl');
xdc.loadPackage('ti.platforms.evmTMS320F28379D');
通过修改FPGA代码可以提升调试速度:
优化后,烧录速度从原来的50KB/s提升到120KB/s。但要注意,速度过高可能导致信号完整性问题,建议用示波器检查TCK信号质量。
USB频繁断开连接
CCS识别为XDS100v2
FPGA配置丢失
制作过程中最耗时的部分是PCB调试。建议先用洞洞板搭建关键电路测试,确认FT2232HL和FPGA工作正常后再做完整PCB。我的第三版采用4层板设计,将信号完整性问题彻底解决。