论文部分内容阅读
随着集成电路工艺的发展,可以在单个芯片上集成更多的电路,实现单芯片的系统,也就是常说的片上系统SoC(System on Chip)。片上系统的出现使得芯片可以实现更加复杂的功能,获取更高的性能,但同时其内部的信号变得越来越难以观察和控制。所以,对于片上系统设计,加入可调试设计以提高芯片内部的可观察性和可控制性变得非常重要,已成为SoC中一个重大的研究课题。另一方面,在SoC上开发嵌入式系统的过程中,需要对程序在芯片上的运行进行控制和观察,这就要求调试除了提供可观察性和可控制性之外,应该对程序的运行不产生影响,不占用系统的固有资源。而且,嵌入式设计中目标系统上资源是根据使用需要确定的,比较紧张,不会提供足够的资源用于调试,所以对嵌入式系统的调试一般采用交叉调试的方法,即调试软件在作为控制主机的PC上运行,通过一定的电缆和调试接口与目标机相连。通过这种方式,可减少对目标系统中系统资源的要求,目标系统中只要提供一个可与主机通信的调试接口即可。本文介绍了由浙江大学信息与电子工程学系SoC R&D小组开发的RISC32E处理器IP核,并介绍了在RISC32E上开发的JTAG调试接口的设计和针对该调试接口的软件调试上位机设计。在硬件调试接口上,实现了多种可对目标机进行控制的调试异常,如调试中断、单步、软件断点、硬件断点等等,通过这些调试异常可控制程序在处理器上的运行,并获得对处理器的访问权。并且在RISC32E处理器核上增加了调试态,在调试态下,调试主机可通过JTAG通信接口对处理器核上的寄存器和存储器资源进行访问,观察处理器运行的状态,实现了对处理器核的可观察性。另外,针对JTAG通信接口上的传送效率问题,开发了一种可快速传送的方式,实现将程序快速下载到目标机存储器上,或读出存储器上的值到PC主机上。通过这种快速传送方式,节省了开发人员的时间,提高了调试开发的效率。在硬件上实现了调试接口的基础上,开发了基于命令行方式的调试器。该调试器在PC主机上运行,可通过并口到JTAG口的协议转换器wiggler实现对硬件调试接口的访问。调试器可以接收命令行输入的命令,解析并调用对应的函数,转换成JTAG接口信号,实现软件对硬件调试的控制。在SoC上往往有多个需要调试的处理器IP核,需要实现通过一个接口对多个IP核进行调试。本文中介绍了一种多模式的JTAG控制器互连方案,既满足了与IEEE 1149.1协议兼容的需要,也可以实现对SoC中单核的调试或多核的同时调试。这种方案支持直接对单核进行访问,可以复用硬件调试接口和调试上位机,是一种代价小、可重用性高的多核调试结构,可满足多核调试的基本需求。