ARMJTAG仿真器电路讨论.
- 格式:doc
- 大小:834.50 KB
- 文档页数:5
JTAG电路的工作原理JTAG(Joint Test Action Group)是一种用于测试和调试集成电路的标准接口。
它提供了一种简单、高效的方法来访问和控制电路中的内部信号和逻辑。
本文将详细介绍JTAG电路的工作原理。
JTAG电路由两部份组成:测试访问端(TAP)和测试访问控制器(TAC)。
TAP是位于被测试电路和测试设备之间的接口,用于传输数据和控制信号。
TAC 是测试设备中的逻辑电路,用于控制TAP并处理测试数据。
JTAG电路的工作原理如下:1. TAP控制状态机(TAP Controller State Machine):TAP控制状态机是TAC 中的一种有限状态机,用于控制TAP的操作。
它包含四个状态:Test-Logic-Reset (TLR)、Run-Test/Idle(RTI)、Select-DR-Scan(SDR)和 Select-IR-Scan (SIR)。
在不同的状态下,TAP控制状态机会执行不同的操作。
2. 信号传输:JTAG电路通过四条信号线进行数据和控制信号的传输。
这四条信号线分别是:TCK(Test Clock)、TMS(Test Mode Select)、TDI(Test Data Input)和 TDO(Test Data Output)。
- TCK:测试时钟信号,用于同步数据传输和状态转换。
- TMS:测试模式选择信号,用于控制TAP状态机的状态转换。
- TDI:测试数据输入信号,用于向被测试电路传输测试数据。
- TDO:测试数据输出信号,用于从被测试电路读取测试结果。
3. TAP状态转换:TAP控制状态机通过TMS信号控制状态的转换。
根据TMS 信号的不同序列,TAP状态机可以从一个状态转换到另一个状态。
例如,从TLR 状态转换到RTI状态,或者从RTI状态转换到SDR状态。
4. 测试数据传输:在SDR状态下,可以通过TCK、TDI和TDO信号进行测试数据的传输。
AVRJTAGICE仿真器使用说明
首先,我们需要准备一台计算机和AVR JTAG ICE 仿真器。
将仿真器
插入计算机的USB接口,并确保计算机已安装了AVR Studio软件,这是
一款用于AVR 微控制器开发的集成开发环境(IDE)。
接下来,我们将目标设备与AVRJTAGICE仿真器连接起来。
首先,在
目标设备上找到JTAG接口的引脚,通常为4个或5个引脚,并将仿真器
的JTAG线连接到目标设备的JTAG接口上。
然后,将仿真器的USB线连接
到计算机的USB接口上。
现在,我们打开AVR Studio软件,并创建一个新的项目。
选择正确
的目标设备,并确保使用JTAG作为调试接口。
AVR Studio会自动检测到
连接的AVR JTAG ICE 仿真器,并在界面上显示连接状态。
在仿真调试模式下,我们可以通过设置断点、单步执行、查看变量值
等方式进行调试。
AVR Studio提供了丰富的调试功能,如查看寄存器、
查看存储器、查看端口状态等。
我们可以根据需要使用这些功能进行调试,以发现和修复程序中的错误。
在进行仿真调试时,还可以使用"Watch"功能监视变量的值。
通过添
加变量到监视列表中,我们可以随时查看变量的当前值,并在程序执行过
程中观察变量的变化情况。
当调试完成后,我们可以通过点击"Stop Debugging"按钮退出仿真调
试模式。
在退出之前,我们可以选择保存当前的仿真调试结果,以便日后
查看和分析。
JTAG仿真器原理调试的基础是检测,而检测有“无损(non-intrusive)”和“无损(intrusive)”之分。
理想的检测手段应该是不使被测对象的状态(包括时序)因此而造成任何改变,否则测到的数据就不准确了。
可是,严格意义上的无损检测不可能实现,因此实际上是“测不准”的。
人们所能做到的只是尽量减少对被测对象的状态改变,将误差减少到可以接受的程度。
这还是比较容易理解的。
不过原来看ARM资料的时候,调试手段一大堆,但是都没有深刻的印象,以致于以前还一直在怀疑,为什么下载的jflash-s3c2410,不能通过仿真器下载呢?现在想想,其实对于什么是调试器,什么是仿真器,调试的模型是什么都是非常模糊的,所以下决心首先从概念上理解调试模型。
之后随着技术深入,可以逐步深入理解调试技术。
现代调试技术大致可以归为指令级仿真调试和硬件仿真调试两种。
1 指令级仿真调试我想这个比较容易理解。
指令集仿真调试属于纯软件仿真,比如ARM公司的ARMulator。
因为有的时候嵌入式软件的开发需要在目标系统(硬件)并不存在的条件下进行,所以需要这种通过软件来模拟目标系统的CPU。
现在有个开源项目skyeye,也是这样一个指令级仿真调试工具。
这一系列的软件以数据结构来模拟目标机CPU中各个寄存器和其他资源,以及目标系统的有关资源(比如内存等),并且通过软件模拟,即逐条指令地解释执行目标机可执行映象中的程序。
例如,“mov r1, #0”,就代表往寄存器r1的数据结构中写0,如此。
模拟执行的速度当然慢一些,但是可以验证逻辑,在某些条件下是一种重要的手段。
2 硬件仿真调试现在比较成熟的技术有如下四种:·Ad-hoc test·Scan-based test·Build-in-self test·Boundary-scan test因为不是专业研究这个方向,对这四个测试技术的区别也没大有必要深究。
自制AVR JTAG仿真器(1)将ISP下载线与开发板的ISP输入口相连,打开ponyprog(小马软件)烧写程序,单片机选Atmega16,选择file菜单中的opendevice file。
选项,调入bootice16_rom.hex文件,如下图所示:(2)选择“命令”菜单中的“编程选项”按照下图所示选择选择,选好后点击“确定”:(3)选择“命令”菜单中的“写入所有”如下图所示:执行写入操作,将BOOTROM烧入仿真适配器的单片机中。
照下图所示的方式配置熔丝位:(配置好后点击“写入”)(5)断开电源,拔下ISP下载电缆,取下Atmega16芯片,安装到JTAG的仿真电路板上,将JTAG电路板的串口和计算机的串口相连,通入电源。
打开AVR Studio 软件,点击“Cancel”按钮,关闭欢迎窗口。
在AVR Studio软件中选择“tool”菜单,选择“AVR Prog......”选项,如下图所示:(6)在弹出的电话框中,用鼠标单击“Browse”按钮,在对话框中选择“C:\Program File\Atmel\AVR Tool\JTAG ICE\upgrade.ebn”(假设AVR Studio 软件安装在默认的位置)。
然后单击“Flash”选项里的“Program”按钮,开始向jtag电路板的Atmega16芯片中烧入程序。
如下图所示:(7)烧写结束后,自动校验数据时会提示错误,只要单击确定键即可,入下图所示:(8)关闭AVR Studio软件,断开jtag电路板的电源,重新将ISP下载线接入开发板的ISP下载接口中。
接通电源,进入PonyProg烧写界面,选择“命令”菜单下的“Security and Configuration Bits”选项,打开熔丝位的配置菜单,按照下图所示配置熔丝位,然后点击“写入”按钮,将熔丝位信息烧写入芯片中。
(9)这样,jtag仿真器就做好了。
几点说明:(1)做jtag仿真器上的用的Atmega16芯片最好使用新买的,且没有配置过熔丝位的芯片。
JTAG电路的工作原理JTAG(Joint Test Action Group)是一种用于测试和调试电子设备的标准接口。
它被广泛应用于集成电路、嵌入式系统和电子设备的开辟过程中。
本文将详细介绍JTAG电路的工作原理,包括其基本原理、信号传输方式以及应用场景等。
一、基本原理JTAG电路的基本原理是通过在被测试的电子设备上添加一组专用的测试逻辑电路,实现对设备内部的功能模块进行测试和调试。
这组测试逻辑电路被称为JTAG接口或者TAP(Test Access Port)。
它由四个主要组成部份构成:Test Data Register(TDR)、Instruction Register(IR)、Data Register(DR)和控制逻辑。
TDR用于存储测试数据,IR用于存储测试指令,DR用于存储测试结果。
控制逻辑则负责控制测试过程的流程和时序。
通过这些组成部份的协作,可以实现对电子设备内部各个模块的测试和调试。
二、信号传输方式JTAG接口使用了一种称为“串行矢量传输”(Serial Vector Transmission)的方式来传输测试数据和指令。
在这种传输方式下,数据和指令是按位(bit)进行传输的,每一个位都经过一个时钟周期。
这种串行传输的方式具有较高的灵便性和可扩展性,可以适应不同的测试需求。
具体而言,JTAG接口通过四个信号线来实现数据和指令的传输:TCK(Test Clock)、TDI(Test Data In)、TDO(Test Data Out)和TMS(Test Mode Select)。
TCK是时钟信号,用于同步数据和指令的传输;TDI是输入信号,用于传输测试数据和指令;TDO是输出信号,用于传输测试结果;TMS是控制信号,用于控制测试过程的状态转换。
三、应用场景JTAG电路在电子设备的开辟过程中有广泛的应用场景。
以下列举几个常见的应用场景:1. 测试和调试:JTAG接口可以用于对电子设备内部各个模块进行测试和调试,包括逻辑电路、存储器、寄存器等。
实验1 输入输出实验一、实验目的1. 掌握ARM的通用输入输出接口工作原理。
2. 学习编程实现GPIO的方法,掌握I/0的功能复用,并能熟练的配置。
二、实验内容1. 通过按键输入开关量。
2. 在实验箱的主板上点亮LED灯LED1、LED2和LED3(分别接GPC5、GPC6和GPC7),并轮流闪烁。
三、预备知识1. 用EW ARM集成开发环境,编写和调试程序的基本过程。
2. ARM应用程序的框架结构。
3. 了解GPIO。
四、实验设备及工具硬件:ARM嵌入式开发平台,PC机,JTAG仿真器。
软件:操作系统WindowsXP/7,EWARM集成开发环境,仿真器驱动程序,超级终端通讯程序。
五、实验原理及说明编写程序,当用户在实验箱上按下“INTKEY”键时,在中断服务子程序中将相关信息打印到串口中,并显示在超级终端上。
1. 上拉电阻和下拉电阻上拉就是将不确定的信号通过一个电阻箝位在高电平,电阻同时起限流作用,下拉同理;上拉是对器件注入电流,下拉是输出电流。
1)一般作单键触发使用时,如果IC本身没有内接电阻,为了使单键维持在不被触发的状态或是触发后回到原状态,必须在IC外部另接一电阻。
2)数字电路有三种状态:高电平、低电平、和高阻状态,有些应用场合不希望出现高阻状态,可以通过上拉电阻或下拉电阻的方式使处于稳定状态,具体视设计要求而定。
3)I/O端口驱动有的可以设置,有的不可以设置,有的是内置,有的是需要外接。
I/O 端口的输出通过一个电阻和电源连接在一起的时候,该电阻成为上拉电阻,也就是说,如果该端口正常时为高电平。
通过一个电阻和地连接在一起的时候,该电阻称为下拉电阻,使该端口平时为低电平。
当一个接有上拉电阻的端口设为输入状态时,它的常态就为高电平,用于检测低电平的输入。
4)上拉电阻是用来解决总线驱动能力不足时提供电流的,是拉电流;下拉电阻是用来吸收电流的,也就是我们通常所说的灌电流。
5)接电组就是为了防止输入端悬空。
ARM仿真器JLINK、ULINK使用SWD调试时的接线方式
ARM仿真器JLINK、ULINK使用SWD调试时的接线
方式
手头的仿真器是JLINK V8,连接STM32F103 时,使用SWD 方式。
JTAG 引脚示意图:
一、SWD 和传统的调试方式区别
1. SWD 模式比JTAG 在高速模式下面更加可靠
2. GPIO 刚好缺一个的时候, 可以使用SWD 仿真, 这种模式支持更少的引脚
3. 在板子的体积有限的时候推荐使用SWD 模式
二、仿真器对SWD 模式支持情况
1. 市面上的常用仿真器对SWD 模式支持情况
JLINKV8 非常好的支持SWD 仿真模式, 速度可以到10M
ULINK2 非常好的支持SWD 模式,速度可以达到10M
2. SWD 硬件接口上的不同
(1) JLINKV7 需要的硬件接口为: GND, RST, SWDIO, SWDCLK(2) JLINKV8 需要的硬件接口为: VCC, GND, RST, SWDIO, SWDCLK (注:下面有我自己用JLINKV8 的实际连线及相应实验结果)(3) ULINK1 不支持SWD 模式(4) ULINK2 需要的硬件接口为: GND, RST, SWDIO, SWDCLK
三、在MDK 中SWD 模式的设置
正常的JTAG 需要20 管脚,而J-Link 的SWD 只需要2 根线(PA13/JTMS/SWDIO、PA14/JTCK/SWCLK)就够了(加上电源线也就4 根),这样就节省了3 个I/O 口(PA15/JTDI、PB3/JTDO、PB4/JNTRST)为其它所用,并且可节省一部分板子的空间(只需4 个口就可以了)。
arm jtag 调试原理嗨,小伙伴!今天咱们来唠唠ARM JTAG调试原理这个超有趣的事儿。
JTAG呢,就像是给ARM芯片开的一个特殊小后门。
想象一下,ARM芯片就像一个神秘的小城堡,里面有好多好多的小房间(各种寄存器、功能模块啥的),但是这个城堡外面围着高高的城墙,我们平常很难直接看到里面到底发生了什么。
这时候JTAG 就闪亮登场啦。
JTAG有几个特别的线,就像是几根魔法绳索。
其中有TMS(测试模式选择)线,这根线就像是一个指挥棒。
你看啊,当我们在调试的时候,通过在这根线上发送不同的高低电平信号,就像是在给芯片里的调试模块打暗号呢。
比如说,高电平可能表示“咱们要进入这个特定的测试模式啦”,低电平可能就是“现在先停一停这个操作”。
还有TCK(测试时钟)线,这可是整个调试的节奏大师哦。
它就像一个小鼓手,不停地打着节拍。
芯片里的调试操作都得按照这个节拍来进行。
就像我们跳舞得跟着音乐的节奏一样,芯片里的各种测试和数据传输都要和TCK的节奏同步。
如果TCK这个小鼓手乱了节奏,那整个调试可就乱套啦,就像一群舞者突然找不到音乐的节奏,乱成一锅粥了呢。
TDI(测试数据输入)线呢,这是往芯片里送宝贝(数据)的通道。
我们想要查看芯片里某个寄存器的值,或者给某个模块设置一个初始状态,就可以通过TDI把这些数据送进去。
这就好比我们通过一个小管道,把我们想要的东西送进城堡里的各个小房间。
而TDO(测试数据输出)线呢,它是把芯片里的信息反馈出来的通道。
就像是城堡里的小信使,把城堡里各个房间的情况给我们带出来。
比如说我们想知道某个寄存器现在存的是什么数,芯片就会通过TDO把这个数给我们送出来,就像小信使把房间里的小纸条递给我们一样。
那这个JTAG到底是怎么在ARM芯片里工作的呢?当我们把JTAG接口连接到ARM 芯片上,就相当于把我们的魔法绳索系到了城堡上。
然后我们通过外部的调试工具,像是JTAG调试器之类的。
这个调试器就像是一个超级管家,它知道怎么摆弄那些魔法绳索。
JTAG仿真接口电路设计
连接测试组(JTAG,Joint Test Action Group)接口用于连接最小系统板和仿真器,实现仿真器对DSP 的访问,JTAG 接口的连接需要和仿真器上的接口一致。
不论什么型号的仿真器,其JTAG 接口都满足IEEE 1149.1 的标准。
满足IEEE 1149.1 标准的14 脚JTAG 接口如图1 所示。
图1 14 脚仿真口引脚
一般情况下,最小系统板需要引出双排的14 脚插针和图2 所示的一致,图中引脚间隔为0.1 英寸,引脚宽度为0.025 英寸,引脚长度为0.235 英寸。
在大多数情况下,如果开发板和仿真器之间的连接电缆不超过6 英寸,可以采用
图2 接法。
需要注意的是其中DSP 的EMU0 和EMUI 引脚都需要上拉电阻,
推荐阻值为4.7kΩ或者10kΩ。
如果DSP 和仿真器之间的连接电缆超过6 英寸,必须采用图3 接法,在数据传输引脚加上驱动。
图2 小大于6 英寸的JTAG 连接方法
图3 大于6 英寸的JTAG 连接方法
tips:感谢大家的阅读,本文由我司收集整编。
仅供参阅!。
ARM JTAG 调试常见问题1 - 检测不到目标系统调试前,请把目标板连接好,然后用调试软件检测目标系统。
如果检测不到目标系统,请做以下的检查。
A - 确定你的连接是正确的;B - 确定你使用的仿真器是被调试软件支持的C - 对WIGGLER 而言,因为没有固定的电路图,所以需要在软件里做相应的设置;D - 对LPC2000 系列而言,RTCK 管脚一般是用来控制是否使能JTAG 接口的,请查阅数据手册;E - 如果你用的芯片比较特殊,例如STR91X,因为内部扫描链是串接的,请设置好TAP,以让仿真器知道扫描链的长度;2 - 程序下载不正确,程序跑飞一般的用户,刚开始调试的时候,编译好程序,就直接点击调试。
但结果发现调试根本没有按照预期的进行。
发生这种问题一个最常见的原因是程序根本没有正确下载到目标系统中去。
对SDRAM 而言,上电后一般都是不可以使用的,需要进行相应的配置才可以使用。
所以如果是在SDRAM 里进行调试,请先对SDRAM 进行配置,或者确定SDRAM 已经初始化好了。
如果是内部SRAM,一般来说,可以直接使用。
所以,做一般的测试,最简单的办法是使用片内SRAM。
在调试的时候,最好是自己通过内存观察窗口判断一下,程序是否是下载到期望的地址去了,下载是否正确。
以免出现调试跑飞的问题。
3 - 软件断点和硬件断点的区别和数量限制所有的ARM7/ARM9 芯片,内部有2 个断点单元。
断点单元可以用于设置硬件断点或是软件断点。
先说说硬件断点和软件断点的区别。
硬件断点是通过监测地址来触发断点的。
所以,硬件断点可以设置在任何地方,不管是FLASH,ROM 还是RAM,只要给定地址就可以了。
而软件断点是通过监测特定的指令来触发断点的。
在某个地址设置软件断点的时候,仿真器会将这个地址的数据/指令替换成一个特殊格式的指令。
断点单元通过监测这个特殊格式的指令来触发断点。
因为需要执行替换操作,所以软件。
ARM JTAG实时仿真器安装使用指南Version 1.02003. 2. 5目 录第一章 ARM JTAG介绍1.1 ARM JTAG产品介绍 3 1.2 ARM JTAG硬件介绍 4 1.2.1 ARM JTAG接口定义 4 1.2.2 ARM JTAG接口电平 4 1.2.3 TCK信号频率设置 5 1.2.4 目标板JTAG接口设计 5 1.2.5 RTCK时钟 5 1.2.6 14脚和20脚JTAG接口转换 5第二章 ARM开发系统安装2.1 硬件连接 7 2.2 软件安装 7第三章 ARM JTAG使用3.1 Multi-ICE Server使用 9 3.1.1 Multi-ICE Server菜单选项 9 3.1.2 Multi-ICE Server状态 11 3.1.3 Multi-ICE Server中的JTAG参数设置 14 3.1.4 Multi-ICE Server配置 16 3.2 调试系统架构体系 17 3.3 ADS V1.2与ARM JTAG连接 18 3.3.1 连接AXD 18 3.3.2 连接CodeWarrior 19第四章 最终应用程序烧写4.1 应用程序在ARM板上运行原理 21 4.2 生成Boot.bin 21 4.2.1 系统初始化 21 4.2.2 生成BIN文件 21 4.3 烧录Boot.bin 23附录1 TCK频率设置 24 附录2 常见问题 26第一章 ARM JTAG介绍1.1 ARM JTAG产品介绍ARM JTAG是用于ARM处理器内核软件调试的专用工具符合IEEE 1149.1规范与ARM原装Multi-ICE完全兼容它可以很好的与ADS V1.2集成开发环境相结合支持全线ARM处理器内核可以满足更多用户对ARM处理器内核软件的开发调试需求图1-1 ARM JTAGARM JTAG主要特征如下□ 支持所有内建embedded-ICE逻辑单元的ARM处理器□ 支持多个内核系统□ 连接简便兼容不同电压的目标系统□ 除JTAG扫描链外不占用目标板上的其它任何资源□ 支持实时硬件断点□ 用户可通过JTAG修改寄存器存储器内容□ 支持程序下载及实时调试□ 通信速度快最高可达10Mbpps□ JTAG速度可配置以满足不同调试对象的需求□ 支持所有符合RDI 1.50或RDI 1.51规范的调试工具软件□ 提供丰富的例程和使用说明□ 支持多种目标平台如ATMELSamSungIntelPhilipsSharpCirrus LogicTricend等□ 体积轻巧性能稳定ARM7TDMI ARM710T ARM7TDMI-SARM7DMI ARM720T ARM740TARM7TDI-S ARM7EJ-S ARM926EJ-SARM9TDMI ARM9E-S ARM940TARM946E-S ARM920T ARM966E-SARM1020E ARM922T ARM966E-SIntel XScale PXA210 PXA250 80200表1-1 ARM JTAG支持的ARM内核支持的操作系统有□ Windows 95/98/NT/2000/ME/XP□ X86 RedHat Linux 6.2/7.1/7.21.2 ARM JTAG硬件介绍1.2.1 ARM JTAG接口定义图1-2 20脚JTAG接口定义管脚编号信号输入/输出方向信号说明1 VrefInput 接口信号电平参考电压一般直接连接Vsupply2 VsupplyInput 电源3 nTRST Output 可选项JTAG复位在目标端应加适当的上拉电阻以防止误触发4 GND 接地5 TDI Output Test Data In6 GND 接地7 TMS Output Test Mode Select8 GND 接地9 TCK Output Test Clock10 GND 接地11 RTCK Input 可选项Return Test Clock由目标端反馈给仿真器的时钟信号用来同步TCK信号的产生不使用时直接接地12 GND 接地13 TDO Input Test Data Out from target to仿真器14 GND 接地15 nSRST Input/Output 可选项System Reset与目标板上的系统复位信号相连可以直接对目标系统复位同时可以检测目标系统的复位情况为了防止误触发应在目标端加上适当的上拉电阻16 GND 接地17 NC 系统保留18 GND 接地19 NC 系统保留20 GND 接地表1-2 20脚JTAG接口说明1.2.2 ARM JTAG接口电平仿真器推荐的正常使用电压为2.5 – 5.0V最大不超过2.0 – 5.5V随着电源电压的变化接口的逻辑高电平和判决门限电平都将随之变化这使得仿真器能够与不同电压和目标系统在逻辑上兼容1.2.3 TCK信号频率设置为了与不同速率的目标对象相兼容JTAG口的通信速率应调整到一个合适的水平数据传输速率是由TCK信号的频率来决定的TCK信号的真实频率跟设置值之间的对应关系参见附录11.2.4 目标板JTAG接口设计目标板使用与仿真器一样的20脚针座RTCK和nTRST这两个信号根据目标RSIC是否提供对应的引脚来选用nSRST则根据目标系统的设计考虑来选择使用在目标系统的PCB设计中最好把JTAG接口放置的离目标RISC近一些如果这两者之间的连线过长会影响JTAG口的通信速率另外电源的连线也需要加以额外考虑因为仿真器要从目标板上吸取超过100mA的大电流1.2.5 RTCK时钟RTCK信号用来同步仿真器和目标板之间的通信而不用关心TCK信号的具体频率在没有收到目标系统的反馈时钟信号之前仿真器不会触发一个新的TCK如果不使用RTCK功能这个信号脚可以简单的接地处理如果使用了RTCK功能把这个脚直接连向ASIC中对应的管脚如果激活了RTCK功能但RISC并没有提供对应原管脚可以把RTCK和TCK这两个信号连在一起但在连线中最好遵循下面的原则这一点在边线比较长的时候尤其重要目的是确保在TCK时钟到达目标点的时候才产生反馈信号图1-4 RTCK连接图1.2.6 14脚和20脚JTAG接口转换有些系统采用一种14脚的JTAG插座这两类接口的信号排列如下图1-5 不同的JTAG接口这两类接口之间的信号电气特性一样因此可以把对应的信号直接相连进行转换第二章 ARM开发系统安装ARM JTAG物品清单□ ARM JTAG硬件实时仿真器□ 20针标准ARM JTAG接口扁平连接线缆一条□ 并口连接线缆一条□ 直流5V稳压电源一个□ ARM开发系统安装光盘及使用手册一套2.1 硬件连接ARM JTAG使用标准的25芯并口插座和20针的JTAG插座作为接口与PC的连接线缆使用标准的25芯并口连接线缆与目标板的连接线缆使用20芯的IDC宽带线缆有的目标板可能使用14脚的JTAG插座信号定义和JTAG接口的转换方法请参见1.2.6节内容图2-1 硬件连接示意图2.2 软件安装开发PC主机系统需求□ Pentium IBM兼容PC带有可用的并口和串口□ 200MHz以上CPU□ 32MBFor Win98或64MBFor Win2000以上内存空间□ 300MB以上空闲硬盘空间□ CD-ROM驱动器□ 建议使用Microsoft Windows 98或2000操作系统ARM开发系统安装步骤如下1 把ARM开发系统软件光盘插入CD-ROM系统自动运行进入如图2-2画面如若未出现此画面请手动运行光盘根目录下autorun.exe文件图2-2 ARM集成开发环境主界面2 单击上述画面进入ARM开发系统程序安装选择主界面在程序安装选择主界面中按顺序依次点击需要安装的程序系统会自动进行安装安装程序说明□ ARM JTAG Emulator 安装ARM JTAG驱动程序□ ARM Developer Suite 安装ADS V1.2集成开发环境□ ARM Update 运行注册程序注意在运行注册程序之前请确认已正确安装了ARM JTAG驱动程序和ADS V1.2集成开发环境图2-3 ARM开发系统程序安装选择界面3 程序全部安装完毕后点击EXIT退出第三章 ARM JTAG使用在使用ARM JTAG进行系统开发之前请先确定系统硬件连接正确并已连接好电源和软件安装正确3.1 Multi-ICE Server使用Multi-ICE是ARM JTAG的配置程序通过它可以使ARM JTAG与目标板建立通讯连接并能够反馈目标板上ARM处理器的硬件信息在PC开发主机上选择开始>程序>ARM Multi-ICE v2.2>Multi-ICE Server进入Multi-ICE Server主界面图3-1 Multi-ICE Server主界面3.1.1 Multi-ICE Server菜单选项这里介绍一下Multi-ICE程序中各个菜单及里面的每个选项1 工具栏在工具栏里总共有四个功能按钮图3-2 工具栏按钮2 File菜单□ Load Configuration 读取用户指定的配置文件对仿真器进行手动配置□ Auto-Configure 自动检测和配置目标系统□ Auto-Configure at 20KHz 自动检测和配置目标系统并且设置TCK信号的频率为20KHz □ Reset Target 对目标系统复位有效的复位信号在Setting/JTAG settings菜单或配置文件中设置□ Log 输出信息存储到指定的日志文件中□ Set Log File 用于指定日志文件的路径和名字□ Recent File List 显示最近调用过的配置文件路径□ Exit 退出程序图3-3 File菜单3 View菜单这个菜单用于控制Multi-ICE程序界面外观和显示信息□ Toolbar 关闭或打开工具栏□ Status Bar 关闭或打开状态栏□ RPC Calls 允许或屏蔽RPC信息在调试信息窗口中显示□ Clear Debug Window 清空调试信息窗口中的显示信息图3-4 View菜单4 Run Control菜单图3-5 Run Control菜单这个菜单中的选项控制各个处理器的运行和停止□ Independent 使每个目标系统直接相互独立不进行交互通信缺省状态有效□ All Run 启动所有的目标系统□ All Run/Stop 当收到一条启动指令时启动所有的目标系统当任何一个目标系统停止时其它的系统也一起停止□ Custom 执行用户自定义的设置□ Set-up Custom 打开用户自定义设置窗口设置各个目标系统之间的交互方式□ Load Settings 读取以前保存下来的设置文件□ Save Settings 把当前设置保存到文件5 Connection菜单这个菜单在调试程序和Server建立连接之后才有效它会给每一个TAP控制器分配一个菜单项为用户提供单独删除某个TAP控制器的选项图3-6 Connection菜单6 Settings菜单这个菜单用来设置各种接口信息□ Port Settings 显示并口设置对话框用来选择并口的地址和是否使用4-bit通信模式同时显示当前的并口类型设置在PC机的BIOS中要把并口模式选择为EPP□ User Output Bits 当然版本的Server程序保留使用□ JTAG Settings 显示JTAG口的设置对话框用来设置JTAG口相关的时序信息和复位行为如果调用了配置文件则相应的设置会在窗口中反映出来□ Start-up Options 显示设置启动选项的对话框图3-6 Settings菜单7 Help菜单□ Help Topics 启动Multi-ICE的帮助系统□ About Multi-ICE Server 显示软件版本信息图3-7 Help菜单3.1.2 Multi-ICE Server状态在Multi-ICE Server的TAP信息显示区可以直观的显示当前系统状态下面通过单内核目标系统为例进行说明1 配置后的状态Multi-ICE Server进行配置之后显示状态如图3-8所示通过自动检测显示目标是一个ARM7TDMI的单内核系统在TAP配置显示区用图形的方式直观的显示出了检测结果内核的类型名称ARM7TDMI显示为绿色并且前面有一个表示内核状态的字母这里字母X表示Multi-ICE Server目前还没有连接到任何调试程序中双击图3-8中的处理器类型名字会弹出目标处理器附加信息窗口图3-8 Multi-ICE Server配置后状态图3-9 目标处理器附加信息窗口注意处理器类型名称前面的字母叫做状态位共有四种状态□ [S] 处理器处于暂停状态□ [R] 处理器忙运行状态□ [D] 处理器处于下载状态□ [X] 处理器类型未知或没有被调用2 连接后的状态如果有调试程序通过MultiICE.dll与Multi-ICE建立了连接则Multi-ICE的状态变成如图3-10所示此时处理器前面的状态字母变为S表明已建立连接但正处于空闲状态处理器名字变为红色同时信息窗口中的信息增加了相应的内容图3-10 Multi-ICE Server连接后的状态3 激活后的状态Multi-ICE的活动状态有下载和运行两种图3-11是代码下载时候的状态当下载操作完成后状态字母又马上变回X图3-12是代码运行中的状态当停止运行后状态字母会变回S图3-11 Multi-ICE Server代码下载时的状态图3-12 Multi-ICE Server代码运行中的状态3.1.3 Multi-ICE Server中的JTAG参数设置1 并口设置并口设置菜单位于Settings>Port Settings图3-13 并口设置□ Port Address 选择使用的并口地址有三个可选项• AUTO 自动选择系统默认选项• LPT1 选择LPT1• LPT2 选择LPT2□ Force 4-bit access 使用4-bit的数据传输方式□ Current port Mode 显示并口类型显示BIOS中并口设置状态为只读选项注意并口类型是在PC的BIOS中进行设置的通常提供四种类型□ Basic type部分BIOS提供值为Default或SPP等□ EPP□ ECP□ EPP + ECP由于ARM JTAG使用双向的并口数据总线通常ECP或EPP类型能够符合要求但在一些比较新的BIOS版本中可能要选用基本类型而不是ECP或其它增强型由于历史上的原因并口规范和IEEE1283协议的执行存在弹性所以不同计算机主板厂商在并口设计上存在一些差异当第一次使用ARM JTAG时需要对并口类型设置多作几次试验目前我们推荐用户选择EPP类型2 时钟设置时钟设置菜单位于Settings>JTAG settings图3-14 ARM JTAG时钟设置□ JTAG Bit Transfer Timing 设置TCK信号频率如果需要手动设置请参见附录1□ Behavior 选择使用RTCK功能□ Reset Behavior 选择哪组信号在按下复位按钮后有效3 启动选项设置启动选项设置菜单位于Settings>Start-up Options这部分用来设定Multi-ICE启动时的参数和选项□ Network Settings 提供两个选项• Allow Network Connections 使用网络连接功能启动时自动检测网络设置情况• Start Portmap Service 仅在上一项选中时有效□ Start-up Configuration 设置Multi-ICE Server程序启动后自动执行的操作图3-15 Multi-ICE启动选项设置3.1.4 Multi-ICE Server配置Multi-ICE Server在运行时需要目标处理器的配置信息比如内核类型和IR指令寄存器长度等等对Multi-ICE Server进行配置有自动配置和手动配置两种方式1 自动配置在Multi-ICE Server程序中选择File>Auto-configure菜单或者工具栏上的自动配置按钮如果目标处理器是ARM族的内核ARM JTAG能够自动检测到并进行相应配置并把结果显示在Multi-ICE Server的显示窗口中注意有时候检测ARM710T/720T/740T/940T这一系列内核时会返回一个UNKNOWN结果这是ARM 报告的一个硬件bug这时候就只能使用手动配置的方法经过自动配置后JTAG的通信速率会自动设置为10MHz用户可以在Settings>JTAG Settings 菜单中按自己的要求选择合适的速率2 手动配置手动配置是通过调用一个用户预先定义好的配置文件来完成对Multi-ICE Server的配置配置文件可以从File>Load configuration菜单中调入配置文件为文本格式文件文件后缀名为.cfg配置文件主要包括以下几个部分□ Title□ TAP controller□ Devices attached to each controller□ JTAG timing information□ Other options下面是配置文件的格式示范[TITLE]Double cores configuration demo 给配置方案命名[TAP0] 目标系统中包含TAP0控制器ARM7TDMI TAP0控制上连着一个ARM7TDMI核[TAP1] 目标系统中包含TAP1控制器ARM7TDMI-S TAP1上连着一个ARM7TDMI-S核如果有更多的TAP控制器和内核依次往下增加[Timing] JTAG口的时序设置High = 9 TCK信号的高电平时间Low = 9 TCK信号的低电平时间Adaptive = ON RTCK功能开关ON或OFF[TAPINFO]YES[Reset]nTRST通常情况下目标系统只有单内核仅使用 [TAP0] 就可以了对那些自动配置不能识别的内核需要在配置文件中指定好正确的内核类型然后在Multi-ICE Server中调入对应的配置文件就可以了TAPINFO选项主要是为RISC开发人员测试芯片时提供的当该选项打开时ARM JTAG完成正常的配置工作后会继续从目标RISC中读取内核的其它信息供设计人员分析这些附加信息可以从双击Multi-ICE Server的TAP显示窗口中的TAP控制器图标而弹出的信息窗口中得到使用自动配置时TAPINFO是一直打开的当调用用户自定义的配置文件时TAPINFO的默认状态时关闭Reset选项用来定义ARM JTAG的复位动作当用户按下Multi-ICE Server工具栏上的复位按钮时Reset选项内定义的信号就有效合法的选项包括nTRST或nSRST或者两者都选中Timing部分定义了JTAG端口的时序信息关于TCK时钟参数的设置请参见附录1在一个配置文件中只有TAP控制器和内核类型的定义是必需的其它部分都是可选项另外文件中用户的注释语句以分号开头3.2 调试系统架构体系整个调试系统包括集成调试环境和硬件仿真器它们组成了一个类似于客户服务器模型的系统服务器端把所有硬件封装起来给客户端只提供了一个虚拟的处理器接口客户端的调试工具软件通过一个动态链接库与服务器相连所以服务器一侧的硬件和客户端的调试工具软件是相互独立的在同一个动态链接库的基础上双方可以各自动行升级或替换同样也方便了用户选择不同的仿真器和调试软件来组合自己的调试平台一个具体的调试程序应该能够支持许多不同的链接库不同的链接库提供了不同的功能调用以ADS工具包为例ARMulate.dll提供了一个软ARM内核用作程序的逻辑验证若要把Multi-ICE Server程序连接在一起进行实时仿真则只要调入MultiICE.dll就可以了该动态库文件在Multi-ICE Server的安装目录下可以找到图3-16 调试系统架构3.3 ADS V1.2与ARM JTAG连接当Multi-ICE Server程序与目标板建立正确的连接之后下面要把调试软件连接进来组成完整的调试平台下面以ADS V1.2为例说明连接过程3.3.1 连接AXD在AXD的Options>Configure Target菜单中调入MultiICE.dll文件并完成目标处理器的设置只需在第一次使用之前进行设置图3-17 AXD的Options菜单图3-18 调入MultiICE.dll如图3-18所示如果第一次使用点击右边的Add按钮在Multi-ICE Server的安装目录下找到MultiICE.dll文件并添加到Target Environments中点击右边的Configure按钮弹出如图3-19所示的设置窗口并在Select a new processor中选择对应的处理器图3-19 目标处理器窗口3.3.2 连接CodeWarrior在CodeWarrior中打开或新建立一个工程点击Edit>DebugRel Setting菜单在CodeWarrior中进行设置图3-20 CodeWarrior的Edit菜单图3-21 DebugRel Settings窗口在这里注意一下图3-21中右边的RO Base和RW Base输入框它们分别为代码区和变量区的起始地址这些设置要与具体的目标系统中使用的存储器地址相对应第四章 最终应用程序烧写ARM开发板文档中介绍的应用程序都是执行在板卡的SDRAM中而用户开发的最终产品是必须要脱离ARM JTAG执行的本章介绍的是最终应用程序的烧写方法本章下面按步骤讲述如何使用Flash程序向板上烧录Boot程序4.1 应用程序在ARM板上运行原理要想在ARM板上正确的烧录应用程序必须了解应用程序在ARM上运行的原理首先板卡复位之后所有地址指针都被初始化为0系统指针自动指向0x0地址此时 SDRAM由于未被定义所以对于系统是不可见的即用户无法对SDRAM进行访问然后系统从0x0地址存放的用户应用程序开始执行用户程序内必须包含系统寄存器初始化代码并对外部SDRAM进行配置使系统可以进行访问此初始化代码一般用汇编语言编写最后系统把FLASH存储器中保存的用户程序复制到SDRAM的指定地址中复制完成后程序自动跳转到SDRAM的应用程序中全速运行4.2 生成Boot.bin4.2.1 系统初始化由于系统启动时从地址0x0开始执行所以程序boot必须装载在从地址0x0开始的Flash存储器中在Boot的初始化程序Boot.s中可以看到类似下面的语句ldr r0=COPY_START pointer to ROM codeldr r1=COPY_END end of ROM codeldr r2=_RAM_STARTADDRESS start of RAMldr PC=_RAM_STARTADDRESS jump to RAMB .这一小段程序指明了在Flash在存储器中存放应用程序的起始地址结束地址以及复制到SDRAM中的起始地址当复制完成后程序转入_RAM_STARTADDRESS入口开始全速运行在Boot程序的头文件中包含以下定义_RAM_STARTADDRESS EQU 0x8000 需根据用户板SDRAM地址配置修改BUSWIDTH SETA 32 需根据用户实际情况修改16或32COPY_START EQU 0x0COPY_END EQU 0x5000 需根据用户程序长度修改从以上定义可以看出在Flash存储器中存放的应用程序从地址0x0开始到0x5000结束复制到SDRAM的起始地址是0x8000当程序复制完成后程序转到0x8000地址开始执行4.2.2 生成BIN文件在生成BIN文件之前请先确认应用程序在DEBUG模式下运行正确1 在CodeWarrior中对当前的工程Boot.mcp进行设置进入Edit>DebugRel Settings菜单在Target Settings选项中的Post-Linker设置为ARM formELF在ARM Linker选项的Equivalent Command Line中写为-info totals –entry 0x0 –ro-base 0x0 –rw-base 0x5000图4-1 CodeWarrior中的DebugRel Settings设置2 对Boot.mcp进行Make生成Boot.bin文件此时需要烧录的Boot.bin文件已经生成可以进行烧录了4.3 烧录Boot.bin对烧录Boot.bin文件需要用户编写一个Flash程序进行具体烧录工作在Flash程序中仍然需要对系统进行初始化的代码一般根据不同的用户硬件板不同的Flash芯片对Flash存储器的操作方法也不同因此Flash程序也有所不同相关内容请查看硬件板使用手册和Flash芯片手册如果Flash程序调试正确就可以全速运行了如果在Flash程序内部调用了Boot.bin文件则Flash程序运行完毕后Boot.bin文件就烧录完毕了此时对硬件板进行复位Boot程序就开始在板上自动运行了附录1 TCK频率设置在Multi-ICE Server设置中TCK不是直接使用频率值来进行设置而是使用了一组整数它们之间的对应关系参见表附1-1用户只需要找到需要的频率把对应的设置数值填入设置窗口或是配置文件中即可TCK时钟信号的波形不一定要方波可以高低电平设置分别不同的值但是推荐用户使用方波波形特别是不要设置占空比太大的波形从表附1-1中可以看出频率值与对应的周期值不正好是倒数关系当高低电平的周期都是该设置值时对应的频率值才是信号频率若高低电平采用不同设置通常情况下没有必要则需要从表附1-1 中找出各自对应的周期值相加就是信号的周期再从周期算得频率频率kHz 周期ns数值频率kHz周期ns数值频率kHz周期ns数值10000 50 0 138.89 3600 81 18.38 27200 176 5000 100 1 131.58 3800 82 17.36 28800 177 3333.33 150 2 125 4000 83 16.45 30400 178 2500 200 3 119.05 4200 84 15.63 32000 179 2000 250 4 113.64 4400 85 14.88 33600 180 1666.67 300 5 108.7 4600 86 14.2 35200 181 1428.57 350 6 104.17 4800 87 13.59 36800 182 1250 400 7 100 5000 88 13.02 38400 183 1111.11 450 8 96.15 5200 89 12.5 40000 184 1000 500 9 92.59 5400 90 12.02 41600 185 909.9 550 10 89.29 5600 91 11.57 43200 186 833.33 600 11 86.21 5800 92 11.16 44800 187 769.23 650 12 83.33 6000 93 10.78 46400 188 714.29 700 13 80.65 6200 94 10.42 48000 189 666.67 750 14 78.13 6400 95 10.08 49600 190 625 800 15 73.53 6800 112 9.77 51200 191 588.24 850 16 69.44 7200 113 9.19 54400 208 555.56 900 17 65.79 7600 114 8.68 57600 209 526.32 950 18 62.5 8000 115 8.22 60800 210 500 1000 19 59.52 8400 116 7.44 67200 212 476.19 1050 20 56.82 8800 117 7.1 70400 213 454.55 1100 21 54.53 9200 118 6.79 73600 214 434.78 1150 22 52.08 9600 119 6.51 76800 215 416.67 1200 23 50 10000 120 6.25 80000 216 400 1250 24 40.08 10400 121 6.01 83200 217 384.62 1300 25 46.3 10800 122 5.79 86400 218 370.37 1350 26 44.64 11200 123 5.58 89600 219 357.14 1400 27 43.1 11600 124 5.39 92800 220 344.83 1450 28 41.67 12000 125 5.21 96000 221 333.33 1500 29 40.32 12400 126 5.04 99200 222 322.58 1550 30 39.06 12800 127 4.88 102400 223 312.5 1600 31 36.76 13600 144 4.6 108800 240294.12 1700 48 34.72 14400 145 4.34 115200 241 277.78 1800 49 32.89 15200 146 4.11 121600 242 263.16 1900 50 31.25 16000 147 3.91 128000 243 250 2000 51 29.76 16800 148 3.72 134400 244 238.1 2100 52 28.41 17600 149 3.55 140800 245 227.27 2200 53 27.17 18400 150 3.4 147200 246 217.39 2300 54 26.04 19200 151 3.26 153600 247 208.33 2400 55 25 20000 152 3.13 160000 248 200 2500 56 24.04 20800 153 3 164400 249 192.31 2600 57 23.15 21600 154 2.89 172800 250 185.19 2700 58 22.32 22400 155 2.79 179200 251 178.57 2800 59 21.55 23200 156 2.69 185600 252 172.41 2900 60 20.83 24000 157 2.6 192000 253 166.67 3000 61 20.16 24800 158 2.52 198400 254 147.06 3400 80 19.53 25600 159 2.44 204800 255表附1-1 TCK频率设置对应表附录2 常见问题随着当前系统设计复杂度的提升调试过程中碰到问题的几率大大增加在各种问题中我们需要分析问题的根源和实质以便去正确的解决ARM JTAG与目标板的连接仅限于JTAG接口两者之间的耦合度已降到最小不会对目标板的逻辑和电气性能产生影响对于一些刚开始使用ARM JTAG的客户我们总结了一些常见问题提供给用户希望能够有所帮助问题 Multi-ICE Server程序启动失败原因 BIOS中的并口类型设置不正确请修改后重试一般推荐用户选择EPP类型问题 Multi-ICE Server程序启动失败出现TCP/CP堆栈出错原因 开发PC机没有连接网络或没有安装网络服务程序如果不需要使用网络服务功能可以在Multi-ICE Server的Settings>Start-up Optinos菜单中关闭该功能如果程序因为该原因自动关闭而造成无法修改选项设置可以在Multi-ICE Server的安装目录下找到一个名为的文件并双击运行则在以后的Multi-ICE Server程序运行中就会跳过网络协议堆栈的检测问题 Multi-ICE Server程序自动识别目标失败原因 1 目标内核不能识别在本手册前面章节中详细列出了目前版本的ARM JTAG所支持的内核种类如果能够检测到正确的TAP控制器并建立起通信但不能返回内核ID号将在屏幕上显示UNKNOWN这时调试程序不能正常工作用户需要从厂家得知正确的ARM芯片内核类型并新建一个配置文件来进行手动配置配置方法参见第3.1.4小节内容2 信号问题最常遇到的信号问题包括□ Reset信号没有上拉电阻Reset包括nTRST和nSRST这两个信号应在目标板上用小于10K的电阻上拉□ TCK信号的频率太高该频率受制于TAP控制器目标板布线和连接电缆等因素有些TAP 控制器只支持到1MHz速率这时候需要调整TCK频率设置问题 同调试程序连接时提示Can’t stop processor原因 1 在当前环境下JTAG的时钟频率过高请尝试降低TCK的频率2 如果Multi-ICE Server程序是手动配置的则需要检查□ 配置错误处理器类型连接次序等设置错误□ JTAG问题进行手动配置时因先确保在自动时能够检测到UNKNOWN这样说明JTAG接口通信正确3 ARM芯片接口的DBGEN信号被不正确的拉低如果该信号有片外接口请检查4 目标处理器的时钟不正确问题 同调试程序连接时出现Data Abort提示原因 1 当调试程序启动时处理器将停在当前PC值指向的地方同时读取该PC值周围一部分地址的存储器值如果这些地址正好没有被使用或指向空就会出现上述提示此情况属于正常范围2 果使用了存储器RAM或ROM出现这种问题表明在存储器访问上可能存在数据错误请检查存储器3 当用户下载程序到目标板时下载的目标地址是在编译器中指定的如果编译器里设置的目标地址与目标板上可写存储器的物理地址不能对应也会出现上述提示因为调试程序试图往错误的物理地址写入用户程序而出错这时需要检查并重新设置编译器选项4JTAG的时钟速率过快问题 在调试过程中经常停止有时候甚至进不了调试程序原因 在排除了调试程序本身的问题后这一类带有随机性的问题可以考虑是硬件时序或逻辑问题引起的最主要的可能性是nTRST和系统Reset信号不可靠Reset信号的不可靠包含两方面正常工作时要求稳定的保持高电平复位状态时要求有足够时间的低电平Reset电路因为简单通常会被忽略但事实表明很多貌似奇怪的问题最后都归结在这里无论是从调试的角度还是最后稳定工作的要求我们都建议用户采用一个好的Reset电路或是IC来代替简单的RC电路问题 调试程序出现Hardware interface timeout提示原因 1 目标板与ARM JTAG的连接断开或ARM JTAG与PC之间的连接中断2 ARM JTAG供电中断或供电不足3 ARM JTAG与目标板的通信停顿一般都是因为打开了RTCK选项但是检测不到合适的RTCK信号此时用户可以不使用RTCK功能或检查该信号的布线问题 序提示Unable to set breakpoints on exception vecors原因 射表中的起始地址对应的存储器类型是ROMARM JTAG不能在ROM上设置断点。
JTAG电路的工作原理JTAG(Joint Test Action Group)电路是一种用于测试和调试集成电路(IC)的标准接口。
它提供了一种简单而有效的方法,用于在芯片创造过程中对电路进行测试和故障排除。
JTAG电路的工作原理是通过在芯片上添加专门的测试逻辑电路,以便与主机系统进行通信。
JTAG电路的工作原理可以概括为以下几个步骤:1. 信号传输:JTAG接口使用四根信号线(TCK、TMS、TDI和TDO)进行通信。
TCK是时钟信号,TMS是状态控制信号,TDI是输入数据信号,TDO是输出数据信号。
这些信号线通过与芯片上的测试逻辑电路相连接,实现了与主机系统的通信。
2. 状态机控制:JTAG电路中的测试逻辑电路包含一个状态机,用于控制测试过程中的状态转换。
状态机根据TMS信号的变化来切换状态,从而实现不同的操作。
例如,状态机可以将芯片从测试模式切换到正常模式,或者从正常模式切换到测试模式。
3. 数据传输:JTAG电路可以在芯片和主机系统之间传输数据。
主机系统可以向芯片发送测试数据(通过TMS和TDI信号线),并从芯片接收测试结果(通过TDO信号线)。
这种双向数据传输使得测试和调试过程更加灵便和高效。
4. 故障检测:JTAG电路还可以用于检测芯片中的故障。
通过在芯片上添加专门的故障检测电路,可以对芯片进行故障诊断和故障定位。
当芯片浮现故障时,JTAG电路可以通过测试逻辑电路检测到,并将故障信息传输给主机系统。
总结起来,JTAG电路的工作原理是通过在芯片上添加测试逻辑电路和状态机,实现与主机系统的通信和数据传输。
它为芯片的测试和调试提供了一种简单而有效的方法,可以提高芯片创造过程中的质量和可靠性。
通过JTAG接口,工程师可以对芯片进行功能测试、故障检测和故障定位,从而提高芯片的可靠性和性能。
JTAG电路的工作原理JTAG(Joint Test Action Group)是一种用于测试和调试电子设备的标准接口,它可以通过一组信号线连接到芯片上,实现对芯片内部逻辑电路的访问和控制。
JTAG电路的工作原理涉及到多个方面,包括信号线的定义、通信协议、状态机等,下面将详细介绍JTAG电路的工作原理。
1. 信号线定义:JTAG接口主要由四根信号线组成,分别是TCK(Test Clock)、TMS(Test Mode Select)、TDI(Test Data Input)和TDO(Test Data Output)。
其中,TCK是时钟信号线,用于同步数据传输;TMS是状态控制线,用于控制JTAG状态机的状态转换;TDI是测试数据输入线,用于向芯片内部逻辑电路输入测试数据;TDO是测试数据输出线,用于从芯片内部逻辑电路读取测试结果。
2. 通信协议:JTAG通信协议是基于状态机的,通过改变TMS信号的状态来控制状态机的状态转换。
JTAG状态机一共有四种状态,分别是Test-Logic-Reset(TLR)、Run-Test/Idle(RTI)、Select-DR-Scan(SDR)和 Capture-DR(CDR)。
在不同的状态下,可以进行不同的操作,比如读取芯片内部寄存器的值、写入测试数据等。
3. JTAG电路的工作流程:JTAG电路的工作流程一般包括以下几个步骤:步骤一:复位首先,将TMS信号置为1,将JTAG状态机置于Test-Logic-Reset(TLR)状态,这个状态下芯片内部逻辑电路会被复位。
步骤二:进入运行状态将TMS信号置为0,将JTAG状态机从TLR状态转移到Run-Test/Idle(RTI)状态,此时芯片内部逻辑电路处于正常运行状态。
步骤三:选择寄存器将TMS信号连续切换4次,将JTAG状态机从RTI状态转移到Select-DR-Scan (SDR)状态,这个状态下可以选择要访问的寄存器。
ARM JTAG实时仿真器安装使用指南Version 1.312003. 11. 12目录第一章 ARM JTAG介绍JTAG产品介绍 (3)ARM第二章 ARM开发系统安装硬件连接 (4)2.1软件安装 (4)2.2第三章 ARM JTAG简单使用3.1 硬件连接 (18)软件使用 (18)3.23.2.1 启动Multi-ICE Server (18)3.2.2 启动ADS (21)第四章 ARM JTAG使用详解Multi-ICEServer使用 (33)4.1Server菜单选项..... (33)Multi-ICE4.1.1Server状态 (34)4.1.2Multi-ICEServer中的JTAG参数设置.......... . (38)Multi-ICE4.1.34.1.4 Multi-ICE Server配置 .................... . (40)调试系统架构体系 (41)4.24.3 ADS V1.2与ARM JTAG连接 (42)4.3.1 连接AXD (42)4.3.2 连接CodeWarrior (43)第五章最终应用程序烧写5.1应用程序在ARM板上运行原理 (45)生成“Boot.bin ” (45)5.25.2.1系统初始化 (45)5.2.2生成BIN文件 (45)烧录“Boot.bin” (47)5.3第六章ARM JTAG硬件介绍JTAG接口定义 (48)6.1ARMARMJTAG接口电平 (49)6.2TCK信号频率设置 (49)6.3RTCK时钟 (49)6.514脚和20脚JTAG接口转换 (50)6.6附录1 TCK频率设置 (51)附录2 常见问题 (53)2第一章 ARM JTAG介绍ARM JTAG产品介绍JTAG是用于ARM处理器内核软件调试的专用工具,符合IEEE 1149.1规范,与ARM原装 ARMMulti-ICE完全兼容。
JTAG仿真器使用方法图文教程本文主要介绍USBJTAG的使用方法,该仿真器既可以用做JTAG 放着器给AVR芯片下载程序以及仿真,也可以用来给STC89C系列的芯片下载程序。
本文主要分为以下几个部分:JTAG简介、AVRJTAG 仿真器工作原理、JTAG仿真器上的跳线设置、JTAG驱动安装、JTAG 仿真器的验证。
1、什么是JTAG仿真器JTAG仿真器,也叫JTAG调试器,即一种采用JTAG协议进行调试和下载的器件。
JTAG也是一种国际标准测试协议(IEEE 1149.1兼容),主要用于芯片内部测试。
现在多数的高级器件都支持JTAG协议,如DSP、FPGA器件等。
标准的JTAG接口是4线:TMS(模式选择)、TCK(时钟)、TDI(数据输入)、TDO(数据输出)。
相关JTAG引脚的定义为:TCK为测试时钟输入;TDI为测试数据输入,数据通过TDI引脚输入JTAG接口;TDO为测试数据输出,数据通过TDO引脚从JTAG接口输出;TMS为测试模式选择,TMS用来设置JTAG接口处于某种特定的测试模式;TRST为测试复位,输入引脚,低电平有效。
这里主要介绍的是AVR的JTAG仿真器,由于每个器件对应的上位机软件(PC上运行的软件)实现方式不同,所以不同器件的JTAG 仿真器是不能够通用的。
AVR使用的JTAG接口是4线接口,但是现在网上普遍流行的做法是,在JTAG接口中加入AVR器件的复位(RST)引脚,2个电源引脚(VCC)、2个地引脚(GND)、一个空引脚(NC)一共是10个引脚,并且这10个引脚有固定的引脚排序。
如下图:2、AVRJTAG仿真器工作原理AVR的JTAG仿真器上位机软件均采用atmel公司的AVRStudio开发环境,仿真器的硬件电路主要使用一片ATmega16芯片来实现。
仿真器硬件和上位机的软件通信使用串口通信协议,如下图:并不是所有的AVR单片机芯片都支持JTAG仿真和下载,查看是否支持JTAG,主要查看芯片的引脚手册,如果芯片的引脚含有TMS、TCK、TDI、TDO这几个引脚则说明改芯片支持JTAG,如果没有这几个引脚则不支持JTAG。
ARM JTAG仿真器电路讨论
以下是我在实践中的一些积累,发现这点是因为我在尝试用对SAMSUNG S3C44B0 JTAG 适用的编程板电路给SAMSUNG的另一款ARM9内核MPU S3C2440 JTAG编程时出现问题,查阅了一些资料后最终解决。
希望这些对那些在自制ARM JTAG编程器上遇到困难的朋友一点帮助。
一. JTAG仿真器的实质
JTAG (Joint Test Action Group) 编程调试实质上是利用了MCU/MPU片上自带的跟踪调试功能(需MCU/MPU硬件支持)。
JTAG编程板一端与PC的并口相连,另一端连接至目标板,由于通常的MCU/MPU的工作电压在1.8V-3.6V之间,而PC机并口输出的电平逻辑为5V,因此需做电平转换,通常使用一枚缓冲/驱动器(如:74××244/74××541)作隔离,并通过电阻分压,限制进入目标板的电平。
因PC并口没有电压输出,所以编程板上的IC要由目标板供电,即:JTAG接口中的VCC脚是必须恰当连接的。
二. JTAG接口的管脚定义
主流的JTAG接口有14针和20针两种,管脚分配如图一
14针的JTAG接口为老式接口。
JTAG中的非地管脚定义如下图二。
三. 第一种线序的JTAG编程板电路
实测我所使用的SAMSUNG ARM7 S3C44B0开发套件中的JTAG编程板电路如图
但将该编程板与S3C2440相连后却无法正确载入程序。
依据244的输入输出关系,可整理PC并口与JTAG接口管脚的对应关系如下:
PC并口引脚
2 3 8 4
JTAG引脚
TCK TMS TDI nSRST
四. 第二种线序的JTAG编程板电路
经查阅S3C2440的官方JTAG编程板SJF2440的USER’S GUIDE中的编程板电路,整理PC 并口与JTAG接口管脚的对应关系如下:
PC并口引脚
2 3 4 11
JTAG引脚
TCK TDI TMS TDO
据此推测,使用S3C44B0 JTAG编程板对S3C2440的JTAG调试失败是因PC并口控制管脚的分配有区别。
即,S3C2440的JTAG调试代理模拟JTAG时序所用到的并口管脚与S3C44B0的调试代理所用到的不同。
据此,在S3C44B0 JTAG编程板上灵活飞线,再次使用该编程板对S3C2440调试成功。
五. 一点推测
在JTAG相关搜索里,发现网友李杰给出的一个JTAG编程板电路,如图五。
该电路中的JTAG管脚与PC并口管脚的对应关系与S3C2440 JTAG编程板中的此对应关系相同,而作者称,该电路适用于所有的ARM芯片。
据此推测:大多公司开发的ARM调试软件支持两种不同线序的并口模拟JTAG调试,并且在调试开始时能自动侦测出编程板硬件连接并实施控制。
官方给出的S3C2440 JTAG调试软件仅支持一种线序。