网站大量收购闲置独家精品文档,联系QQ:2885784924

基于模拟器远程调试系统的研究与实现.docxVIP

基于模拟器远程调试系统的研究与实现.docx

  1. 1、本文档共12页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多

-1-

基于模拟器远程调试系统的研究与实现1

于婷,龙翔,高小鹏

北京航空航天大学计算机科学技术系,北京(100083)

摘要:远程调试是进行嵌入式系统开发的基本调试方式。本文在全系统模拟器ArmSim的基础上,设计并实现了基于嵌入式全系统模拟器的远程调试系统。该系统以Eclipse为调试前端,实现了与通用远程调试器GDB的无缝集成,可以实现对模拟器上目标程序的源代码级调试。本文详细描述了远程调试系统的设计与实现细节。

关键词:远程调试,嵌入式系统,模拟器,GNU调试器,RSP

1.引言

随着嵌入式系统应用的发展,嵌入式系统的体系结构和系统功能越来越强大和复杂,嵌入式系统及嵌入式应用软件的开发也变得越来越重要。但由于嵌入式是一个资源受限系统,自身不具备自开发能力,直接在嵌入式系统的硬件平台上编写、调试软件比较困难,有时甚至是不可能的,因此必须有一套特殊的开发工具和环境才能进行开发。目前一般采用的解决办法是首先在通用计算机上编写程序,然后通过交叉编译生成目标平台上可以运行的二进制代码格式,最后再烧写到目标平台的特定位置上运行,或者生成带调试信息的程序,在调试时由调试器提取相应的代码段下载到目标机中。调试器使用调试信息对程序进行源码级或者机器码级调试。调试手段的好坏则直接影响系统开发的效率与软件的质量。基于上述事实,在嵌入式系统开发过程中,出于安全性、可靠性以及性能上的考虑,完善的调试解决方案成为关键。

本文所述远程调试系统所基于的ArmSim模拟器是一个C语言实现的ARM处理器指令集模拟器。它是不仅可以运行ELF格式的ARM应用级程序,而且可以运行ELF映像或二进制映像格式的系统级程序。通过该远程调试系统,可以对模拟器上运行的ARM程序进行源码级调试。

本文其它部分的结构如下:第2部分对主要的嵌入式调试方法进行阐述和比较;第3部分详细描述基于ArmSim模拟器远程调试环境的设计与实现;第4部分为结论。

2.远程调试技术

由于嵌入式系统不具备自开发能力以及其他众所周知的限制因素,调试一个嵌入式系统与在单机上进行软件调试有所不同,它通常需要使用一种称为“交叉调试”(CrossDebug)也称为远程调试(RemoteDebug)的技术,这是一种允许调试器以某种方式控制目标机上被调试进程的运行方式,并具有查看和修改目标机上内存单元、寄存器以及被调试进程中变量值等基本调试功能的调试方式[1]。

嵌入式软件开发过程中的交叉调试与通用软件开发过程中的调试方法有所不同,具有如下特点:

1.在通用软件开发中,调试器与被调试程序往往运行在同一台计算机上,调试器是一个单独运行着的进程,它通过操作系统提供的调试接口来控制被调试的进程。而在嵌入式软件开发中,调试器和被调试程序运行在不同的计算机上。调试器运行在一般的PC机或者工作站上(即Host上),而被调试程序运行在实际的某种嵌入式设备或者专业的评估板上

1本课题得到高等学校博士学科点专项科研基金(项目编号:20030006026)资助

-2-

(Target)。

2.调试器通过某种通信方式与目标机建立联系,可以是串口、并口、网络或者其它专用的通信方式。例如,JTAG方式的调试则可能需要额外的调试转换板。

3.一般在目标机上有调试器的某种代理(Agent),这种代理能与调试器一起配合完成对目标机上运行的程序的调试操作。这种调试代理可能是某些支持调试功能的硬件设备(如Angel),也可能是某些专门的调试软件(如GDBServer)。

4.目标机可能是某种形式的系统仿真器或者模拟器。通过在宿主机上运行目标机的仿真软件或者模拟器,整个调试过程也可以在一台计算机上完成。此时,物理上虽然只有一台计算机,但逻辑上仍然存在着宿主机和目标机的区别。在这种情况下,调试方法的本质没有变化,即被调试程序都是被下载到了目标机,调试过程并不是直接通过Host的操作系统的调试支持来完成的,而是通过模拟器代理的方式来完成调试。

一般而言,远程调试过程的结构如下图1所示。

主机

目标机

目标机程序

目标机程序

桩或代理

桩或代理

调试器

调试器

通信

图1远程调试过程

在嵌入式软件开发过程中的调试方法有很多种,应根据实际的开发要求和条件进行选择。就调试方法而言,嵌入式的远程调试根据技术实现途径以及它的应用情景来看,可以分为基于硬件的调试、基于软件的调试和基于模拟器的调试三种方法。

硬件调试可以获得更强大的调试功能和更优秀的调试性能。硬件调试器的基本原理时通过仿真硬件的执行过程,让开发者在调试时可以随时了解到系统的当前执行情况。目前嵌入式系统开发中最常用到的硬件调试器是

您可能关注的文档

文档评论(0)

176****7010 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档