基于指令插入技术的多核处理器调试系统关键技术研究与实现
【摘要】:大部分智能电子系统都离不开启动代码、操作系统及应用程序的开发或移植。随着信息技术的飞速发展,软件的设计复杂度和调试难度也越来越大。大型程序的开发离不开良好的处理器硬件调试的支持,特别是启动代码和操作系统的调试更需要处理器本身硬件调试系统的支持。研究人员已经提出了多种调试技术和方法,部分技术已经被广泛应用于软件开发领域,如ICE、调试代理、软件仿真等。但这些调试技术对目前主流的多核多线程处理器的支持还存在一些缺陷,尚不够完善。本文针对自主X3处理器,采用指令插入方法设计实现了支持多线程的单核调试支持部件。在单核调试支持部件的基础上针对多核系统,提出了一种异步互连结构。并在此基础上设计实现了自主多核处理器调试系统。该调试系统能够同时支持处理器Bootloader调试和操作系统调试。本文的创新点和主要工作如下:1)基于复用内核流水线指令提交流水站相应控制信号的方法,提出了一套实现指令地址断点、指令断点、数据断点等匹配与处理的技术方案。由于内核流水线采用分支预测、指令乱序发射等技术,在取指流水站依据指令地址进行断点匹配,必然导致断点的误触发,如何解决这一问题是内核调试支持部件设计的难点之一。本文提出复用流水线指令提交站控制信号并从取指站开始逐站传递指令地址的方案,解决了指令地址断点匹配误触发问题,避免了复杂的流水线行为分析问题,使得本设计方案具有良好的通用性,适用于各种具有指令顺序提交特征的处理器。2)基于指令插入方法设计实现了单个内核的调试支持部件(DSU)。该部件设计方案利用内核本身的流水线并针对调试加以部件改造,以较少的硬件代价实现了对流水线的运行控制、指令插入等操作,使得DSU能够接收来自宿主机的调试命令,执行程序停顿/运行控制、指令断点和数据断点设置、硬件断点和软件断点设置、变量查看与更新等多种复杂的调试操作。3)提出了一种片上异步互连协议——CLB,基于CLB构建了自主多核处理器X3的调试系统。设计实现了针对X3处理器的调试命令接口协议和部件,将来自片外ICE的调试命令转换为DSU接口报文,并传递到目标内核。宿主机调试软件采用了开源的eclipse和GDB调试器,实现了图形化的交叉调试环境。
【关键词】:JTAG ICE CLB 调试代理 指令插入 调试支持模块
【学位级别】:硕士
【学位授予年份】:2013
【分类号】:TP332