版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、 一种嵌入式系统实现的JTAG调试器 电子技术应用 周金和1,张景璐2 时间:2008年03月26日 字 体: 大 中 小 关键词:<"cblue" " target='_blank'>调试器<"cblue" " target
2、='_blank'>边界扫描<"cblue" " target='_blank'>I/O<"cblue" " target='_blank'>的嵌入式<"cblue" " target='_blank'>调试功能 摘要: 分析了 JTAG标准和基于JTAG标准的
3、ARM-ICE的功能和原理,利用基于S3C4510B芯片和Clinux操作系统<"cblue" " title="的嵌入式">的嵌入式系统实现了JTAG<"cblue" " title="调试器">调试器。通过Clinux网络编程使该调试器支持网络远程调试,最后通过对基于ARM7TDMI芯片的嵌入式系统进行调试验证了JTAG调试器功能。关键词: JTAG调试器 Clinux 嵌入式系统 ARM7TDMIJTAG作为一个通用的标准器件功能测试接口,具有灵活高效、易于实现等优
4、点,是微控制器、微处理器、DSP、SoC等器件的重要外部接口。它不但可以用来测试内部功能模块状态,而且可以实现在线调试(ICE)功能。ARM系列处理器正是通过JTAG接口使用内部集成的ICE功能,并采用这种方式实现在线调试。此外CPLD、FPGA等器件大多都可以使用JTAG接口实现在线编程或下载。因此,JTAG接口已经成为复杂芯片系统的必备接口,在芯片测试、调试及实现其他特殊功能方面发挥着重要作用。1 基本原理JTAG标准即IEEE 1149.1标准1。联合测试行动组JTAG(Joint Test Action Group)起草了<"cblue" " tit
5、le="边界扫描">边界扫描测试BST(Boundary Scan Testing)规范, 该标准为数字集成电路规定了一个测试访问口(TAP)和边界扫描结构,解决了由于数字电路高度集成化带来的一些测试难题。它还提供了一种访问和控制芯片内部仿真(ICE)模块的方法,ICE模块一般包括内部扫描和自测试的功能,可以很好地支持集成电路的开发。1.1 JTAG标准工作原理边界扫描技术的基本思想是在靠近芯片的输入输出管脚增加一个移位寄存器单元。通过这些边界扫描寄存器单元,可以实现对芯片输入输出信号的观察和控制。另外,靠近芯片输入输出管脚的边界扫描(移位)寄存器单元可以相互连接起来
6、,在芯片的周围形成一个边界扫描链(Boundary-Scan Chain)。一般的芯片都会提供几条独立的边界扫描链,用来实现完整的测试功能。在JTAG标准中,寄存器被分为两大类:数据寄存器(DRData Register)和指令寄存器(IRInstruction Register),边界扫描链寄存器即为一种很重要的数据寄存器,边界扫描链可用来观察和控制芯片的输入输出。指令寄存器用来实现对数据寄存器的控制。TAP是一个通用的端口,通过TAP可以访问芯片提供的所有数据寄存器和指令寄存器,对整个TAP的控制是通过TAP控制器完成的。TAP包括5个信号接口:(1)TCK(Test Clock),为TA
7、P操作提供了一个独立的基本的时钟信号。(2)TMS(TestMode Selector),用来控制TAP状态机的转换。(3)TDI(TestData Input),是JTAG指令和数据的串行输入端。在TCK的上升沿被采样,结果送到JTAG寄存器中。(4)TDO(Test Data Output),是JTAG指令和数据的串行输出端。在TCK的下降沿被输出到TDO。(5)TRST,是JTAG电路的复位输入信号,低电平有效。通过TAP控制器的状态转移即可实现对数据寄存器和指令寄存器的访问,从而实现对JTAG测试电路的控制。TAP控制器共有16种状态,如图1所示。通过测试模式选择TMS和时钟TCK可控
8、制状态的转移。指令寄存器允许特定的指令被装载到指令寄存器当中,用来选择需要执行的测试,或者选择需要访问的测试数据寄存器。每个支持JTAG调试的芯片必须包含一个指令寄存器。JTAG标准要求芯片支持的基本指令有:EXTEST、INTEST、SAMPLE/PRELOAD、BYPASS、HIGHZ等。1.2 ARM7TDMI调试原理从功能上看,ARM7TDMI处理器主要包括三大部分:(1)ARM CPU Main Processor Logic,包括了对调试的硬件支持;(2)嵌入式ICE-RT Logic,包括了一组寄存器和比较器,用来产生调试异常、设置断点和观察点;(3)TAP 控制器,它通过JTA
9、G接口控制和操作扫描链。ARM7TDMI提供了4条扫描链,分别是扫描链0、1、2和3。通过扫描链0可以访问ARM7TDMI内核的外围电路,包括数据总线。该扫描链长度为113位,具体包括数据总线的031位、内核控制信号、地址总线的031位、嵌入式ICE-RT的控制信号等。扫描链1是扫描链0的子集,长度为33位,具体包括数据总线的031位和BREAKPT信号,扫描链1比扫描链0的长度短了很多,通过扫描链1可以更快地将指令或数据插入到ARM7TDMI的内部。扫描链2长度为38位,该扫描链专门用来访问嵌入式ICE-RT内部的寄存器,通过访问嵌入式ICE-RT的内部寄存器,可以让ARM7TDMI进入调试
10、状态、设置断点、设置观察点。通过扫描链3,ARM7TDMI可以访问外部的边界扫描链,该扫描链用得很少。ARM7TDMI的调试状态和正常运行状态是有区别的。在正常运行状态下,ARM7TDMI由MCLK(Memory Clock)驱动,正常运行。在调试状态下,ARM7TDMI的正常运行被打断,并且和系统的其他部分隔离开来。可以通过扫描链插入特定的ARM/THUMB指令来读写ARM7TDMI的内部寄存器和修改内存的内容。在完成需要的操作后,可以用RESTART JTAG指令让ARM7TDMI返回到正常运行状态,恢复原来的运行。2 JTAG调试器的嵌入式系统实现JTAG调试器硬件是以基于ARM7芯片的
11、嵌入式系统实现的。该系统以带以太网接口的ARM芯片S3C4510B为核心处理器,以Clinux为嵌入式操作系统。JTAG调试器软件主要包括两部分:JTAG调试器与目标机的接口模块和与调试主机的接口模块。具体结构框图如图2所示。2.1 嵌入式系统设计设计并制作标准的S3C4510B应用系统2,主要配置为2MBFLASH、16MBSDRAM、10/100Mbps自适应以太网口、终端接口、并行<"cblue" " title="I/O">I/O接口等。利用S3C4510B的通用I/O口中的P4、P5、P6、P8分别模拟JTAG标准中TAP
12、的4个信号接口,即TCK、TMS、TDI、TDO。从软件上看,需要将Clinux操作系统移植到设计制作的基于S3C4510B的JTAG调试器硬件平台上,以便开发基于网络的调试器软件。CLinux是为没有内存管理单元(MMU)的处理器设计的一种嵌入式操作系统,它继承了桌面Linux的强大网络功能,其内核采用模块化的组织结构,通过增减内核模块的方式来增减系统的功能。通常,在PC机上通过并口模拟JTAG时序3,也可以按照标准仿真器设计JTAG调试器4。与上述方案不同,本设计采用开放源代码软件设计JTAG调试器应用软件,主要参考了Open-JTAG小组开发的通过PC机并口实现JTAG操作的软件jtag
13、er-1.0.0,将其中对PC机并口的操作改为对S3C4510B口线的操作,通过设置S3C4510B的通用I/O口模式寄存器IOPMOD的值可将P4、P5、P6设置为输出模式,将P8设置为输入模式,然后通过编程设置I/O口数据寄存器IOPDATA的值,控制P4、P5、P6、P8的状态实现JTAG标准要求的时序。随后,根据ARM7TDMI调试特性,修改操作代码,增加通过网络的远程<"cblue" " title="调试功能">调试功能。2.2 ARM7TDMI的JTAG指令实现ARM7TDMI的指令寄存器长度是4位,通过TAP和JTA
14、G接口,可以把指令装载到指令寄存器中。在CAPTURE-IR状态下,固定值B0001总是被装载到指令寄存器中。在SHIFT-IR状态下,可以把ARM7TDMI支持的新指令从TDI串行输入,同时固定值B0001会从TDO串行输出。通过输出的这个固定值,可以判断当前的操作是否正确。在UPDATE-IR状态下,新输入的指令被装载到指令寄存器中。在回到RUN-TEST/IDLE状态后,新指令立即生效。IDCODE和SCAN_N是 ARM7TDMI调试中经常用到的JTAG命令。IDCODE命令的二进制代码是1110。IDCODE命令将Device Identification Code寄存器连接到TDI
15、和TDO之间。Device Identification Code寄存器的长度是32位,通过TAP可以读到ARM7TDMI的ID。SCAN_N命令的二进制代码是0010。ARM7TDMI提供了4条扫描链,通过SCAN_N指令可以选择需要访问的扫描链。选择扫描链的过程是:先把SCAN_N指令装载到指令寄存器中,该指令会将长度为4位的扫描链选择寄存器连接到TDI和TDO之间;通过TAP状态的转移便可使选择的扫描链连接到TDI和TDO之间。另外BYPASS、INTEST、RESTART 等JTAG指令的实现方法与上面两条指令的实现方法类似。2.3 嵌入式ICE-RT逻辑实现嵌入式ICE-RT是ARM
16、处理器内部集成的在线仿真功能模块,通过JTAG调试接口与外界交互,其中包含的常用寄存器如表1所示。要访问嵌入式ICE-RT内部的寄存器,可通过扫描链2对Debug Control Register进行访问。实现过程:通过TAP将SCAN_N指令写入JTAG指令寄存器中,通过TDI将数值2写到扫描链选择寄存器中,即选择了扫描链2,在通过扫描链2访问任何嵌入式ICE-RT内部寄存器之前,还需要用INTEST 指令将当前通过SCAN_N指令选择的扫描链置为内部测试状态。写入INTEST指令的过程和写入SCAN_N指令的过程类似。接下来就可以通过扫描链2访问嵌入式ICE-RT内部寄存器,实现对ARM7
17、TDMI的基本调试功能。2.4 ARM7TDMI寄存器和内存访问的实现边界扫描链分布在ARM7TDMI的32位数据总线的周围,ARM7TDMI每次取指令或者进行数据存储时都要通过32位数据总线进行。这样,通过边界扫描链1,就可以插入新指令或者新数据,同时也可以捕获出现在数据总线上的数据。通过这种方式,可以检查和修改ARM7TDMI的通用寄存器和系统内存。以读取寄存器R0的值为例,介绍边界扫描链1的操作过程,如图3所示。读取寄存器R0的值可以用指令STR R0,R0(机器码为0xE5800000)来实现。该指令可将寄存器R0的值存储到内存单元R0中去。因为在ARM7TDMI处于调试状态时,ARM
18、7TDMI和外部是隔离开的,所以该指令实际上不能访问内存单元,也不会对内存单元产生任何影响。使用指令STR R0,R0可使得寄存器R0的值出现在数据总线上,这样就可以通过扫描链1将其捕获,然后从TDO输出。指令STR R0,R0的执行需要两个指令执行周期。在第一个指令执行周期,执行地址计算;在第二个指令执行周期,将寄存器R0的值放到数据总线上去。对ARM寄存器写操作及访问内存的方法与此类似,都是通过扫描链1,只是所使用的指令不同而已。2.5 网络编程通过网络编程,可以对目标系统实现远程调试。图4是PC与仿真器的网络通信流程图。网络通信通过Clinux下的socket编程实现,首先PC(调试主机
19、)通过网络向仿真器发送命令,仿真器通过统一的程序接口分析调试命令,并将调试命令转换成JTAG标准所要求的时序,通过I/O口线发送到目标板;然后目标板执行命令,并将命令执行后得到的调试信息返回给仿真器,接着仿真器将调试信息通过网络发送给PC,这样用户在PC上便得到了调试信息。3 JTAG调试器测试及部分执行结果本设计最终完成了一种在Linux终端下操作的JTAG调试器。调试器上电后便在Clinux下自动运行调试器客户端程序,同时在PC的Cygwin环境下运行JTAG调试器服务器端程序jtager,建立网络连接。然后在Cygwin下键入用户调试命令,执行下列操作:(1)写目标板上的CPU 状态;(2)读写编址在统一内存空间的外部设备寄存器;(3)读写目标机上的RAM;(4)读写目标机上的固态存储设备,如Flash;(5)对嵌入式 ICE-RT进行调试。设计实现的调试器的用户命令较多,下面仅列出两条典型命令IDCODE和REG执行后的结果。执行IDCODE命令后,读出了一个基于S3C4510B的目标开发板内的CPU ID号,从而得到Device ID=0x1F0F0F0F。通过逻辑分析仪分析几个JTAG接口信号的时序关系,
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年企业人力资源管理师之四级人力资源管理师考试题库300道及一套完整答案
- 2026年南通科技职业学院单招职业适应性测试题库附答案解析
- 2026年交管12123学法减分复习考试题库附参考答案(能力提升)
- 2026年材料员之材料员基础知识考试题库300道及参考答案【培优】
- 2026年心理咨询师之心理咨询师基础知识考试题库及完整答案(网校专用)
- 2025年中国红十字会救护员培训理论考试试题含答案
- 2025年中国电信股份有限公司招聘笔试参考题库附带答案详解
- 考核评估数据接口开发工程师绩效评价标准
- 机械制造企业采购部主管面试技巧与答案
- 招生考试命题与组织规范
- 空压机安拆方案
- 人货电梯施工方案
- 南大版一年级心理健康第7课《情绪小世界》课件
- 洗胃并发症的预防与处理
- 期末语法(专项训练)-2024-2025学年人教PEP版英语六年级上册
- 算力产业园项目计划书
- 【MOOC】《电子技术》(北京科技大学)中国大学MOOC慕课答案
- 《土木工程专业英语 第2版》 翻译版 课件全套 鲁正 Unit 1 Introduction to Reinforced Concrete Design-Unit 5 Composite Construction
- 老年髋部骨折快速康复治疗
- 【初中地理】跨学科主题学习探 索外来食料作物的传播史课件-2024-2025学年七年级上学期(人教版2024)
- 四川省南充市2024-2025学年高一地理上学期期末考试试题含解析
评论
0/150
提交评论