(计算机应用技术专业论文)嵌入式软件任务级调试技术研究与工具实现.pdf_第1页
(计算机应用技术专业论文)嵌入式软件任务级调试技术研究与工具实现.pdf_第2页
(计算机应用技术专业论文)嵌入式软件任务级调试技术研究与工具实现.pdf_第3页
(计算机应用技术专业论文)嵌入式软件任务级调试技术研究与工具实现.pdf_第4页
(计算机应用技术专业论文)嵌入式软件任务级调试技术研究与工具实现.pdf_第5页
已阅读5页,还剩76页未读 继续免费阅读

(计算机应用技术专业论文)嵌入式软件任务级调试技术研究与工具实现.pdf.pdf 免费下载

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

文档简介

电子科技大学硕士学位论文 摘要 璧叁煎墨笙开发过程中,黾握筮佳遇这工作最终需要采用交叉调试方式进 行。借助于常规调试工具用户只能通过设置断点等方式控制程序执行,实现基本 调试功能。所看到的程序执行现状,也只是目标机方当前程序寄存器、内存、符 号信息等基本信息。而当今嵌入式应用臼趋复杂,多半有操作系统支持,采用多 任务编程,这就要求交叉调试器能提供任务级的特殊调试支持。广1 本论文总结了,在只具有基本调试功能的嵌入式调试工具( l a m b d a g d b 和 l a m b d a t r a ) 基础上,设计实现了一种能针对任务进行调试的任务级调试工具所 涉及的若干关键技术,包括增加对被调试任务的识别、运行控制、动态加载卸 载,以及根据用户的不同要求,绑定某个任务( 集) 进行调试等。该任务级调试 系统仍然采用交叉调试方式,因此包括宿主机方的调试器( l a m b d a g d b ) 和目标 机方的调试代理( l a m b d a d a ) 两部分对任务级调试支持功能的实现。前者发送调 试命令,并接收命令的执行结果;后者接收并执行调试器发送的调试命令。其中, 调试代理的任务级调试功能实现是整个系统的关键,它在操作系统的支持下作为 一个任务运行,能够感知系统中被调试任务的存在,从而对它们进行操作,实现 任务级调试功能:该实现采用模块化和层次化设计,系统功能强大,具有良好的 命令响应实时性、可移植性、可剪裁性,可以满足不同用户的调试需求。 本文主要介绍了任务级调试系统的设计思想和实现结果的情况,具体内容分 为六个章节来说明: 第一章是嵌入式软件调试技术概论,主要讨论了在嵌入式软件调试的地位、 开发任务级调试系统的必要性以及介绍国内外在嵌入式调试领域的发展现状。 第二章任务级软件调试需求分析,内容包括系统的主要功能、实现环境、开 发限制等。 第三章介绍了任务级软件调试系统的总体设计。内容主要包括系统的体系结 构设计,调试器和目标机方与任务级调试相关的命令接口,目标机方运行的调试 代理模块设计。 第四章是任务级软件调试代理关键技术分析。内容包括实现任务级调试主要 技术难点和解决方案。 第五章是主要模块实现,介绍调试代理方功能模块的实现方案。 第六章是全文总结。总结了任务级调试系统实现现状、特点、创新以及今后 的发展方向。 文章最后还给出了与系统有关的一些有意义的附录。j 。 关键词:f 嵌入式,i 。宿主机,目标机,调试代理,l a m b d a d a ,l a m b d a g d b 皇王型垫查兰堡主堂焦堡塞 a b s t r a c t i nt h ed e v e l o p m e n tp r o c e s so fe m b e d d e ds y s t e m ,o b j e c ts o f t w a r en e e d s t ob e d e b u g g e db y m e a n so f c r o s s d e b u g g i n g u s i n gt r a d i t i o n a ld e b u g g i n g t o o l su s e rc a n c o n t r o lp r o g r a me x e c u t i o no n l yb yc o m m o nw a y ss u c ha ss e t t i n gb r e a k p o i n tt o i m p l e m e n tb a s i cd e b u g g i n g f u n c t i o n s t h ei n f o r m a t i o no f r u n n i n gp r o g r a m su s e r s c a r l g e t i s j u s t t h e r e g i s t e r , m e m o r y a n d s y m b o ls t a t e h o w e v e r , n o w a d a y s e m b e d d e da p p l i c a t i o n st e n dt ob em o r ec o m p l i c a t e da n dm o s to ft h e mp r o v i d eo s s u p p o r ta n da d o p t m u l t i t a s kp r o g r a m m i n g a l la b o v e r e q u i r ec r o s s d e b u g g e r t h a tc a n p r o v i d es p e c i a l t a s k - l e v e ld e b u g g i n g s u p p o r t b a s e do nt h ee m b e d d e dd e b u g g i n gt o o l s ( l a m b d a g d ba n dl a m b d a t r a ) w h i c hh a v eb a s i c d e b u g g i n g f e a t u r e s ,t h i s t h e s i si n t r o d u c e ss o m e k e y t e c h n o l o g i e si n v o l v e d i nat a s k l e v e l d e b u g g i n gt o o l ,i n c l u d i n g t a s kr e c o g n i t i o n , r u n n i n gc o n t r o l ,d y n a m i cl o a d u n l o a da n db i n d i n gt a s ko rt a s kg r o u pt od e b u g ,e t c t h et a s k l e v e ld e b u g g i n g s y s t e ma d o p t sc r o s s d e b u g g i n gm o d e ,w h i c hm e a n s b o t ho f t h e d e b u g g e ro fh o s t ,l a m b d a g d b ,a n dt h ed e b u ga g e n to ft a r g e t ,l a m b d a d a , s u p p o r tt a s k l e v e ld e b u g g i n gf e a t u r e t h e f o r m e rs e n d sd e b u g g i n gc o m m a n d sa n d r e c e i v e st h ee x e c u t i o nr e s u l t s ,a n dt h el a t t e rr e c e i v e sd e b u g g i n gc o m m a n d sa n d e x e c u t e st h e m t h et a s k - l e v e ld e b u g g i n gf u n c t i o ni m p l e m e n t a t i o ni st h el i n c h p i no f t h ew h o l e d e b u g g i n gs y s t e m i tr u n sa sa t a s ku n d e ro s s u p p o r ta n di sp e r c e p t i v et o t h ee x i s t e n c eo ft a s kt ob ed e b u g g e d ,a n ds oi tc a nh a n d l et h e ma n di m p l e m e n t t a s k - l e v e ld e b u g g i n gf u n c t i o n t h es y s t e ma d o p t sm o d u l ea n dh i b e r a r c h yd e s i g n ,h a s p o w e r f u lf u n c t i o n s ,r e a lt i m ef e a t u r e s ,p o r t a b i l i t ya n d i se a s y - c l i p p e dw h i c hm e e t s t h e r e q u i r e m e n t so f v a r i a b l e u s e r s t h i st h e s i sd e s c r i b e st h ed e s i g ni d e aa n di m p l e m e n t a t i o no f t h et a s k l e v e l d e b u g g i n gs y s t e m a sf o l l o w s : c h a p t e r 1i n t r o d u c e st h ee m b e d d e ds o f t w a r e d e b u g g i n gt e c h n o l o g i e s i n c l u d i n gi t ss t a t u s ,t h ei m p o r t a n c eo fd e v e l o p i n gt a s k - l e v e ld e b u g g i n gs y s t e ma n d s i t u a t i o ni no u rc o u n t r ya n da b r o a d c h a p t e r 2p r e s e n t st h er e q u i r e m e n ta n a l y s i so ft a s k l e v e ld e b u g g i n gs o f t w a r e w h i c hc o n s i s t so ft h em a i n f u n c t i o n ,i m p l e m e n t a t i o n e n v i r o n m e n ta n dt h e d e v e l o p m e n t l i m i t so f t h e s y s t e m c h a p t e r3 d e s c r i b e st h es y s t e md e s i g na saw h o l e ,i n c l u d i n gt h es y s t e m i i 皇三型垫奎堂堡圭兰垡笙苎 s t r u c t i l r ed e s i g n t h ec o m m a n d i n t e r f a c ei n v o l v e di nt a s k l e v e ld e b u g g i n gi nd e b u g g e r a n dh o s t ,a n dt h ed e b u g g i n ga g e n tm o d u l ed e s i g n c h a p t e r 4 s p e c i f i e s t h e k e yt e c h n o l o g ya n a l y s i s o ft a s k - l e v e ls o f t w a r e d e b u g g i n ga g e n t ,i n c l u d i n gt h ep i n c hp o i n to f t h et a s k l e v e ld e b u g g i n gt e c h n o l o g y a n dt h es o l u t i o n c h a p t e r5d e s c r i b e st h ei m p l e m e n t a t i o no f t h ep r i m a r ym o d u l e ,t h a ti s ,t h e s o l u t i o no f t h ed e b u g g i n ga g e n tm o d u l e c h a p t e r6s u m m a r i z e st h e w h o l et h e s i s ,i n c l u d i n gt h ep r o g r e s s ,f e a t u r e s , c r e a t i o na n de v o l v e m e n ti nt h ef u t u r eo ft h et a s k - 一l e v e ld e b u g g i n gs y s t e m i nt h e e n dt h et h e s i s b r i n g ss o m ea p p e n d i x e s r e l a t i v et ot h es y s t e m k e yw o r d s :e m b e d d e d ,t a r g e t ,h o s t ,d e b u g g i n ga g e n t ,l a m b d a d a ,l a m b d a o d b i i i 独创性声明 本人声明所呈交的学位论文是本人在导师指导下进行的研究工作 及取得的研究成果。据我所知,除了文中特别加以标注和致谢的地方 外,论文中不包含其他人已经发表或撰写过的研究成果,也不包含为 获得电子科技大学或其它教育机构的学位或证书而使用过的材料。与 我一同工作的同志对本研究所做的任何贡献均已在论文中作了明确的 说明并表示谢意。 签名:显堂日期:m ;年;月f j 日 关于论文使用授权的说明 本学位论文作者完全了解电子科技大学有关保留、使用学位论文 的规定,有权保留并向国家有关部门或机构送交论文的复印件和磁盘, 允许论文被查阅和借阅。本人授权电子科技大学可以将学位论文的全 部或部分内容编入有关数据库进行检索,可以采用影印、缩印或扫描 等复制手段保存、汇编学位论文。 ( 保密的学位论文在解密后应遵守此规定) 日期:、,年 月 叼;弓 l 电子科技大学硕士学位论文 第一章嵌入试软件调试技术概论 1 1 嵌入试软件调试的地位 在现在日益信息化的社会中,计算机和网络已经全面渗透到日常生活的每一 个角落。而计算机的概念对于我们每个人来说,已经不再仅仅是那种放在桌上处 理文档,进行工作管理和生产控制的计算机”机器”:各种各样的新型嵌入式系统 设备在应用数量上已经远远超过通用计算机,任何一个普通人可能拥有从大到小 的各种使用嵌入式技术的电子产品,小到m p 3 ,p d a 等微型数字化产品,大到网 络家电,智能家电,车载电子设备。而在工业和服务领域中,使用嵌入式技术的 数字机床,智能工具,工业机器人,服务机器人也将逐渐改变传统的工业和服务 方式。 随着嵌入式行业的发展,越来越多的人们从事着嵌入式开发工作,在整个软 件开发流程中,代码的编写和调试占有一半以上的时间。软件调试工具实时的监 控着目标机上程序的运行,提供给用户强大的跟踪、排错手段。调试工具是否能 准确的反应出程序的当前状况、是否能方便的跟踪程序运行在很大程度上决定了 软件开发周期的长度。 嵌入式软件调试和般的通用计算机软件调试又有很大不同。通用计算机具 有完善的人机接口界面,在上面增加一些调试的应用程序和环境即可进行对自身 的开发调试。而嵌入式系统本身不具备自举开发能力,b 口使设计完成以后用户通 常也是不能对其中的程序功能进行修改的,必须有一套调试工具和环境才能进行 调试,调试工具的好坏直接关系到系统的开发效率和软件运行的稳定性。 另一方面,由于嵌入式系统的开发是要和各个不同行业的应用相结合的,要 求更多的计算机以外的专业知识,其开发人员往往是各个应用领域的专家。因此 嵌入式软件调试工具必须能满足用户各种需要,要求是易学、易用、可靠、高效 的。 1 2 嵌入式软件调试的任务 调试是软件开发过程中必不可少的环节,它跟踪程序运行,帮助系统开发人 员发现程序中的错误以及错误发生的原因。 开发通用的p c 应用程序与开发嵌入式应用程序在调试环境上存在明显的差 别。前者,调试器与被调试的程序往往是运行在同一台机器、相同的操作系统上 电子科技大学硕士学位论文 的两个进程,调试器进程通过操作系统专门提供的调用接口控制、访问被调试进 程。后者,采用的是交叉调试方式,也就是说调试器还是运行于通用桌面操作系 统的应用程序,被调试的程序则运行于特定硬件平台上。由于嵌入式调试的特殊 要求,嵌入式软件调试必须承担如下任务: 基本调试任务 所有软件调试都必须承担的基本调试任务,包括:显示源程序;查看和 修改变量、内存、寄存器;查看栈框架;设置断点;执行单步、继续等 运行命令。 针对任务的调试功能 现在的嵌入式软件越来越复杂,有专用的操作系统,也提出了多任务的 概念,因此,对调试功能提出了新的要求。这部分功能主要包括:在调 试过程中对任务进行识别、控制,以及对任务的调试绑定。 通信管理 由于在进行嵌入式软件调试时,被调试程序和调试器运行于两个不同的 c p u 平台上,通过网络、串口等通信方式实现调试器对被调试程序的运 行控制、状态查询和结果回显。因此,嵌入式软件调试还必须承担通信 管理的任务。 1 3 国内9 1 t 目关技术现状 由于前面提到的嵌入式软件调试和通用p c 软件调试上的区别,带来以下问 题:调试器与被调试程序如何通信,被调试程序产生异常如何及时通知调试器, 调试器如何控制、访问被调试程序,调试器如何识别有关被调试程序的多任务信 息并控制某一特定任务,调试器如何处理某些与目标硬件平台相关的信息( 如目 标平台的寄存器信息、机器代码的反汇编等) 。 目前主要的采用如下两种调试方案来解决这些问题: 1 3 1 片上调试方案 片上调试是在处理器内部嵌入额外的硬件控制模块,当满足了一定的触发条 件时进入某种特殊状态。在该状态下,被调试程序停止运行,主机的调试器可以 通过处理器外部特设的通信接口访问各种资源( 寄存器、存储器等) 并执行指令。 为了实现主机通信端口与目标板调试通信接口各引脚信号的匹配,二者往往通过 一块简单的信号转换电路板连接( 如下图所示) 。内嵌的控制模块以基于微码的 2 皇三型垫查兰堡主兰垡堡苎 一 监控器( m i c r o c o d em o n i t o r ) 或纯硬件资源的形式存在,包括些提供给用户的 接口( 如断点寄存器等) 。 图表1 这种调试方式的特点是,调试工作是在纯硬件的基础上实现的,不占用软件 资源。调试的程序可以是固化在目标机上的,也可以是通过b d m 下载到目标机的 r a m 中运行的。 采用这种调试方式的具体产品有m o t o r o l ac p u l 6 、c p u 3 2 、c o l d f i r e 系列的 b d m ( b a c k g r o u n dd e b u gm o d e ) ,m o t o r o l ap o w e r p c5 x x 、8 x x 系列的e p b d m ( e m b e d d e dp o w e r p cb a c k g r o u n dd e b u gm o d e ) ,i b m 、t i 的j t a g ( j o i n tt e s t a c t i o nd e b u g ,i e e e 标准) ,还有o n c e 、m p s d 等等。 1 3 2 调试代理方式 这种方案是在目标机方运行支持调试功能的调试代理程序,通过这个调试代 理同调试器互通信息来进行调试。 调试示意图如下: 通常情况下,运行于目标机方的调试代理需要在完成设备初始化后主动触发 异常,进入通讯模块,等待主机( h o s t ) 上的调试器发送信息。双方建立连接后 调试器便等待用户发出调试命令,目标系统等待调试器根据用户命令生成的指 令。这一过程如下图所示。 电子科技大学硕士学位论文 运行调试器 山 i 指定调试通信端口 i 向目标系统发信息 主机 l 目标操作系统初始化 l 至应用程序入口 山 主动触发异常 古 i 异常处理程序转入 调试端口通信 目标平台 图爱3 这一方案的实质是用软件接管目标机的全部异常处理( e x c e p t i o nh a n d l e r ) 及部分中断处理,在其中插入调试端口通信模块,与主机的调试器交互。它只能 在调试代理初始化,特别是调试通信端口初始化完成后才起作用。 由此,一方面这种调试方式目标机的调试代理必然要占用目标平台上部分硬 件资源,也会占用的某个通信端口,该端口的通信程序就无法调试了。而且用这 种方式调试的程序大多是通过调试器下载到目标机方的r a m 中运行的,而在实 际应用中用户程序是固化在芯片上的,这样必然要求d e b u g 版本和r e l e a s e 版本 内存定位的不同,如果r e l e a s e 版本的内存定位存在的问题是不可能通过这种调 试方式查出来的。 另一方面,这种调试方式也有它显而易见的好处,那就是不需要额外的硬件 支持。 目前,国际上比较流行的嵌入式调试工具主要有:g r e e n h i l l s 公司的m u l t i s o f l e w a r ed e v e l o p m e n te n v i r o n m e n t 、w i n dr i v e r 公司的t o m a d od e b u g g e r 等:国 内较为成熟的嵌入式调试工具有科银京成公司的l a m b d a 调试工具。 随着嵌入式软件的日益复杂,应用程序也由无操作系统概念的简单程序发展 到在操作系统支持下运行的多任务程序,调试应用程序的过程中,用户不光希望 知道寄存器、变量、内存等基本信息,还希望调试环境能针对被调试程序中的任 务提供特殊的任务级调试功能,比如绑定特定任务( 集) 调试,对指定任务进行 挂起、恢复操作等。在嵌入式开发工具领域,w i n d r r i v e r 公司的调试环境t o r n a d o 和操作系统v x w o r k s 在技术上处于领先地位,提供了绑定单个任务调试的功能, 并借此占据了大部分市场。而作为国内较为成熟的嵌入式开发工具,l a m b d a 调 试环境目前只支持对基本信息的查询和对整个用户程序的调试控制:为了适应当 前用户对调试工具的更高要求,并同国外较高水平的调试工具相竞争,l a m b d a 4 电子科技大学硕士学位论文 调试工具必须实现对被调试任务的特殊调试功能支持,也就是实现任务级调试功 能。 另外,尽管t o r n a d o 工具在任务级调试方面,支持绑定单个任务调试的方式, 但是随着嵌入式系统开发的发展,一个项目通常是多任务的,调试范围仅限于单 个任务难以满足要求,操作起来也很不方便。本次基于l a m b d a 环境开发的任务 级调试环境支持将调试范围设置为整个项目;当调试范围为整个项目( p r o j e c t ) 方式时,在调试范围中的任务所创建并启动运行的新任务被自动添加到调试范围 中。但是,目前很多嵌入式软件开发者已经习惯了t o r n a d o 工具的风格,考虑到 思维和操作上的习惯,我们也支持将调试范围设置为单个任务。 1 4 论文专题研究的任务 本课题按照调试代理方式,以北京科银京成公司的调试环境( l a m b d a g d b 和l a m b d t r a ) 为基础,设计并实现了任务级调试环境。 根据开发对象的不同要求,任务级调试环境需要支持系统级调试和任务级调 试两种调试方式。 系统级调试是指将整个目标系统作为被调试对象的调试。在系统级调试下, 当发生一个调试事件( 调试异常或收到主机端调试命令) 时,整个目标系统被挂 起,处于完全静止的状态,系统调试代理完全占有c p u ,直到调试人员发出恢复 程序执行的命令。这种调试也称为系统外挂式调试。系统级调试方式能调试任何 类型的程序,如操作系统内核、组件、 s r 、应用程序等,现在的调试环境 ( l a m b d a g d b 和l a m b d a t r a ) 就是采用这种方式进行调试的。在系统级调试方式 下,调试代理不能感知操作系统的存在。被下载到远程目标机上调试的目标程序 是绝对定位代码,是由开发者在i d e 或者手工方式指定内存定位,然后链接形成 的。在下载时如果目标机上原来存在程序,则被覆盖。 任务级调试指将目标系统中单个或多个任务的集合作为被调试对象的调试。 在任务级调试下,当发生一个调试事件( 调试异常或受到主机端调试命令) 时,这 个事件被精确定位到被调试的任务集合,属于这个集合的任务被停止运行。任务 级调试需要操作系统和任务调试代理的支持,这种调试方式只适用于调试应用程 序。在这种调试方式下,被下载到目标机上运行的目标程序是可重定代码,由调 试环境根据目标机的当前状态动态的为其确定内存定位,并将其下载到目标机 上,在操作系统的支持下启动目标程序运行。 电子科技大学硕士学位论文 这种调试方式的一个重要特点是,一个任务因触发调试事件而被停止时,属 于被调试任务集合外的其他任务仍然能够继续运行。 本课题的主要任务是:增强原有的嵌入式调试环境功能,使之能够适应任务 级调试的需要。主要分两部分工作完成: 增加l a m b d a g d b 命令,使之能够实现任务级调试功能。 设计并实现l a m b d a d a ,使之在兼容l a m b d a t r a 的基础上提供对任务 级调试功能相关命令的支持。 1 5 本文内容安排 第一章是嵌入式软件调试技术概论,主要讨论了在嵌入式软件调试的地位、 开发任务级调试系统的必要性以及介绍国内外在嵌入式调试领域的发展现状。 第二章任务级软件调试需求分析,内容包括系统的主要功能、实现环境、开 发限制等。 第三章介绍了任务级软件调试系统的总体设计。内容主要包括系统的体系结 构设计,调试器和目标机方与任务级调试相关的命令接口,目标机方运行的调试 代理模块设计。 第四章是任务级软件调试代理关键技术分析。内容包括实现任务级调试主要 技术难点和解决方案。 第五章是主要模块实现,介绍调试代理方功能模块的实现方案。 第六章是全文总结。总结了任务级调试系统实现现状、特点、创新以及今后 的发展方向。 文章最后还给出了与系统有关的一些有意义的附录。 6 电子科技大学硕士学位论文 第二章任务级软件调试需求分析 本课题根据各种调试对象的要求,在调试环境l a m b d a g o b 和l a m b d a t r a 基础 上实现系统级调试和任务级调试功能。调试对象包括基本系统、系统组件、一般 应用、i s r 、二次开发的应用等。 2 1 调试范围要求 所谓调试范围( d e b u g g i n gs c o p e ) ,是指调试事件的有效区域。同属于一个 调试范围的程序具有相同的调试属性,如个事件点或者对范围中的所有程序都 有效或者都无效,当一个事件点有效触发时,会导致调试范围中的程序停止执行, 而不影响调试范围外的其它程序。 由于调试功能分为系统级调试和任务级调试两种调试方式,两种调试方式下 定义的调试范围有不同要求: 系统级调试方式: 在这种调试方式下,运行在目标机方除了调试代理外的所有程序,都属于调 试范围,是被调试程序。用户不能自定义调试范围。在调试范围内的所有程 序地位相等,不能识别操作系统和任务的区别。这种调试方式可以用于调试 操作系统、i s r 或是一些简单的不需要操作系统支持的用户程序。 任务级调试方式 在这种调试方式是在操作系统的支持下实现调试工作的,操作系统不属于调 试范围,调试范围是一个任务( 集) 。用户可以自定义调试范围,并可以在 调试过程中添加或删除调试范围中的任务。这种调试方式调试范围灵活可 控,能提供针对任务的特殊调试功能,适用于调试多任务的复杂用户程序。 2 2 任务级调试的对象 在软件开发过程中,被调试对象的不同,所采用的调试方式也有不同。任务 级调试有如下对象: 基本系统:基本系统主要是指操作系统内核,调试基本系统需要在系统级调 试模式下完成。 系统组件:系统组件是不属于操作系统内核的操作系统其他组件模块,如文 件系统、网络、g u i 等。调试系统组件前,操作系统是正确的,可以正常执行, 电子科技大学硕士学位论文 因此可以采用任务级调试。 一般应用:就是通常情况下,用户编写的基于操作系统的应用程序。调试应 用同调试系统组件类似,也可以采用任务级调试方式。 i s r :此处,i s r 应该是指用户开发的中断服务程序,而不是操作系统相关的 中断服务程序。后者是在开发基本系统时完成的。调试i s r 需要用系统调试模式。 一般说来,在编写i s r 时并非是一个孤零零的i s r 。它会有与之相关的可以作为 任务运行的例程,它完成i s r 的安装,以及设备的一些初始化工作。启动i s r 相关例程的过程可以按照任务调试模式处理,然后再切换到系统调试模式进行 i s r 的调试。 二次开发的应用:当把“操作系统+ 基本应用”固化在目标机上以后,可 能仍需进行再对系统进行二次开发,如添加新的应用,支持新的硬件设备等。这 时,目标机没有调试代理,需要用另外的加载工具加载调试代理,启动调试任务 后就可以按照任务级调试方式调试。加载工具的实现不在本课题研究范围内,不 再详细讨论。 任务级调试对象和调试模式的关系如下图: 系统组件一般应用二次开发的应用 任务级调试方式 基本系统 i s r 系统级调试方式 图表4 每种调试方式可以调试位于其上层的对象。 2 3 任务级调试功能 任务级调试软件的功能要求是:不仅支持传统的系统调试方式,实现基本的 调试功能:还要在嵌入式操作系统支持下,实现对被调试任务的识别、控制,以 及基于任务的调试绑定。 在系统级调试和任务级调试下,调试环境都具备基本的源码调试功能,这些 功能是: 调试过程中的源代码显示 行号显示 电子科技大学硕士学位论文 寄存器查看修改 内存查看修改 变量查看修改 表达式查看修改 栈框架的查看 设置普通断点,条件断点,硬件断点 源代码级的s t e pi n t o 和s t e po v e r ,c o n t i n u e ,f i n j s h 等 指令级的s t e po v e r 和s t e pi n t o 两种通信方式的支持 简单的操作系统信息查询 任务级调试下,新增加的调试功能: 调试模式配置和切换 事件点的迁移 被调试程序的动态内存分配 对指定任务集的调试 对指定函数的调试 调试的增量加载 被调试程序的卸载 全面的操作系统信息查询 本课题的任务是实现新增的任务级调试功能。 2 3 1 调试模式配置和切换 任务调试环境具有系统级调试方式和任务级调试方式双重功能。根据被调试 程序的不同要求,用户可以选择采用哪种调试方式进行调试,并且在调试过程中, 用户可通过调试器进行系统级调试方式和任务级调试方式之间相互切换。切换分 为两种情况: 系统级调试方式切换到任务级调试方式 在操作系统内核已经运行起来,并且h a m b d a d a 在配置时具有任务级调试支 持的条件下,用户可以发送切换命令,从系统级调试方式切换到任务级调试方式。 9 电子科技大学硕士学位论文 切换示意图如下 任务级调试方式切换到系统级调试方式 任务级调试方式切换到系统级调试方式时,不需要特殊要求,用户可以在调 试过程中,随时发送切换命令,实现调试方式的切换。任务级调试方式也可以自 动切换到系统级调试方式,用于处理目标机上出现的严重错误。如在任务级调试 下,在不属于被调试对象的某个点发生非法指令异常、内存访问异常等致命错误 时,调试环境自动将整个系统挂起,即进入系统级调试,并向用户报告。切换示 意图如下: 收到调试模 发生致命错误 图表6 2 3 2 事件点的迁移 事件点是指在被调试系统中,调试者通过调试环境预先设置的用于捕捉某些 调试事件的点。在任务级调试环境中,它包含硬断点和软断点。 现有的调试环境中,事件点的所有信息都存储在主机端的调试器。调试过程 中,当触发一个事件点,处理过程如下: 2 调试代理 厂 、报告发生异1 用尸程序厂、 宿主机 常的地址 调试 发生异常 目标机 一 , 方的调 3 调试器判 代理方的用 断是合法事 4 调试代理 试器 件点触发, 执行后续处 户程序 理命令 发送后续处 电子科技大学硕士学位论文 图表7 任务级调试方式下,由于事件点对同调试范围有绑定关系,如果继续把事件 点信息保存在调试器方,在一次事件点的触发后需要如下处理过程: 2 - 向调试器报告产生 , 宿主 异常的地址、异常原因1 用户程序 目标 和当前佳务i d发生异常 机方调机方 i 7r 的调 i 试 4 调试代理停 的用 3 调试器判断是否触发台 法事件点;以及触发事件止调试范围内 试器 点的任务是否是调试范围 代 任务,并执行 户程 中的任务j 如果是,通知后续处理命令 调试代理停止当前调试范 理 序 围中的任务,并发送后续 处理命令: j i 图表8 我们可以看到,这个过程通讯传输的信息较多。 在某些c p u 平台上,软断点的实现原理是用特殊指令替换内存中需要设置断 点处的指令,当执行到特殊指令时,系统产生异常,触发有效断点。因此,在停 止被调试程序之前,需要先把所有事件点从内存里移出,恢复内存中原有指令, 这样,用户在查询内存的时候才不会得到错误的内存信息,当恢复程序运行时, 还需要把事件点插入内存。以前事件点从内存移出或是插入内存的工作都是由调 试器发命令完成的,也需要传送大量信息。当使用低速设备( 如串口) 作为调试 的通讯,而又设置了较多事件点时,调试响应速度较慢。 为满足任务级调试的要求,将事件点一部分信息和处理迁移到目标机的调试 代理中,减少调试过程中的通讯流量和通讯频度,加快调试速度,以较低代价实 现事件点与被调试对象的关联。实现事件点迁移后,事件点触发的相关处理过程 如下: 电子科技大学硕士学位论文 , 1 用户程序发 厂 、 调 生异常 目标机 宿主机 1 试, 方的用 方的调 3 向涧试器报告触2 判断是否触发 发了事件点 代 有效事件点,如 户程序 试器 果是,停止调试 理 范围内任务,执 1 ;f = # m * 图表9 从上图,我们可以看到,调试代理只需要在合法事件点触发后,向调试器报 告触发的事件点i d ,如果是调试范围外的任务触发事件点,调试代理不会和调 试器有任何信息交互,对于触发事件点后需要进行的后续处理也不用调试器发送 命令来完成,大大减少了通讯量,加快了调试速度。 l a m b d a d a 对事件点的处理包括:目标机端事件点的添加、删除、i n s e r t 、 r e m o v e 等操作。 调试环境在系统级调试和任务级调试下都具有事件点的迁移功能。调试器 l a m b d a g d b 在设计时也考虑了对事件点的迁移和不迁移两种处理方式的兼容,从 而保证了对l a m b d a t r a 的兼容性。 2 3 3 被调试程序的动态内存分配 对嵌入式开发人员来说,最为头痛的莫过于需要手工指定被调试程序在目标 机上的内存定位,这要求对目标机的内存配置有很深刻的了解,要非常清楚哪部 分是内存调试代理使用的,哪部分是可以分配给用户程序使用的。在指定被调试 程序的内存定位时,要保证其占用的内存不和其他部分程序的空间冲突,一旦内 存配置冲突,程序会出现不可预料的错误,这类错误检查起来也是比较难的。这 种情况下,目标机中内存被分为两部分,如图: 调试代理代码空间及 栈空间 操作系统和用户程序 代码空间及栈空间 图表1 0 电子科技大学硕士学位论文 在任务级调试方式下,所有内存都由操作系统管理,被调试程序在编译链接 后是以相对定位文件的形式存在的。当需要下载到目标机时,由操作系统根据目 标机当前内存分配使用情况,为新下载的应用分配内存,并由调试器根据分配的 内存地址重新把被调试程序链接为绝对定位文件,下载目标机,用户不需要关心 哪部分空间是为用户程序准备的,由操作系统来保证各应用程序使用空间不冲 突。这样就尽量避免了用户由于内存配置失误导致的程序运行错误。目标机方的 内存分配情况如下图: 操作系统代码空间 操作系统管理的所有 内存空间 图表1 1 当然,在程序运行过程中,用户仍然需要指定任务运行的栈空间大小,如果 指定的空间小于任务运行实际需要的空间,还是会出现内存溢出的情况。如果操 作系统支持内存分页管理,这样的内存溢出是可以捕捉到,只是目前操作系统 d e l t a o s 还不支持分页管理,因此这样的错误还是可能造成不可预料的错误,。 2 3 4 对指定任务集的调试 当一个任务处于调试环境控制下运行时( 即在调试任务集合中) ,它所触发 的事件点都被视为有效的调试事件来处理,其运行遵循调试环境的控制规律;当 一个不处于调试环境的控制下时( 即不在调试任务集中) ,它所触发的事件点都 被视为无效的事件点处理。在调试过程中,用户常常不希望调试命令对已经调试 正确的任务发生作用,同时又希望把运行过程中出现新问题的任务添加到调试任 务集合中。这就要求任务级调试环境能允许用户手工向调试任务集合中添加和删 除任务,从而实现调试者能对任意任务集进行跟踪调试的功能。对目标机方的用 户程序来说,可以用下图来表示任务和调试的关系。 电子科技大学硕士学位论文 图表1 2 手工添加和删除调试任务集合中的任务通过命令窗口输入的方式来实现。 23 5 对指定函数的调试 在调试过程中,用户可能会希望只调试某个函数,在任务级调试方式下,要 调试单个函数就必须写一段用户程序,创建一个任务来执行这个函数,这样的工 作是很烦琐的。因此,我们在这个任务级调试环境下增加了函数调试功能的支持。 用户只要把希望调试的函数( 集) 下载到目标机,在任务级调试方式下,可 以通过命令,指定被调试的函数名,并可确定函数参数,由调试代理为被调试函 数创建对应的任务,启动执行。该功能对于只作函数的调试很有用,开发者不用 为了调试每个小函数编写创建任务、删除任务等不必要的代码。 在对指定的函数进行调试时,如果函数中有创建任务的代码,调试环境不对 新创建的任务进行跟踪控制。 2 3 6 调试的增量加载 一个复杂的应用功能可能由多个应用程序协同完成,各个应用程序创建不同 任务( 集) 。各个应用程序在分别调试完成后,需要加载到目标机中运行,进行 协同工作的测试。在系统级调试方式下,系统中只能运行最后一次加载的应用程 序,前面加载的应用程序都被覆盖,这是无法完成多个程序加载运行的要求。在 任务级调试方式下,我们提供了调试的增量加载功能。 增量加载指在目标机内存资源允许的情况下,可以通过调试器加载多个应用 程序到目标机上,并使之运行。在增量加载中,加载新的程序时,以前程序的事 件点全部被删除,并脱离调试范围,自由运行,也就是说只能调试最后加载的应 1 4 电子科技大学硕士学位论文 用程序。但可以切换到系统级调试下对整个系统进行调试,这时就包括了对所有 加载程序的调试了。由于任务级调试方式采用了动态分配内存方式为各个应用程 序分配内存,用户也不用担心多个应用程序会发生内存冲突的问题。 增量加载的若干应用程序在目标机方的存在形式如下: 图表1 3 2 3 7 被调试程序的卸载 在调试过程中,如果希望放弃当前程序的调试,重新加载一个新的被调试程 序,通常情况下只有重新启动目标机。在任务级调试方式下,用户可以卸载最后 一次加载的被调试程序,也就是不用重新启动目标机,而把目标机的环境恢复到 加载这个程序前的状态。主要工作是: 把不是由该程序创建,而又存在于调试范围中的任务从调试任务集中删 除 从操作系统中删除由该程序创建的任务 释放该程序占用的系统资源 2 3 8 全面的操作系统信息查询 在以前的调试环境中,已经有操作系统信息查询功能,只是这个功能是通过 直接查询内核的数据结构来获得信息的,这种方式不够友好。在任务级调试环境 中,内核d e l t a c o r e 同步作出相应的调整,增加用于查询操作系统信息的a p i , 调试环境只需要访问操作系统a p i 就可以获得相应的信息。 在任务级调试环境,操作系统信息查询功能具有双重含义:一是在系统级调 试方式下对操作系统对象的查询,查询时操作系统对象是处于静止状态的;二是 在任务级调试方式下的查询,操作系统对象的状态在不停改变,这时查询到的是 电子科技大学硕士学位论文 在当前时刻操作系统中对象的状态。 用户可以查询当前的目标机中的操作系统对象状态以及动态内存分配情况。 实现的具体功能包括: 当前各类系统对象信息的查询:包括任务、定时器、信号量、消息队列、 固定分区、动态分区,需要查询的内容是各类系统对象的最大i d 、最小 i d 、可用i d 数。 任务信息查询:任务i d 、任务名、任务状态、任务优先级、任务执行时 间、任务栈顶、任务栈底、任务当前栈指针、任务栈在运行时的边界、 任务的栈状态、任务入口函数地址、任务变量的列表、任务栈填充标识、 任务定时器状态、定时器初值、定时器时间粒度、定时器开始时间、定 时器结束时间、定时器i d 、任务的等待状态、任务事件、异步信号状态 和处理函数地址、记事本内容。 定时器信息查询:定时器i d 、定时器名、定时器类型、定时器状态、定 时器初值、定时器触发时间间隔、开始时间、处理函数入口、用户数据、 等待该定时器的任务i d 。 消息队列信息查询:消息队列i d 、 待任务的信息、最大存放消息数、 队列内容。 消息队列名、属性、等待任务数、等 未接收消息数、最大消息大小、消息 固定分区信息查询:固定分区i d 、固定分区名、分区首地址、分区大小、 缓冲区大小、已分配块数、缓冲区链头地址。 动态分区信息查询:动态分区i d 、动态分区名、动态分区属性、动态分 区首地址、分区大小、页大小、最大可用段大小、已分配块数、第一空 闲块地址、等待任务数、等待任务信息。 2 4 实现环境限制 由于本课题是在已有的l a m b d a g d b 和l a m b d a t

温馨提示

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

评论

0/150

提交评论