[讨论] 原来你是这样的JTAG

白丁   2016-11-27 09:17 楼主
一下内容出自知乎话题历史上有哪些发明到后来脱离了发明者的初衷?原文地址

我来说个电子电路方面的,JTAG

这货设计出来是通过边界扫描测试电路板的连通性用的,可以简单理解成硬件Debug,比如电路板上的芯片引脚有没有焊好,有没有虚焊脱焊之类,或者PCB在制造过程中有没有断线短路,诸如此类。。。

原理也很简单,通过一个外接接口(就是JTAG啦)把电路板上所有支持这个功能芯片全部串接起来,然后朝这些芯片发指令,比如两个芯片有引脚是连起来的,发指令让一个芯片把引脚置高/低电平,让另一个芯片把那几个引脚的电平状态通过JTAG接口传过来,检测是不是和发送的一致,如果一致就表示电路板上的互联没问题;或者直接通过JTAG把接口置高/低后,看看电路板上其他部分电路的行为是不是和预期一样,比如有没有一个小灯亮起来。

但是呢,这东西虽然已经成为了一个IEEE标准,使用率却不高,原因大致上分为两类
1. 随着计算机视觉的发展,现在电路板在PCB制作完成以后、锡浆印刷之后和组装焊接成PCBA以后,都会通过AOI(自动光学检测)与AXI(自动X射线检测)进行测试,来检出PCB制造缺陷,SMT打件缺陷,以及焊接不良的问题,而JTAG只能检测有JTAG接口芯片的之间的连接问题,只是电路板上互联的一部分,检出以后还要人工判断到底是打件、焊接还是PCB制造的问题。
2. JTAG还有个问题,就是默认往引脚上施加的都是直流电平信号,而且JTAG本质上是个串行接口,受限于JTAG接口本身的速度,即使反复改写引脚电平值,芯片引脚的输出频率也不可能太高,一般1Mbps就已经很不错了,而且大部分外设芯片是没有JTAG接口的,需要使用各种总线进行测试,但即使不管时钟速度问题,要使用JTAG测试,还要手写JTAG指令来模拟各种总线,累死人的好吧。并且现在的高速电路板,尤其在开发过程中,最重要的测试就是各种互联实际传输信号的最高频率和误码率,你JTAG只能测试直流信号,那怎么行~所以现在对于微控制器、FPGA之类的可编程器件,基本上都是自己撸一个测试模式出来,专门测试板子上的DDR、SDIO、LVDS、CAN、I2C等各类总线互联,这样既可以使用开发时用的库和IP核,又可以用实际运行速度跑各种总线。

不行不行,费了那么大劲开发出来的接口,还被IEEE接纳为标准,结果使用率那么低可怎么说的过去?来来来,让我们把时间倒回51、AVR、PIC横行天下的年代,当时各个厂商都有自己的单片机,以及对应特定型号的一套下载协议、调试协议,以及对应的编程器、仿真器。由于这些协议都是私有的,很少公开,而且这些工具的开发工作量大,销量少,所以那个时代的编程器和仿真器往往都非常贵。
后来,有一家公司(atmel?)突然想到,这个JTAG接口连外部引脚电平都能改写,那写个内部Flash问题应该不大吧?读写寄存器就更没问题了吧?这样一来,就用JTAG协议来下载程序和调试程序不就好了?通用性多强啊,开发工作量也小,只要把JTAG接口搞进芯片里,什么芯片都能用,各种工具也有成熟的方案,完美~
再后来,到了ARM时代,JTAG接口已经成了所有ARM核微控制器的标配,大家都已经习惯了把一个J-Link或者别的什么Link插到JTAG接口上,所有ARM核芯片的程序下载和程序Debug全部搞定,妈妈再也不用担心我换一个型号就要花个万把块钱买个仿真器啦,做嵌入式开发的都没人知道JTAG接口一开始是干什么的了。。。

于是,一个本来是用于硬件Debug的接口,就这样开开心心的变成了人民群众喜闻乐见的软件Debug接口~



training

回复评论 (4)

二狗子,你变了,你以前不是这样的
强者为尊,弱者,死无葬身之地
点赞  2016-12-5 09:17
引用: 辛昕 发表于 2016-12-5 09:17
二狗子,你变了,你以前不是这样的

二狗子是谁
training
点赞  2016-12-5 17:25
了解了发展过程,很受教.
点赞  2018-7-4 15:30
学习了!
FPGA Topic 技术博客 http://www.cnblogs.com/ifpga
点赞  2018-7-9 00:11
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复