前言(题外话)
2025年5月份吧,接到个任务,要去研究某款MCU的JTAG,要自己实现。一开始就被限制了实现环境,只能一步一步按照人家说的去做,和新来的FPGA开发一块做。条条框框的限制了很多,又要协议啊,又要计划啊,乱七八糟的。
参考资料少的可怜,官方资料只有大概的流程,细节缺的很多。官方论坛几乎没有相关内容,毕竟哪有大聪明会自己去完全实现这玩意。但偏有“大聪明”为了所谓的安全和保险,让你去做这个,然后叫所谓的“技术突破”。
一个人被慢慢折磨,然后人家时不时来催你。慢慢的一起调试的FPGA开发也被开了,就剩自己了。完全自己GPIO去实现。
终于总耗时4个月,做出来了。但感觉好多精气神都被消耗殆尽了。总是感觉特别累和烦。写了总结要么感觉简单,要么感觉太复杂。我验证都成功的东西了,特别细节的东西我也没说也没写。
总结整个过程和现在的状态就一个字:“烦”。
进入正题吧。
什么是JTAG
JTAG是联合测试工作组(Joint Test Action Group)的简称,是在名为标准测试访问端口和边界扫描结构的IEEE的标准1149.1的常用名称。此标准用于验证与测试生成出的印刷电路板功能。
现在主要用来芯片内部测试。多数的高级器件都支持JTAG协议,如DSP、MCU、FPGA等。标准的JTAG接口是4线:TMS、TCK、TDI、TDO,分别为模式选择、时钟、数据输入和数据输出线。
其他的自己百度再看看吧,不想啰嗦喽。总的来说JTAG用于芯片内部的测试和调试,核心功能是:
- 芯片测试:通过边界扫描技术验证电路连接质量,支持同时测试多个芯片;
- 在线编程:无需拆卸芯片即可通过JTAG接口进行编程,简化开发流程;
- 嵌入式调试:通过调试工具模拟器,读取CPU调试模块数据,实现软件调试。