了解片上系统(SoC)的调试架构
本文将介绍调试的基本概念并简要阐述其在片上系统(SoC)中的实施方法,统称为调试架构,其中参考了Nexus和ARM CoreSight标准。
基本调试原理
片上系统(SoC)正在变得日趋复杂,为了充分利用先进的硬件,软件的复杂性也相应地增加了;因此,软件调试逐渐成为摆在开发人员面前的一个难题。为了帮助开发人员调试他们的软件,在SoC内部构建了一个硬件生态系统,通常被称为SoC调试架构。在深入研究调试架构的细节之前,让我们首先了解一下调试需求。
总的来说,调试需求包括以下几点。
● 观察系统寄存器和处理器的状态,并能够在不影响代码执行的情况下修改它们;
● 能够根据需要暂停和启动处理器;
● 获得SoC上运行的各种软件线程的信息,从而对软件进行调试和优化,以获得更好的性能配置在出现特定运行时事件时触发对此类信息的收集;
● 使用调试资源防止对系统进行未经授权的访问;
● 能够在不同的系统低功率模式下进行调试。
中止处理器以获得系统的各种状态和参数,这被称为静态/暂停模式调试,而在不干扰正常代码执行流的情况下访问系统被称为动态/监视模式调试。在动态/监视模式调试中,通常会在出现调试事件时执行一个监视程序。该程序随后与外部调试器通信,在不中断系统的情况下执行请求的访问。这种调试模式适用于实时系统,如引擎控制器和硬盘控制器中的伺服机制。
获得有关运行线程和相关程序和/或数据流的信息的过程称为跟踪。在这种调试模式下,数据在专用的并行接口而不是调试接口上输出。
过去,软件程序主要通过系统的电路内仿真器(ICE)和周期准确的软件模型进行调试。在ICE调试模式中,将要进行调试的组件(通常为处理器)替换为一个仿真器组件,后者允许对组件的各种内部状态和寄存器进行访问,同时执行被替换组件的工作。尽管这种方案非常快速和有效,但是ICE模块引入了非常高的成本。虽然周期准确的软件模型的成本更低,但是速度比ICE更慢,并且开发这种模型会显著地增加系统的复杂性。为了克服这两种方法的局限性,制定了许多用于开发专用硬件生态系统/调试架构的标准(如Nexus、CoreSight)。这种专用硬件生态系统/调试架构构成了完整系统的一部分,为复杂软件的调试提供帮助并以较低的成本实现ICE功能。
- IP核在SoC设计中的接口技术 (08-06)
- 视频跟踪算法在Davinci SOC上的实现与优化(10-06)
- 基于赛灵思Spartan-3A DSP的安全视频分析(02-17)
- Linux下Sniffer程序的实现(06-12)
- linux操作系统下的进程通信设计(01-24)
- 基于S3C44B0X和uClinux的Socket通信实现(02-28)