(计算机应用技术专业论文)嵌入式linux内核调试技术的研究与实现.pdf_第1页
(计算机应用技术专业论文)嵌入式linux内核调试技术的研究与实现.pdf_第2页
(计算机应用技术专业论文)嵌入式linux内核调试技术的研究与实现.pdf_第3页
(计算机应用技术专业论文)嵌入式linux内核调试技术的研究与实现.pdf_第4页
(计算机应用技术专业论文)嵌入式linux内核调试技术的研究与实现.pdf_第5页
已阅读5页,还剩46页未读 继续免费阅读

(计算机应用技术专业论文)嵌入式linux内核调试技术的研究与实现.pdf.pdf 免费下载

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

文档简介

哈尔滨理一 大学- 学硕七学位论文 嵌入式l i n u x 内核调试技术的研究与实现 摘要 随着嵌入式l i n u x 操作系统应用越来越广泛,对嵌入式l i n u x 内核调试 工具的要求也越来越高,嵌入式l i n u x 内核调试技术也逐渐成为嵌入式系统 研究的一个热点。 本文系统的研究了在线仿真器( i c e ) 、片上调试( o c d ) 、源程序模拟 器、调试代理等目前主流的嵌入式系统调试技术,经过对调试能力、适用范 围、使用成本等因素的综合比较,选择了调试代理技术作为嵌入式l i n u x 内 核调试技术的研究方向,通过对调试代理技术的代表一k g d b ( k e r n e l g d b ) 的源代码进行深入的研究和分析,抽象出了k g d b 的体系结构,掌 握了其各个组成部分的工作原理和实现细节,此基础上分析出了k g d b 存 在的问题,并找出了引发这些问题的原因。 本文最后针对这些问题,利用l k m ( l o a d a b l ek e r n e lm o d u l e ) 技术重新 设计了调试代理方案,改进了调试代理的体系结构,为嵌入式l i n u x 内核代 码的修改定义了统一的标准界面,为各个模块间的耦合定义了良好的接口, 并实现了调试代理各组成模块的基本功能。 与k g d b 相比,本文所给出的调试代理实现方案在只牺牲- d , 部分内 核调试功能的情况下,提高了调试代理自身稳定性、灵活性和可移植性。降 低了与嵌入式l i n u x 内核代码的耦合度,将对嵌入式l i n u x 内核的修改降至 很低的程度。该方案实现的调试代理可以与g d b 等g n u 工具一起为以嵌 入式l i n u x 为操作系统的嵌入式系统开发提供一套功能齐全,界面友好,廉 价可靠的调试平台,具有良好的应用前景。 关键词嵌入式l i n u x ;调试代理;k g d b :l k m 技术 堕筌鎏墨三查兰三耋竺:兰堡竺兰 r e s e a r c ha n di m p l e m e n t a t i o no f e m b e d d e dl i n u xk e r n e ld e b u g g i n g t e c h n o l o g y a b s t r a c t w i t ht h em o r ee m b e d d e ds y s t e ma d o p t i n gt h ee m b e d d e dl i n u xo p e r a t i n g s y s t e m ,d e s i r eo fe m b e d d e dl i n u xk e r n e ld e b u g g i n gt o o l sb e c o m es t r o n g e r e m b e d d e dl i n u xk e r n e ld e b u g g i n gt e c h n o l o g yh a sb e e nah o ts p o ti ne m b e d d e d s y s t e md o m a i n t h i sp a p e rs y s t e m a t i c a l l ys t u d i e dc u r r e n tm a i n s t r e a me m b e d d e ds y s t e m d e b u g g i n gt e c h n o l o g i e ss u c ha st h ei c e ( i n - c i r c u i te m u l a t o r ) ,o c d ( o nc h i p d e b u g ) ,s i m u l a t o r , d e b u g g i n ga g e n tt e c h n o l o g ya n ds oo n t h r o u g hc o n t r a s t i n g f a c t o r ss u c ha sd e b u g # n gc a p a b i l i t i e s ,a p p l i c a t i o ns c o p ea n dc o s t ,w ec h o o s et h e d e b u g g i n ga g e n tt e c h n o l o g ya sr e s e a r c hd i r e c t i o no fe m b e d d e dl i n u xk e r n e l d e b u g g i n gt e c h n o l o g y t h e n ,w ea n a l y z e ds o u r c ec o d eo fk g d b t h a ti sb a s e do n d e b u g g i n ga g e n tt e c h n o l o g y , a b s t r a c t e d t h ea r c h i t e c t u r eo fk g d b ,a n d u n d e r s t o o dt h eo p e r a t i o n a lp r i n c i p l eo fi m p o r t a n tc o m p o n e n t so fk g d b f i n a l l y , w ef o u n ds o m ep r o b l e m so f k g d b ,a n da n a l y z e dc a u s a t i o n so f t h e s ep r o b l e m s f o ro v e r c o m i n gd e f e c t so fk g d b t h i sp a p e rp r o p o s e dad e s i g ns c h e m e b a s e do nl k m ( l o a d a b l ek e r n e l m o d u l e ) t e c h n o l o g yt h en e ws c h e m e i m p r o v e da r c h i t e c t u r e o fd e b u g g i n ga g e n t ,p r o v i d e du n i f i e di n t e r f a c ef o r m o d i 匆i n ge m b e d d e dl i n u xk e r n e l ,d e f i n e dn i c ei n t e r f a c eb e t w e e nm o d u l e s ,a n d p r e l i m i n a r i l yi m p l e m e n t e dt h ef u n c t i o n so f d e b u g g i n ga g e n t c o m p a r e dw i t hk g d b ,t h en e ws c h e m eo n l yl o s tal i t t l ed e b u g g i n gf u n c t i o n , b u tm a d ei m p r o v e m e n t si ns t a b i l i t y , f l e x i b i l i t ya n dp o r t a b i l i t y t h en e ws c h e m e r e d u c e dt h ec o u p l i n gd e g r e eb e t w e e nd e b u g g i n ga g e n ta n de m b e d d e dl i n u x ,a n d r a r e l ym o d i f i e st h ee m b e d d e dl i n u xk e r n e l w o r k i n gw i t hg d b ,t h ed e b u g g i n g a g e n tb a s e do nn e ws c h e m ec o u l dp r o v i d ead e b u g g i n gp l a t f o r m ,w h i c hh a sm o r e s t a b l ed e b u g g i n gf u n c t i o n s ,m o r ef r i e n d l yi n t e r f a c e ,m o r ed e b u g g i n ge f f i c i e n c y , a n dl o w e rc o s t t h en e ws c h e m eh a sn i c ep r o s p e c t sf o ra p p l i c a t i o n k e y w o r d se m b e d d e dl i n u x ;d e b u g g i n ga g e n t ;k g d b ;l k m h - 哈尔滨理工大学硕士学位论文原创性声明 本人郑重声明:此处所提交的硕士学位论文嵌入式l i n u x 内核调试技术的 研究与实现,是本人在导师指导下,在哈尔滨理工大学攻读硕士学位期间独立 进行研究工作所取得的成果。据本人所知,论文中除已注明部分外不包含他人已 发表或撰写过的研究成果。对本文研究工作做出贡献的个人和集体,均已在文中 以明确方式注明。本声明的法律结果将完全由本人承担。 作者签名:零b 受显日期:2 0 0 6 年3 月1 8 日 哈尔滨理工大学硕士学位论文使用授权书 嵌入式l i n u x 内核调试技术的研究与实现系本人在哈尔滨理工大学攻读 硕士学位期间在导师指导下完成的硕士学位论文。本论文的研究成果归哈尔滨理 工大学所有,本论文的研究内容不得以其它单位的名义发表。本人完全了解哈尔 滨理工大学关于保存、使用学位论文的规定,同意学校保留并向有关部门提交论 文和电子版本,允许论文被查阅和借阅。本人授权哈尔滨理工大学可以采用影印、 缩印或其他复制手段保存论文,可以公布论文的全部或部分内容。成果 本学位论文属于 保密口,在年解密后适用授权书。 不保密口。 ( 请在以上相应方框内打4 ) 作者签名:萎压象日期:2 0 0 6 年3 月1 8 日 新獬。蒯醐2 0 0 6 铂肌8 日 哈尔滨理- 大学t 学硕七学位论文 第1 章绪论 1 1 嵌入式操作系统概述 嵌入式操作系统是指运行在特定嵌入式处理器之上,可为嵌入式系统提供 基本的操作系统功能,具有统一调用接口的操作系统。嵌入式操作系统一般都 提供高级语言编译器、丰富的驱动程序和应用软件开发包,优秀的商业嵌入式 操作系统还提供集成的应用开发环境1 1 1 。 早期的嵌入式系统很多都不用操作系统,它们只是为了实现某些特定功 能,使用简单的循环控制对外界的控制请求进行处理,不具备现代操作系统的 基本功能( 如进程管理、存储管理、设备管理、网络通信等) 当嵌入式系统 的要求越来越复杂,使用越来越广泛的时候,缺少操作系统就成为一个最大的 缺点,因为每添加一项新功能都有可能要从头设计软件系统,增加了开发成本 和系统复杂度1 2 l 。 随着嵌入式系统的功能越来越复杂,硬件所提供的条件越来越好,选择嵌 入式操作系统也就势在必行。首先,应用开发者的精力通常都集中在自己的应 用领域,而没有时间和精力全面掌握操作系统,所以需要嵌入式操作系统提供 必要的服务。其次,嵌入式系统的最大特点就是个性突出,每个具体的嵌入式 系统都有自己独特的地方,当其有某种特殊需要时,如果操作系统能够给予支 持,则往往会有事半功倍之效。而且,将嵌入式操作系统引入到嵌入式系统 中,能够对嵌入式系统的开发产生极大推动作用。在没有操作系统的嵌入式系 统下,每当要进行进一步的开发和功能的扩展,都会带来巨大的劳动力的无谓 消耗。而嵌入式操作系统则可以提供给用户的各种程序调用接口,来对嵌入式 系统进行有效的管理。如今,越来越多的用户在开发嵌入式产品时选用嵌入式 操作系统,嵌入式操作系统已经成为当前计算机应用行业关注的热点之一。 1 1 1 典型的嵌入式操作系统 目前主流的商业嵌入式操作系统有v x w o r k s 、w i n c e 、v r t x 等。 v x w o r k s 操作系统是目前嵌入式系统领域中使用最广泛、市场占有率最高 的嵌入式实时操作系统。它是荚国w i n d r i v e r 公司的产品,因其良好的可靠性 和卓越的实时性被广泛的应用在通信、军事、航空航天等高精尖技术及实时性 要求极高的领域中。 哈尔滨理工大学t 学硕士学位论文 w i n c e 是由微软公司推出的嵌入式实时操作系统,是从整体上为有限资源 的平台设计的多任务、多优先级的操作系统。其模块化设计允许它对于从掌上 电脑到专用工业控制器都可以进行定制。操作系统的基本内核需要至少2 0 0 k 。 但它的最大缺点是实时性不好,是软实时操作系统,只能用于对实时性要求不 高的场合。 v r t x 是老牌嵌入式实时操作系统,在早期的商用嵌入式操作系统中曾扮 演“领头羊”的角色。v r t x 具有一组满足用户需要的模块化的编程界面和工 具。无论是对存储器和能耗有限制的手持器件。还是用于电话交换的网络管理 卡,vr t x 都有一套开发工具满足开发者的需求。通过对向上兼容编程接口和 面向对象开发的支持,v r t x 保证在将来使其源码可以重复利用。该操作系统 的特点包括易于载入定制硬件、支持文件系统及支持a n s i p o s i x 编程接口。 除此之外,v r t x 还支持多种网络协议【3 】。 以上介绍的都是商用的专有嵌入式操作系统,它们在系统的可靠性和用户 的技术支持上都有自己的优势。但是,专有操作系统属于商业化产品,其价格 昂贵,而且由于很多时候它们的核心源代码都是不公开的,这使得每个系统上 的应用软件与其他系统都无法兼容。由于这种封闭性还导致商业嵌入式操作系 统在对各种设备的支持方面存在很大的问题,使得软件移植变得困难重重。 1 1 2 嵌入式l i n u x 操作系统 由于l i n u x 操作系统自身的诸多优势,在嵌入式这个i t 业新兴的关键领 域,嵌入式l i n u x 操作系统也适时地出现在各嵌入式厂商面前,吸引了许多开 发商的目光,成为嵌入式操作系统的新宠。 嵌入式l i n u x 是一个和u n i x 相似、以核心为基础、完全内存保护、多任务 多进程的操作系统,它支持广泛的计算机硬件。嵌入式l i n u x 内核源代码全部 公开,任何人可以修改并在g n u 通用公共许可证( g n ug e n e r a lp u b l i cl i c e n s e ) 下发行,这样,开发人员可以对操作系统进行定制。从技术、成本、安全还是 兼容性的角度,嵌入式l i n u x 都是嵌入式操作系统的最佳选择之一。嵌入式 l i n u x 以其独有的魅力,在短短的时问内迅速成为嵌入式领域的主角。将嵌入 式l i n u x 应用于嵌入式系统的开发有如下一些优点1 4 1 : 1 嵌入式l i n u x 自身具备一整套工具链,容易自行建立嵌入式系统的开 发环境和交叉运行环境,并且可以跨越在嵌入式系统开发中的仿真工具 ( i c e ) 的障碍。 哈尔滨理t 大学t 学硕卜学位论文 2 内核源代码的完全开放,使得可以自己设计和开发出真正的硬实时系 统;对于软实时系统,在嵌入式l i n u x 中也容易得到实现。 3 强大的网络支持使得可以利用l i n u x 的网络协议栈将其开发成为嵌入 式的t c p 佃网络协议栈。 4 目前主流的处理器平台如x 8 6 、a r m 、p p c 等,嵌入式l i n u x 都给予强 有力的支持。 在工业界,嵌入式l i n u x 操作系统已经广泛应用于数控机床,机载设备, 车载系统,网络交换机,路由器等专用系统中。在消费电子产品中,嵌入式 l i n u x 操作系统也可以广泛应用于p d a ,手机,媒体播放器,信息家电等嵌入 式领域。 1 2 调试的概念 在软件行业中,调试这个概念的范围有了很大缩小,它只是指找到并去除 代码中的错误,并把这种对于代码的调试戏称为“捉虫”如果我们把软件开 发过程分为如图l l 的几个简单的阶段的话,那么调试主要存在于软件编程和 软件维护阶段。它和这两个阶段始终交织在一起,不可分割。 图卜1 软件开发流程 f i g 1 一ls o f t w a r ed e v e l o p m e n tf l o w 优秀程序员的优秀之处不在于他是否能编写出没有错误的代码,而是在于 他编写的代码包含的错误比别人更少( 但不是没有) 。要做到这一点,除了提高 自身的能力,苦练内功外,就是借助各种工具的帮助,快速地找到代码中的错 误,并去除掉这些错误。工欲善其事,必先利其器。一个好的调试工具,对于 我们这些程序员的重要性由此可见一斑。调试工具是众多辅助工具中不可或缺 的一员。 1 3 远程调试的概念 各种嵌入式设备都具有功能专一,针对性强的特点。因此其硬件资源不会 像台式机一样丰富,所以要在嵌入式设备上建立一套开发系统是不现实的在开 哈尔滨理t 大学t 学硕七学位论文 发,调试嵌入式系统时,通常都采用远程开发调试的模式( 又叫做交叉开发,调 试模式) 1 3 】f 6 1 ,下面将具体介绍这种模式。 远程调试( r e m o t ed e b u g g i n g ) :y n q 交叉调试( c r o s sd e b u g g i n g ) ,是指主机 上的调试器通乓种方式能够控制目标机上被调试程序的运行方式,并查看和 修改目标机上的内存、寄存器以及被调试程序中的变量等内容的一种调试方 式,其基本结构如图l m 2 所示。 i调试器 k 由口- 网络棒口 被调试程序 i np 宿主机目标机 图卜- 2 远稃调试基本结构 f i g 1 - 2b a s i cr e m o t ed e b u g g i n ga r c h i t e c t u r e 宿主机( h o s t ) :又称上位机,在远程调试中,是调试器运行的平台。 目标机( t a r g e t ) :又称下位机,是指运行嵌入式软件运行的平台。 相对于本地开发调试模式,远程调试具有以下特点: 1 调试器和被调试程序运行在不同的平台上,调试器运行在一般的p c 机或者工作站即宿主机( h o s t ) 上,被调试程序运行在实际的嵌入式设备或专业 的评估板上( 被称作目标机t a r g e t ) 。 2 调试器通过某种通信方式与目标机建立连接,如串口、并口、网口或 某种专用的通信方式。 3 一般在目标机上有调试器的某种代理( a g e n t ) ,该代理和调试器一起配 合完成目标机上程序的调试。这种代理可以是软件,也可以是某种支持调试的 硬件等。 相对于本地调试( n a t i v ed e b u g g i n g ) ,远程调试具有以下优点: 1 通过一定的通信方式将主机和目标机相连,为用户提供强大真实的调 试环境,绕开了目标机上的软硬件资源有限的限制。 2 , 目标机上不需要操作系统支持就可进行调试。即使有操作系统支持, 也主要是用于嵌入式应用的支撑而不是用于目标机的开发环境平台。 3 可以调试不同指令集的程序,而本地调试只能调试相同指令集的程 序。 尽管远程凋试技术具有上述优点,但由于调试器和被调试程序的分离,不 可避免地引入了通信开销,对调试效率有一定影响。 一。: :当窑兰翌:奎:三兰竺土兰堡丝兰:。 1 4 嵌入式l i n u x 内核调试的概念 与应用级调试不同,在内核级调试方式下,运行在目标机上的所有程序, 都属于调试范围,是被调试程序( 包括操作系统本身) 。用户不能自定义调试 范围。在调试范围内的所有程序地位相等,不能识别操作系统本身和运行在操 作系统之上的任务。这种调试方式可以用于调试操作系统本身、内核模块或是 一些简单的不需要操作系统支持的用户程序。 对于嵌入式l i n u x 操作系统来说,内核调试的主要应用对象主要有以下两 个:一是调试自己裁减开发出来的嵌入式l i n u x 内核,二是调试嵌入式l i n u x 可加载模块,包括设备驱动,其它功能模块等门。 1 4 1 嵌入式l i n u x 内核调试 对于任何编写内核代码的人来说。最吸引他们注意的问题之一在内核的基 础之上任意添加自己所需要的功能,并且可以任意修改l i n u x 内核的代码。 但是在享受任意修改所带来的快意的同时,伴随着是因为新添加的功能的不完 善性而带来的系统的稳定性的下降。对内核,驱动程序开发人员而言,下一步 所面临的工作就是对修改后的l i n u x 代码进行调试。由于内核是一个不与某 个进程相关的功能集,既嵌入式l i n u x 是运行在硬件之上的操作系统,而不 是运行在操作系统之上的一个应用程序,其代码不能很轻松地放在调试器中执 行,而且难于被跟踪;而且l i n u x 创始者l i n u s t o r w a r d s 在设计之初,就对 系统采用停止、运行的调试方式持怀疑态度,造成l i n u x 内核的调试方式较 单一。这些,最终决定了对内核的调试有其特殊性。 1 4 2 嵌入式l i n u x 内核模块调试 嵌人式l i n u x 是宏内核结构,但是借助可加载内核模块这种微内核设计思 想,可以使l i n u x 运行效率更高,更方便系统的定制、更新和移植。嵌入式 l i n u x 中,模块是未被编译进内核的一种目标文件,它们可以经过链接进内核 生成可执行的机器代码。需要时借助某些手段可很快地将其编译进内核,实现 内核的更新。模块加载由运行的加载程序完成加载过程中模块的重定位和地址 绑定。系统启动时或系统启动后都能进行模块加载,称之为模块的动态加载功 能。模块动态加载有很好的特性当某些功能模块暂时不需要时可以从内核中 哈尔滨理工大学工学硕士学位论文 卸载,需要用到时又能进行添加。这样不仅把内核的镜像文件保持在最小,而 且最大限度地节省内存。利用嵌入式l i n u x 模块动态加载特性,可以灵活地完 成对系统的扩展和更新。嵌入式l i n u x 中大量和硬件有关的驱动程序都是以内 核模块的形式提供的,如网络接口驱动,终端驱动,网络文件系统驱动等。因 此,内核模块的调试在嵌入式l i n u x 内核调试中占有很大的比重f 3 。 1 5 嵌入式l i n u x 内核调试技术的现状 由于嵌入式系统所控制的外部设备的复杂性、可靠性及实时性的要求,使 得嵌入式系统的开发及嵌入式软件的调试比较复杂。目前,在嵌入式领域中调 试技术主要有:在线仿真器( i c e ) 、片上调试( o c d ) 、源程序模拟器和调试 代理【9 l 【1 。其中,i c e 、o c d 技术属于硬件解决方案;源程序模拟器和调试代 理技术属于软件的解决方案。由于嵌入式系统的复杂性,无法形成一种通用的 解决方案,往往是根据系统的硬件、软件和成本要求,来决定选用的开发调试 方案。在第二章中,将对这些调试技术进行详细分析。 1 6 嵌入式l i n u x 内核调试技术的研究意义 调试工具一直是工具软件研究应用的一大热点,在嵌入式系统中也不例 外。作为功能强大的嵌入式操作系统,嵌入式l i n u x 已经越来越受到人们的青 睐,发展速度十分惊人。由于嵌入式系统具有平台相关的特点,在使用嵌入式 l i n u x 作为操作系统前,必须对其进行裁减、移植,同时还要编写相关硬件的 驱动程序并进行调试,这些过程在整个系统的开发中占有很大的比重,而市场 竞争则要求产品能够快速上市,这一矛盾要求具有易被掌握,价格低廉,功能 强大的开发调试平台,从而提高程序员的时间一投入回报率。因此,研究嵌入 式l i n u x 内核调试技术,并开发相应的嵌入式l i n u x 内核调试工具就显得非常 必要。 1 7 课题来源与研究内容 本课题来源于黑龙江省研究生创新科研资金项目。 本文的主要研究内容是嵌入式l i n u x 内核调试技术。首先,对嵌入式操作 系统和嵌入式l i n u x 进行了简要的介绍。然后对嵌入式l i n u x 内核调试,远程 调试进行了概述,说明了在远程调试环境中调试的一般方法。接着,对目前主 哈尔滨理t 大学t 学硕+ 学位论文 流的嵌入式系统调试技术进行研究和分析,得出本文研究的重点是调试代理技 术a 最后,对基于调试代理技术的k g d b 源代码进行了详细的剖析,在此基 础之上找到了k g d b 调试代理的不足之处,提出了改进方案,并在改进方案 的基础上实现了调试代理的基本功能。 哈尔滨理 大学t 学硕七学位论文 第2 章嵌入式l i n u x 内核调试技术的研究 本章将列出嵌入式l i n u x 内核调试必须要解决的几个问题,并研究不同的 调试技术是如何解决这些问题来进行内核级调试的。 2 1 内核调试所要解决的问题 由于嵌入式系统的硬件资源非常有限,通常不具备显示设备和输入设备, 为了向系统开发人员提供灵活、方便的调试界面,必须采用远程调试的方法来 调试嵌入式l i n u x 内核,这就带来以下问题: 1 调试器与被调试程序如何通信。 2 被调试程序产生异常如何及时通知调试器。 3 调试器如何控制、访问被调试程序。 4 调试器如何识别有关被调试程序的多任务信息并控制某一特定任务。 5 调试器如何处理某些与目标硬件平台相关的信息( 如目标平台的寄存 器信息、机器代码的反汇编等) 。 6 调试器如何访问内核空间的数据和调试信息。 解决好这些问题成为嵌入式l i n u x 内核调试的关键。 2 2 在线仿真器i c e 技术 在线仿真器i c e0 i l l ” ( i n - c i r c u i te m u l a t o r ) 是功能强大的嵌入式软件调试工 具。它是由仿真器的仿真头来完全取代目标机上的c p u 进行工作,产生外部 电路所需的信号,同时捕获外部的所有信号。仿真器使微处理器内部的寄存器 完全透明,并能提供自己的r a m 或替代存储器去覆盖目标系统的r o m 和 r a m 。为了在运行控制中提供最大的灵活性,仿真器提供了软件和硬件断 点。调试器和仿真器之阿的连接可在目标崩溃情况下生存。传统的i c e 技术在 普通的嵌入式系统调试中很好地满足了调试需求。 在线仿真器的结构因微处理器和微控制器的结构不同而略有变化。在线仿 真器的典型结构如图2 一l 所示。基本模块包括:仿真存储器、断点控制器、 存储映像控制器、数据交换控制单元和地址数据缓冲。目标处理器模块包括 目杯处理器和时钟发生器。主机用于人机信息交互、程序输入、编辑、存储、 啥尔滨理丁大学- 学碗+ 学位论文 显示当i ; 被调试系统的信息和控制调试过程。依靠这一结构,我们可以用相同 的基本模块仿真不同型号的微处理器或微控制器,只需将目标处理器模块的处 理器换成相应的处理器即可。 l 主机卜一 高揍羹蓉广 i 热卜 撼| :习感卜 ii 7 ll t l l - 圃 :l 热 !l 震警l il 一n 阿1 - l 存储映i 噻堡控制 d r i 基本模块目标处理器模块 图2 1 在线仿真器的典璎结构 f i g 2 一lt y p i c a la r c h i t e c t u r eo f t h ei c e 在线仿真器的一个重要功能是设置断点。在用户程序执行时,它能触发有 条件的间断,停止程序执行以便分析。断点功能对调试用户程序是极其有用 的,用户在所希望的程序点插入一个断点,使程序一直执行到断点处。通过检 查处理器的寄存器或l ,o 端口,来查看执行的用户程序是否正确。当不需要断 点时,即可将其删除,使程序正常执行。 在线仿真器在接上目标系统并进行仿真时,可以使仿真单步执行,并显示 执行后的寄存器内容与状态信息。单步执行功能有助于检查数据总线、地址总 线、状态标志和控制线的状态。通过对处理器状态的每一步检查,用户可以检 测下列各类程序错误,如不正确的转移,不正确的编址和错误的操作码等等。 在线仿真器从当前地址开始执行,直到遇到断点时停止,并显示断点前程序运 行的信息,供用户分析。 跟踪功能也是在线仿真器最为重要的一个功能。在线仿真器能捕捉到每一 个时钟周期数据总线、地址总线和控制总线的数据并存储,供用户进行分析。 通过在线仿真器的跟踪功能,我们可以知道一段程序执行的连续过程,在适当 的程序点插入断点后,就可以看到当前状态是怎样形成的,这是调试用户程序 非常有效的一个手段。 哈尔滨理t 大学工学硕十学位论文 在线仿真器还具有资源借出功能。在线仿真器能设定仿真系统向开发系统 “借出”的存储器资源与i o 资源。从用户程序来看,这些借用的资源如同 目标系统本身所有的一样用户在开发初期把开发系统的部分资源借到用户样 机的存储器空间中去,借助于这部分资源可完成对其它部分的调试。而在开发 后期,开发系统收回自己的资源,完全在用户的环境中调试。 对存储器、寄存器及f o 端口操作功能是在线仿真器必备的功能,也是调 试程序所必须的功能。用户通过检查和修改处理器的存储单元、寄存器和i o 端口的内容,来分析判断程序运行是否正确以及控制程序的下一步运行。 可以看出,在线仿真方案给嵌入式l i n u x 系统提供了一个非常近似于目标 系统的硬件仿真环境,处在调试阶段的嵌入式l i n u x 内核的完全在线仿真器的 掌控之中,i c e 可以随时中断程序的运行,访问内核空间的数据,也可以及时 的捕捉内核运行时产生的异常,准确计算程序运行的时问,这一点对调试某些 有强实时性要求的程序非常重要。 但是,随着处理器的性能和复杂性迅速发展,典型i c e 问题开始出现:首 先,开发成本高。提供时间滞后于处理器本身的生命周期,其价格昂贵,要求 相当数量和水平的技术支持方能正常工作。其次,可扩展性差。i c e 通常是为 固定的处理器速度开发的,在目标处理器的速度提高时,其速度很难扩展。第 三,使用i c e 需要删减目标系统自身的电路定时要求,以实现信号插入。第 四,重复使用能力差。只有在各项设计中一直使用同样的处理器,i c e 才不会 有问题,但处理器技术总是在前进,很可能下一项设计会使用与今天不同的处 理器。 2 3 j t a g 技术 j t a g 是一种片上调试o c d ( o nc h i pd e b u g g i n g ) 技术的标准协议1 1 3 l 【l ”。片 上调试是指在微处理器内的芯片上内置仿真功能实现对目标程序进行调试。现 在广泛使用的主要有两种片上调试协议:j t a g ( j o i n tt e s ta c t i o ng r o u p ) 、 b d m ( b a c k g r o u n dm o d ed e b u g ) 。 片上调试的工作原理实质是目标系统的微处理器内嵌调试模块接管目标系 统的中断及异常处理用户通过设置调试许可寄存器( d e b u ge n a b l er e g i s t e r ) 来指 定哪些中断或异常发生后处理器直接进入调试状态。进入调试状态后,内嵌调 试模块向外部调试通信接口发出信号,通知一直在通信接口监听的主机调试 器,然后调试器便可通过调试模块使处理器执行任意系统指令( 相当于特权 哈尔滨理- 大学_ 学碗十学位论文 态) 。所有指令均通过调试模块获取,所有存取操作均直接访问内存。当需要 结束调试状态时,主机上的调试器向目标系统处理器送指令以结束调试状叁, 被调试程序继续运行。片上调试不需要占用目标系统的任何资源,这样使得被 调试程序阶段的运行环境和实际工作时的运行环境相同或相似。片上调试技术 也有他的限制,对于那些真正棘手的与硬件有关的软件故障,实时分析能力是 必不可少的。设计师们不能仅仅依靠微处理器总线来观察系统运行。在设计师 寻找与微处理器执行代码相关的系统事件时,实时分析必须结合系统分析进 行。 j t a g 边界扫描测试的基本原理是通过在芯片的各个输入输出端口增加边 界扫描单元( b s c ,b o u n d a r ys c a nc e l l ) 捕获端口信息。每个b s c 单元由寄 存器和两个数据通道构成。一个数据通道用于正常的数据输入和输出,包括 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 ) :另一个数据通道用 于边界扫描测试,包括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 ) 。典 型的边界扫描单元结构如图2 2 所示。 图2 2 典璎的边界扫描单元 f i g 2 - 2t y p i c a lb o u n d a r ys e a rc e l l 具有边界测试功能的芯片在正常情况下的工作流程是:输入的数据从 n d i 经输入端的b s c 直接发往应用逻辑,然后经过应用逻辑处理后的结果送 往输出端b s c ,直接经n d o 输出结果在边界扫描状态下,输入端的b s c 可以有选择的从n d i 或蕾t d i 获得输入数据,数据经应用逻辑处理之后的 结果送往输出端b s c ,输出端的b s c 也可以有选择的将数据发往n d o 或 者t d o 。在最简单的边界扫描形式下,测试数据链循环地通过被测单元所有 可扫描的i c 引脚。这些i c 引脚是连续的,组成被测电路扫描链( 一组串行 连接的t d i 和t d o 引脚) 。换句话说,基本的边界扫描仅仅确定各边界扫描 器件是连接是否正确。采用更复杂的边界扫描形式,比如,将被测单元的寄存 兰童堡翌三奎:三兰堡兰堡丝兰 器设计成可以累计边界扫描测试数据。累计这些数据后,被测单元根据边界扫 描控制器来的串行测试图形中的命令处理这些数据。累计的数据能给被测电路 提供并行激励,被测电路的响应再被累计,然后通过t a p 端口输出或者由被 测单元测试点上的其它测试设备测量。可见,对正常使用的芯片边界扫描部件 是透明的,不会对芯片产生任何影响。 在测试或者调试状态下,通过控制b s c 单元的状态可将需要检测的应用 逻辑单元从系统中隔离出来,这时对应用逻辑单元进行的测操作便不会对其他 单元造成影响。 图2 - - 3 是边界扫描测试应用的示意图。为了测试两个j t a g 设备的连接。 首先将j t a g 设备l 某个输出测试脚的b s c 设置为高或低电平,输出至 t d 0 ,然后,让j t a g 设备2 的输入测试脚来捕获从管脚输入的t d i 值, 再通过测试数据通道将捕获到的数据输出至t d o ,对比测试结果,即可快速 准确的判断这两脚是否连接可靠。 串行数 据输入 j r g 设备l 测试连接线 j t 蚯设备2 图 刁边界扫描应用示意图 f i g 2 3b o u n d a r ys c a n n i n ga p p l i c a t i o n 2 4 源程序模拟器技术 源程序模拟器( s i l l l u l a t o r ) 是在广泛使用的、人机接口完备的工作平台上( 如 p c 机) ,通过软件手段模拟在某个嵌入式处理器上执行的一种测试工具。比较 高级的s i m u l a t o r 可以模拟目标机的外部设备。利用s i m u l a t o r 的最大好处就是 不用真正的目标机,并且在调试时可以提供更详细的错误诊断信息。 纯软件的模拟器有许多种,如模拟个芯片时序逻辑的模拟器、只模拟 哈尔滨理t 大学t 学硕士学位论文 c p u 指令的模拟器、模拟整个硬件开发板的模拟器、模拟一个p d a 的模拟器 等。一些软件的仿真器或模拟器,如s t a n f o r d 大学的s i m o s 模拟器,它仿真 的是m i p s 系列c p u 和相关外设,可以在其上运行s g i 公司的i r i x 操作系统 和软件,目前基本上停止了进一步的开发;p s i m 是一个仿真p o w e r p c 指令集 的模拟器,目前只支持简单的命令行应用程序;x c o p i l o t 是一个p d a 模拟器, 它是由g r e gh e w g i l l 出于个人喜好编写的,它仿真的是m 6 8 kc p u ,通过它可 以给基于p a l m o s 的软件开发者提供一个模拟开发环境;b o c h s 是一个仿真 x 8 6c p u 的开源项目,目前还支持a m d 6 4c p u ,在它上面可以运行l i n u x 操 作系统。其它些商业的仿真软件如v m w a r e 和v i r t u a l p c 可以仿真一个真实 的x 8 6 计算机,而v i r t u t e c hs i m i c s 仿真器可以仿真多种c p u 和硬件,功能强 大,可用于硬件和系统软件的评测,本节将介绍一种叫s k y e y e 的源程序模拟 器。 s k y e y e 是一个指令级模拟器f ”l ,可以模拟多种嵌入式开发板,可支持多 种c p u 指令集,在s k y e y e 上运行的操作系统意识不到它是在一个虚拟的环境 中运行,而且开发人员可以通过s k y e y e 调试操作系统和系统软件。由于 s k y e y e 的目标不是验证硬件逻辑,而是协助开发、调试和学习系统软件,所 以在实现上s k y e y e 与真实的硬件环境相比还是有一定差别的。s k y e y e 在时钟 节拍的时序上不保证与硬件完全相同,对软件透明的一些硬件仿真进行了一定 的简化。这样带来的好处是s k y e y e 的执行效率更高。 如果想研究与具体硬件无关的系统软件( 如t c p i p 协议栈等) ,采用 s k y e y e 可以有效地提高工作效率,因为你可以直接在u c o s i i 和u c l i n u xf o r s k y e y e 上进行开发和调试,而与具体硬件打交道的各种驱动程序已经存在, 且有源码级调试环境,只需关心高层的逻辑设计和实现就可以了。 s k y e y e 并不能取代开发板等硬件的功能,但通过它可以比较容易进入到 嵌入式软件的广阔天地中。由于s k y e y e 建立在g d b 基础之上,使用者可以方 便地使用g d b 提供的各种调试手段对s k y e y e 仿真系统上的软件进行源码级的 调试。还可以进行各种分析,如执行热点分析、程序执行覆盖度分析等,无论 是嵌入式操作系统,还是嵌入式应用软件,s k y e y e 都可以进行调试。 但和所有的s i m u l a t o r 一样s k y e y e 也有其不足的地方: 1 和实际的运行环境差别很大,即使在这种方式下调试成功的程序要在 真正的环境下一次就成功的可能性不大。 2 设备模拟的局限性较大,由于在嵌入式应用中,外部设备的种类繁 多,因此为多种设备都提供仿真是不现实的。 哈尔滨理工大学_ 学顾七学位论文 3 被调试程序执行的时间特性较差。 4 对主机的资源要求较高。 因此s i m u l a t o r 调试方式的适应范围主要为: 1 对时间特性没有什么要求的程序。 2 没有对比较特殊的外部设备进行驱动的程序。 3 只需要验证逻辑正确的应用程序。 2 5 调试代理技术 在目标操作系统和调试器内分别加入某些功能模块,二者互通信息来进行 调试,这些功能模块统称为调试代理( d e b u g g i n ga g e n t ) 。在调试代理方案中, 调试器与目标操作系统通过指定通信端口( 串口、网卡或u s b ) 遵循远程调试协 议进行通信。目标操作系统的所有异常处理最终都要转向调试代理模块,告知 调试器当前的异常号,调试器据此向用户显示被调试程序产生了哪一类异常。 对调试器控制、访问被调试程序的请求都将转换成对被调试程序的地址空间或 目标平台的某些寄存器的访问,目标操作系统接收到这样的请求可以直接处 理。这样的“调试器对调试代理”组合为代码调试提供了功能强大而低价的解 决方案,但也存在一些明显的缺点t 调试代理程序需要占用宝贵的系统资源 ( 内存、中断、串口) ,如果在调试时目标崩溃,对目标的连接往往丢失i l a - 2 3 1 。 目前很多系统开发平台采用调试代理方案,比如基于嵌入式实时操作系统 v x w o r k s 的实时集成开发环境t o m a d o l i ,还有用来调试通用l i n u x 操作系统内 核的调试工具k g d b ( k e r n e lg d b ) 等。本节将概述k g d b 的调试原理。 k g d b 提供了一种使用g d b 调试l i n u x 内核的机制使用k g d b 调试内核 需要二台机器,一台作为开发机,另一台作为目标机,通过串口将它们连接起 来。在将要调试的内核中插入k g d b ,重新编译内核,使其运行在目标机上。 g d b 在开发机上运行,g d b 通过串口与要调试的内核进行通信对目标机上的 内核进行控制从而实现远程调试内核的目的。其调试的环境构成一般如图2 4 所示。 卟:涫弹rk 擘t 学砸l 车n 论文 吲2 4 k g d b 的调试环境 f i g2 4d e b u g g i n ge n v i r o n m e n to f k g d b 本章第一节所述问题k g d b 可以通过以下途径解决: 1 调试器和目杯系统町以通过指定端n ( 串口,u s b ,网昔等) 遵循远 程调试协议进行通讯。 2 目标操作系统的所有异常处理最终都要转向通信模块,告知调试器当 日d 的异常号:调试嚣莸c 此向用户显示被调试程序产生了哪一类异常。 3 调试器对任务的请求实际上都将转换成对被调试程序的地址空间或目 标f 台的某些寄荇: :;的访问。目标操作系统接收到这样的请求l 玎以直 接处理。 4 由目标操作系统提供与平台信息相关的接口。目标系统根据调试器发 送的关于多任务的清求,调用该接口提供相应信息或针对某一

温馨提示

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

评论

0/150

提交评论