调试ARM,要遵从ARM的调试接口协议,JTAG便是其间的一种。当仿真时,IAR、KEIL、ADS等都有一个公共的调试接口,RDI便是其间的一种,那么咱们怎么完结RDI–>ARM调试协议(JTAG)的转化呢?有以下两种做法:
1.在电脑上写一个服务程序,把IAR、KEIL和ADS中的RDI指令解析成相关的JTAG协议,然后通后一个物理转化接口(留意,这个转化仅仅电气 物理层上的转化,就像RS232那样的效果)发送你的的方针板。H-JTAG便是这样的。H-JTAG的硬件就仅是一个物理电平的转化接口,所以很简略。 而电脑中装的h-JTAG软件便是前面提到的服务程序,担任协议转化的。
2.做一个板,用此板直接接纳来自IAR、KEIL和ADS等软件的调试指令,由此板做RDI->JTAG协议的转化。然后与方针板通讯,这便是JLINK的作业原理。
由上能够看出H-JTAG由所以软件作协议转化的,所以速度较慢,可是硬件简略。而第二种方法的JLINK一般带一个微弱的CPU,作硬件协议转化,把以硬件杂乱,但速度快。
JTAG的根本原理
JTAG(JointTestActionGroup,联合测验举动组)是一种国际规范测验协议(IEEE1149.1兼容)。规范的JTAG接口是4线——TMS、TCK、TDI、TDO,别离为形式挑选、时钟、数据输入和数据输出线。
JTAG的首要功用有两种,或者说JTAG首要有两大类:
1)一类用于测验芯片的电气特性,检测芯片是否有问题;
2)另一类用于Debug,对各类芯片以及其外围设备进行调试;一个含有JTAGDebug接口模块的CPU,只需时钟正常,就能够通过JTAG接口拜访CPU的内部寄存器、挂在CPU总线上的设备以及内置模块的寄存器。本文首要介绍的是Debug功用。
JTAG原理剖析
简略地说,JTAG的作业原理能够归结为:在器材内部界说一个TAP(TestAccessPort,测验拜访口),通过专用的JTAG测验东西对内部节点进行测验和调试。首要介绍一下鸿沟扫描和TAP的根本概念和内容。
鸿沟扫描
鸿沟扫描(Boundary-Scan)技能的根本思想是在接近芯片的输入/输出引脚上添加一个移位寄存器单元,也便是鸿沟扫描寄存器(Boundary-ScanRegister)。
当芯片处于调试状况时,鸿沟扫描寄存器能够将芯片和外围的输入/输出阻隔开来。通过鸿沟扫描寄存器单元,能够完结对芯片输入/输出信号的调查和操控。对 于芯片的输入引脚,能够通过与之相连的鸿沟扫描寄存器单元把信号(数据)加载到该引脚中去;关于芯片的输出引脚,也能够通过与之相连的鸿沟扫描寄存器“捕 获”该引脚上的输出信号。在正常的运转状况下,鸿沟扫描寄存器对芯片来说是通明的,所以正常的运转不会遭到任何影响。这样,鸿沟扫描寄存器供给了一种快捷 的方法用于观测和操控所需调试的芯片。别的,芯片输入/输出引脚上的鸿沟扫描(移位)寄存器单元能够彼此连接起来,在芯片的周围构成一个鸿沟扫描链 (Boundary-ScanChain)。鸿沟扫描链能够串行地输入和输出,通过相应的时钟信号和操控信号,就能够方便地调查和操控处在调试状况下的芯 片。
测验拜访口TAP
TAP(TestAccessPort)是一个通用的端口,通过TAP 能够拜访芯片供给的一切数据寄存器(DR)和指令寄存器(IR)。对整个TAP的操控是通过TAP操控器(TAPController)来完结的。下面先 别离介绍一下TAP的几个接口信号及其效果。其间,前4个信号在IEEE1149.1规范里是强制要求的。
TCK:时钟信号,为TAP的操作供给了一个独立的、根本的时钟信号。
TMS:形式挑选信号,用于操控TAP状况机的转化。
TDI:数据输入信号。
TDO:数据输出信号。
TRST:复位信号,能够用来对TAPController进行复位(初始化)。这个信号接口在IEEE1149.1规范里并不是强制要求的,由于通过TMS也能够对TAPController进行复位。
STCK:时钟回来信号,在IEEE1149.1规范里非强制要求。
简略地说,PC机对方针板的调试便是通过TAP接口完结对相关数据寄存器(DR)和指令寄存器(IR)的拜访。
体系上电后,TAPController首要进入Test-LogicReset状况,然后顺次进入Run-Test/Idle、Selcct-DR- Scan、Select-IR-Scan、Capture-IR、Shift-IR、Exitl-IR、Update-IR状况,最终回到Run- Tcst/Idle状况。在此过程中,状况的搬运都是通过TCK信号进行驱动(上升沿),通过TMS信号对TAP的状况进行挑选转化的。其间,在 Capture-IR状况下,一个特定的逻辑序列被加载到指令寄存器中;在Shift-IR状况下,能够将一条特定的指令送到指令寄存器中;在 Update—IR状况下,方才输入到指令寄存器中的指令将用来更新指令寄存器。最终,体系又回到Run—Test/Idle状况,指令收效,完结对指令 寄存器的拜访。当体系又回来到Run—Test/Idle状况后,依据前面指令寄存器的内容选定所需求的数据寄存器,开端履行对数据寄存器的作业。其根本 原理与指令寄存器的拜访完全相同,顺次为seIect—DR—Scan、Capture—DR、Shift—D、Exitl一DR、Update—DR, 最终回到Run-Tcst/Idle状况。通过TDl和TDO,就能够将新的数据加载到数据寄存器中。通过一个周期后,就能够捕获数据寄存器中的数据,完 成对与数据寄存器的每个寄存器单元相连的芯片引脚的数据更新,也完结了对数据寄存器的拜访。
现在,市场上的JTAG接口有14引脚和20引脚两种。其间,以20引脚为干流规范,但也有少量的方针板选用14引脚。通过简略的信号转化后,能够将它们通用。