(通信与信息系统专业论文)基于m8051的嵌入式soc调试器的设计与实现.pdf_第1页
(通信与信息系统专业论文)基于m8051的嵌入式soc调试器的设计与实现.pdf_第2页
(通信与信息系统专业论文)基于m8051的嵌入式soc调试器的设计与实现.pdf_第3页
(通信与信息系统专业论文)基于m8051的嵌入式soc调试器的设计与实现.pdf_第4页
(通信与信息系统专业论文)基于m8051的嵌入式soc调试器的设计与实现.pdf_第5页
已阅读5页,还剩68页未读 继续免费阅读

(通信与信息系统专业论文)基于m8051的嵌入式soc调试器的设计与实现.pdf.pdf 免费下载

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

文档简介

摘要 摘要 芯片的集成度的提高,传统的a s i c ( a p p l i c a t i o ns p e c i f i ci n t e g r a t e dc i r c u i t , 专用集成电路) 独立的模块已经不能满足系统的需求,s o c ( s y s t e mo nc h i p ) 芯片 应运而生。s o c 能集成嵌入式软件和硬件,提高了系统的性能,传统的电子设 计系统已经产生了巨大的变化,板级的电路调试转向片内的调试,调试的难度逐 步增大,尤其是对嵌入式软件的调试。在s o c 芯片流片之后,系统的调试任务 大部分集中在嵌入式软件调试,方便的嵌入式软件调试器无疑至关重要。本文研 究了嵌入式系统调试器的实现。 8 0 5 1 作为广泛应用的微处理器,在大量的s o c 上得到了应用,同时北京市 嵌入式系统实验室拥有8 0 5 1 软核i p ,有多款芯片是基于8 0 5 1 核的s o c 设计, 本课题就是要研究并且实现一款针对8 0 51 的廉价的调试器,方便软件的开发, 降低系统开发成本。 在本课题中,目标机是8 0 5 1 的嵌入式系统,其中8 0 5 1 的调试接口为o c i , 通信方式为j t a g ( j o i n tt e s ta c t i o ng r o u p ) 。在宿主机端采用使用最为广泛的 k e i lc 软件,符合大多数用户的使用习惯。从系统的成本和课题的复杂度两方 面考虑了p c 的各种通信方式,最终选用i i c 作为p c 和调试器之间的通信方式。 本文的设计分为软件设计和硬件设计。在软件部分的设计,为了方便硬件的 解码,在发送中单独的添加了8 位的操作信息位,减少硬件处理数据的冗余,降 低硬件部分的代码量,从而减少系统成本。同时为了方便软件代码的维护,将软 件划分为3 个层次。在本课题的硬件设计中,仿照j t a g 控制器部分,为软件的 访问提供了两个寄存器:数据寄存器和指令寄存器,方便软件的开发。 在本文的最后讲述了硬件的仿真验证,分别验证了调试器所必须支持的各项 调试功能。通过f p g a 和软件的联合测试,测试了调试器的各项功能。在测试中, 调试器能正常的完成对软件的调试,并且只占用了很少的硬件资源,达到了调试 器完成调试功能的目的。 关键词调试器;驱动;片上系统;j t a g ;联合测试 北京t 业大学工学硕士学位论文 曼曼曼曼! i n m l o ! 曼曼曼曼曼曼皇! 曼! 曼曼曼! ! 曼曼曼曼曼曼曼曼曼曼曼曼曼曼曼! 曼曼! 曼! 曼曼曼曼 a b s t r a c t a st h ei n c r e a s i n gd e n s i t yo ft h ec h i p s ,t r a d i t i o n a la s i c si n d e p e n d e n tm o d u l ei s n o tc o n t e n t st h ec u r r e n td e m a n d s 。s oi tc o m e sf o r t hw i t hs o c t h es o ci n c l u d e st h e s o f t w a r ea n dh a r d w a r e a n di tc a ni m p r o v et h ep e r f o r m a n c eo ft h es y s t e m s ot h e t r a d i t i o n a le l e c t r o n i cs y s t e md e s i g nh a sc h a n g e dal o t ,t h eo nb o a r dd e b u g g i n gs y s t e m i s r e p l a c e db yt h ec h i pd e b u g g i n gs y s t e m ,a n d i tb e c o m e sm o r ed i f f i c u l tf o r d e b u g g i n g ,e s p e c i a l l yf o rt h es o f t w a r ed e b u g g i n g a f t e rt h es o cc h i pi st a p eo u t ,t h e s y s t e md e b u gi sm o s t l yt h es o f t w a r ed e b u g ,s ot h ec o n v e n i e n td e b u g g e ri sv e r y i m p o r t a n tf o rt h ed e v e l o p m e n to fs y s t e m i nt h es a m et i m e t h e8 0 51i su s e dw i d e l ya sm i c r oc o n t r o l l e r a n di ti su s e di n m o s to ft h es o cc h i p s m o s t l y ,b e ij i n ge m b e d d e ds y s t e mk e yl a bh a st h ei pc o r e o f8 0 51 ,a n dal o to fc h i p sb a s e do ni t i n t h i sp a p e r ,w ew i l lb u i l dal o w c o s t d e b u g g e r ,w h i c hi sc o n v e n i e n tf o rs o f t w a r ed e b u g ,a n dd e c r e a s et h ec o s to ft h e p r o d u c t i o n i nt h i sp a p e r ,t h et a r g e ts y s t e mi st h e8 0 51s o c ,a n dt h e8 0 51 sd e b u gi n t e r f a c ei s o c i t h eh o s ts y s t e m sc o m p i l e ri sk e i lc ,w h i c hi st h em o s tp o p u l a rc o m p i l e rf o r 8 0 5ld e v e l o p c h o o s et h ek e i lci sa c c o r dw i t hm o s to ft h eu s e r s a st h ec o s to ft h e s y t e m c o m p a r e dm a n yw a y so fp cc o m m u n i c a t i o nw a y s a t1 a s tt h ei i ci sc h o s e na s t h ec o m m u n i c a t i o nb e t w e e np ca n dd e b u g g e r i nt h i sp a p e r ,t h e r ea r es o f t w a r ed e s i g na n dh a r d w a r ed e s i g n i nt h es o f t w a r e d e s i g n f o rm a k i n gt h eh a r d w a r ed e c o d et h ej t a gc o m m a n de a s i e r 。a n dt r a n s m i tw i t h a d d i t i o n a l8 b i t si n f o r m a t i o ns i g n a lf o rt h eh a r d w a r e ,a n dt h i sw i l li m p r o v et h e d e c o d i n go fh a r d w a r e a tt h es a m et i m e d e v i d et h es o f t w a r ei n t o3l a y e r s t h i sw i l l m a k et h es o f t w a r ec o d ei se a s yt om a i n t e n a n c e f o rt h eh a r d w a r ed e s i g n 。i to f f e r e d t w or e g i s t e r sf o rs o f t w a r e :i n s t r u c t i o nr e g i s t e ra n dd a t ar e g i s t e r ,t h i sw i l lb em o r e c o n v e n i e n c ef o rt h es o f t w a r ed e s i g n i nt h el a s to ft h i sp a p e ri st h ev e r i f i c a t i o no fh a r d w a r es i m u l a t i o n ,w h i c hi n c l u d e s a l lt h er e q u e s td e b u gf e a t u r e s a n da t l a s tw et e s tt h es o f t w a r ea n dh a r d w a r ew i t h f p g a ,a n dt e s tt h ed e b u gf e a t u r e sf o rt h ed e b u g g e r ,i tc a nf i n i s ht h ed e b u gb yt h i s d e b u g g e r ,a n dr e a c ht h ea i mo ft h i sp a p e r k e yw o r d sd e b u g g e r ;d r i v e r ;s o c ;j t a g ;u n i tt e s t 独创性声明 本人声明所呈交的论文是我个人在导师指导下进行的研究工作及取得的研 究成果。尽我所知,除了文中特别加以标注和致谢的地方外,论文中不包含其他 人已经发表或撰写过的研究成果,也不包含为获得北京工业大学或其它教育机构 的学位或证书而使用过的材料。与我一同工作的同志对本研究所做的任何贡献均 已在论文中作了明确的说明并表示了谢意。 签名: 关于论文使用授权的说明 日期:掣 本人完全了解北京工业大学有关保留、使用学位论文的规定,即:学校有权 保留送交论文的复印件,允许论文被查阅和借阅;学校可以公布论文的全部或部 分内容,可以采用影印、缩印或其他复制手段保存论文。 ( 保密的论文在解密后应遵守此规定) 日期:翌 第1 章绪论 1 1 课题背景 第1 章绪论 微电子技术是2 0 世纪以来发展最为迅速的高新技术,1 9 4 8 年诞生了世界上 第一个晶体管,1 9 6 7 年诞生了在一颗芯片上集成度在1 0 0 0 个晶体管以上的集成 电路,随后集成电路的集成度就大幅度的提高,1 9 7 7 年,科学家在3 0 m m 2 的硅 片上集成了1 3 万个晶体管,制成了世界上第一块6 4 k b i t s 的d r a m ( 动态随机 存储器,d y n a m i cr a n d o m a c c e s sm e m o r y ) ,这标志着集成电路跨入v l s i ( 超大 规模集成电路,v e r yl a r g es c a l ei n t e g r a t e d - c i r c u i t ) 时代。在随后集成电路的发展 过程中,集成电路规模的变化遵循摩尔定律,集成电路微细加工的最小尺寸几乎 每1 8 个月缩小5 0 ,集成规模每三年增加四倍。2 0 世纪8 0 年代,集成电路的 最小尺寸是微米级,但是到了2 0 世纪9 0 年代亚微米( 0 5 1 p m ) 成为加工主流,目 前最先进的微细加工工艺已到达4 5 n m l lj ,截止到目前位置,集成电路的微细加 工工艺仍然遵行摩尔定律发展。 进入2 l 世纪,由于集成电路规模扩大,原先由许多分离i c 芯片组成的电子 系统有可能集成在一个单片上实现,称这种系统为片上系统( s o c ,s y s t e mo n c h i p ) ,s o c 系统包括嵌入式软件和嵌入式硬件。s o c 的出现改变了传统的电子 系统,传统的电子系统是基于印刷电路板( p c b ,p r i n t e dc i r c u i tb o a r d ) 系统,在 p c b 上构成系统,系统调试工作在p c b 上进行。随着s o c 的出现,电子系统的 调试方法也发生了改变。嵌入式系统调试分为嵌入式软件调试和硬件调试,两者 的调试方法不尽相同。 嵌入式硬件的调试主要采用逻辑分析仪等测试仪器获取调试信息。而嵌入式 软件系统的调试是为了发现并排除软件程序中的错误,而达到这一目的需要用某 种方法控制软件程序的执行过程,以便随时查看和修改被调试程序的执行状态。 和普通计算机的软件开发环境不同,嵌入式系统的硬件平台一般不具备完整的用 户晃面接口,嵌入式也没有通用计算机平台大量的显示设备,而被调试程序的运 行是一个独立运行的过程,所以调试总是存在困难。于是大部分s o c 芯片在处 理器的内部集成了i c e ( 片上模拟,i n c i r c u i te m u l a t o r ) 单元,并通过在开发板上 引出的调试端口,借助于通用计算机接收调试命令和发送调试信息,能监视软件 的执行情况,完成嵌入式软件的调试过程。 在嵌入式调试器发展的2 0 多年里,各种调试手段先后出现,其发展大致经 过了几个阶段t 6 1 。 北京工业大学工学硕士学位论文 第一阶段在7 0 年代末到8 0 年代初,调试器被设计成双平台的系统,根据用 户的要求在监护系统和用户系统之间切换。这种系统把软件的调试系统和正常运 行系统分开设计,调试器的新能依赖于调试系统的设计水平。监护系统设计较差 时,调试器不能反应软件的真实运行情况。 第二阶段为8 0 年代末到9 0 年代末,这一时期的调试器采用专用的仿真芯片, 这种专用的仿真芯片一般也是一种单片机,但其内部具有特殊的配合仿真的时 序,当进入仿真状态后,可以冻结内部的时序运行,可以查看和修改单片机的内 部资源。这种仿真器的缺点是只能用于专用的单片机,不具有通用性。 第三阶段为2 0 0 0 年以后到现在,广泛采用了在c p u 中插入特定的调试单元, 而c p u 可以工作在两种状态:正常状态和调试状态。插入的调试单元在未进行 调试不影响时c p u 正常的运行,当需要调试时,调试单元才开始工作。这是当 前调试器发展的主流技术。 目前多种处理器提供了为了调试的方便,集成了片上调试系统单元,在调试 请求下,使处理器进入调试模式。同时,处理器在调试模式下,软件的运行情况 应该和正常模式情况一模一样。 在s o c 市场中,8 0 5 1 凭借较小的功耗和良好的性能仍旧占据了大量的市场, 基于8 0 5 1 核的s o c 芯片提供了灵活的解决方案,且s o c 芯片中使用8 0 5 1 核的 价格较低,能有效的降低成本,受到很多厂商的青睐。这种s o c 芯片,利用其 8 0 5 1 中运行的软件达到扩充系统功能的目的。而8 0 5 1 中运行的软件的开发在 p c 端,最终需要运行在8 0 5 1 系统上,故需要经过多次的交叉调试才能确保软件 没有任何漏洞的正常运行,因此针对8 0 5 1 核的调试器有很大的市场。 1 2 国内外发展现状 芯片设计技术从a s i c 到s o c ,发展十分迅速,但是相应的系统调试工具没 有取得相应的发展,大部分的调试器都是c p u 厂商自己开发,并且只针对自己 的芯片,调试器市场的产品并没有丰富多样,而是被几个厂商所垄断。 在调试器的产品中,市场上现有的针对8 0 5 1 的调试器主要有:f s 2 公司推出 的s y s t e mn a v a g a t o r , s i g n u m 公司的a d m 51 ,同时意法半导体也推出了自 己的针对8 0 5 l 调试器的开发套件d k 3 3 0 0 。这些调试器中,a d m 5 1 调试器不是 基于j t a g 接口,而是采用了两根调试接口线的通信方式,通用性不强,并且调 试速度过慢,增加了系统调试开发的时间。f s 2s y s t e mn a v a g a t o r 是基于j t a g 调试接口的调试器,但该调试器价格昂贵,使用f s 2 作为调试器的成本过高,并 且f s 2 的驱动只针对w i n d o w s 平台,减弱了系统的通用性【4 1 j 【1 3 j 【1 5 j 。 现有的针对8 0 5 1 的调试器都是国外公司的产品,国内在调试器方面的研究 远远落后于国外,国内还没有推出对市场比较有影响力的产品。 2 第1 章绪论 1 3 课题来源及其研究意义 本课题来源于北京市嵌入式系统重点实验室。实验室拥有m e n t o r 授权的 m 8 0 5 1 核,该核集成了调试接口单元。实验室的f l a s h 控制器芯片、智能卡芯片、 电力载波芯片和u s b 控制芯片都是基于m 8 0 5 1 核的s o c 芯片。其中每款芯片 都有软件在其中运行,在软件的开发过程中都涉及到大量的调试工作,良好的调 试器不仅能加快系统的开发速度,还能减少系统开发的成本。 作为系统开发的一部分,本课题的调试器给实验室的芯片提供调试功能,同 时本课题的产品应能够为市场上的大多数8 0 5 1 的s o c 提供调试功能,开发中还 要考虑对其他的目标系统进行支持。 由于j t a g 技术的广泛使用,使得大多数c p u 都集成了j t a g 接口,实际上 使j t a g 成为测试行业的公认标准。本课题基于j t a g 接口,开发出一款通用型 的8 0 5 1 调试器,以降低现有市场上调试器的价格,减少系统开发的成本。同时 为大多数基于8 0 5 1 的s o c 系统的软件调试提供一个低成本的解决方案,扩大该 调试器的使用范围。 1 4 本文主要研究工作和论文安排 本论文一共分为六章,对嵌入式系统调试器进行了全面的分析,并主要论述 了本课题所采用的调试器的结构和如何完成本课题设计。在论文的最后验证了设 计的正确性,给出仿真结果,同时通过f p g a 完成软硬件的联合调试。 第一章为绪论,分析了本课题研究的背景,讲述了嵌入式调试器的发展现状 和8 0 5 1 调试器的市场现状,国内相应的调试产品。本课题来源与北京市嵌入式 系统实验室,同时本课题的研究具有实际应用价值,设计目的要在p c 端实现对 8 0 5 1 软件的调试。 第二章分析了嵌入式调试器的分类和片上调试系统的基本结构,详细的分析 了片上调试系统的各个部分的组成,以及各个模块之间的作用。调试器应该包括 哪些功能,和哪些预期目标。通过这一章,分析嵌入式调试器包含的必要组成模 块,以及调试器的工作原理和衡量调试器的指标。 第三章讲述了8 0 5 1o c i 的结构。o c i 是针对8 0 5 l 核的调试接口。这部分是 调试器设计的基础,调试器的软件设计和硬件设计都以o c i 为基础,在设计中 要充分的了解o c i 的资源。 第四章论述了k e i lc 的驱动构架,本章就对k e i lc 的驱动做一个全面的介 绍,其中k e i lc 下的驱动接口为a g d i ( a d v a n c e dg e n e r i cd e b u g g e ri n t e r f a c e ) 。 也讲述了a g d i 接口提供的功能。 北京工业大学丁学硕士学位论文 第五章提出了本课题的系统构架,在构架之前论述了本课题的软硬件的划分 和本课题的测试方法,软件的功能需要在硬件正确工作的前提下才能验证。硬件 设计之前讲述了p c 和调试器之间通信方式的选择。本章还讲述硬件设计的方法 和各个模块的实现。对于硬件部分的设计,调试器的每项调试功能都进行了硬件 的仿真。 第六章讲述了系统的驱动设计。驱动为调试器实现了将用户的k e i lc 调试 命令转化成j t a g 指令,同时通过i i c 的方式发送到调试器中。同时在本章中讲 述了硬件的f p g a 实现和驱动的验证,同时在测试中检验了调试系统所支持的各 项调试功能。 结论为总结和展望,分析本课题的实验结果,并对本调试器做一个全面的总 结,总结了本课题的创新点,并展望该调试器可能的改进方法。 论文的最后为致谢和参考文献。 4 第2 章嵌入式d e b u g g e r 系统介绍 第2 章嵌入式d e b u g g er 系统介绍 2 1 嵌入式系统调试器综述 2 1 1 嵌入式系统调试器的概念 在嵌入式软件开发过程中,有宿主机和目标机的角色之分。宿主机是执行编 译、链接、定址过程的计算机,目标机是指运行嵌入式软件的硬件平台。首先须 把应用程序转换成可以在目标机上运行的二进制代码,这一个过程包含三个步 骤:编译、链接、定址。其次嵌入式开发就是要调试目标机上的应用程序,最终 软件运行在目标机上,故调试的过程对于嵌入式开发尤为重要,好的调试器能加 快嵌入式软件开发过程。 调试器系统就是用户在开发过程中,控制软件在目标机中运行的情况的系 统。调试器是目标机和宿主机之间通信的桥梁。 2 1 2 调试器的基本分类 从构成上讲,嵌入式系统调试器可以分为硬件调试器和软件调试器。硬件调 试器和软件调试器在很多方面存在很大的差别。硬件调试器通常应用于嵌入式底 层系统的开发,例如在嵌入式开发板上实现b o o t l o a d e r 程序,或者f i r m w a r e 的 开发。这样的嵌入式系统不包括嵌入式操作系统,在进行硬件调试时,宿主机和 目标机之间一般是通过特殊的硬件调试接口连接;软件调试器通常应用于嵌入式 应用软件的开发,而且一般是基于嵌入式操作系统的。在进行软件调试时,一般 使用串口或网络接口来连接宿主机和目标机,调试会话还必须得到目标机上系统 软件环境的支持,包括内核、交叉编译器、库程序、s h e l l 交互程序、终端仿真 程序等等。 2 1 2 1 软件调试器 软件调试器一般都是基于嵌入式操作系统的调试器,有些嵌入式操作系统( 例 如v x w o r k s 等) 具备专门的集成调试环境,只要目标系统能够实现针对该操作系 统的程序加载,就可以通过串口等通用端口实现软件调试。采用这种方法成本较 小,但要求在目标系统中添加操作系统。 在软件调试器中,调试器与被调试的程序通信,调试器与目标操作系统通过 指定通信端口( 串口、网口或并口) 遵循远程调试协议进行通信。调试器可以控 北京i 业大学工学硕学位* 文 制和访问被调试程序,调试器的这类请求实际上都将转换成对被调试程序的地址 空间或目标平台的某些寄存器的访问,目标操作系统可以直接处理接收的请求。 当被调试程序产生异常时,及时通知调试器,目标操作系统的所有异常处理 最终都要转向调试器通信模块,通知调试器当前的异常号,调试器据此向用户显 示被调试程序产生了哪一类异常。 调试器识别有关被调试程序的多任务信息并控制某一特定任务。由目标操作 系统提供相关接口。目标系统根据调试器投送的关于多任务的请求,调用该接口 提供相应信息或针对某一特定任务进行控制,并返回调试信息给调试器。 调试器处理与目标硬件平台相关的信息。这种调试器使用灵活,如上面内容 所述调试器应能根据异常号识别目标平台产生异常的类型也属于这一范畴,这类 工作完全可以由调试器独立完成。在这类的调试中,使用比较广泛的是l i n u x 操 作系统下集成的g d b ( g n ud e b u g g e r ) 调试工具。 综合上面的内容,软件调试器需要目标操作系统提供支持远程调试协议的通 信模块( 包括简单的设备驱动) 和多任务调试接口,并改写异常处理的有关部分。 另外目标操作系统还需要定义一个设置断点的函数。因为有部分的硬件平台提供 能产生特定调试陷阱异常( d e b u gt r a p ) 的断点指令以支持调试( 如x 8 6 的i n t3 ) , 而另一些机器没有类似的指令,就用任意一条不能被解释执行的非法( 保留) 指令 代替。在目标操作系统添加的这些模块被称为“插桩”,如图2 - 1 所示,由于驻 留于r o m 中,被称为r o mm o n l t d r 。通用操作系统也有具备这类模块的:编译 运行于a l p h a 、s p a r e 或p o w e r p c 平台的l i n u x 内核时若打开g d b 开关,就相 当于加入了插桩。1 。 图 1 基于操作系统调试器结构 f i 9 2 1t h ed e b u g g e rb a s e do no p e r a t i o ns y s t e m 调试器等待用户发出调试命令,目标系统的调试器根据用户命令返回调试信 息。这种基于操作系统的仿真器,目标机对系统要求较高,必须有操作系统的支 持才能完成调试。运行于目标操作系统的被调试的应用程序要在入口处调用这个 设置断点的函数以产生异常,异常处理程序调用调试端口通信模块,等待主机上 的调试器发送信息。 2 苹嵌入式d 自“路口系统介绍 21 22 硬件调试器 绝大多数的嵌入式处理器厂商均会提供硬件仿真器( e m u l a t o r ) 以及配套的 集成调试环境。这是最常用的嵌入式系统软件调试手段。这种调试器是在嵌入式 处理器内部嵌入额外的控制模块,当调试器满足特定的触发条件时,处理器就进 入调试状态。在调试状态下,被调试程序停止运行,主机的调试嚣可以通过处理 器外部特设的通信接口访问处理器的资源( 例如寄存器、存储器等) 并执行指令。 为了实现宿主机通信端口与目标机调试通信端口结构的匹配,二者之间通常加入 一个信号转换的电路,如图2 - 2 所示。图中的调试器就是起信号转换作用的。目 标机内嵌的控制模块以基于微码的监控器或纯硬件资源的形式存在。 宿主机 i 1 卜_ 图2 - 2 基于硬件的调试器结构 r i g2 - 2t h ed e b u g g e rs t n l o h l r eb a s e do l lh a r d w a r e 基于处理器的硬件调试器有多种实现方式,现在主流的有两种:在线仿真器 ( i n - c i r c u i te m u l a t o r s ,i c e ) ,片上调试器( o n - c h i pd e b u g g e r ,o c d ) 。 i c e 是嵌入式系统领域功能最为强大的调试器。它是一个用来设计嵌入式系 统软件的嵌入式处理器,在使用过程中代替了目标机上物理的处理罂,其表现和 被代替的目标处理器完全一样,和普通处理器不一样的是它允许用户查看处理器 内部的数据或者控制c p u 的运行。 i c e 通常由两部分组成:仿真探头和仿真器主板。仿真探头通过一条电缆和 仿真器主板相连,里面包含了颗与被代替的c p u 完全相同的处理器,但是为 了调试的目的,该处理器经过了特殊的处理。由于i c e 对目标机处理器的代替完 全是物理上的代替,用户在调试过程中要将目标机上的处理器拔出,将i c e 的仿 真探头( p r o b ep o d ) 插入目标机的c p u 插槽中。 仿真器主板提供了各种调试手段,包括断点、复杂断点、触发( t r i g g e r ) 、实 时跟踪敝l t i m et r a c e ) 等。它通过通信接口连接到开发的宿主机上。其中,实 时跟踪是i c e 最有特色的调试手段,它可以在不占用运行时钟周期的情况下获得 程序的执行情况,具有非干扰性的特点,特别是在强实时的系统中,由于无法使 用断点,实时跟踪就成了唯一可用的调试方式。 在实时系统的调试过程中,往往需要用到i c e 作为调试器。尽管i c e 有许多 优点,但是存在通用性不强和价格比较昂贵的缺陷,作为嵌入式系统的调试工具 北京工业大学工学硕士学位论文 增加了开发的成本,对于产品开发来说非常不利,而且只能针对相对应的c p u 使用,使得i c e 的应用受到了限制。 片上调试器是新发展起来的调试技术。由于现在的处理器封装越来越表贴 化,仿真探头的实现也越来越困难。另外根据统计,在大约9 5 的调试过程中, 用户只是用到了简单的断点、单步调试以及访问处理器资源、内存等一些运行控 制方面的基本调试手段。因此,一个很自然的发展趋势就是将实时跟踪和运行控 制分开,将运行控制放到目标机系统的c p u 核内,由一个专门的调试控制逻辑 模块来实现,并用一个专用的串行接口给用户,用户可以通过c p u 核内的调试 控制逻辑模块控制c p u 的停止或继续运行,并访问目标机上的各种资源。这种 放弃实时跟踪功能,但是提供了大多数i c e 的调试特性的工具就是片上调试器。 在片上调试器中,使用串行信号接口是为了减少调试接口的引脚数目,少占用芯 片的管脚资源,减少芯片的成本和设计复杂度。 为了实现宿主机和目标机处理器的片上调试逻辑之间的连接,可以用一块简 单的信号转换电路板来匹配主机通信接口和目标c p u 的串行调试接口。这块简 单的信号转换电路板称为“片上调试器”或“串行调试器”,本文中也将这一部分称 为调试器。信号转换只是它的一个最基本的功能,其他的高级功能的实现由各个 厂商在其发布的c p u 上集成的调试器产品中完成。 摩托罗拉公司最早认识到o c d 技术的这个发展趋势,并且率先在6 8 h c l 6 上使用了b d m ( b a c k g r o u n dd e b u gm o d e ) 调试接口,并且将其用于c o l d f i r e , p o w e r p c 等系列c p u 中,而m i p s ,i n t e l ,t i ,i b m 和a r m 等则实现了基于 j t a g 标准的串行调试接口。 b d m 技术内建在处理器内部,并且通过串行接口向目标系统传送调试命令, 在这个通信过程中,所有的调试命令都由1 7 b i t 的信息包组成,其中l b i t 用于描 述状态控制信息,其他的1 6 b i t s 用来标识操作命令、地址或数据。显然,在如 此短的数据包中,只能容纳有限的信息,因此一个操作往往需要传输多个信息包 才能完成。比如一个读操作就需要传输3 个信息包才能完成,第一个信息包用于 制定将要执行的操作,随后的两个信息包用于指定要读取的内存地址。 由于b d m 调试方式不需要在被调试系统中运行任何程序,因此在系统还未 完成初始化时就可以开始调试了。 b d m 虽然是一项比较好的技术,但是其缺点也是很明显的,首先当c p u 工 作在b d m 模式时会影响到c p u 的正常工作,比如中断要等在b d m 处理完成之 后才能进行。另外b d m 不是一项开放的技术,由于涉及到很多的知识产权问题, 其只能应用于摩托罗拉的专用的处理器上。 j t a g 标准的串行调试接口完全不同于b d m 技术,j t a g 是一个开放的技术 标准,同时j t a g 的工作原理和b d m 也完全不同,b d m 调试方式中,当c p u 第2 章嵌入式d e b u g g e r 系统介绍 进入b d m 工作模式之后,处理器从串行接口上得到的调试指令完成相应的功能, 而这些调试指令的执行则是由处理器的内部逻辑来完成。而在j t a g 调试方式 中,所有的操作都是通过一个有限状态机实现的,每个操作被分解成若干动作单 元,最后把所有的动作衔接到一起,从而完成最终的操作结果。在第三章中将详 细的讲解j t a g 的工作原理。 本课题实现的就是一个j t a g 的片上调试器,由于j t a g 的片上调试器的进 一步发展,大部分厂商对j t a g 标准做了大量的扩展,使其在调试过程中带有跟 踪功能,本课题研究的调试器就是一款带有跟踪功能的j t a g 调试器。 本课题中的宿主机是一台p c ,安装的编译器为k e i lci t v i s i o n 2 ,而目标机 上面的嵌入式处理器为带调试接口的8 0 5 1 内核。由于本文面向8 0 5 1 的内核,调 试所用的接口模块为o c i ( o n c h i pi n s t r u m e n t a t i o n ) ,且该模块采用j t a g 接口, 故本文以后提到的嵌入式调试器均是指基于j t a g 接口的o c d 的硬件调试器。 2 2j t a g 接口o c d 调试系统 j t a g 仿真器会随着调试对象所采用c p u 种类的区别而有所不同,这些不同 是内部的实现方式不同,但基本结构都大体一致。 基于硬件调试的j t a g 嵌入式d e b u g g e r 系统一般分为三部分:第一部分为和 嵌入式c p u 相连的硬件接口,这部分决定了调试器所采用的调试技术,包括调 试接口和调试逻辑。第二部分为调试器,其实际作用为协议转换器,将p c 端连 接到调试器的信号转换成嵌入式c p u 的调试接口。第三部分为p c 端高级编译 器的调试工具,这一部分是在p c 端基于编译器实现的,在编译器中集成了高级 调试代理,同时调试的用户接口也在编译器中集成。而上层的编译器由嵌入式 c p u 决定,不同的c p u 对应不同的编译器。这三部分的结构框图如2 3 所示。 9 北京t 业大学工学硕士学位论文 图2 - 3 嵌入式d e b u g g e r 框图 f i g 2 - 3t h es t r u c t u r eo fd e b u g g e r 2 2 1p c 端调试驱动 在p c 端,要给编译器提供用户接口( u i ,u s e ri n t e r f a c e ) ,实现用户选择不同 的调试命令的操作。一般将该部分的调试器与软件的编译器集成到一起,使得编 译器能够在程序编译完成后直接进行调试。该调试器的选择和目标机的c p u 相 关,一般的嵌入式c p u 都有特定的编译器,例如a r m 的编译器a d s 、8 0 5 1 的 k e i lc 等。 编译器的下面是高级调试器,相当于一个调试引擎,当用户选择不同的调试 需求时,实质就是发送不同的调试命令。编译器会通过高级调试代理模块,将编 译器的调试命令转化成特定格式的数据。p c 端的调试接口模块将调试命令转化 成符合通信方式1 的数据,向调试器发送。该模块一般通过软件实现,作为编译 器下的一个动态库。 2 2 2d e b u g g e r 模块 d e b u g g e r 模块是一个硬件构成的信号转换设备,一般通过f p g a 实现。其由 两部分组成:通信1 处理单元和j t a g 处理单元。接收通信1 处理单元的数据, 并且将其转化成j t a g 数据。 第2 苹嵌入式d e b u g g e r 系统介绍 信号转换的过程是:调试器接收p c 端的调试数据,然后根据j t a g 标准, 将数据发送给目标机系统。要达到以上的需求,该模块需识别调试器发送的不同 的调试操作。 2 2 3 目标机模块 目标机模块是被调试的对象。该模块由两部分组成:j t a g 接口调试模块和 c p uc o r e 。j t a g 接口应该符合i e e e11 4 9 1 规范,模块接收到调试命令后向 c p u 发送调试请求。 该模块接收调试器的j t a g 数据,其中数据包含了从编译器端的调试命令和 源程序,将数据或命令分别填写到j t a g 的数据寄存器和指令寄存器中,并根据 指令寄存器中不同的数据,响应不同的调试操作。 2 3d e b u g g e r 的基本功能 为了控制c p u 的运行和监视c p u 的运行状态,嵌入式d e b u g g e r 一般包含以 下功能:断点( b r e a k p o i n o ,单步调试( s i n g l e - s t e p ) ,继续执行( c o n t i n u o u s e x e c u t i o n ) 、跟踪功能( t r a c e ) 和测试接1 3 ( t e s ti m e r f a c e ) ,这些功能满足了调试过 程的基本需求【1 7 】。 2 3 1 断点功能 嵌入式调试器的一个重要功能就是设置断点,在用户程序执行时,它能触发 有条件的间断,停止程序执行以便分析。通过用户设置断点,调试器可以控制被 调程序的整个运行过程。调试器的许多功能都是借助断点实现的。根据处理器的 不同,实现断点功能的方式有所不同。从实现方式上可以将断点分为软件断点和 硬件断点。在处理器设计中,考虑到调试效率和一些特殊的问题,许多处理器提 供了硬件断点功能,因此可以借助硬件实现调试器断点功能,基于j t a g 技术调 试的处理器一般提供硬件断点。 2 3 2 单步执行调试 为了调试器设计简单、更高的调试效率,许多处理器提供单步执行功能。硬 件处理器实现的单步可分为周期级( c y c l e ) 矛d 指令级( i n s t r u c t i o n ) 。周期级单步是一 次运行一个时钟周期。指令级单步是一次运行一条汇编指令。在单周期处理器中, 一个时钟周期就是执行一条汇编指令。在多周期或流水作业的处理器中,一条汇 编指令往往对应多个时钟周期。周期级单步实现相对简单,指令级单步需要监测 程序计数器p c 有无变化,有变化则表明己单步执行一条汇编指令。现在的高性 能处理器,一般是借助j t a g 等硬件实现周期级单步和指令级单步。 北京工业大学丁学硕士学位论文 2 3 3 继续执行 继续执行是调试器的一个重要的特征,调试器从当前地址开始执行,直到遇 到断点时停止,并显示断点前程序运行的信息,供用户分析。 2 3 4 跟踪功能 跟踪功能是调试器最为重要的一个功能。跟踪功能是在在线仿真器的基础上 发展起来的,随着j t a g 调试器的发展。很多j t a g 调试器也提供了跟踪功能。 在跟踪的模式下,调试器能捕捉到每一个时钟周期数据总线、地址总线和控 制总线的数据并存储,供用户进行分析。通过调试器的跟踪功能,可以知道一段 程序执行的连续过程,在适当的程序点插入断点后,就可以看到当前状态是怎样 形成的,这是调试用户程序非常有效的一个手段。 2 3 5 测试接口 这是在线仿真器必备的功能,也是调试程序所必须的功能。用户通过检查和 修改处理器的存储单元、寄存器和i o 端口的内容,分析判断程序运行是否正确 以及控制程序的下一步运行。 2 4d e b u g g e r 的性能评估 不同的嵌入式d e b u g g e r 性能有所不同,评价d e b u g g e r 的性能的好坏有以下 几个方面: ( 1 ) 调试器必须反映真实的信息 调试器反映的信息要作为判断程序错误、分析程序运行过程的重要依据,提 供的信息必须正确。 ( 2 ) 提供尽可能多的程序上下文的信息 在程序调试的过程中,程序中隐藏的错误是很难发现的,因此调试器如果能 够为开发者提供更多详细的信息,就可以加快程序调试过程,尽可能迅速的确定 程序中错误的地方。一般来说,调试器除了要给出程序中全局变量、局部变量、 堆、栈和断点的状态等信息之外,还要能够提供c p u 寄存器和存储器的信息。 ( 3 ) 减少对被测系统的影响 调试的基础是检测,理想的检测手段是不应该使被测试对象的一切状态受到 影响而改变,否则测到的数据就是不准确的,就是有损检测,而与之相对的是无 损检测,然而没有绝对意义上的无损检测。调试器所能做到的就是尽可能的减少 对被测试对象的影响,将误差减少到可以接收的程度。 另外调试器尽可能减少对被测试系统的影响的做法是减小硬件调试代码的 复杂度,复杂度越小,调试的可能性越大。另外调试器所占用的资源决定了调试 1 2 第2 章嵌入式d e b u g g e r 系统介绍 器成本。调试器一般采用f p g a 实现,代码越小,占用的逻辑资源越少,就可以 采用比较廉价的f p g a 实现,直接降低调试器的成本。 ( 4 ) 调试的速度 调试器的速度决定了调试过程中的等待时间。调试速度越快,能加快调试的 过程,缩短了系统开发的周期。 ( 5 ) 调试器的成本 调试器的成本也是要考虑的一个重要的方面,其中廉价高效的调试器是发展 的一个方向。 2 5 本章小结 本章讲述了嵌入式d e b u g g e r 的通用结构,一般的嵌入式调试器由p c 端的调 试工具、调试器和目标调试系统三部分组成。其中目标调试系统不是一个普通的 嵌入式c p u ,而是带有测试逻辑接口的c p u ,这一部分是调试器设计的基础, 也决定了调试器所采用的技术。 同时本章也讲述了嵌入式调试器应该具备的功能,在这些的基础上,提出了 评估嵌入式调试器性能的指标。 北京工业大学工学硕士学位论文 第3 章0 ci 结构综述 3 1m 8 0 5 1e w 调试模块0 ci 结构 在本课题中,要调试的对象是m e n t o r 公司的m 8 0 5 1 e w ,在该i p 核中集成 了支撑调试模块,o c i ( o n c h i pi n s t r u m e n t a t i o n ) 。o c i 通过j t a g 接口和调试器 相连,接收调试器的调试命令。o c i 接收到调试命令后向8 0 5 1 核发送调试请求, 8 0 5 1 核接收调试请求允许后进入调试状态。 该调试模块具有以下的特征: 可控的4 - p i n 的i e e e 11 4 9 1 ( j t a g ) 接口。 通过d e b u g r e q d e b u g a c k 两信号控制8 0 5 1 内核调试模式的停止或运行。 通过a 5 h 操作码提供了无限制的软件断点。 提供单步执行功能。 能够直接访问8 0 5 1 核的寄存器资源和存储器( 代码存储器,外部数据存 储器,特殊寄存器和内部数据存储器) 。 支持2 个硬件断点。硬件断点功能可以配置成中断仿真,开始或停止跟 踪功能,维护t r i g g e r 输出信号。 可配置的跟踪功能,能记

温馨提示

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

评论

0/150

提交评论