我对嵌入式系统还很陌生,我一直都在使用这个术语,但是我不太明白它是什么。在线快速搜索即可找到以下Wikipedia页面:https : //en.wikipedia.org/wiki/Joint_Test_Action_Group,将其描述为某种调试协议。但是在其他情况下,它就像能够像程序员一样对芯片的存储器进行编程。它是什么?
我对嵌入式系统还很陌生,我一直都在使用这个术语,但是我不太明白它是什么。在线快速搜索即可找到以下Wikipedia页面:https : //en.wikipedia.org/wiki/Joint_Test_Action_Group,将其描述为某种调试协议。但是在其他情况下,它就像能够像程序员一样对芯片的存储器进行编程。它是什么?
Answers:
它就像USB,SPI,I2C和其他“总线”一样,并且具有许多流行的用途,不仅限于:
特别是在对每个零件投入过多之前对硅进行测试,例如,当芯片仍在晶片上时,您可以检查大部分零件。划片可能会损坏晶圆,因此您想再次测试,但也许要在包装之前,之后进行。
您可以使用它在板上进行边界扫描。您可以在生产线上使用电路板(必须正确设计电路板,并且一定比例的芯片必须支持此功能),但是您可以进行低速连接测试,刺激走线一端的引脚并扫描另一端零件,以根据电路板的设计查看是否已连接。
由于芯片已经具有这些专用引脚,因此对于处理器而言,为什么不使用相同的接口作为与片上调试器(OCD)进行通信的方式,在处理器中进行设计并允许通过jtag与之进行通信。
这是一种通用的方式,可让您隔离要向其发送一系列比特或从中获取一系列比特的链上的事物,从而使您想与之交谈的每个事物都可以针对各种数字进行设计从少量到大量的位。对于调试器,您自然会使其写入或读取芯片中寄存器大小的东西-可能是16位寄存器或32位。但是对于芯片或电路板测试,您的扫描链可能需要数十位。如果需要,您要处理的每个单独事物的大小都可以与其他事物有所不同,这使得它成为具有多种引脚的非常通用的总线,对于这些类型的用例来说很有吸引力。
也许由于软件调试的普及,他们现在有一些两种引脚的解决方案可以节省微控制器的引脚数,也许其他人会采用这种方式,也许没有。
JTAG有点奇怪。首先,该术语可以指定特定的连接器和协议,包括时钟信号(TCK),模式选择(TMS)和数据输入/输出(TDI / TDO)。它由设备网络组成,其中每个设备的TDO在所谓的扫描链中连接到下一个设备的TDI。TMS用于将所有设备同时置于各种模式。
扫描链上的设备通常以一个大移位寄存器的形式连接,该移位寄存器由每个单独设备中的寄存器组成。当设备处于SHIFT_IR或SHIFT_DR状态时,它们将连接到两个临时寄存器之一的扫描链:指令寄存器和数据寄存器。
移入值后,可以在切换TCK时适当设置TMS来激活UPDATE_IR或UPDATE_DR模式。此时,该值移入寄存器“生效”。例如,将各种序列移入FPGA的IR并转换为UPDATE_IR,将使FPGA进入各种模式,例如配置,回读,正常运行时,或访问设计中实例化的特定用户寄存器和特定于JTAG的原语。
同样,捕获状态可用于从设备“读取”值并将其放入IR或DR,以通过TDO移出并最终由JTAG程序员读取。
JTAG定义了一个串行协议和一些命令,以允许访问复杂IC中的内部寄存器。这允许测试人员使用很少的引脚以标准方式获得可观察性和可控制性。
最初的用途是“边界扫描”,其中所有I / O引脚都可以由环绕芯片的大型移位寄存器读取和驱动。但是,很快增加了它,增加了更多的移位寄存器来访问芯片的内部,包括存储器。
您很少会碰碰碰碰JTAG,访问通常是通过库,也就是驱动程序进行的,这些库,驱动程序由IC制造商提供,并由测试系统和测试访问适配器使用。
JTAG是什么意思,JTAG是什么。正如其他人指出JTAG“是”用于制造测试一个工业标准总线接口,如在Ĵ oint Ť EST 甲 ction G ^ roup。
JTAG对嵌入式软件开发人员的“含义”是SoC /微处理器上的调试接口,用于对芯片上运行的嵌入式软件进行外部调试。市场上几乎所有的CPU / SoC均使用JTAG接口,不仅用于制造测试,而且用于软件调试支持。您会在从服务器类x86 CPU到价格低于50美元的家用WiFi路由器的所有产品上找到JTAG接口。使用正确的接口硬件和正确的软件,这些接口将使您能够读取/写入内存,设置断点和单步代码。
当然,关键是获得正确的硬件和软件。即使基本的JTAG接口是标准化的,设备中可用的特定软件调试功能也可能没有。JTAG就像TCP / IP。它存在于应用程序堆栈的中间。您需要正确的物理层与设备进行通信(即,这表示该事物使用10-Base-2吗?!?!?),并且还需要上面的正确应用软件(这意味着我需要Gopher)客户?!?!?!)。但是,ARM生态系统的优势已经导致了某种程度的标准化(请参阅OpenOCD)。
您还询问了有关使用JTAG编程闪存的问题。是的,某些软件也将其用于此目的。SoC可以提供从CPU存储器地址空间读取/写入的JTAG功能,可以提供对闪存控制器的直接访问,而JTAG至少可以提供对芯片边缘I / O引脚的原始低级别访问(这是JTAG的初衷是为了在制造测试期间实现芯片到芯片互连的连续性测试,即“ JTAG边界扫描”)。如果设备意外“变砖”,那么聪明的程序员可以使用这些工具中的任何一种来驱动对闪存芯片进行重新编程所需的信号。