• JTAG基础知识


    前言

    本知识翻译收集来自http://www.fpga4fun.com,版权归原网站所有。

    1.什么是JTAG:Joint Test Action Group;联合测试工作组

    JTAG是一种IEEE标准用来解决板级问题,开发于上个世纪80年代。今天JTAG被用来烧录、debug、探查端口。当然,最原始的使用是边界测试。

    边界测试:

    举个栗子你有两个芯片,这两个芯片之间连接了很多很多的线,怎么确保这些线之间的连接是OK的呢,用JTAG,它可以控制所有IC的引脚。这叫做芯片边界测试。(没用过)

    2.JTAG引脚:

    JTAG发展到现在已经有脚了,通常四个脚:TDI,TDO,TMS,TCK,当然还有个复位脚TRST。对于芯片上的JTAG的脚实际上是专用的。

    TDI:测试数据输入,数据通过TDI输入JTAG口;

    TDO:测试数据输出,数据通过TDO从JTAG口输出;

    TMS:测试模式选择,用来设置JTAG口处于某种特定的测试模式;

    TCK:测试时钟输入;

    TRST:测试复位;

    更多吊炸天的用法:

    CPU和FPGA制造商允许JTAG用来端口debug;FPGA厂商允许通过JTAG配置FPGA,使用JTAG信号通入FPGA核。

    3.JTAG怎么工作:

    PC控制JTAG:用JTAG电缆连接PC的打印端口或者USB或者网口。最简单的是连接打印端口。

    TMS:在每个含有JTAG的芯片内部,会有个JTAG TAP控制器。TAP控制器是一个有16个状态的状态机,而TMS就是这玩意的控制信号。当TMS把各个芯片都连接在一起的时候,所有的芯片的TAP状态跳转是一致的。下面是TAP控制器的示意图:

    改变TMS的值,状态就会发生跳转。如果保持5个周期的高电平,就会跳回test-logic-rest,通常用来同步TAP控制器;

    通常使用两个最重要的状态是Shift-DR和Shift-IR,两者连接TDI和TDO使用。

    IR:命令寄存器,你可以写值到这个寄存器中通知JTAG干某件事。每个TAP只有一个IR寄存器而且长度是一定的。

    DR:TAP可以有多个DR寄存器,与IR寄存器相似,每个IR值会选择不同的DR寄存器。(很迷)

    4.JTAG链相关疑问:

    计算JTAG链中的IC数目:

    一个重要的应用是IR值是全一值,表示BYPASS命令,在BYPASS模式中,TAP控制器中的DR寄存器总是单bit的,从输入TDI到输出TDO,通常一个周期,啥也不干。

    可用BYPASS模式计算IC数目。如果每个IC的TDI-TDO链的延迟是一个时钟,我们可以发送一些数据并检测它延迟了多久,那么久可以推算出JTAG链中的IC数目。

    得到JTAG链中的器件ID:

    大多数的JTAG IC都支持IDCODE命令。在IDCODE命令中,DR寄存器会装载一个32bit的代表器件ID的值。不同于BYPASS指令,在IDCODE模式下IR的值没有标准。不过每次TAP控制器跳转到Test-Logic-Reset态,它会进入IDCODE模式,并装载IDCODE到DR。

    5.边界扫描:

    TAP控制器进入边界扫描模式时,DR链可以遍历每个IO块或者读或拦截每个引脚。

    在FPGA上使用JTAG,你可以知晓每个引脚的状态当FPGA在运行的时候。

    可以使用JTAG命令SAMPLE,当然不同IC可能是不同的。

    以上。

  • 相关阅读:
    细说javascripe事件传播流程
    由浅入深的讲述Get和Post的区别
    使用windowsAPI 加载shellcode
    从PE资源加载和执行Shellcode
    DLL注入
    shellcode注入原理
    asp.net学习--ashx一句话木马
    asp.net学习--asmx一句话木马
    asp.net学习--svc一句话木马
    php--莫客服系统代码审计(已申请CNVD)
  • 原文地址:https://www.cnblogs.com/isAndyWu/p/9815973.html
Copyright © 2020-2023  润新知