论文部分内容阅读
随着嵌入式系统的飞速发展,嵌入式系统开发工具在开发过程中所起的作用日益突出,相关的研究、技术也随之不断更新。嵌入式交叉调试器是嵌入式系统开发者使用最多的工具,也是整个开发周期中使用时间最长的工具。其除了要具备传统调试器的断点追踪、变量查询等基本功能,还必须具备远程下载、远程调试控制,甚至虚拟机的部分功能,从而导致交叉调试技术实现的复杂程度要远高于传统调试器。本文首先简要说明了嵌入式软件的开发过程,回顾了嵌入式交叉调试技术的发展历程。然后分析了调试器的整个框架和核心,借此向读者展现调试器的相关理论和设计思想。接着本文引入了调试代理概念,从内核级代理和应用级代理两方面入手,分别研究、对比了两种代理的技术实现途径和方法,并对调试器和代理中的关键流程,如断点执行、进程/线程控制、目标机封装、内核模块加载等进行详细阐述,最后在嵌入式Linux系统上设计并实现了内核级和应用级调试代理。此外,本文还针对ARM7 系列CPU 对应的JTAG调试器进行了深入研究,结合ARM-ICE、Flash的特点,提出了目标机封装框架、多Flash芯片支持框架,最后设计并实现了JTAG 硬件级别的调试器-JTAG-debugger。整个交叉调试器采用模块化和层次化设计、功能强大,通过目标机、Flash 封装,具有很高的可移植性、扩展能力,能够满足嵌入式系统开发的特殊需求。最后,作为研究成果的应用领域之一,本文所完成的交叉调试器作为一个重要的系统开发工具,成功应用于国家863 基金项目-“面向智能终端的嵌入式Linux开发平台”之上。嵌入式开发研究领域正在向实时、分布式、SOC 等方向发展,对交叉调试技术提出了很多新的研究问题和方向。本文虽力图在方方面面覆盖其设计实现,但由于交叉调试器的复杂程度高、体系庞大、实现难度较大等,仍有上述部分研究领域无暇涉及,希望后续研究能够在上述方面深入下去。