JLINK与JTAG的区别_cwcwj3069的博客-程序员秘密

技术标签: u-boot  

JLINK与JTAG的区别

调试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引脚。经过简单的信号转换后,可以将它们通用。


版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/cwcwj3069/article/details/42418891

智能推荐

Android java正则表达式去除字符串花括号_yemao_csdn的博客-程序员秘密

我们有时候需要去处理一些字符串,获取自己想要的某个字段,例如: {id=38, res_num=lg_001, model=ZUAD, res_name=lg_label, production_date=ZUAD001, manufactor=ZUAD, enable_date=2019-04-17}当我们想要其中的id,res_num 等相关字段时,我们可以这样去处理...

Spring+Mybatis+SpringMVC框架,利用Apache POI动态导出Excel_Angle_Saber的博客-程序员秘密

Spring+Mybatis+SpringMVC框架,利用Apache POI导出Excel。POI具体使用请自行百度。话不多说,上代码。ExportExcelUtil代码packagecom.rixin.common.util;importjava.io.OutputStream;importjava.lang.reflect.Method;importjava.net

linux安装xv6失败:qemu-system-x86_64: cannot set up guest memory 'pc.ram': Cannot allocate memory_szuhuanggang的博客-程序员秘密

首先查看主机确保可以分配多少内存: sysctl -a | grep overcommit如果overcommit_memory=0的话,进行下面操作:使用root权限执行以下命令: sysctl vm.overcommit_memory=1(使用其他方式修改该值也行)注:每次linux重启后,该值又会变成0内核参数overcommit_memory ,表示内存分配策略...

BootStrap之 提示工具(Tooltip)插件_weixin_30498807的博客-程序员秘密

<!DOCTYPE html><html><head> <meta charset="utf-8"> <title>Bootstrap 实例 - 工具提示(Tooltip)插件</title> <link rel="stylesheet" href="https://cdn.staticfile...

RuntimeError - [Xcodeproj] Unknown object version._coding_girl.的博客-程序员秘密

在使用终端 pod install 时,提示错误如下在这里可以看到具体错误内容:点这里原因:这是因为你的 Xcode 版本和 CocoaPods 的版本不匹配,你需要更新你的 CocoaPods 解决方法:终端输入命令 $ gem install cocoapods --pre完成之后正常使用 CocoaPods 即可。...

办公空间迎拐点,共享办公构建全场景服务_chuangfu99的博客-程序员秘密

办公室是个人发挥创造力、促进企业发展的重要空间和平台。也是一个企业在创业时期必不可少的因素。在一个适宜的办公室环境中,对企业的归属感、对工作的积极性和创造力会更强,才能更高效地为企业创造价值。更可以为公司的形象带来良好的展现,也方便了工作与休闲的结合。传统的办公室只是单纯提供一间办公室的办公场地,没有装修、办公设备、装饰,更别提社群组织、服务和交流活动等文化功能。而在上海,现如今的共享办公,是中小型企业的天堂,当各种不同体量,不同行业的公司聚集在一起,每间办公室都在创造新的可能性。  不同于传统的办公室

随便推点

AH00072: make_sock: could not bind to address [::]:443_桔子爱笑的博客-程序员秘密

话不多说 上图意思就是说443 端口呗占用了,但是httpd.conf中根本没有使用443端口,也没有引用httpd-ssl.conf文件,解决除了httpd.conf和httpd-ssl.conf之外还有httpd-ahssl.conf文件中开启了443端口,修改为442或441等其他端口就可以了...

【算法】快速排序及其拓展优化(单向快速排序、单链表的快速排序)_Jacky_Feng的博客-程序员秘密

引言:快速排序是排序算法中,因其优秀的时间复杂度被人们比较广泛使用。接下来我们就来看一下快速排序的递归算法及非递归算法实现,及快速排序的两个拓展,单向扫面的快速排序和单链表的快速排序。一、普通快速排序(双向扫描)1.快速排序算法模拟图2.代码演示2.1 递归法#include<iostream>#include<iomanip>using ...

学习之初_weixin_33795833的博客-程序员秘密

2019独角兽企业重金招聘Python工程师标准>>> ...

成员函数的函数配接器_自由不死的博客-程序员秘密

在STL标准库中除了提供常规的函数配接器外,还提供了两个针对成员函数的函数配接器,其主要功能是通过这些配接器,你可以针对每一个元素直接去调用其成员函数。这样的成员函数配接器有两个,分别是:mem_fun_ref(op)调用对象的成员函数opmem_fun(op)调用对象指针的成员函数op这两个函数配接器都是去调用对象中的成员函数op,对于这两个成员函数,以前是只能调用对象的

I2C 总线协议初探 - STM32 I2C 接口外设学习笔记_昆仑山道长的博客-程序员秘密

I2C(Inter-Integrated Circuit)总线是由 PHILIPS(飞利浦) 公司开发的两线式串行总线,用于连接微控制器及其外围设备。是微电子通信控制领域广泛采用的一种总线标准。它是同步通信的一种特殊形式,具有接口线少,控制方式简单,器件封装形式小,通信速率较高等优点。前言早在大一和班上大神谈理想的时候就听过 I2C,那时我还在用 51 点灯,而他调了一星期 I2C,还把 I2C ...

推荐文章

热门文章

相关标签