SPARC平台模拟器源码级调试系统的研究与实现

  • 格式:pdf
  • 大小:806.86 KB
  • 文档页数:6

ComputerEngineeringandApplications计算机工程与应用 2013,49(4) 65 SPARC平台模拟器源码级调试系统的研究与实现 范 涛 ,刘高辉 ,叶笑春 ,李文明 ,宋 爽 ,范东睿 FAN Tao ,LIU Gaohui ,YE Xiaochun ,LI Wenming ,SONG Shuang ,FAN Dongrui。 

1.西安理工大学自动化与信息工程学院,西安710048 2冲国科学院计算技术研究所,北京100190 1.Xi’an University ofTechnology,Xi’an 710048,China 2.Ini ̄titute ofComputing Technology,ChineseAcademy ofSciences,Beijing 100190,China 

FAN Tao,LIU Gaohui,YE Xiaochun,et a1.Research and implementation of source-level debugging system on SPARC platform simulator.Computer Engineering and Applications,2013,49(4):65—70. 

Abstract:As a basic research tool for embedded systems.simulator 1S widely used in architecture design and hardware/software codesign.It uses software idea to simulate the behavior of hardware.This paper proposes a method to implement a source—level debugging system on a SPARC instruction set simulator.On the one hand,the system uses an existing SPARC cross debugger to reduce the development cycle and increase the reliability.Compared to reimplementing a source-・level debugger,the method over・— comes the difficulties of debug information extracting and reliable verification.On the other hand,the paper proposes a mecha— nism which binds the source-level debugging system to Integrated Development Environment.This mechanism reduces the run- time overhead of context switch and prevents screen blocking.In summary,the system provides a high reliability of source—level debugging interface for the developers of SPARC embedded systems.The correctness and performance of entire debugging sys- tem are evaluated on SparcSim simulator. Key words:source-level debug;SPARC v8;simulator;embedded system 

摘要:软件模拟器采用软件思想模拟真实硬件_3L作情况,作为嵌入式系统研究的基础研发工具,被广泛应用于体系结构 设计调优、软硬件协同设计领域。研究提出一种在SPARC指令集模拟器平台上实现源码级调试系统的方法,一方面该方 法使用SPARC交叉调试器对运行于SPARC指令集模拟器上的应用程序进行源码级调试,有效避免了单独实现源码级调 试器所带来的调试信息解析困难、可靠性难以验证的弊端;另一方面提出了在集成开发环境下源码级调试系统的高效集 成机制,有效解决了进程间切换延时开销大、界面僵死等问题,为SPARC平台嵌入式系统开发人员提供了一种支持图形化 界面的高可靠性源码级调试系统。通过具体实现分析,对整个调试系统进行了性能评估。 关键词:源码级调试;SPARC v8;模拟器;嵌入式系统 文献标志码:A 中图分类号:TP311.5 doi:10.3778 ̄.issn.1002.8331.1204.0445 

1 引言 随着半导体技术和Soc的飞速发展,嵌入式系统的研 究与应用正在进入一个巅峰时代,从单核架构到多核甚至 众核架构的扩展,使得嵌入式系统的性能得到了前所未有 的提升。在硬件处理能力不断增强的过程中,嵌入式系统 软件的调试手段也在经历着一系列的变迁,原来的调试手 段已经逐渐退出历史舞台,新的调试手段也在不断涌现。 在嵌入式系统软件调试发展过程中,主要使用的调试手段 有以下几种:ROM Monitor方式,ROM Emulator方式,在 线仿真(In—Circuit Emulation,ICE)方式,片上调试(On.Chip Debug,OCD)方式,以及模拟器调试。由于嵌入式系统往 往是资源有限的计算机系统,CPU处理速度慢、自带存储 

基金项目:国家自然科学基金面上项目(No.61173007);国家自然科学基金青年基金项目(No.61100015);北京市科技新星计划 (No.2010B058)。 作者简介:范涛(1988一),男,硕士研究生,主要研究方向:计算机体系结构、嵌入式系统;刘高辉(1968一),男,副教授,硕士生导师,主要 研究方向:数字移动通信、集成电路设计;叶笑春(1981-),男,博士,主要研究方向:片上多核结构设计、并行计算;李文明 (1988一),男,硕士研究生,主要研究方向:并行处理器设计;宋爽(1988一),女,硕士研究生,主要研究方向:计算机体系结构; 范东睿(1979一),男,博士生导师,主要研究方向:并行处理器设计。E.mail:446934345@qq.corn 收稿日期:2012.04.23 修回日期:2012—07.19 文章编号:1002—8331(2013)04—0065—06 CNKI出版日期:2012—10—31 http://www.cnki.net/kcms/detail/11.2127.TP.20121031.0914.005.html Computer Engineering and Applications ̄af算机工程与应用 空间小、没有人机交互设备等都给嵌入式系统软件调试带 来了很大阻碍。调试手段的好坏直接影响到软件的开发 效率以及软件的质量。为此,使用一套操作方便、安全性 好、可靠性高及性能完善的调试工具对嵌入式系统软件开 发人员来说非常重要。 本文所介绍的源码级调试系统所基于的SparcSim模 拟器是一个C语言实现的SPARC指令集处理器模拟器。 它可以直接加载运行SPARC应用程序或者操作系统可执 行文件。通过该调试系统,可以对模拟器上运行的SPARC 应用级程序或系统级程序进行源码级或指令级调试。 2 GDB远程调试技术 GDB是GNU的开发工具系统中的核心工具,它是一 个功能强大的调试器,既支持多种硬件平台,也支持多种 程序语言;既可以用于本地调试,也可以用于远程调试,既 支持符号调试,也支持指令集的反汇编调试 。 嵌入式系统由于资源受限等原因,导致直接在嵌入式 系统上运行调试器变得不切实际,通常的做法是采用宿主 机(host)]JU目标机(target)的远程调试方式。即宿主机上运 行调试器,目标机上运行被调试程序及调试代理,目标机 上的调试代理和宿主机上的调试器通过某种媒介,并遵循 一定的通信协议进行通信,从而使宿主机上的调试器获取 对目标程序的控制权,对程序进行源码级或指令级调试。 典型的嵌入式环境调试模型如图1所示,宿主机上运 行交叉GDB调试器,目标机开发板上运行调试代理和被调 试程序。首先通过主机GDB调试器提供的远程调试命令 建立宿主机与目标机之间的远程链接,物理上通常是使用 计算机串口通过TCP/IP或UDP方式进行远程链接,具体 通信方式详见3.1.1节。用户通过主机GDB调试器向目标 机发送调试命令来调试运行于目标机开发板上的被调试 目标程序。目标机上的调试代理的作用是遵循宿主机GDB 串行通信协议解析宿主机GDB调试发送过来的调试命令 数据包,并将执行结果以相同的格式打包反馈给宿主机调 试器 宿主机(host) 目标机开发板(target) 图1 嵌入式环境下的远程调试模 GDB调试器提供了两种不同的调试代理用于支持远 程调试,GDBSERVER方式和STUB(插桩)方式。这两种 远程调试方式各有优缺点。GDBSERVER是一个轻量级 的调试器,它可以独立运行于具有很少存储容量的目标系 统,非常适合于嵌入式环境;而STUB方式需要通过链接器 把调试代理和被调试程序链接成一个可执行文件,如果程 序运行在没有操作系统的机器上,那么STUB需要修改串 口驱动程序和操作系统异常处理。显然,对于在有嵌入式 操作系统支持下的开发而言,GDBSERVER比STUB程序 更容易使用。对于应用程序的调试,采用GDBSERVER无 疑是最轻松和最合适的,但如果是调试操作系统内核,就 必须通过STUB来和GDB调试器交互”’ 。 以上两种调试代理所完成的工作本质上是相同的,只不 过GDBSERVER是“非侵入式”的调试代理,而STUB是“侵 入式”的调试代理,在不同的应用场合下,它们都发挥着重要 的作用。目前基于硬件的调试手段主要有ROM Monitor方 式、在线仿真(In—Circuit Emulation,ICE)方式、片上调试 (On。Chip Debug,OCD)方式及JTAG调试方式。这些调试 手段可以完全不需要调试代理,但就目前而言,调试代理 仍是调试的基石,一方面是因为基于调试代理的调试方法 已经比较成熟,另一方面原因大多数开发工具都支持基于 调试代理的软件调试。基于硬件调试手段的优势在于它 能够接触到硬件底层,可以用来调试系统软件。但是基于 硬件的调试方式首先要求嵌入式软件开发人员拥有相应 的硬件资源,而这些资源大多数都价格昂贵;其次是这种 调试方式受到系统资源的限制,灵活性不高,也不支持高 级调试功能 。 由于模拟器调试技术的易用性、灵活性、可靠性等优 良特性,模拟器调试技术被广泛应用于嵌入式系统的软件 调试、体系结构设计、系统验证和调优等领域。模拟器是 采用软件手段完整地模拟了目标硬件体系结构,所以在目 标平台编译环境下编译的应用程序都可以不加修改地在 模拟器上运行。本文所设计的基于SPARC V8指令集模 拟器的源码级调试系统也是采用远程调试,不同的是目标 系统跟宿主机是在同一台机器上,而模拟器充当的是目标 机的角色。由于模拟器设计的灵活性,在模拟器上可以很 容易地实现指令级的基本调试功能,如指令级单步,指令 级断点设置,全速运行,寄存器读写,内存读写等。这些基 本调试功能的实现为源码级调试系统中调试代理和模拟 器提供了可靠的接口,通过远程调试思想,利用主机上GDB 调试器强大的调试功能可以很方便地对运行于模拟器上 的程序进行源码级或指令级调试,从而大幅提高软件的调 试效率。