linux cpu占用率如何看
660
2022-11-01
嵌入式调试里的接口标准JTAG详细介绍
一、JTAG 接口标准
1.1 IEEE 1149.1 标准
1.2 JTAG 接口信号
JTAG 接口,总称测试访问接口 TAP(Test Access Port),使用如下信号来实现边界扫描操作:
TMS(测试模式选择):控制内部状态机转换的模式信号(TCK 上升沿采样)。
TDI(测试数据输入):移入器件测试或编程逻辑的数据(TCK 上升沿采样)。
TDO(测试数据输出):移出器件测试或编程逻辑的数据(TCK 下降沿采样)。
除了以上信号线外,还有 1 个可选的信号:
TRST(测试重置):重置 TAP 控制器的状态机的复位信号。
1.3 JTAG 系统内部构造
所有目标器件核心逻辑与针脚之间的信号都会被串联的边界扫描单元所拦截。正常运行时,这些边界扫描单元是不可见的。但是,在测试模式下这些单元可以被用来设置 / 读取目标器件针脚或核心逻辑的值。
除了上述 BSR 之外,JTAG 系统还需要以下 3 个寄存器:
指令寄存器:存储当前的指令,指令内容被 TAP 控制器用来决定如何处理接收到的信号。
旁路寄存器(BYPASS):把信息从 TDI 传到 TDO 的单位寄存器。
识别码寄存器(IDCODES):含有器件的识别码和版本序号,该信息可以使器件和它的边界扫描描述语言(BSDL)文件相关联。
JTAG 系统最核心的是 TAP 控制器,TAP 控制器被设计用来与 JTAG 系统内部寄存器相互动,TAP 控制器是一个被 TMS 信号控制转换的同步状态机,控制着 JTAG 系统的行为。
如上图所示,TAP 控制器的内部状态机一共 16 个状态,关于各个状态具体含义可查阅 IEEE1149.1 手册。TAP 控制器的基本功能是产生 BSR 和指令寄存器正常工作所需要的时钟和控制信号,其主要功能有以下几点:
提供信号将指令装入指令寄存器。
提供信号将输入数据从 TDI 管脚移入内部寄存器、把输出数据从内部寄存器移出到 TDO 管脚。
执行相应功能,如捕获、移位和更新数据等。
指令寄存器是用来存储需要解释执行的指令的,IEEE 1149.1 标准规定了 JTAG 兼容器件必须要具备的指令:
BYPASS:用单一单元旁路寄存器传送数据,缩短 JTAG 链上不必要的扫描链路。
EXTEST:将已知值(存在 BSR)驱动到芯片针脚上。
除了必备的指令外,IEEE 1149.1 标准还规定了如下可选的指令:
IDCODE:将 IDCODES 寄存器中的数据移出。
INTEST:将已知值(存在 BSR)驱动到芯片核心逻辑上。
RUNBIST:当 TAP 进入测试运行空闲状态时,芯片进行自检。
通常支持 JTAG 接口的调试编程工具其实只是利用了 JTAG 技术的四线 TAP 通信协议,而除了标准 TAP 信号线外,有时还加入其他辅助信号线构成完整 pinout,对于 ARM JTAG 调试工具来说,有两种比较通用的 pinout 标准,即 ARM20 JTAG header 和 ARM14 JTAG header:
上述两种 ARM JTAG header 中除了标准 TAP 信号线外,其他辅助信号线含义如下:
二、JTAG 接口进阶
前面讲完了 JTAG 基础知识,下面痞子衡再给大家多介绍一些 JTAG 相关的“黑科技”。
2.1 BSDL 文件
现如今支持 JTAG 接口的芯片越来越多,为了统一各芯片厂商的具体 JTAG 实现,促进整个电子行业的一致性,IEEE1149.1 标准制订了 BSDL 语言规范。BSDL 是 JTAG 设备的标准建模语言,它的语法是 VHDL 的子集,是对 JTAG 器件的边界扫描特性的描述,主要用来沟通芯片厂商、用户与测试工具之间的联系。
痞子衡随便找一款芯片的 BSDL 文件(Freescale K60_1M(K24_144QFP))简单分析下:
2.2 JTAG 菊花链
从上图可以看出 TMS、TCK 是一主多从并联的结构(设备过多时 TMS,TCK 电路需加缓冲器(如 74LVC245)增加驱动能力);TDI、TDO 是一主一从串联的结构,这种菊花链方式使得 PCB 上只需要一个 JTAG 接口便可以访问所有 JTAG 设备。
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~