(计算机应用技术专业论文)基于sopc的通用型jtag调试器的设计与实现.pdf_第1页
(计算机应用技术专业论文)基于sopc的通用型jtag调试器的设计与实现.pdf_第2页
(计算机应用技术专业论文)基于sopc的通用型jtag调试器的设计与实现.pdf_第3页
(计算机应用技术专业论文)基于sopc的通用型jtag调试器的设计与实现.pdf_第4页
(计算机应用技术专业论文)基于sopc的通用型jtag调试器的设计与实现.pdf_第5页
已阅读5页,还剩60页未读 继续免费阅读

(计算机应用技术专业论文)基于sopc的通用型jtag调试器的设计与实现.pdf.pdf 免费下载

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

文档简介

摘要 摘要 随着社会的进步,嵌入式系统正在悄悄的融入到人们的日常生活中:从多功 能手机到m p 4 娱乐手持设备,从智能家电控制到汽车智能电子控制,生活中的嵌 入式系统无处不在。随着嵌入式系统应用领域的扩大,嵌入式系统的复杂度和开 发设计难度也在不断增加。这样对于嵌入式的设计和开发提出了更高的要求。嵌 入式的调试作为嵌入式开发中最为重要的一步,自然也面对着更大的挑战。嵌入 式处理器品种的多样化,使得传统的“仿真器加编程器的调试方式越来越受限。 在半导体设计生产工艺不断提高的驱动下,o c d ( o nc h i pd e b u g g i n g :在芯片调试) 调试方式和s o p c ( s y s t e n lo np r o g r a m m a b l ec h i p :可编程片上系统) 技术的出现极 大的改变了传统的调试方法,提高了调试效率,并随之产生了一种称作“j t a g ” ( j o i n tt e s ta c t i o ng r o u p :联合测试行动组) 的o c d 调试原理。 本文在深入研究s o p c 设计思想和j t a g 调试原理后,基于提高调试器通用性 的设计目的,设计并实现了一种通用型调试器:在f p g a 中加入基于特定c p u 核 的j t a g 调试i p c o r e ,利用s o p c 的可重用性和f p g a 易于下载更新的特性,在 一片硬件芯片上实现对多款嵌入式c p u 架构的在线调试支持,体现通用的概念。 本系统的具体实现采用了a l t e r a 公司的c y c l o n e 系列f p g a 芯片、q u a r t u si i 开发环境及n i o si i d e 开发套件,自主研发基于a r m 7 t d m i 处理器架构的j t a g i p c o r e ,并完成了调试器的硬件原型设计。最终成型的调试系统实现了对 a r m 7 t d m i 的基本调试功能。本文描述了系统设计与实现的原理、思路及过程。 关键词:嵌入式系统,s o p c ,j t a g ,i p c o r e ,通用型调试器 a b s t r a c t a b s t r a c t w i t ht h ed e v e l o p m e n to fo u rs o c i e t y , e m b e d d e ds y s t e ma r eq u i e t l yb e c o m i n go n e o ft h em o s ti m p o r t a n tc r e a t i o n si no u rd a i l yl i v e s ,w h i c he x i s t se v e r y w h e r ei n m u l t i f u n c t i o n a lm o b i l e p h o n e , m p 4 ,p o r t a b l ed e v i c e s ,i n t e l l i g e n th o m ea p p l i a n c e s c o n t r o l ,i n t e l l i g e n te l e c t r o n i cm o t o rc o n t r o l ,e t c a si t sa p p l i c a t i o n si n c r e a s e ,e m b e d d e d s y s t e mi sm u c hm o r ec o m p l i c a t e da n dh a r dt od e v e l o pa sw e l l 勰d e s i g nw h i c hr e q u i r e s h i g h e rs t a n d a r d s d e b u g g i n g , f i r s ta n df o r e m o s t , i sf a c i n gt h eb i g g e s tc h a l l e n g e b a c a u s eo ft h ed i v e r s i t yo fe m b e d d e dp r o c e s s o r ) t h et r a d i t i o n a ld e b u g g i n g , “e m u l a t o r + p r o g r a m m e r i sg e t t i n gm o r ea n dm o r er e s t r i c t e d o na c c o u n to ft h e s e m i c o n d u c t o rd e s i g na n dp r o d u c t i o ni m p r o v e m e n t ,o c d ( o nc h i pd e b u g g i n g ) a n d s o p ch a v eg r e a t l yc h a n g e dt h et r a d i t i o n a l d e b u g g i n gm e t h o d s ,i m p r o v e d t h e d e b u g g i n ge f f i c i e n c y , a n dt h er e s u l t i n gk n o w n a sa 什j t a g ( j o i n tt e s ta c t i o ng r o u p ) o c d d e b u gp r i n c i p l e i nt h i sp a p e r , i n - d e p t hs t u d yo fs o p cd e s i g np r i n c i p l e sa n dj t a gd e b u g g i n g m e t h o d , ag e n e r a ld e b u g g e ri sp r o d u c e di nt h en a n l eo fi m p r o v i n gt h ed e b u g g e r s g e n e r a l i t y :a d d i n gaj t a gd e b u gi p c o r ef o ras p e c i f i cc p u c o r ei n t oa 咖西ef p g a c h i p ,u s i n gt h e6 s o p c sr e u s a b i l i t ya n df p g a se a s yt o d o w n l o a da n du p d a t e f e a t u r e s ,i m p l e m e n td e b u g g i n gv a r i e t yo fe m b e d d e dc p ua r c h i t e c t u r e si nas i n g l e h a r d w a r ec h i p ,r e f l e c t i n gt h ec o n c e p to fu n i v e r s a l c o n c r e t ep r o d u c t i o no ft h es y s t e mi s m a d eu po ft h ea l t e r ac o m p a n y sc y c l o n es e r i e sf p g ac h i p ,q u a l t u si id e v e l o p m e n t e n v i r o n m e n ta n dt h en i o si ii d ed e v d o p m e n tk i t r e s e a r c hi sb a s e do nt h e a r m 7 t d m ip r o c e s s o rj t a g i p c o r ea n ds u c c e s s e di nt h ed e b u g g e rh a r d w a r e p r o t o t y p ed e s i g n t h ef i n i s h e dd e b u g g i n gs y s t e mh a sa c h i e v e dt h eb a s i cd e b u g g i n g f e a t u r e so fa r m 7 t d m i f o l l o w i n ga l et h ep f i n c i p l e s ,i d e a sa n dp r o c e s so ft h es y s t e m d e s i g na n dp r o d u c t i o n k e y w o r d s :e m b e d d e ds y s t e m ,s o p c ,j t a g , i p c o r e ,g e n e r a ld e b u g g e r i i 独创性声明 本人声明所呈交的学位论文是本人在导师指导下进行的研究工 作及取得的研究成果。据我所知,除了文中特别加以标注和致谢的地 方外,论文中不包含其他人已经发表或撰写过的研究成果,也不包含 为获得电子科技大学或其它教育机构的学位或证书而使用过的材料。 与我一同工作的同志对本研究所做的任何贡献均已在论文中作了明 确的说明并表示谢意。 签名:虿e l 日期:吁岁日 关于论文使用授权的说明 本学位论文作者完全了解电子科技大学有关保留、使用学位论文 的规定,有权保留并向国家有关部门或机构送交论文的复印件和磁 盘,允许论文被查阅和借阅。本人授权电子科技大学可以将学位论文 的全部或部分内容编入有关数据库进行检索,可以采用影印、缩印或 扫描等复制手段保存、汇编学位论文。 ( 保密的学位论文在解密后应遵守此规定) 签名:耻 僦名删( 4q v - 导师签名: 吼1 气月吁日 第一章引言 1 1 引言 第一章引言 随着社会科技水平的进步和人们生活水平的提高,嵌入式系统已经逐渐深入 到人们生活中的。嵌入式系统应用范围的不断扩展,导致其设计和实现也越来越 复杂,这样就给从事嵌入式开发的工程师提出了更高的要求。嵌入式系统开发一 般分为软件系统开发和硬件系统开发两个部分。其中软件系统开发一般由以下几 个步骤组成:源代码的编辑、源代码的编译、嵌入式操作系统的配置、程序的下 载、程序的调试。其中,程序的调试是必不可少的一个环节,是提供嵌入式软件 质量保证的重要手段之一。同时,其跨平台的交叉特性又使其与一般基于p c 平台 的软件调试具有很大的差异,这种差异主要来自于编译程序和执行程序的环境不 一致。正是这种差异,使得嵌入式软件调试显得更加复杂。 调试技术的发展已经有2 0 多年的历史,从简单到复杂,从i n t e l 公司的 i c e 3 0 i 仿真器到现在普遍使用的o c d 技术,取得了很大的进步。而最近s o p c 技术的发展,给调试技术指出了新的发展方向。 1 2 研究背景 嵌入式软件的开发通常采用交叉开发环境。它是指用于嵌入式软件开发的所 有工具的集合,一般包括文本编辑器、交叉编译器、交叉调试器、仿真器和下载 器等工具。交叉开发环境由宿主机和目标机组成。宿主机与目标机在物理连接的 基础上建立起逻辑连接。嵌入式软件开发的特点决定了交叉调试与一般的调试有 很大的区别。主要有以下几个方面: 1 、一般情况下调试器和被调试程序运行在不同的计算机上。调试器主要运行 在宿主机上,而被调试程序运行在目标机上。 2 、调试器通过某种通信方式与目标机建立连接。通信方式主要有串口、并口、 网络或其他的通信方式。 3 、一般在目标机端有调试器的某种代理,这种代理能配合调试器一起完成对 目标机上运行的程序的调试。这种代理可以是某种软件,也可以是某种支持调试 电子科技大学硕士学位论文 的硬件。 因此,交叉调试器可以被这样定义:交叉调试器是指调试程序和被调试程序 运行在不同机器上的调试器;调试器通过某种方式能控制目标机上被调试程序的 运行方式,并且通过调试器能查看和修改目标机上的内存、寄存器以及被调试程 序中的变量等。 嵌入式软件调试技术的发展经历了以下几个阶段: l 、c r a s h b u m 方式:最初的调试方式。开发人员首先编写代码,编译通过 后,将程序固化到目标机的非易失性存储器中,观察程序是否正常工作,如果不 能正常工作,则反复检查代码,找到错误后,重新编译并固化程序,继续观察, 直到程序工作正常。显然在该方式下,开发人员是非常辛苦而且低效的。 2 、r o mm o n i t o r 方式:在该调试方式下,调试环境由三部分构成,宿主机端 的调试器,目标机端的监控器以及二者间的连接。r o mm o n i t o r 是运行在目标机 上的一段程序。它负责监控目标机上被调试程序的运行,通常与宿主机端的调试 器一起完成对应用程序的调试。该调试方式不便于调试有时间特性的程序,同时 会占用目标机一定数量的资源,如c p u 资源、r a m 资源等,而且调试环境与最 终运行环境有差异。 3 、i c e 方式:i c e ( i nc i r c u i te m u l a t o r ) 且f l 是在线仿真器,是一种用于替代目标 机上c p u 的设备。在调试时,将目标板上的c p u 取下,将i c e 的c p u 引出线接 到目标机的c p u 插槽内,这样调试器通过i c e 来控制目标机上程序的运行。i c e 方式可以完成很多特殊的调试功能,如同时支持软件断点和硬件断点,可以实时 跟踪目标程序的运行,进行实时性能的分析,缺点是其价格太昂贵。 4 、o c d 方式:o c d ( o nc h i pd e b u g g i n g ) 是目前最被广泛应用的一种调试方式。 它是c p u 芯片提供的一种调试功能,将c p u 的模式分成正常工作模式和调试模式。 在调试模式下,c p u 不再从内存读取指令,而是从调试端口读取指令,这样通过 调试端口可以控制c p u 进入和退出调试模式。其主要优点是不占用目标机的资源。 目前比较常用的o c d 实现有b d m ( b a c k g r o u dd e b u g g i n gm o d e ) ,j t a g ( j o i n tt e s t a c c e s sg r o u p ) 等。本文研究的就是j t a g 调试原理。 目前嵌入式调试器发展的主流方向是基于o c d 方式的。主要分为两种实现方 式。一是在宿主机上的调试器端进行调试命令的翻译和解释,并将其通过并口或 u s b 口发送到目标机c p u 的调试端口,可以将其理解为软件实现的o c d 调试器。 另一种是宿主机的调试器端将高层调试命令发送到一个单独的硬件设备,该硬件 设备负责进行命令的翻译和解释,在发送往c p u 的调试端口,可以将其理解为硬 2 第一章引言 件实现的o c d 调试器。这两种调试器都有一个共同的缺点,就是一个调试器只能 调试某一种型号的c p u ,即通用性太差。s o p c 技术的出现给调试器的发展指出 了新的方向。根据待调试目标板的c p u 型号将相应的调试i p c o r e 和其他i p c o r e 一起编译生成一个嵌入式调试系统,下载到f p g a 上,实现一个在线调试器。而 所使用的i p c o r e 可以自主开发,也可以由第三方提供。这样在使用同一个硬件 系统的情况下,可以选择不同的i p c o r e ,而不同的i p c o r e 可以方便的互相替换, 体现了在线仿真器的通用性。同时该方法在设计灵活性、开发成本、开发周期、 工作性能等多方面都有很好的效果,体现了s o p c 设计的优越与高效,具有良好 的应用前景。目前做到比较好的国外某些通用型调试器,如l a u t e i m a c h 公司 的调试器,支持p o w e r p c 、a r m 、s h 、h c s 0 8 等多达6 0 种微处理器架构,其缺 点是价格太高,不利于中小规模用户的使用和推广。 1 3 本文主要工作 本文基于s o p c 技术,设计出一种通用型调试器的原型。目前调试器已经可 以支持调试a r m 7 t d m i 处理器核,c 8 0 5 1 的调试核正在研制之中。同时基于该通 用型调试器,还开发出一个嵌入式开发调试系统。该调试系统除了提供调试器硬 件产品,处理器调试i p c o r e ,还为开发人员提供基于p c w i n d o w s 平台的调试界 面,可以直观方便地使用诸多常用调试命令。 本文主要使用a l t e r a 公司的f p g a 及其基于s o p c 的软硬件综合解决工具 来完成设计与实现。这一套完整的开发套件包括q u a r t u si i 、s o p cb u i l d e r 、n i o si i i d e 和仿真下载工具。后面章节会对这些开发工具进行简要介绍。 1 4 本文章节安排 第一章引言:概述了研究背景及主要工作。 第二章调试背景技术:介绍本文所涉及的原理,包括j t a g 调试原理、 a r m 7 t d m i 运行及调试原理、s o p c 设计思想、详述了a r m 7 t d m i 调试命令的 实现,最后引出调试器的总体设计方案。 第三章通用型调试器的i p c o r e 设计与实现:介绍了调试器i p c o r e 的设计 与实现。对i p c o r e 的物理结构和逻辑结构进行了详细的描述。 第四章通用型调试器的硬件设计与实现:介绍了调试器硬件部分的设计与实 电子科技大学硕士学位论文 现。对硬件部分几个主要模块进行了详细的描述。 第五章通用型调试器的软件设计与实现:介绍了调试器软件部分的设计与实 现,对j t a g 模块驱动程序,u c o s i i 移植和应用程序进行了详细的描述,最后结 合一个调试案例介绍了用户界面的使用。 第六章总结与展望:对本文的工作做总结,对下一步的工作提出了展望。 4 第二章调试背景技术 第二章调试背景技术 本章首先对所涉及到的理论背景进行简单介绍,主要分为三个部分,分别是 j t a g 调试原理,a r m 7 t d m i 处理器核执行和调试原理,s o p c 设计思想。在第 2 2 3 节,对a r m 7 t d m i 调试命令的实现进行了详细的描述,该节内容是本文的 设计基础。 2 1j t a g 调试原理 目前在线仿真调试器中使用的调试原理有j t a g ,b d m 等,而使用最多,得 到更多嵌入式处理器设计和生产厂商支持的是j t a g 。应用范围也从简单的8 位单 片机到复杂的3 2 位嵌入式处理器,从通用处理器到d s p 、f p g a 。a r m ,i n t e l , t i ,m i p s ,a l t e r a 等处理器设计和生产厂家都提供了集成j t a g 调试逻辑的各 种集成芯片,从而也推动了j t a g 的发展,扩大了j t a g 的影响。因此本文选择j t a g 调试原理作为研究对象。 j t a g :j o i n tt e s ta c t i o ng r o u p ( 联合测试行动组) 的缩写,原本是一个组织 的名称缩写,现在成了一种调试标准。早在1 9 8 6 年,联合测试行动组就发表了最 早的边界扫描测试规范( b o u n d a r ys c a nt e s t i n g ) ,后来经过不断改进,于1 9 9 0 年正 式被批准为i e e es t d1 1 4 9 1 a 标准,简称j t a g 标准。1 9 9 4 年又推出了j t a g9 4 版标准。下面首先简单介绍一下j t a g 的基本调试结构一友界扫描单元和调试逻 辑。 2 1 1j t a g 边界扫描单元和扫描链 边界扫描测试是通过在芯片的每个i o 脚附加一个边界扫描单元( b s c , b o u n d a r ys c a nc e l l ) 以及一些附加的测试控制逻辑实现的。b s c 主要是由寄存器组 成的,每个i o 管脚都有一个b s c ,每个b s c 有两个数据通道:一个是测试数据 通道,测试数据输入t d i ( t e s td a t ai n p u t ) 、测试数据输出t d o ( t e s td a t ao u t p u t ) ; 另一个是正常数据通道,正常数据输入n d i ( n o r m a ld a t ai n p u t ) 、正常数据输出 n d o ( n o r m a ld a t ao u t p u t ) 。如图2 1 所示: 在正常工作状态,输入和输出数据可以自由通过每个b s c ,正常工作数据从 电子科技大学硕士学位论文 n d i 进,从n d o 出。在测试状态,可以选择数据流动的通道:对于输入的 i c ( i n t e g r a t e dc i r c u i t :集成电路) 管脚,可以选择从n d i 或从t d i 输入数据;对于 输出的i c 管脚,可以选择从b s c 输出数据至n d o ,也可以选择从b s c 输出数据 至t d o 。 图2 1b s c 单元结构图 另外,芯片输入输出管脚上的边界扫描寄存器单元可以相互连接起来,在芯 片周围形成一个扫描链,也称为边界扫描寄存器。利用边界扫描链就可以对芯片 的输入进行控制,输出进行观察。一般来说,芯片都提供了几条扫描链来实现需 要完成的测试功能。比如a r m 7 t d m i 核提供了3 条扫描链。 边界扫描单元和由其构成的扫描链是j t a g 调试的实现基础。j t a g 调试逻辑 正是通过它们与处理器核心交互信息。 2 1 2j t a g 调试逻辑 j t a g 调试逻辑主要由三个部分组成:测试端e l 控制器( t a p ,t e s ta c c e s sp o r t ) 、 指令寄存器( 包括指令译码器) 和数据寄存器。三个部分通过内部逻辑电路相连。如 图2 2 所示: 1 、t a p 控制器 这是j t a g 调试逻辑的核心控制器,用于实现边界扫描单元的信息输入输出和 各种控制。t a p 控制器有以下5 个外部信号: ( 1 ) t c k :边界扫描时钟,调试逻辑在t c k 的驱动下进行状态转换; ( 2 ) t m s :j t a g 测试模式选择,输入的t m s 信号被t a p 控制器解码来控制状 态变化,在t c k 上升沿采样; ( 3 ) t d i :调试逻辑从t d i 引脚串行接收测试指令或测试数据,在t c k 上升沿 采样; 6 第二章调试背景技术 ( 4 ) t d o :调试逻辑从t d o 引脚串行输出测试指令或测试数据。t d o 引脚在 t c k 下降沿输出。 图2 - 2j t a g 调试逻辑结构图 ( 5 ) t r s t :j t a g 测试逻辑复位,低电平有效,当t r s t 输入为低电平时,芯 片进入正常工作状态,j t a g 测试逻辑无效。该信号是可选的。 2 、指令寄存器 指令寄存器的作用是存储t d i 串行输入的指令码流,并对指令译码。j t a g 标 准只规定该指令寄存器必须是4 位的,而没有规定具体的指令格式或者固定某些 指令码。实际的指令码是与生产厂家相关的,一般可以在芯片数据手册中找到。 同时还规定当t a p 控制器在c a p t u r e - i r 状态时,输出固定的二进制码元“0 1 ”。 不同处理器的j t a g 调试逻辑可以提供不同的测试指令,但以下几个公共指令 是必须提供的:b a s s ,s a m p l e ,p r e l o a d ,e x ,r e s t 。b y p a s s 的指令码必 须是二进制值“11 11 。另外几个比较重要的指令是i d c o d e 、s c a nn 、i n t e s t 、 r e s t a r t 。 3 、数据寄存器 数据寄存器的作用是存储t d i 串行输入的数据码流,或者存储t d o 串行输出 的数据码流。 i e e e 标准1 1 4 9 1 规定,必须具有的两个数据寄存器是边界扫描寄存器和旁通 ( b y p a s s ) 寄存器。其它的寄存器是可选的,比如d e v i c e i d e n t i f i c a t i o n r e g i s t e r 。边界 7 电子科技大学硕士学位论文 扫描寄存器是由围绕i c 管脚的一系列的边界扫描单元b s c 组成的,正是由它来实 现测试管脚信号的输入、输出。由指令寄存器选择某个特定的数据寄存器作为边 界扫描测试寄存器,当一个扫描路径选定后,其它的路径处于高阻态。;旁通寄存 器只由一个扫描寄存器位组成,当选择了旁通寄存器,t d i 和t d o 之间只有一位 寄存器,实际上没有执行边界扫描测试,旁通寄存器的作用是为了缩短扫描路径 而对不需要进行测试的i c 进行旁通。 整个j t a g 调试逻辑的工作原理就是:t a p 控制器就在t c k ,t m s 信号的驱 动下改变各种状态,产生各种内部信号,在合适的时刻从t d i 端口串行输入指令, 指令译码器译码后,执行相应的功能,在合适的时刻将有效数据从t d i 端口输入 或者从t d o 端口输出。如此反复,实现特定的调试功能。详细的调试逻辑工作流 程,本文将结合a r m 7 t d m i 的j t a g 调试方法在第2 2 2 节和第2 2 3 节介绍。 2 1 3 t a p 控制器的状态转换 如上所述,t a p 控制器是边界扫描测试核心控制器。t a p 控制器可以看成一 个具有1 6 个状态的有穷状态自动状态机,其状态转换图如图2 3 所示: 图2 3t a p 控制器状态转换图 在上图中,每个六边形表示一个状态,每个箭头表示状态之间可能发生的状 8 第二章调试背景技术 态转换。箭头旁边的数字表示t m s 信号,因此状态的转换是由t c k 和t m s 信号 共同控制的。在t c k 的驱动下,从当前状态转换到哪一个状态由t m s 信号决定。 比如当前状态为t e s t l o g i c r e s e t ,在t c k 的驱动下,如果t m s 为1 ,则t a p 控 制器保持当前状态t e s t - l o g i c r e s t ;如果t m s 为o ,则t a p 控制器进入状态 r u n - t e s t i d l e 。t m s 信号在t c k 的上升沿有效。从图中还可以看出,t a p 控制器 的状态机只有6 个稳定状态:t e s t - l o g i e - r e s e t 、r u n t e s t i d l e 、s h i f t d r 、p a u s e - d r 、 s h i f t i r 、p a u s e i r 。其它状态都不是稳态,而只是暂态。在上电或i c 的正常运行时, 如果使t m s 持续5 个t c k 保持为1 ,则t a p 进入t e s t - l o g i c _ r e s e t ,这也是t r s t 信号不是必须的原因。这时,t a p 发出复位信号使所有的测试逻辑不影响元件的 正常运行。若需要进行边界扫描测试,可以在t m s 与t c k 的配合控制下,离开 复位状态,进入边界扫描测试需要的各个状态。 2 2a r m 7 t d mi 运行及调试原理 a r m 是嵌入式处理器行业的一家知名企业,推出了大量高性能、低成本、低 功耗的r i s c 处理器、相关技术及软件。所设计的嵌入式处理器适用于多种领域, 比如嵌入控制、消费教育类多媒体、d s p 和移动式应用等。 a r m 公司于上世纪九十年代推出基于a r m v 4 t 新一代处理器架构的删7 系列处理器核心。a r m 7 t d m i 就是其中一款。a r m 7 系列处理器采用冯诺依曼体 系结构,数据与指令使用同一条总线,内核采用流水线的执行方式,同时还提供 了完善的基于j t a g 的调试机制。该系列处理器具有高性能、低功耗的特点,特别 适用于个人音频设备,数码相机等消费类电子产品。下面对a r m 7 t d m i 的流水线 和调试方式做一介绍。 2 2 1a r m 7 t d m l 的流水线 a r m 7 t d m i 的流水线是三级流水线。其主要分为如下几个部分: 1 、处理器状态寄存器堆。它有两个读端口和一个写端口,每个端口都可以访 问任意寄存器。另外还有附加的可以访问p c 的一个读端口和一个写端口。 2 、桶型移位寄存器。它可以把一个操作数移位或循环移位任意位数。 3 、a l u 。完成指令集要求的算术或逻辑功能。 4 、地址寄存器和增值器。可选择和保存所用的存储器地址并在需要时产生顺 序地址。 9 电子科技大学硕士学位论文 5 、数据输出寄存器和数据输入寄存器。用于保存传输到存储器和从存储器输 出的数据。 6 、指令译码器和相关的控制逻辑。 其流水线分为如下三级: 1 、取指g 根据p c 指针将指令从内存装载到寄存器。 2 、译码:译码被执行的指令,并为下一个周期准备数据通道的控制信号。在 这一级,指令占有译码逻辑,不占用数据通路。 3 、执行:处理指令并将结果写回寄存器。 在任一时刻,可能有三条不同的指令占有这三级中的每一级,因此,每一级 中的硬件必须能够独立操作。 a r m 7 t d m i 的流水线执行模式导致了一个结果,就是程序计数器p c 的值并 不是当前执行的指令的地址,而是当前指令的后8 个字节的指令。 2 2 2 a r m 7 t d m i 的j t a g 调试方法 a r m 7 t d m l 支持j t a g 调试方法,其j t a g 调试逻辑结构如图2 4 所示: 图2 - 4a r m 7 t d m i 调试逻辑结构 从图中可以看出,a r m 7 t d m i 的调试逻辑由三大部分构成: 1 、a r mc p um a i np r o c e s s o rl o g i c ,这部分包括了对调试的硬件扩展支持, 比如允许用户暂停处理器运行、恢复处理器运行、查看处理器内部状态等; 2 、e m b e d d e di c e - r tl o g i c ,这部分包括了一组寄存器和比较器,用来产生调 1 0 第二章调试背景技术 试异常、设置断点和观察点; e m b e d d e d l c e r t 的寄存器如表2 1 所示: 表2 - 1e m b e d d e d l c e r t 寄存器 寄存器地址寄存器长度 寄存器功能描述 0 0 0 0 06 d e b u gc o n t r o l 0 0 0 0 15 d e b u gs t a t u s 0 0 0 1 0la b o r ts t a t u s 0 0 1 0 06 d e b u gc o m m s c o n t r o l 0 0 1 0 13 2 d e b u gc o m m sd a t a 0 1 0 0 03 2 w a t c h p o i n t0a d d rv a l u e 0 1 0 0 l3 2w a t c h p o i n t0a d d rm a s k 0 1 0 1 03 2w a t c h p o i n t0d t av a l u e 0 1 0 1 i3 2w a t c h p o i n t0d a t am a s k 0 1 1 0 09w a t c h p o i n t0c o n t r o lv a l u e 0 1 1 0 18w a t c h p o i n t0c o n t r o lm a s k l o 0 0 03 2w a t c h p o i n t1a d d rv a l u e 1 0 0 0 13 2w a t c l l p o i n t1a d d rm a s k 1 0 0 1 03 2w a t c h p o i n t1d t av a l u e 1 0 0 1 l3 2w a t c h p o i n tld a t am a s k 1 0 1 0 09w a t c h p o i n tlc o n t r o lv a l u e 1 0 1 0 18w a t c h p o i n tlc o n t r o lm a s k 3 、t a pc o n t r o l l e r ,这部分主要通过j t a g 串行接口控制扫描链的操作。比 如选择扫描链,插入a r m 指令等。 a r m 7 t d m i 一共提供了3 条扫描链。 扫描链0 分布在a r m 7 t d m i 的核心外围,通过它可以访问全部的外围接口, 包括了3 2 位数据总线,3 2 位地址总线,控制总线,e m b e d d e d l c e r t 控制信号。 扫描链1 是扫描链0 的子集。包括a r m 7 t d m i 的3 2 位数据总线和b r e a k p t 信号,总长度为3 3 位。每次a r m t t d m i 取指令或者进行数据存储都要通过3 2 位数据总线。这样通过边界扫描链1 ,就可以插入新指令或者新数据,同时也可以 捕获出现在数据总线上的数据。 扫描链2 控制访问e m b e d d e d l c e r t 的寄存器,长度是3 8 位。其中0 3 1 位是 数据位,3 2 3 6 是地址位,3 7 位标志读操作还是写操作。当串行输入时,从第3 7 位开始输入。通过该扫描链可以让a r m 7 t d m i 进入调试状态,并进行设置断点、 电子科技大学硕士学位论文 设置观察点等操作。 调试是主要通过操作扫描链1 和扫描链2 来进行。 2 2 3a r m 7 t d ml 调试命令的实现 本文基于a r m 7 t d m i 的j t a g 调试原理,实现了8 条基本调试命令。如表 2 2 所示: 表2 - 2a r m 7 t d m i 调试命令 命令名称命令参数命令输出命令作用 e n t e r _ d e b u g 无 无 使a r m 7 t d m i 进 入调试状态 g e t i d e o d e 无 c p u _ _ i d 得到a r m 7 t d m i 的i d c o d e r e a d _ r e gr e g _ n u mr e a d r e g _ d a t a 读取寄存器的数据 w r i t e _ r e g r e g _ h u m ,w r i t e _ r e g _ d a t a 无写寄存器的数据 r e a d m e mm e m a d d rr e a d m e m d a t a读取内存的数据 w r i t e m e r e m e ma d d r , w r i t e m e m d a t a 无写内存的数据 s e t _ h b p t b r e a k a d d r 无设置硬件断点 s e t _ w p tw a t c h d a t a 无设置观察点 下面详细介绍各条调试命令的实现。 2 2 3 一e n t e r d e b u g 让a r m 7 t d m i 进入调试模式的方法有两种:一种是通过设置e m b e d d e d i c e r t 内部的d e b u gc o n t r o l 寄存器,可以强制让a r m 7 t d m i 进入调试状态。另一种 是通过断点或者观察点进入调试状态。每当设置的断点或观察点被触发后, a r m 7 t d m i 自动进入调试状态。但断点或观察点的设置必须进调试模式,因此实 际中的第一步都是通过设置d e b u gc o n t r o l 寄存器的d b g r q 位进入调试状态。在 j t a g 看来,就是选择扫描链2 ,将正确的d e b u gc o n t r o l 寄存器的值插入扫描链2 , 然后通过读取d e b u gs t a t u s 寄存器,查询d b g a c k 位,判断a r m 7 t d m i 是否进 入调试状态。 此命令的t m s 序列共1 7 3 位,如下所示: “o1 10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 010 01 lo o o o o o o o o o o o 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 l 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 11 0 1 2 第二章调试背景技术 0 0 0 0 1 1 0 0 1 1 0 0 0 0 0 1 0 0 1 1 0 0 0 0 0 1 1 0 1 1 1 1 1 1 1 1 1 l ” 此命令对应的t d i 序列共1 2 6 位,如下所示: “0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0l0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 11 0 0 0 0 1 0 0 0 1 0 ” 后面的调试命令都假设a r m 7 t d m i 已经进入调试模式。 2 2 3 2g e t ld c o d e g e ti d c o d e 调试命令的实现相对简单,即将j t a g 的i d c o d e 测试指令串行 插入j t a g 的指令寄存器,然后在t d o 接口串行捕获c p u 的i d 。c p u 的i d 是 3 2 位的,因此在s h i f t - d r 状态下需要3 2 个t c k 时钟周期。 此命令的t m s 序列共5 7 位,如下所示: “0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 1 0 0 0 0 0 1 1 0 1 1 1 1 1 1 1 1 此命令对应的t d i 序列共3 6 位,如下所示: “o 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1110 谬: 2 2 3 3r e a d r e g :r e g _ n u m = 0 读取寄存器的调试命令需要从t d i 插入a r m 指令。要读取寄存器r o 的值,可 以用指令s t rr 0 , r o 来实现。该指令将寄存器r 0 的值存储到内存单元r o 中去。 因为在a r m 7 t d m i 处于调试状态的时候,a r m 7 t d m i 和外部是隔离开来的,所 以该指令实际上不能访问内存单元,也不会对内存单元产生任何影响。使用指令 s t r r 0 , r 0 】的目的是使得寄存器r 0 的值出现在数据总线上,这样通过扫描链l 将其捕获,然后从t d o 输出。指令s t rr 0 ,【r 0 的执行需要2 个指令执行周期。 在第1 个指令执行周期,执行地址计算;在第2 个指令执行周期,将寄存器r 0 的 值放到数据总线上去。 因此可以将读取寄存器分为以下几个步骤:( 以下都是对扫描链l 进行操作) 插入a r m 指令s t rr 0 ,【r o 】& b r e a k p t = 0 。这一步相当于指令s t rr 0 , r 0 的取指令周期( 3 级流水线) ; 插入空指令m o vr 0 ,r 0 & b r e a k p t = 0 。这一步读取新指令m o vr 0 ,r 0 , 同时,相当于指令s t rr 0 , r 0 的译码周期( 3 级流水线) ; 插入空指令m o vr 0 ,r 0 & b r e a k p t = 0 。这一步读取新指令m o vr o ,r o , 同时,插入的s t rr 0 , r 0 指令开始执行( 3 级流水线) 。在这一步,s t rr 0 ,【r 0 】 指令处在第1 个指令执行周期,在该周期,先执行地址计算; 电子科技大学硕士学位论文 通过扫描链1 读出捕获的数据总线上的数据。在这一步,指令s t rr 0 ,【r 0 】 继续执行,指令s t rr 0 ,【r 0 处在第2 个指令执行周期。在这一步,寄存器r o 的 值会被放到数据总线上去,指令s t rr 0 , r 0 执行完毕。所以,在这一步,从扫描 链中读出的数据就是寄存器r 0 的值,再通过t d o 引脚串行输出到调试器,被调 试器捕获。另外,在这一步,因为还处在s t rr 0 , r 0 的指令执行周期内,所以访 问扫描链1 的时候,通过t d i 输入的空指令实际上会被a r m 7 t d m i 忽略。 至此,成功获得寄存器r 0 的值。因为除了s t rr 0 , r 0 指令外,插入的另 外2 条指令都是空指令,所以可以不考虑后面2 条指令的执行结果。 详细的实现步骤如下: 步骤一:执行s c a n - n 测试指令,选择扫描链1 ,分为两步: 1 、通过t a p 控制器将j t a g 指令s c a nn 写入指令寄存器中。 对应的t m s 序列为:

温馨提示

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

评论

0/150

提交评论