(计算机应用技术专业论文)基于arm芯片的嵌入式调试系统的研究与实现.pdf_第1页
(计算机应用技术专业论文)基于arm芯片的嵌入式调试系统的研究与实现.pdf_第2页
(计算机应用技术专业论文)基于arm芯片的嵌入式调试系统的研究与实现.pdf_第3页
(计算机应用技术专业论文)基于arm芯片的嵌入式调试系统的研究与实现.pdf_第4页
(计算机应用技术专业论文)基于arm芯片的嵌入式调试系统的研究与实现.pdf_第5页
已阅读5页,还剩52页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

基于a r m 芯片的嵌入式调试系统的研究与实现 摘要 近年来,随着计算机、微电子、通信及网络技术、信息技术的发展、数字化 产品的普及,嵌入式系统渗透到了各个领域,已经成为计算机领域的一个重要组 成部分,成为新兴的研究热点,嵌入式软件也在整个软件产业中占据了重要地位。 一个好的调试工具对软件产品质量和开发周期的促进作用是不言而喻的,使得嵌 入式调试工具成为了人们关注的重点。目前使用集成丌发环境配合j t a g 调试器 进行开发是目前采用最多的一种嵌入式软件开发调试方式。国内在j t a g 调试器 开发领域中相对落后,普遍采用的是国外的工具产品。因此开发功能强大的嵌入 式调试系统具有重要的实际意义。 当前嵌入式系统中尤其流行和值得关注的是a r m 系列的嵌入式处理器。为此 本课题的目标就是设计并实现一个应用于a r m 平台的j t a g 调试系统。g d b 是一 个源码开放的功能强大的调试器,可以调试各种程序,包括c 、c + + 、j a v a 、p a s c a l 、 f o r a n 和一些其它的语言,还包括g n u 所支持的所有微处理器的汇编语言。此外 g d b 同目标板交换信息的能力相当强,胜过绝大多数的商业调试内核,因此使用 g d b 不仅能够保证强大的调试功能,同时可以降低调试系统的开发成本。为此本 课题在对边界扫描协议、a r m t t d m i 片上仿真器e m b e d d e d i c e 和g d b 远程调试 协议r s p 做了深入研究的基础上,实现了g d b 调试器对嵌入式j t a g 调试的支持。 此外设计中还把可重够计算技术引入到硬件j t a g 协议转换器的开发设计中,使 调试器硬件资源可复用、易于升级,并大大提高了数据的传输速度。从而实现了 一个低成本的、高效的、支持源代码级调试的j t a g 调试系统。 关键词:边界扫描;j t a g ;e m b e d d e d l o e 逻辑单元:g d b 调试器;远程调试 协议 t h er e s e a r c ha n dim pie m e n t a tio no fe m b e d d e dd e b u g gin g s y s t e mb a s e d0 1 1a r mc h ip s a b s tr a c t i nr e c e n ty e a r se m b e d d e ds y s t e mh a sb e c o m ev e r yp o p u l a ri na 1 1k i n d s - o ff i e l d sw i t ht h ed e v e l o p m e n to ft h ec o m p u t e ra n dm i c r o e l e c t r o n i c s t e c h n o l o g y ,c o m m u n i c a t i o n ,i n t e r n e ta n di n f o r m a t i o nt e c h n o l o g y i th a s b e e na ni m p o r t a n tp a r to fc o m p u t e rs c i e n c ea n db e c a m ea n e ws t u d y i n gf o c u s - e m b e d d e ds o f t w a r ea l s op l a y sa ni m p o r t a n tr o l ei nt h es o f t w a r ei n d u s t r y ag o o dd e b u g g i n gt o o lc a ne n s u r et h eq u a lit yo ft h es o f t w a r ea n ds h o r t e n t h ed e v e l o p i n gc i r c l e s ot h ed e b u g g i n gt o o la l s ob e c o m e st h ef o c u so f t h es o f t w a r ed e v e l o p m e n t n o wt h ed e b u g g i n gm o d eo fu s i n gi n t e g r a t e d 。d e v e l o p m e n te n v i r o n m e n tw i t ht h ej t a gd e b u g g e ri su s e dw i d e l yi ne m b e d d e d ,s o f t w a r ed e v e l o p m e n t t h ed o m e s t i cj t a gd e b u g g e rd e v e l o p m e n th a sf a ll e n b e h i n da n dm o s td e b u g g e rt o o l sa r ef r o mf o r e i g nm a n u f a c t u r e r s t od e v e l o p p o w e r f u l b e b u g g e rh a sg r e a ts i g n i f i c a n c ei nt h ee m b e d d e ds y s t e m a tp r e s e n t ,a r mc h i p si su s e dw i d e l yi nm a n ye m b e d d e ds y s t e m s s o t h eg o a lo ft h i ss u b j e c ti st od e s i g na n di m p l e m e n taj t a gd e b u g g i n gt o o l b a s e do na r mp l a t f o r m g d bd e b u g g e ri sap o w e r f u ld e b u g g e rt o o lf r o mg n u a n do p e ns o u r c e s ou s i n gt h eg d ba sd e b u g g i n ge n v i o r o m e n tg r e a t l yr e d u c e t h ec o s to fd e v e l o p i n gad e b u g g e r a f t e rs t u d y i n gt h eb o u n d a r y s c a n t e s t i n gt e c h n o l o g y ,e m u l a t o rd e v i c ee m b e d d e d l c et e c h n o l o g ya n dg d br e m o t e d e b u gp r o t o c o l ( r s p ) ,t h es u b j e c tm a k et h eg d bd e b u g g e rs u p p o r tt h ej t a g _ j d e b u g g i n g i na d d i t i o n ,t h es u b j e c ti n t r o d u c e s t h et e c h n o l o g yo ft h e r e c o n f i g u r a b l ec o m p u t i n gi n t ot h ed e s i g no ft h e3 t a gp o r o t o c lc o n v e r t e r h a r d w a r e t h eh a r d a r er e s o u r c eo ft h ed e b u g g e rb e c a m er e u s a b l ea n de a s i e r t ou p g r a d e a tt h es a m et i m et h es p e e do ft h ed a t at r a n s i t i o ni m p r o v i n g g r e a t l y 1 1 k e y w o r d slb o u d a r y s c a r ej t g ;e m b e d d e d i c e ;g d bd e b u g g e r ;r e m o t es e r i a i p r o t o o o i i i i 独创声明 本人声明所呈交的学位论文是本人在导师指导下进行的研究工作及取得的研究成果。 0 我所知,除了文中特男1 j 加以标注和致谢的地方外,论文中不包含其他人已经发表或撰写 i 的研冤成果,也不包含未获得 ( 蕉! 塑遗查墓丝益要挂别直明 i ! 奎拦亘窒2 或其他教育机构的学位或证书使用过的材料。与我一同工作的同志对本研 所做的任何贡献均已在论文中作了明确的说明并表示谢意。 学位论文作者签名:豕眼签字闩期:加0 7 年6 月争f 1 学位论文版权使用授权书 本学位论文作者完全了解学校有关保留、使用学位论文的规定,有权保留并向国家有 :部门或机构送交论文的复印件和磁盘,允许论文被查阅和借阅。本人授权学校可以将学 i 论文的全部或部分内容编入有关数据库进行检索,可以采用影印、缩印或扫描等复制手 保存、汇编学位论文。( 保密的学位论文在解密后适用本授权书) j 位论文作者签名:次4 - 1 c 导师签字: 毒够 ;字日期:岬年6j 目4 , p t签字闩期:) 。 7 年6 月;开 :位论文作者毕业后去向: :作单位: l 讯地址: 电话: 邮编: 幕于 斛占j i 的嵌入谢试系统的设计。实现 1 引言 i 1j t a g 调试器研究现状及发展动态 随着芯片生产工艺的发展,在同等大小的硅片上能够集成越来越多的晶体 管,这样在不增加芯片生产成本的基础上在处理器的内部实现i c e ( 片上模拟 i n c i r c u i te m u l a t o r ) 单元,并通过在开发板上引出的调试端口,发送调试命令 和接收调试信息,完成调试过程。目前多种处理器为满足用户在开发过程中调试 - 的需求,在处理器内部嵌入额外的控制模块,该模块会在满足了一定的触发条件 情况下使处理器进入调试模式。a r m 处理器内部嵌入额外的控制模块被称作 e m b e d d e d l c e 单元,该单元通过a 尉芯片的j t a g 边界扫描口进行调试的设备。 在调试模式下被调试程序停止运行,主机的调试器可以通过处理器的j t a g 通信 接口访问各种资源( 寄存器、存储器等) ,甚至使处理器执行指令。从而实现各 种调试任务( 如读、写内存,寄存器) 。 j t a g 调试器经历了近几年的发展,其调试标准已经达到了非常成熟的程 度,国外开发了许多优秀的产品如m u l t i - i c e 、r e a l v i e w - i c ej g 仿真器、 t r a c e 3 2 。i c d 系列j t a g b d m 仿真器。而国内在j t a g 调试器丌发领域中相对 落后,普遍采用的多是国外的工具产品,仍处于发展水平较低的阶段。 1 2 课题研究目的和实际应用价值 近年来,随着计算机、微电子、通信及网络技术、信息技术的发展、数字化 产品的普及,嵌入式系统渗透到了各个领域,已经成为计算机领域的一个重要组 成部分,成为近年来新兴的研究热点。嵌入式系统最初主要应用于工业控制、通 信、仪器仪表和家用电器等领域。随着嵌入式系统的发展,其已被广泛应用到网 络、手持通信设备、国防军事、消费电子和自动化控制等各个领域。嵌入式系统 几乎包括了生活中的所有电器设备,如掌上p d a 、移动计算设备、电视机顶盒、 ) 手机上网、数字电视、多媒体、汽车、微波炉、数字相机、家庭自动化系统、电 梯、空调、安全系统、自动售货机、蜂窝式电话、消费电子设备等。 幕十a r m 芯 的嵌入调试系统的设计与实现 随着嵌入式系统的广泛应用,嵌入式软件开发变得同趋重要,这必然对嵌入 式软件的开发环境也提出了更高的要求。嵌入式软件开发离不开嵌入式调试器的 支持。目前,国外计算机业在调试器领域中发展很快,开发了许多功能强大、支 持多种目标机的交叉调试器。而在我国,嵌入式软件的开发尚处于起步阶段,在 调试器领域中也一直处于落后状态,普遍采用的多是国外的产品,因此开发功能 强大的调试器有着重要的实际意义。 j t a g 调试器连接比较方便,通过现有j t a g 边界扫描口与c p u 核通信,它 无需目标存储器,不占用目标系统的任何端口。而且由于j t a g 调试的目标程序 是在目标板上执行,仿真更接近于目标硬件使用集成开发环境配合j t a g 仿真 器进行丌发是目日口采用最多的一种调试方式而g n u 项目中的g d b 调试器是 一个源码丌放、功能强大的调试器,可以有效降低调试系统的开发成本。因此 如何实现一个以g d b 调试器为调试环境,高效、低成本的嵌入式j t a g 调试系 统就成了一个带有挑战性的课题。 在本课题中实现的调试系统由于借鉴了优秀的g n u 项目g d b ( g n ud e b u g ) 可以很好的支持相关项目的调试工作,在保证调试功能的同时,大大降低了调试 系统的开发成本,有助于嵌入式系统的开发和推广另外本课题中对调试系统中 协议转换器的硬件设计进行的改造,在硬件设计中引入可重构技术,采用了 f p g a ( 现场可编程门阵列) 结构,使得整个硬件不必像专用集成电路一样,一个 细微的修改就会导致整个电路的重新设计与制作,能够大大降低系统成本。同时, 如果系统运行的时候采用了不同的调试目标硬件平台时,那么设计者就可以考虑 利用动态重构技术在不同的需求时针对不同的硬件平台分别实现协议转换的功 能,做到“一片多用”,节省了资源、空间和成本,增加了调试器的可扩展性。因 此,该调试系统的实现具有非常重要的实际应用价值。 2 基于 剐芯j ;的嵌 调试系统的设计。j 宴戌 2ie e e i1 4 9 1 - j t a g 基本原理 随着电子技术的发展,电子器件的生产商和电子产品的制造商都在倾向于 采用最新的器件技术,如b g a 、c s p ( 芯片规模封装) 、t c p ( 倒装芯片封装) 和其它 更小的封装,以提供更强的功能、更小的体积,并节省成本。电路板越来越密、 器件越来越复杂、元器件的管脚数和管脚密度不断提高。电路性能要求越来越苛 刻,使用万用表、示波器等测试芯片的传统方法测试来确定电路是否存在故障己 不能满足要求,越来越难的检测问题导致了工业标准i 旺ei 1 4 9 i - - 边界扫描 技术的诞生。 1 9 8 6 年一1 9 8 8 年,以欧洲和北美会员为主的一个组织一联合测试行动组 ( j o i n tt e s ta c t i o ng r o u p j t a g ) 率先开展了边界扫描技术的研究,并提出了 一系列关于边界扫描标准草案。后来在1 9 9 0 年被正式批准为i e e e 标准l1 4 9 1 边界扫描标准,全称为标准测试访问及边界扫描体系结构( i e e es t a n d a r d1 1 4 9 1 - t e s ta c c e s sp o r ta n db o u n d a r y - s c a na r c h i t e c t u r e ) ,简称j t a 6 标准。通常 我们也把这种技术称为t a g 技术。j t a g 技术为芯片提供了一种访问控制机制,可 以访问控制芯片的管脚和内部寄存器,该标准最初被用来解决印刷电路板上各集 成电路的测试问题。自从边界扫描机制标准出现以来,市场上支持边界扫描机制 的芯片及设计开发软件与r 俱增。其应用越柬越广泛,已经不仅仅局限月芯片测 试方面的应用了,在嵌入式系统开发中它有着更广泛的应用,j t a g 技术还被应用 在可编程芯片的在线系统编程和芯片调试等方面。 2 1 边界扫描原理 在j t a g 调试中,边界扫描( b o u n d a r y s c a n ) 是一个很重要的概念。边界扫 描技术的基本思想是在靠近芯片的输入输出管脚上增加一个移位寄存器单元。因 为这些移位寄存器单元都分布在芯片的边界上( 周围) ,所以被称为边界扫描寄 存器( b o u n d a r y s c a nr e g i s t e rc e l l ) 。当芯片处于调试状态的时候,这些边 界扫描寄存器可以将芯片和外围的输入输出隔离丌来。通过这些边界扫描寄存器 单元,可以实现对芯片输入输出信号的观察和控制。 对于芯片的输入输出管脚,可以通过与之相连的边界扫描寄存器单元把信号 草十a r m 芯 的嵌入调试系统的设计与实现 ( 数据) 加载倒该管脚中去;对于芯片的输出管脚,也可以通过与之相连的边界 扫描寄存器“捕获”( c a p t u r e ) 该管脚上的输出信号。在正常的运行状态下, 这些边界扫描寄存器对芯片来说是透明的,所以正常的运行不会受到任何影响。 这样,边界扫描寄存器提供了一个便捷的方式用以观测和控制所需要调试的芯 片。 另外,芯片输入输出管脚上的边界扫描( 移位) 寄存器单元可以相互连接起 来,在芯片的周围形成一个边界扫描链( b o u n d a r y - s c a nc h a i n ) 。一般的芯片 都会提供几条独立的边界扫描链,用来实现完整的测试功能。边界扫描链可以串 行的输入和输出,通过相应的时钟信号和控制信号,就可以方便的观察和控制处 在调试状态下的芯片。 2 2j t a g 结构 出图4 - 1 所示j t a g 控制器主要由四个部分组成:测试端口、测试端口控 制器( t e s ta c c e s sp o r tc o n t r o ll e r ) 、指令寄存器( i n s t r u c t i o nr e g i s t e r a n dd e c o d el o g i c ) 、数据寄存器( u s e rr e g i s t e ra n db y p a s sr e g i s t e r ) 。 测试端口( t a p ) : 根据i e e e l l 4 9 1 标准实现的j t a g 测试端口有下列5 个引脚:测试时钟 ( t c k ) 、测试数据输入( t d i ) 、测试数据输出( t d 0 ) 、测试模式选择( t m s ) 和测试复位( t r s t ) 。其中的测试复位信号可以选择。 t c k 为测试时钟输入引脚。测试时钟是由外部设备提供的测试同步 信号,和系统时钟无关; t d i 为串行测试数据输入引脚,数据通过t d i 引脚输入j t a g 接 口: t d o 为串行测试数据输出引脚,数据通过t d o 引脚从j t a g 接口 输出; t m s 为测试模式选择引脚,t m s 和t c k 配合使用可以使接口处于 某种特定的测试模式; t r s t 为测试复位引脚,该引脚为输入引脚,低电平有效。当t r s t 4 幕于 聪gj i 的嵌入调试系境的设计j 实现 为低电平时,芯片处于正常工作状态。边界扫描功能无效。连续的 五个t m s 信号为1 同样达到相同的效果,因此t r s t 引脚是一个可 以选择的引脚。 图4 1y r a g 控制器结构示意图 t a p 控制器:边界扫描测试的核心控制器。t a p 控制器是一个1 6 个状态 的状态机控制机,通过设置测试模式能使其处于不同的工作状态,在 2 2 3 部分将详细介绍t a p 控制器功能。 指令寄存器:指令寄存器允许特定的指令被装载到指令寄存器中,通过指 令寄存器的解码逻辑单元对指令进行解码从而选择要访问的数据寄存器。 通过t a p 控制器输出的s e l e c t 信号选择指令寄存器的输出去驱动t d 0 。 每个支持j t a g 调试的芯片必须包含一个指令寄存器。 数据寄存器:i e e e 标准1 1 4 9 1 规定,必须具有的两个数据寄存器是边 界扫描寄存器( b o u n d a r ys c a nr e g i s t e r ) 和旁路( b y p a s s ) 寄存器。边界 扫描寄存器是出围绕在芯片输入输出管脚周围一系列的边界扫描单元组 成的,j 下是由它来实现测试管脚信号的输入、输出:旁路寄存器只由一个 扫描寄存器位组成,当选择了旁路寄存器,t d i 和t d o 之间只有一位 寄存器,实际上没有执行边界扫描测试,旁路寄存器的作用是为了缩短扫 描路径而对不需要进行测试的芯片进行旁通。 单于 瑚芯j ¥的嵌入调试系统的设计与实现 另外对于特定的芯片而言,芯片厂商都会在i e e e1 1 4 9 1 的基础上扩充一 些私有的指令寄存器和数据寄存器以帮助在开发过程中进行方便的测试和调试。 在由指令寄存器选择某个特定的数掘寄存器作为边界扫描测试寄存器,当一个扫 描路径选定后,其它的路径处于商阻念。 2 3j t a gt a p 控制器状态机 图4 - 2t a p 控制器状态机状态转换图 t a p 的状态机如图4 - 2 所示,总共有1 6 个状态。在图中,每个六边形表示 一个状态,六边形中标有该状态的名称和标识代码。图中的箭头表示了t a p c o n t r o l l e r 内部所有可能的状态转换流程。状态的转换是由t m s 控制的,所以 在每个箭头上有标有t m s = 0 或者t m s :1 在t c k 的驱动下,从当前状态到 下一个状态的转换是由t m s 信号决定。假设t a pc o n t r o l l e r 的当前状态为 6 摹十 蹦芯j j 的嵌入调试系统的i 5 计实现 s e l e c t d r - s c a n ,在t c k 的驱动下,如果t m s = 0 ,t a pc o n t r o l l e r 进入 c a p t u r e d r 状态;如果t m s :1 ,t a pc o n t r o l l e r 进入s e l e c t - i r s c a n 状念。 如果需要捕获芯片某个管脚上的输出,首先需要把该管脚上的输出装载到边 界扫描链的寄存器单元里去,然后通过t d o 输出,这样我们就可以从t d o 上得到相 应管脚上的输出信号。如果要在芯片的某个管脚上加载一个特定的信号,则首先 需要通过t d i 把期望的信号移位到与相应管脚相连的边界扫描链的寄存器单元罩 ”去,然后把该寄存器单元的值加载到相应的芯片管脚。 2 4 指令寄存器和数据寄存器访问过程 1 系统上电t a pc o n t r o l l e r 进入t e s t - l o g i cr e s e t 状态,然后依次进入 r u n - t e s t i d l e 一一 s e l e c t d r s c a n 一一 s e l e c t i r s c a n 一一 c a p t u r e i r 一一 s h i f t - i r 一 e x i t l i r - 一 u p d a t e i r ,最后回到r u n t e s t i d l e 状态。在 c a p t u r e - i r 状态中,一个特定的逻辑序列被加载到指令寄存器当中;然 后进入到s h i f t i r 状态。在s h i f t - i r 状态下,通过t c k 的驱动,可以将一 条特定的指令送到指令寄存器当中去。每条指令都将确定一条相关的数 据寄存器。然后从s h i f t i r - 一 e x i t l i r 一 u p d a t e i r 。在u p d a t e i r 状 态,刚才输入到指令寄存器中的指令将用来更新指令寄存器。最后,进 入至u r u n - t e s t i d l e 状态,指令生效,完成对指令寄存器的访问。 2 当前可以访问的数据寄存器由指令寄存器中的当前指令决定。要访问由 刚才的指令选定的数据寄存器,需要以r u n - t e s t i d l e 为起点,依次进入 s e l e c t d r s c a n 一一 c a p t u r e d r 一一 s h i f t d r 一一 e x i t l d r 一一 u p d a t e d r , 最后回至u r u n - t e s t i d l e 状态。在这个过程当中,被当前指令选定的数据 寄存器会被连接在t d i 和t d o 之间。通过t d i 和t d o ,就可以将新的数据加 载到数据寄存器当中去,同时,也可以捕获数据寄存器中的数据。具体 过程如下。在c a p t u r e - d r 状态中,由t c k 的驱动,芯片管脚上的输出信号 会被“捕获”到相应的边界扫描寄存器单元中去。这样,当前的数据寄 存器当中就记录了芯片相应管脚上的输出信号。接下来从c a p t u r e d r 进 入到s h i f t - d r 状态中去。在s h i f t d r 状态中,由t c k 驱动,在每一个时钟 周期内,一位新的数据可以通过t d i 串行输入到数掘寄存器当中去,同时, 草十 删芯j 的嵌入调试系统的设计与实现 数据寄存器可以通过t d o 串行输出一位先前捕获的数据。在经过与数据寄 存器长度相同的时钟周期后,就可以完成新信号的输入和捕获数据的输 出。接下来通过e x i t l d r 状态进入至l j u p d a t e d r 状态。在u p d a t e - d r 状态 中,数据寄存器中的新数据被加载到与数据寄存器的每个寄存器单元相一 连的芯片管脚上去。最后,回到r u n t e s t i d l e 状态,完成对数据寄存器 的访问。 8 筚于a l l l l 芯j i 的 捷入调试系统的改计i 宴现 3a r m 7 t d mi 芯片的调试构架 3 1a r m 7 t m di 内核j t a g 控制器构架 图3 - 1a r m 7 t d i h i 内核结构图 从图3 1 中可以看到,a r m 7 t d l i 处理器主要包括三大部分: a r mc p um a i np r o c e s s o rl o g i c 这部分包括了对调试的硬件支持。 e m b e d d e d i c e - r t 逻辑单元 这部分包括了一组寄存器和比较器,用来产生调试异常、设置断点和观察点。 j t a g 控制器 j t a g 控制器包括:t a p 控制器、j t a g 测试端口、指令寄存器和数据寄存器四 个部分。j t a g 控制器中的t a p 控制器通过j t a g 测试端口来控制和操作指令 寄存器和数据寄存器。 9 3 1 1a r n 7 t d n it a p 控制器 t a p 控制器控制控制着整个j t a g 的逻辑切换。而整个逻辑的切换过程可以 通过t a p 状态机来描述。状念机的切换过程可以参照2 2 3 部分的t a p 状念机状 态转换图。 3 1 2a r n 7 t d ui 的指令寄存器和数据寄存器 通过t a p 状态机的切换,a r m 7 t d m i 可以在t d i 和t d o 信号之间连接的测试寄存 器如下: 指令寄存器 允许特定的指令被装载到指令寄存器当中,用来选择需要执行的测试,或者 选择需要访问的数据寄存器。每个支持j t a g 调试的芯片必须包含一个指令寄 存器。a r m t t d m i 的指令寄存器长度是4 位。 数据寄存器:旁路寄存器、设备i d 寄存器、扫描链选择寄存器、扫描链0 、 1 、2 、3 专旁路寄存器:在不需要进行任何测试的时候,将旁路寄存器连接在t d i 和t d o 之问,在t d i 和t d o 之间提供一条长度最短的串行路径。a r m 7 t d m i 中该寄存器长度为1 位数据经过b y p a s s 寄存器,在一个t c k 时钟之后从 t d o 串行输出。因此实现了对设备的旁路。 寺设备i d 寄存器:设备i d 寄存器中可以包括生产厂商的信息,部件号码, 和器件的版本信息等。使用相应指令,通过t a p 控制器可以确定器件的 相关信息。a r m 7 t d m i 中该寄存器长度为3 2 位。 夺扫描链选择寄存器:用来选择扫描链。a r m 7 t d m i 中该寄存器长度为长度 4 位。 卡扫描链o 、l 、2 、3 :a r m 7 t d m i 提供了四条扫描链:扫描链0 、扫描链l 、 扫描链2 、扫描链3 。a r m 7 t d m i 正是通过前三条扫描链实现了的内核的调 试以及e m b e d d e d l c e 逻辑单元进行配置。 1 0 堆于a r m 芯 的嵌入调试系统的设汁i 实现 扫描链o :通过扫描链0 可以访问a r m 7 t d m i 内核的外围电路,包 括数据总线。通过该扫描链可以进行芯片自j 的测试( e x t e s t ) 和芯 片的内部测试( i n t e s t ) 。该扫描链长度为1 1 3 位,具体包括:数 据总线的0 - - 3 1 位,内核控制信号,地址总线的3 1 0 位, e m b e d d e d l c e r t 的控制信号。 扫描链1 :扫描链1 是扫描链0 的子集,长度为3 3 位,具体包括: 数据总线的o 一3 l 位、b r e a k p t 信号。扫描链1 比扫描链0 的长度 短了很多,通过扫描链1 可以更快的插入指令或者是数据到 a r m 7 t d m i 的内部。 扫描链2 :扫描链2 长度为3 8 位,该扫描链是专门用来访问 e m b e d d e d i c e r t 内部的寄存器。通过访问e m b e d d e d i c e - r t 的内部 寄存器,可以让a r m 7 t d m i 进入调试状态、设置断点、设置观察点。 扫描链3 :通过扫描链3 ,a r m t t d m i 可以访问外部的边界扫描链。 该扫描链用的很少,在此就不介绍了,可以参考a r m 7 t d m i 手册。 在实际的调试过程中,扫描链1 和扫描链2 用的最多。基本上所有的调试动作 都是通过这两条扫描链来完成的。 3 1 3a r m 7 t d ml 的常用j t a g 指令 a r m t t d m i 的指令长度是4 位,通过t a p 控制器和j t a g 接口,可以把指令装载到 指令寄存器当中去。在c a p t u r e - i r 状态下,固定值b 0 0 0 1 总是被装载到指令寄存 器当中去。在s h i f t i r 状态中,可以把a r m 7 t d m l 支持的新指令从t d i 串行输入, 同时固定值b 0 0 0 1 会从t d o 串行输出。通过这个输出的固定值,可以判断当前的操 作是否正确。在u p d a t e i r 状态,新输入的指令被装载到指令寄存器当中去。最 后回到r u n t e s t i d l e 状态后,新指令立即生效。 下面先来看看在a r m 7 t d m i 调试当中经常用到的几条j t a g 指令。 i d c o d e 指令:该指令的二进制代码是1 1 i 0 。i d c o d e 指令将设备i d 寄存器连接 至u t d i 和t d o 之间。设备i d 寄存器的长度是3 2 位,通过t a p 控制器就可以将 a r m 7 t d m i 的i d 信息给读出来。a r m 7 t d m i 的i d 号是o x l f o f o f o f 皋于a r m 芯j i 的嵌入调试系统的 5 计j 实现 s c a n _ n 指令:该指令的二进制代码是0 0 1 0 。s c a n _ n 指令装载到指令寄存器 当中去,该指令会将长度为4 位的扫描链选择寄存器连接到t d i 和t d o 之间; 然后进入到c a p t u r e d r 状态,在这个状态下,固定值b 1 0 0 0 将被捕获到扫描 链选择寄存器当中去;在s h i f t - d r 状态下,将需要选择的扫描链的号码通过 t d i 输入到扫描链选择寄存器当中去;在u p d a t e - d r 状念下,被选择的扫描 链将被连接到t d i 和t d o 之问。a r m 7 t d m i 提供了4 条扫描链,通过s c a n _ n 指令可以选择需要访问的扫描链。需要访问e m b e d d e d l c e - r t 的寄存器时,选 择扫描链2 ;需要插入指令到a r m 7 t d m i 内核去执行的时候,选择扫描链l 。 i i 叮r e s t 指令:该指令的二进制代码是11 0 0 。i n t e s t 指令将通过s c a n _ n 选定的 扫描链置于内部测试模式。 r e s t a r t 指令:该指令的二进制代码是0 1 0 0 。r e s t a r t 指令用来使a r m 7 t d m i 处理器从调试状态退回到正常运行状态。 3 2a r m 7 t d m i 的e m b e d d e d - i c e 单元 e m b e d d e d i c e r t 内部包括了丰富的寄存器,通过这些寄存器,可以控制 a r m 7 t d m i 进入或者退出调试状态;并可以设置断点和观察点。 e m b e d d e d i c e 也称为i c e b e r a k e r ,它为a r m 7 t d m i 核提供了片上调试功能, 可以通过扫描链2 对其进行编程控制。e m b e d d e d i c e 主要由2 个实时监控单元 ( r e a l t i m ew a t c hp o i n tu n i t ) 以及相关的外围控制组成。 e m b e d d e d l c e 的结构如图3 - 2 所示。当e m b e d d e d l c e 处于监控状态时,实 时监控单元中的一个或者两个实时的监控系统中三种总线的数据情况:数掘总 线、地址总线以及各种的运行控制信号总线。通过比较器判断三组是否同时匹配 实时监控单元中的对应数掘,一旦出现总线数据与监控单元内的数据完全匹配的 情况,e m b e d d e d i c e 马上发出暂停内核信号( b r e a k p t ) ,内核在当前指令执行完 以后转入调试状态。 雀寸二 斛芯片的嵌入调试系统的设计o j 实现 图3 - 2 e m b e d d e d i c e 逻辑单元 3 2 2e m b e d d e d l o e - r t 中的寄存器 e m b e d d e i c e 逻辑单元中不同的寄存器有不同的长度,而且被分配了一个长 度为5 的地址。 d e b u gc o n t r o lr e g i s t e rs调试控制寄存器是用来控制调试的,地址为0 0 0 0 0 。 d e b u gc o n t r o l 寄存器的格式如图3 3 所示。 i 5 t321 o le m b e d d e d l c e 一只t m o n , o rr n o ( j e s b a r a z蚋t d i sd b g r qd b g a c k l d i s a b l ee n 8 b l e 图3 3 调试控制寄存器格式图 d b g a c k :用来控制d b g a c k 信号的值,通过d e b u gc o n t r o l 寄存器,可以设置d b g a c k 的值。 雀十a r m 芯j 的嵌入调试系统的设计j 实现 d b g r q :是调试请求信号,通过将该信号置“1 ”,可以强制a 删7 t 叫i 暂停当前 的指令,进入调试状念。 i n t d i s :用来控制中断。 s b z r a z :任何时候都必须被置0 。 m o n i t o rm o d ee n a b l e :用来控制是否进入m o n i t o r 模式,e m b e d d e d l c e - r td i s a b l 这个控制位用来控制整个e m b e d d e d l c e r t 是启用还是禁用。如果禁用的话, a r m 7 t d m 将一直保持在正常的运行状态。 也就是说通过d e b u gc o n t r o l 寄存器,可以强制让a r m t t d m i 进入调试状念。 这是第一种让a r m t t d m i 进入调试状态的方法,另外,也可以通过断点或者是观 察点来进入调试状态,每当设簧的断点或者观察点被触发后,a r m 7 t d m i 自动进 入调试状态。在我们试的时候,第一步一般都是先用d b g r q 信号使得a r m 7 t d m 进入调试状态,然后将我们需要调试的程序装载到内存晕去,接着在需要的地方 设罨断点和观察点,开始调试( 单步运行、全速运行、让断点或者观察点触发) 。 d e b u gs t a t u sr e g i s t e r :调试状态寄存用来保存当前调试状态的,地址为 0 0 0 0 1 寄存器格式如图3 - 4 所示: 图3 - 4 调试状态寄存器格式 d b g a c k :用来标识当前系统是否处于调试状态,当a r m t t d m i 进入调试状态后,该 信号会被自动簧“1 ”。所以,通过查询该位,就可以判断a r m 7 t d m i 当前的状态。 d b g r q :用来标识d b g r q 信号的当前状态,要设置d b g r q 信号访问d e b u gc o n t r o l 寄存器。 i f e n :用来标识系统的中断控制状态:启用还是禁用。 c g e n l :用来判断当前对调试器( d e b u g g e r ) 在调试状态下对内存的访问是否完 成。 t b i t :该位用来判断a r m t t d m i 是从a r m 状态还是t h u m b 状态进入到调试状态的。 1 4 璀十 雕芯j i 的嵌入调试系统的设汁实现 a b o r ts t a t u sr e g i s t e r :异常状态寄存器的长度为3 2 位,只有第0 位被使用。 该位用来表示异常的产生的原因:断点触发或观察点触发或一个真的异常, 地址为0 0 0 1 0 。 d e b u gc o b i sc o n t r o lr e g i s t e r d e b u gc o i l sd a t ar e g i s t e r , a r m 7 t d m i 处 理器的e m b e d d e d i c e 逻辑,包含一个调试通信通道( d e b u gc o m m u n i c a t i o n s c h a n n e l ,d c c ) 。通过调试通信通道,可以实现目标机和调试主机上的调试器 进行通信。地址为0 0 1 0 0 和0 0 1 0 1 调试通信通道主要由以下几部分组成: 3 2 位数据寄存器 3 2 位通信控制寄存器,用于处理器和调试器之间的同步握手。 这些寄存器在e m b e d d e d i c e 逻辑中有固定地址映射,处理器可以使用m c r 和 m r c 指令访问协处理器1 4 ( c p l 4 ) 来对这几个寄存器进行读写。而调试器可以 ”通过扫描链2 来访问这些寄存器。调试通信控制寄存器的格式如下图3 5 所示: e m b e d d e d i c e v e r s i o n r e s e r v e d 厂- 广上 3 1 3 0 2 92 8 2 72 c o n t r o l b i t s i 一 10 d c cd a t ar e a dr e g i s t e d c cd a t aw r i t er e g i s h d c cc o n t r o lr e g i s t e rf o r m a t 图3 - 5d c c 控制寄存器结构图 第3 1 - 2 8 位:表示e m b e d d e d l c e 版本号,a r m 7 t d m ie m b e d d e d l c e 版本 号为0 0 0 1 : 第2 7 - 2 位:保留数据区; 第1 位:该位为0 表示调试通信数据寄存器准备好接收来自处理器的数 据;如果该位置1 表示调试通信数据寄存器中有数据,调试主机可以从中 取出数据。 i s 基乎a 蹦出j | 的嵌入调试系统的设计与实现 b i t0 :该位为0 表示体调试通信数据寄存器准备好接受来自调试主机 的数据;如果该位置l 表示调试通信数据寄存器中有数据且还没有被处理 器读出,调试主机必须等待,直到该位重新为o 才能发送下一个数据。这 样调试主机上的调试器可以通过d c c 发送信息给处理器;处理器也可以 通过d c c 向调试器发送信息。这样便实现了调试器与处理器之间的通 信。 w a t c hp o i n to 1a d d r e s sv a l u e m a s kr e g i s t e r 和w a t c hp o i n t0 1d a t a v a l u e m a s kr e g i s t e r :关于w a t c hp o i n t 的6 个寄存器,因为联系比较紧密, 我在这里对这6 个寄存器一并介绍。a 刚7 t d m i 有两组w a t c hp o i n t 寄存器,所 以总共有1 2 个寄存器,在这里我只介绍其中的一组,另外一组的功能完全是 一样的。w pa d d r e s sv a l u e m

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论