用于多线程数字信号处理器的非侵入性线程选择性调试方法及系统的制作方法

文档序号:6434841阅读:133来源:国知局
专利名称:用于多线程数字信号处理器的非侵入性线程选择性调试方法及系统的制作方法
技术领域
本发明所揭示的标的物涉及数据通信。更特定来说,本发明涉及一种用于多线程数字信号处理器的新颖及经改进的非侵入性线程选择性调试方法及系统。
背景技术
电信及支持视频、复杂的音频、视频会议及其它丰富的软件应用的其它类型的电子设备日益地包括信号处理。信号处理需要快速的数学计算及以复杂而重复的算法的数据产生。许多应用需要实时的计算,即,信号是时间的连续函数,所述信号必须被取样且转换为数字信号以供进行数字处理。处理器必须执行在样本到达时对其实施离散计算的算法。 最优化数字信号处理器(DSP)的架构以处置此类算法。良好的信号处理引擎的特性包含 快速灵活的算数计算单元、往来于所述计算单元的不受限制的数据流、所述计算单元中的经扩展的精确度及动态范围、双地址产生器、有效的程序定序及易于编程。DSP技术的一个有前景的应用包含例如支持经由卫星或陆地链路在用户之间的话音及数据通信的码分多址(CDMA)系统的通信系统。CDMA技术在多址通信系统中的使用揭示于名称为〃使用卫星或陆地中继器的扩频多址通信系统(SPREAD SPECTRUM MULTIPLE ACCESS COMMUNICATION SYSTEM USING SATELLITE OR TERRESTRIAL REPEATERS)“的第4,901,307号美国专利及名称为“用于在CDMA蜂窝式远程手持机系统中产生波形的系统及方法(SYSTEM AND METHOD FOR GENERATING WAVEFORMS IN A CDMA CELLULAR TELEHANDSET SYSTEM)“的第5,103,459号美国专利中,此二者均受让于所请求标的物的受让人。CDMA系统通常经设计以符合一个或一个以上标准。这种第一代的一个标准是〃 用于双模宽带扩频蜂窝式系统的TIA/EIA/IS-95终端基站兼容性标准",在下文中称为 IS-95标准。所述IS-95CDMA系统能够发射话音数据及包数据。可更有效地发射包数据的较新一代标准是由名称为"第三代合作伙伴计划"(3GPP)的联盟提供的,且包含于一组可公开获得的文档中,其中包含3G TS 25. 211号、3G TS 25. 212号、3G TS 25. 213号及3G TS 25. 214号文档。3GPP标准在下文中称为W-CDMA标准。例如,采用W-DCMA标准的复杂DSP操作软件需要稳健的开发工具。此类开发工具可包含用于代码产生、集成、测试、调试及评估应用性能的开发工具。在开发及操作软件或复杂DSP应用(例如高级电信应用)时,需要精密而非侵入性的调试软件。也就是说,调试软件应用不但须足以稳健以监视、测试及支持软件缺陷及操作问题的校正,而且其必须可操作以在调试操作期间不干扰核心处理器软件。否则,在使用此类调试软件期间将不会检测到或适当地检测到核心处理软件中的任何问题。例如,循环精确剖析及非侵入性调试特征对于最优化及调试实时视频软件来说是关键的。同样,开发板需要对将大量测试数据移入及移出处理器的支持以启用广泛的实时测试。这些及其它情况需要非侵入性核心处理器软件调试。因此,在多线程数字信号处理器中存在以非侵入性方式调试多线程操作软件的需要。此外,在其中存在实时操作软件的环境中,侵入性调试程序可导致的软件的任何改变均可明确地改变处理器中的发生,这既有害于确定软件操作问题,又有害于任何必要的调试操作。从上文可显而易见,需要可以交互作用而又对多线程数字信号处理器的实时行为无侵入性的方式来操作的DSP调试过程。在多线程DSP中,一个或一个以上线程之间的交互作用也可导致核心处理器故障。虽然个别线程可如所编程及所需要个别地操作,但情况仍如此。同样,操作线程的不同组合可仍导致调试软件分析对其有益的不同类型的编程问题。此外,在多线程DSP中,可存在许多点,即需要进行调试操作的断点。此类断点可由于硬件条件、软件条件、外部条件及其它影响核心处理器应用的条件而发生。一种灵活类型的多线程DSP调试软件应用将优选地适应需要核心处理器应用调试的各种各样的条件。 事实上,灵活性可要求调试软件根据使调试软件进入操作的那些条件而变化(即使是动态地)。依据这些考虑,很明显,需要一种支持调试个别线程的多线程DSP调试过程。还需要一种准许根据核心处理应用的需要对一个、两个或更多个线程进行线程选择性调试操作的多线程DSP调试过程。还需要一种准许多线程DSP将调试过程与影响DSP操作的各种各样的条件结合的方法及系统,所述条件包含(例如)硬件条件、软件条件、外部条件及可针对其建立调试断点的其它条件。

发明内容
本发明揭示用于为多线程数字信号处理器提供非侵入性线程选择性调试方法及系统的技术,所述技术既改善了数字信号处理器的操作又改善了数字信号处理器指令在日渐强大的软件应用中的有效使用,所述应用包含在个人计算机、个人数字助理、无线手持机及类似电子装置中操作的应用,且增大了相关联的数字信号处理器速度及服务品质。根据所揭示标的物的一个方面,提供一种对多线程数字信号处理器进行非侵入性调试的方法及系统。所述方法及系统允许将调试指令存储在第一组寄存器中且将处理指令存储在第二组寄存器中。所述第二组寄存器不同于所述第一组寄存器。所述方法及系统在使用所述多线程数字信号处理器的至少一个或一个以上线程的多线程过程中进一步执行处理指令。所述处理指令的子集是用于产生至少一个调试事件的断点指令。所述过程响应于对所述断点指令中的至少一者的执行而产生至少一个调试事件且响应于所述调试事件而执行调试指令,所述调试指令允许通过将所述多线程数字信号处理器的至少一个或一个以上线程转变到调试操作模式中来对处理指令在多线程数字信号处理器中的执行进行非侵入性调试。本发明从所述多个调试指令的执行中产生调试返回以用于报告所述多线程数字信号处理器的线程的子组中正执行的调试指令。根据本文中所提供的说明,所揭示标的物的这些及其它优点以及额外的新颖特征将显而易见。此发明内容的意图并非对所请求标的物进行全面说明,而是提供本标的物的某些功能的简短概述。通过检查下文中的图式及详细说明,本文提供的其它系统、方法、特征及优点对于所属领域的技术人员将显而易见。所有此类额外的系统、方法、特征及优点均意在包含于此说明书内,且在所附权利要求书的范围内。


结合附图阅读下文列举的详细说明,所揭示标的物的特征、性质及优点将变得更加显而易见,其中所有图式中相同的参考字符均对应地标识,且其中图1是可实施本发明的通信系统的简化方块图;图2图解说明用于实施本发明教示的DSP架构;图3提供所揭示标的物的技术优点的数字信号处理器的一个实施例的架构方块图;图4呈现本发明的模式控制方面的功能方块图,其中包含在非侵入性调试操作模式中的操作;图5显示用于实现本发明的调试操作的模式控制寄存器;且图6显示本发明各种非侵入性调试算法方面的流程图。
具体实施例方式关于一种用于多线程数字信号处理器的非侵入性线程选择性调试方法及系统的所揭示标的物具有用于本文所呈现的益处可对其有利的任何类型的多线程处理的应用。 一种此应用出现于电信中,且特定来说出现在采用一个或一个以上数字信号处理电路的无线手持机中。为解释可如何使用这一无线手持机,图1提供可实施所揭示的中断处理方法及系统的所呈现实施例的通信系统10的简化方块图。在发射发射器单元12处,通常以块为单位将数据从数据源14发送到发射(TX)数据处理器16,发射数据处理器16将所述数据格式化、编码及处理以产生一个或一个以上模拟信号。接着将所述模拟信号提供给发射发射器(TMTR) 18,发射发射器18对基带信号进行调制、滤波、放大及上变频以产生经调制信号。接着经由天线20将所述经调制信号发射到一个或一个以上接收器单元。在接收器单元22处,所发射的信号由天线M接收且被提供到接收器(RCVR)沈。 在接收器26内,对所接收的信号进行放大、滤波、下变频、解调及数字化以产生同相(I)及 (Q)样本。所述样本接着由接收(RX)数据处理器观解码及处理以恢复所发射的数据。以与发射发射器单元12处执行的编码及处理互补的方式执行接收器单元22处的解码及处理。接着将所恢复的数据提供到数据汇30。上文描述的信号处理支持发射话音、视频、包数据、消息传送及其它类型的单向通信。双向通信系统支持双向数据发射。然而,图1中为简便起见未显示其它方向的信号处理。通信系统10可以是码分多址(CDMA)系统、时分多址(TDMA)通信系统(例如,GSM系统)、频分多址(FDMA)通信系统或支持通过陆地链路在用户之间的话音及数据通信的其它多址通信系统。在特定实施例中,通信系统10是符合W-CDMA标准的CDMA系统。
图2图解说明可充当图1的发射数据处理器16及接收数据处理器观的DSP 40 架构。应强调,DSP 40仅表示大量可能的数字信号处理器实施例中的一个实施例,其可有效地使用本文呈现的教示及概念。因此,在DSP 40中,线程T0:T5(参考数字42到52)含有来自不同线程的指令集。电路讨表示指令存取机构,且用于提取线程Τ0:Τ5的指令。电路M的指令被排入指令队列56中。指令队列56中的指令准备被发布到处理器管线66中 (见下文)。可由发布逻辑电路58从指令队列56中选择单个线程,例如线程TO。读取所选线程的寄存器堆60,并将所读取的数据发送到执行数据路径62供用于槽0:槽3。在此实例中,槽0:槽3保证本实施例中采用的包分组组合。来自执行数据路径62的输出去往寄存器堆写入电路64,还经配置以适应个别线程T0:T5,以返回来自DSP 40的操作的结果。因此,来自电路M且在到寄存器堆写入电路 64之前的数据路径形成处理管线66。本实施例可采用具有多达6个线程Τ0:Τ5的单个处理器。处理器管线66具有6级,其匹配从电路M将数据项提取到寄存器60及64所必需的处理器循环的最小数目。DSP 40在处理器管线66内同时地执行不同线程Τ0:Τ5的指令。 也就是说,DSP 40提供6个独立的程序计数器、用以区别处理器管线66内的线程Τ0:Τ5的指令的内部标记机构及触发线程交换的机构。因此,DSP 40提供一种经设计以用于在各种各样的信号、图像及视频处理应用上具有高性能及低功率的通用数字信号处理器。图3提供DSP 40架构的简要概述,其中包含所揭示标的物的一个显现的相关联指令集架构的某些方面。DSP 40架构的实施方案支持交错多线程(IMT)。在此执行模型中,硬件通过交错来自管线中的不同线程的指令来支持多个硬件线程TO:Τ5的同时执行。此特性允许DSP 40包含主动时钟频率,同时仍维持高核心及存储器使用率。IMT在不需要昂贵的补偿机构(例如,无序执行、广泛转发网络等)的情况下提供高通过量。此外,DSP 40可包含IMT的变化形式,例如M艾哈迈德(M. Ahmed)等人所著且名称为〃可变交错的多线程处理器方法及系统(Variable Interleaved Multithreaded Processor Method and System)“及"用于在多线程处理器中进行可变线程分配及交换的方法及系统(Method and System for Variable Thread Allocation and Switching in a Multithreaded Processor)“的共同受让的美国专利申请案中揭示的那些变化形式及新颖方法。“图3特别提供了用于应用于可采用所揭示标的物的教示的单个线程的DSP 40的核心处理架构70方块图。方块图70描绘经由总线接口(I/F) 73从AXI总线74接收指令的共享指令高速缓冲存储器72,所述指令包含混合的16-位及32-位指令。这些指令到达线程T0:T5的定序器76、用户控制寄存器78及监督器控制寄存器80。所揭示标的物的核心级系统架构还包含硅中调试系统(ISDB) 82,所述硅中调试系统经由JTAG接口 84与核心处理器70介接,下文将对此二者进行更详细描述。定序器76将混合的双向超标量指令及四向VLIW指令提供给S-管道单元86、Μ_管道单元88、LD [加载]-管道90及LD/ST [存储]-管道单元92,其均与通用寄存器94通信。 AXI总线74还经由具有共享数据高速缓冲存储器96的总线I/F 73将LD/ST指令传送给线程T0:T5。可选L2高速缓冲存储器/TCM 98信号包含具有共享数据TCM100的LD/ST指令,所述LD/ST指令进一步流向线程通用寄存器94。MSM专用控制器104从AHB外围总线 102借助Τ0:Τ5传送中断,其中包含中断控制器指令、调试指令及定时指令。全局控制寄存器106借助线程TO:T5传送控制寄存器指令。因此,DSP 40包含6个虚拟DSP核心,每一核心皆含有全局控制寄存器106及专用监督器控制寄存器80。全局控制寄存器106在所有线程之间共享。每一线程共享一共用数据高速缓冲存储器及一共用指令高速缓冲存储器。加载、存储及提取操作由共用总线接口服务。使用高性能AXI总线74及较低性能AHB总线102将数据及指令业务连接到核心外存储器及外围装置。集成的级2存储器(高速缓冲存储器及/或TCM)输入98是可选的。可通过存储器映射的加载及存储来进行外围装置存取。AHB与AXI之间的物理地址分区可配置在MSM层级处。显然,所呈现的DSP 40的架构可演进且随时间而改变。例如,DSP 40可使用的指令高速缓冲存储器的数目可从6改变为1或其它高速缓冲存储器数目。超标量分派、TCM 100处的Ll数据及其它架构方面可改变。然而,本发明标的物可在各种各样的配置中且对于DSP 40的一系列修改具有持续关联性。ISDB 82经由JTAG接口 84为DSP 40提供硬件调试器。ISDB 82通过共享系统或仅监督器寄存器以及所有线程之间的全局控制寄存器106来经由JTAG接口 84提供软件调试特征,所述仅监督器寄存器以每线程为基础被分为若干监督器控制寄存器80。系统控制寄存器用于每线程中断及异常控制及每线程存储器管理活动。全局寄存器允许与ISDB 82 交互作用以进行调试操作。ISDB 82使得软件开发者能够在DSP 40操作时调试其软件。可使用ISDB 82硬件与在ISDB 82中操作的软件调试器程序的组合来调试DSP 40操作系统软件。ISDB82支持个别地调试硬件线程。用户可暂停线程执行,观察并更改线程寄存器,观察并更改指令及数据存储器、单步骤线程,向线程填塞指令,且重新开始线程执行。可信的用户可存取所有的 ISDB 82特征,而不可信的用户仅可存取一个或一个以上特征。ISDB 82可与调试器接口卡介接以全部通过JTAG接口 84与驻存在程序计数器上的ISDB 82调试软件通信。主机调试器软件可通过读取及写入ISDB控制寄存器来与ISDB 82交互作用。例如,可通过识别将发生读取/写入的ISDB寄存器的40-位包以及32-位数据有效负载来进行通信。支持此操作的包格式可多达64个控制寄存器,每一控制寄存器均可为32位宽。ISDB 82包含用于在调试操作期间控制安全的可信寄存器。如果已设置可信的 ISDB 82,则所有ISDB 82寄存器对调试器软件均可见,且所有ISDB命令均可供使用。在可信的ISDB被清除的情况下,则ISDB 82仅准许一组受限制的操作。可使得某些ISDB 82寄存器对核心软件可见。这些寄存器可经由监督器模式控制寄存器传送指令而被存取。所述核心指令包含断点指令。当设置可信的ISDB时,此指令致使执行线程进入调试模式120。此转变将线程控制移位到ISDB 82。除了执行断点的线程之外,其它线程可根据ISDB 82编程任选地进入调试模式120。如果ISDB82不可信或未被启用,则将此指令视为NOP。优选地,所述断点指令是包中的唯一指令。图4呈现用于DSP 40的各种模式控制方面的处理模式图表110,其中包含ISDB82 在调试过程期间的操作。图5显示用于实现本发明的调试操作的模式控制寄存器122。在一个实施例中,协助到/从所揭示的操作模式的转变的模式控制寄存器122包含占据位31 到22的预留区段;等待位21到16 ;预留位16到6 ;及错误位5到0。虽然模式控制寄存器122可以许多不同方式来实施,但图5的说明性实施例可辅助了解以下对ISDB 82的论述, 其中包含ISDB 82所拥有的各种性质及其所实现的操作。现在参照图4,DSP 40支持对于所有线程具全局性且对于个别线程又具局部性的处理模式。每一 DSP 40硬件线程个别地支持用户模式112及监督器模式114两种执行模式以及等待模式116、关断模式118及调试模式120三种非处理模式,所有这些模式均可出现于图4中。一个线程的模式与其它线程无关,例如,一个线程可处于等待模式116中,而另一线程则处于用户模式112中,等等。图4的每线程模式状态图表由各种指令或事件支持。这些指令或事件包含“Exc印t”(异常)或内部异常事件、“Mt”(中断)或外部中断事件、“RTE” (返回)或来自异常模式的软件返回指令及“SSR”或SSR寄存器指令的更新、 “Mop”(停止)或可从任何模式输入的软件停止指令、“Mart”(开始)或同样可从任何模式输入的软件开始指令、“trap” (陷阱)或软件陷阱指令、“Wait”(等待)或软件等待指令、“Resume”(重新开始)或软件重新开始指令、“DE”或调试事件及“DR”或调试指令。虽然所揭示标的物的不同实施方案中的功能可与本文呈现的功能略有不同,但可对“ Mart”、 “Wait”、“ResUme”、“DE”及/或“DR”的含义给予其与所请求标的物的范围相一致的最宽泛的解释。在用户模式112及监督器模式114两种模式中,寄存器在DSP 40中均可用。用户模式寄存器分为一组通用寄存器及一组控制寄存器。通用寄存器用于所有通用计算,其中包含地址产生、标量及向量算术。控制寄存器支持例如硬件环路、谓词等专用功能。通用寄存器为32位宽且可作为单个寄存器或作为两个寄存器的经对准对而被存取。通用寄存器堆提供指令的所有操作数,其中包含供加载/存储的地址、用于数字指令的数据操作数及用于向量指令的向量操作数。DSP 40寄存器及指令支持采用标准C语言惯例的软件堆栈的有效使用。所述堆栈从高地址向低地址生长。堆栈指针寄存器指向堆栈顶部的最后有效元素。进栈操作首先使堆栈指针递减且接着将数据写入到堆栈,而出栈操作则从堆栈读取且接着使堆栈指针递
+曰O堆栈上的程序帧含有用于函数调用的返回地址及所述程序所需要的所有局部变量及数据。另外,帧指针存储在返回地址之后。此帧指针含有堆栈上的先前程序帧的地址。 其目的是通过允许调试器检查存储器中的堆栈来促进调试且容易地确定调用次序、函数参数等。调试模式120是一种其中线程正等待来自ISDB 82的命令的特殊状态。一旦发生ISDB调试事件(例如通过执行软件断点指令、来自ISDB 82的断开命令或硬件断点的发生),所指示的线程即可进入调试模式120。当处于调试模式120中时,所述核心由ISDB 82 经由来自JTAG接口 84的命令来控制。当ISDB 82因执行重新开始命令而释放线程时,所述线程可根据其当前的模式设置重新开始操作。当线程处于调试模式120中时,其由ISDB 82控制且不能由其它线程控制。可忽略来自正在运行的线程且以调试模式120中的线程为目标的Wait、ReSume Jtart或Mop指令。类似地,调试模式120中的线程可忽略非遮罩式中断(NMI)。硬件重置模式(未显示)及调试模式120对于所有线程具全局性。不考虑任何线程的处理状态,一旦断定硬件重置管脚,DSP 40即可进入硬件重置模式。在硬件重置模式中,所有寄存器均设置到其重置值。在去断定所述硬件重置管脚之前不可发生任何处理。当断定重置管脚时,处理器可转变到重置模式中且所有寄存器均可重置到其硬件重置值。在去断定重置管脚之后,可给予线程TO软重置中断。此可致使线程TO进入监督器模式114 且在重置向量位置处开始执行。所有其它线程可保持关断。此时,软件可自由地个别地控制每一线程的模式转变。每一线程可具有在模式控制寄存器122中的控制到及从所述线程的关断模式118 的转变的一个转变位。经由Mop指令写入到所述转变位关断相关联的线程。经由Mart 指令写入到所述转变位接通所述线程且触发软重置中断。每一线程可包含在模式控制寄存器122中的用于控制到及从等待模式116的转变的一个等待位。经由等待指令写入到等待位可使相关联的线程闲置,而经由重新开始指令写入可致使所述线程重新开始,无论其在设置等待模式116之前正进行什么操作。通过使用断点,DSP 40的6个线程可个别地进入及退出调试模式120。断点触发器可来自5个源,其对应于ISDB 82中所支持的5种不同类型的断点。这些断点包含硬件断点、软件断点、ETM断点、JTAG接口断点及外部断点。一旦命中断点,线程即从其当前模式(例如,等待/运行)转变到调试模式120。在调试模式120中,所述线程等待来自ISDB 82的命令。关断模式118中的线程断电且可不接受来自ISDB 82的任何命令。进入调试模式120的等待时间由实施方案界定。例如,实施方案可在进入调试模式120之前选择完成既定的操作,例如完成未决加载请求。在一个实施例中,线程识别符寄存器含有8-位读取 /写入字段且用于保持软件线程识别符。此字段由硬件调试器用来匹配断点。存在进入断点过程的若干不同方式。例如,存在两个硬件断点。如果寄存器等于预定值,则当程序计数器(PC)匹配所述预定值时,所述过程则进入到调试模式120中。除 PC之外,可存在其它限定符,例如线程ID,例如地址转译(物理地址或虚拟地址)。ASID是类似于过程中的过程ID或多线程过程中的特定线程的标签。因此,可使用物理地址、虚拟地址、ASID、PC或其它限定符来任选地获得程序在过程空间中的位置确定。ISDB 82还界定两个输出中断管脚。这些信号从ISDB 82进入到MSM 104中且被固定在MSM层级处。这两个信号是断开事件及JTAG接口 84命令。在断开事件命令下,可编程ISDB 82以便一旦在所指示的线程数目上发生断点即使此中断出现。在JTAG接口 84 命令下,JTAG接口 84发送命令来使此中断出现。硬件断点用线程程序计数器、ASID (地址空间识别符)及线程识别符寄存器中的一者或一者以上与经ISDB编程的值匹配。当满足匹配条件时,线程进入调试模式120。除命中断点的线程之外,其它线程也可经配置以进入调试模式120。此可通过(例如)断点配置寄存器编程来实现。硬件断点可支持各种特征,其中包含(例如)匹配32-位编程计数器值(其可以是物理的或虚拟的)、匹配6-位ASID值、匹配8-位线程识别符值及/或在命中断点时迫使其它线程进入调试模式120。为设置硬件断点,可通过JTAG接口 84且接着通过使用经由 ISDB 82配置寄存器启用及配置的断点来设置断点程序计数器及断点配置寄存器。所揭示的标的物还提供某些软件断点。例如,可使用用户级断点指令来进入硬件调试模式120。当执行此指令时,所述核心检查系统配置ISDB可信位。如果设置ISDB可信位,则线程可进入调试模式120。在可信ISDB被清除或ISDB被停用的情况下,断点指令的执行可被视为NOP。不存在对断点指令的程序计数器地址的限制。然而,不可以其它指令来包化断点指令。所揭示的标的物还提供用于起始监视DSP 40核心处理器的操作的ETM过程的嵌入式追踪宏或ETM断点。ETM支持各种各样的触发条件。同样,当针对这一转变而设置断点配置时,将硬件断点链接到ETM断点可发生。通过使用ETM(嵌入式追踪映射),ISDB 82 提供使用处理器硬件的邻近处理器的区段的能力以达到监视处理器操作的目的。另外,所揭示的标的物提供将一个或一个以上线程上的调试操作链接到发生在一个或一个以上其它线程上的操作的能力。例如,如果一个硬件线程命中断点,则本发明准许开始或停止另一线程中的处理。因此,本发明可保证独立地调试任何一个线程或一组线程以及控制发生在一个线程或一组线程上的事件可如何影响一个线程或一组线程上的操作。因此,所揭示的标的物提供用于在发生可导致进入到调试模式120中的断点的情况下移动到调试模式120中的路径。所揭示的标的物控制多线程数字信号处理器中的哪一线程或哪些组的线程进入到调试模式120中。ETM断点调试执行可用于处理器调试的操作, 例如性能剖析。所述块可提供用于进入调试过程的断点。在此情况下,针对匹配线程而启用硬件断点及ETM断点线程数目掩码两者。在此情况下,DSP 40可仅当在ETM断点之后触发硬件断点时切换到调试模式120。可忽略在发生ETM断点之前发生的任何硬件断点触发。当将断点配置设置到“0”或不设置时,硬件断点及ETM断点线程数目掩码可正常操作。也就是说,当被启用时,对应的断点触发器可致使线程立即切换到调试模式120。在ISDB断开命令下触发JTAG接口 84断点以使得命令掩码中所指示的线程可进入调试模式120。ISDB 82还通过外部断点来支持多核心调试。当在外部调试请求信号上检测到上升边缘时触发这一断点。一旦此事件发生,外部断点线程数目掩码中所指示的所有线程即可进入调试模式120。所揭示的标的物的另一特征称为“指令填塞”。当主机调试过程力图检查核心的状态时,指令填塞发生。因此,当断点发生时,所述过程力图检查所述核心以确定所述操作正在所述核心处发生。进行所述操作的机制是,发送处理器指令以达到在正进入调试操作模式120的线程上执行指令的目的。在指令填塞操作中,所述指令可在调试模式120时间引导处理器读取所有受影响的寄存器或所有受影响的寄存器的一部分。另外,调试模式120可引导处理器加载预定一组或预定类型的指令。除读取及写入所述状态之外,基本上任何指令均可在此过程中被读取或写入到所述核心。例如,如果期望在处理器核心上运行某些算法或过程,则所揭示标的物现在允许设置选项。在指令填塞过程中,到一位置的分支及所述过程可接着释放用于操作的代码。此代码可包含(例如)用于出于所规定的一组原因而执行某些功能的代码。一个此原因可以是处理复杂的数据结构。如果指令为将所有元素读取出既定的数据结构,则所述过程可为重构所述数据结构。这一过程可极为困难。在具有待读出数据结构的指令集的情况下,所述过程可为调用所述指令集以获得特定的指令,接着特定的指令可运行到所需元件(例如元件12)。此将明显地简化许多类型的数据检索及类似的操作。指令填塞是一种供ISDB 82用以执行核心上的指令的方法。出于各种原因来填塞指令,其中包含用于读取及写入核心寄存器及存储器、用于为用户提取的调试器操作及用于用户输入的指令。为填塞指令,用户必须首先用待执行的32-位指令对填塞指令寄存器进行编程。为进行指令填塞,可通过首先将命令字段设置到填塞代码且接着将线程数目字段设置到用以接收指令的线程来写入ISDB命令寄存器。在可填塞指令之前,所选线程可处于调试模式120中。如果设置线程数目中的一个以上位或所选线程不处于调试模式120 中,则结果是不确定的。接着,包括设置所填塞的指令(用户或监督器)的特权级的阶段发生。在发布填塞命令之后,可以选定的特权级在选定的线程上执行指令。在指令填塞期间,程序计数器不前进。使用程序计数器(导致异常的分支或指令)的所填塞的指令可使用线程的当前程序计数器值。在所填塞的指令导致异常的情况下,ISDB状态寄存器可指示异常已发生。所述线程可保持在调试模式120中。所述线程的经设计的寄存器可反映所述异常状态。优选地,ISDB 82调试软件在填塞可导致异常的指令之后询问ISDB状态寄存器以了解是否发生了异常。一旦已认识到异常,本文所揭示的过程即包含关于如何处置所述情况的若干选择。例如,调试器软件可选择对异常返回点处的软件或硬件断点进行编程且重新开始线程以运行处置器。接着,调试器可将线程重新引导到OS “帮助器”功能。接下来可发生使用单个步骤步进通过处置器及手动地解决所述问题(例如重新加载TLB)。然而,所述特定策略可根据OS及/或软件调试器实施方案而不同。可通过填塞适当的指令序列来存取寄存器、高速缓冲存储器及存储器。用于指令的步骤序列可包含使用ISDB调试算法来读取/写入寄存器及高速缓冲存储器。所述调试器软件可通过填塞适当的控制寄存器传送指令来读取/写入线程寄存器以在核心寄存器与ISDB邮箱之间移动数据。可使用监督器特权级来填塞此指令以确保不发生异常。使用重新开始命令来将线程从调试转变到在核心模式控制寄存器中编程的模式。 存在两种重新开始的方式,从JTAG接口 84命令或从外部信号。如果从JTAG接口 84命令重新开始,则命令掩码中所指示的处于调试模式120中的线程终止到模式控制寄存器中所指示的模式。如果从外部信号重新开始,则外部重新开始线程数目掩码中所指示的处于调试模式120中的线程转变到模式控制寄存器中所指示的模式。执行ISDB重置命令迫使硬件重置且导致整个DSP(所有线程)重置。此可将所有寄存器设置到初始值,例如关断线程1-5,且向线程TO发送重置中断。如果需要仅重置某些线程,则此可以首先以适当的掩码设置填塞Mart指令的程序来完成。此可导致重置中断对所于指示的线程而未决。接着所述过程包括在所需线程上执行ISDB重新开始指令。另一类型的断点是JTAG接口 84断点,其中主机将命令发送到处理器且宣告断开。 基本存在进入的外部管脚。在此实施例中,ISDB 82控制控制寄存器可由调试器主机软件经由JTAG接口 84来存取。ISDB 82提供可由主机系统用来配置ISDB 82以执行不同调试任务且与DSP 40核心处理器通信的各种控制寄存器。例如,ISDB 82状态寄存器指示ISDB 82的当前状态。ISDB 82状态寄存器的位指示哪些线程处于“等待”对运行模式中且其它位指示哪些线程处于“关断”模式中。其反映核心模式控制寄存器的E位字段。通常不能调试(例如)关断的线程。因此,如果ISDB命令被发送到关断的线程,则结果是不确定的。 其它调试模式120状态位指示哪些线程处于调试模式120中。如果这些位指示线程处于调试模式120中,则等待/运行模式位指示在进入调试模式120之前的模式。
另外其它位可指示填塞指令状态,S卩,填塞指令过程是否已成功或填塞指令是否导致异常。ISDB命令状态位表示ISDB命令是成功还是失败。另一组位在任何线程处于调试模式120中时提供全局中断停用,以便针对调试模式120中的线程来停用中断,且针对其它线程启用中断。当任何线程处于调试模式120中时,针对所有线程停用中断。另外其它位可形成指示依据外部重新开始信号重新开始哪些线程的字段。依据外部重新开始信号,对于具有掩码位设置的线程,如果所述线程处于调试模式120中,则其可重新开始其先前的模式,否则不存在任何影响。另一字段指示依据外部断点请求断开哪些线程。在ISDB 82中接收外部断点信号时,对于具有掩码位设置的线程,如果所述线程不处于调试模式120中,则其可进入调试模式120,否则不存在任何影响。同样,ISDB配置指令可启用或停用ISDB 82的各种特征。当任何线程处于调试模式120 0中时,全局中断停用发生,从而针对处于调试模式120中的线程停用中断。ISDB配置寄存器中的另一字段可指示可依据外部重新开始信号重新开始哪些线程。依据外部重新开始信号,对于具有掩码位设置的线程,如果此线程处于调试模式120中,则所述线程重新开始其先前的模式。否则,不存在任何影响。ISDB寄存器中的又一字段可指示当ISDB 82接收到外部断点请求时断开哪些线程。在接收到外部断点信号时,对于具有掩码位设置的线程,如果所述线程不处于调试模式 120中,则其可进入调试模式120。否则不存在任何影响。对于处于调试模式120中的线程,断点信息寄存器指示哪一触发导致了断点。此可为指示在断点指令执行时断开哪些额外线程的6-位字段。最低有效位可针对线程数目 0,下一位针对线程数目1,依此类推。在断点指令执行时,曾执行断点的线程可进入调试模式120。另外,具有设置在此掩码中的位的线程可进入调试模式120。存在从ISDB 82去往MSM的中断信号断开事件。一旦此掩码中指示的线程数目进入调试模式120中,即使断开事件中断出现。在一个实施例中,位0针对线程数目0,位1 针对线程数目1,等等。对于处于调试模式120中的线程,这些位指示导致转变到调试模式 120的原因。对于不处于调试模式120中的线程,这些位是不确定的。因此,位指示硬件断点、断点指令执行、ETM断点、JTAG接口 84断点、外部断点的存在。同样,其它位可指示断点源。断点程序计数器包含若干寄存器,所述寄存器与断点程序计数器相同,除了所述寄存器控制硬件断点之外。使用断点配置寄存器来与线程的程序计数器寄存器进行比较。ISDB 82命令寄存器可包含用于指示哪些线程可转变到调试模式120的断开命令。对于重新开始命令,所述断点命令用于指示将重新开始哪些线程。ISTEP命令指示哪些线程将在步进式过程中步进。填塞指令命令指示哪一线程可接收用于执行指令填塞操作的填塞指令。填塞指令特权允许某些所填塞的指令在用户模式中执行,而其它指令则可在监督器模式中执行。依据断开命令,DSP 40可将线程数目掩码中所指示的所有线程转变到调试模式 120。所述重新开始命令致使处理器将线程数目掩码中所指示的所有线程转变到运行模式。 步进命令允许数字信号处理器步进用于一个包的线程数目掩码中所指示的所有线程。如果所指示的线程不处于调试模式120中,则不存在任何影响。填塞命令致使数字信号处理器在线程数目掩码中所指示的线程上执行填塞指令寄存器中所含有的32-位指令。仅可设置所述掩码中的一个位。如果所指示的线程不处于调试模式120中,则所述行为是不确定的。重置命令起始对DSP的硬件重置。将寄存器设置到其初始值,关断线程1到5,且给予线程TO重置中断。依据中断命令,ISDB 82使JTAG 接口 84命令中断出现。此信号从ISDB 82中进入到MSM 104中且被固定在MSM层级处。 ISDB 82启用寄存器启用ISDB 82操作且同时检验“安全” ISDB 82启用位及ISDB 82时钟的状态。在已寻址支持ISDB 82的操作的各种命令之后,ISDB 82调试操作的例示性过程可更具指令性。因此,图6显示用于本发明各种非侵入性调试算法方面的ISDB 82流程图。 虽然可使用各种方法来执行图6的ISDB 82过程流,但所呈现的所揭示标的物的基本流实现了所需的非侵入性调试操作。因此,参照图6,ISDB进入步骤130过程流可从JTAG接口 84开始。非侵入性调试过程流可从ISDB进入步骤130继续进行到ISDB启用询问132,ISDB 启用询问132测试是否已启用ISDB以用于DSP 40操作。如果是,则过程流去往硬件断点询问134。硬件断点询问134测试是否已遇到硬件断点。如果没有,则过程流可继续到软件断点询问136。否则,过程流去往调试操作步骤138,调试操作在此步骤开始。软件断点136 测试软件断点的存在且在存在软件断点的情况下将ISDB82过程引导到调试操作步骤138。 否则,过程流继续到ETM断点询问140。ETM断点140测试ETM断点的存在且在存在ETM 断点的情况下将ISDB 82过程引导到调试操作步骤138。否则,过程流继续到JTAG接口 84 断点询问142。JTAG接口 84断点142测试JTAG接口 84断点的存在且在存在JTAB断点的情况下将ISDB 82过程引导到调试操作步骤138。否则,过程流继续到外部断点询问144。 外部断点144测试外部断点的存在且在存在外部断点的情况下将ISDB 82过程引导到调试操作步骤138。否则,过程流返回到ISDB启用询问132。可在DSP 40的操作期间重复此类型的循环。一旦ISDB 82过程流去往调试操作步骤138,“等待调试”询问146即测试等待模式116是否有效。如果是,则在等待116模式终止前不会发生调试操作。如果等待模式116 不有效,则过程流去往ISTEP调试询问148。ISTEP调试询问148测试个别的步骤调试是否针对ISDB 82操作有效。如果是,则过程流去往ISTEP调试步骤150以执行此类型的调试操作。如果ISTEP调试不有效,则过程流可去往填塞指令询问152。填塞指令询问152测试指令填塞操作是否针对ISDB 82操作有效。如果是,则过程流可继续进行到填塞指令步骤 154,从而表示本文所描述的指令填塞操作。如果指令填塞不有效,则过程流去往询问156。在询问156处发生对是否已通过调试操作产生了核心DSP 40重置指令的测试。 如果是,则过程流去往JTAG接口 84以用于递送核心DSP 40数字信号处理器重置命令。如果尚未产生此重置命令,则过程流去往中断存在询问158。中断存在询问158测试是否存在对调试操作的中断。如果是,则ISDB 82操作中断且过程流去往JTAG接口 84以用于向 DSP 40递送调试操作已被如此中断的信号。如果不存在中断信号,则过程流去往重新开始正常线程询问160以用于测试是否将开始正常线程操作且是否将停止调试操作。如果是, 则过程流去往JTAG接口 84,DSP 40将受影响的线程从调试操作模式120转变到正常操作模式。如果将继续调试操作,则过程流返回到调试操作步骤138。很明显,ISDB 82过程流的操作可显著地不同且仍在所揭示标的物的范围内。因此,提供图6的ISDB 82过程流以达到作为本发明一个可能的实施例而图解说明的目的。
所揭示标的物的另一方面包含通过DSP 40中的电力崩溃来进行调试。ISDB配置寄存器可由调试软件(经由JTAG接口 84)及通过监督器核心软件(经由CR传送指令)两者来读取及写入。核心软件可使用此特征来在电力崩溃时保存及恢复ISDB配置。因为有多个主机来写入这些共享寄存器,所以仅以一致及共同排他的方式来写入所述寄存器可是重要的。政策是,尽管核心处于断电或加电的过程中,但不允许JTAG接口 84来读取/写入这些寄存器。类似地,当JTAG接口 84处于修改这些寄存器的过程中时,不允许所述核心断电。通过硬件与软件的组合来加强此政策。系统配置中的位(ISDB核心准备寄存器位)可仅由核心监督软件写入。此位在对DSP 40的硬件重置时被清除。当清除所述位时,所有 JTAG接口 84读取及写入包均可返回无效状态。通过使用此位,所述核心可向主机软件指示其何时已完成加电序列且准备向ISDB通话。此给予核心恢复热启动加电(恢复)序列中的任何所保存的ISDB 82配置的机会。通过电力崩溃进行调试的一个实例可存在于其中需要具功率意识的蜂窝电话中。 而当需要执行调试时,DSP 40可关断或进入闲置状态。因此,所揭示的标的物提供设置可仅在电力崩溃情况下表明其自身的断点的能力。此提供调试的能力,即使是核心甚至不在操作或“接通”时。在所揭示的实施例中,通过电力崩溃进行调试包含设置用于与DSP降低电力相关联的配置的一组断点。在DSP降低电力之前,DSP将所述配置保存在特定的寄存器中。这些特定的寄存器及配置允许RAM过程的暂停。因此,当DSP再次增加电力时,所述配置处于执行下一调试操作的位置中。可以各种方式来实施本文中所揭示的用于多线程数字信号处理器中的非侵入性线程选择性调试的处理特征及功能。例如,不仅DSP 40可执行上文所描述的操作,而且本实施例还可实施于专用集成电路(ASIC)、微控制器、数字信号处理器或经设计以执行本文中所描述的功能的其它电子电路中。此外,本文所描述的过程及特征可存储在用于由此类各种信号及指令处理系统读取及执行的磁性媒体、光学媒体或其它记录媒体中。因此,提供上文对优选实施例的说明以使得所属领域的技术人员均能够制作或使用所请求的标的物。 所属领域的技术人员将易于了解对这些实施例的各种修改,且本文中界定的一般原理在可不使用创新能力的情况下适用于其它实施例。因此,本文并不希望将所请求的标的物限定为本文中显示的实施例,而是想要赋予其与本文中所揭示的原理及新颖特征相一致的最宽广范围。
权利要求
1.一种用于以非侵入性地调试多线程数字信号处理器的系统,其包括 多个线程,其在所述多线程数字信号处理器处执行多个处理指令;断点指令集,其产生至少一个调试事件,所述调试事件与所述多个线程的一个以上经指示线程相关联,其中所述一个以上经指示线程由掩码所指示;调试指令,其响应于执行至少一个断点指令为所述一个以上经指示线程产生所述至少一个调试事件;一个以上所述多个线程响应于所述至少一个调试事件执行所述调试指令,所述调试指令通过将所述多线程数字信号处理器的所述一个以上经指示线程转变为调试模式,来非侵入性地调试所述多个处理指令在所述多线程数字信号处理器处的所述执行;以及调试返回指令,其从多个所述调试指令的所述执行产生至少一个调试返回,以及报告所述多个所述调试指令在所述多线程数字信号处理器处的所述一个以上经指示线程中的所述执行。
2.如权利要求1所述的系统,其进一步包括娃中调试系统ISDB,其接收所述至少一个断点指令,其中所述至少一个断点指令响应于确定所述ISDB不可信、所述ISDB未被启用或其结合而被视为无操作NOP。
全文摘要
本发明涉及用于多线程数字信号处理器的非侵入性线程选择性调试方法及系统。本发明揭示用于数字信号处理器的设计及使用的技术,包含(但不限于)用于处理通信(例如CDMA)系统中的发射的技术。所揭示的方法及系统在包含使用断点指令来产生调试事件的多线程过程中提供处理指令。产生调试事件响应于断点指令的执行而发生且响应于所述调试事件而执行调试指令。所述调试指令通过将至少一个或一个以上线程转变到调试模式中来调试所述多线程处理器中的处理指令。本发明产生调试返回以用于报告所述多线程处理器的所述线程的子组中正执行的调试指令。
文档编号G06F11/36GK102360330SQ20111030119
公开日2012年2月22日 申请日期2007年11月12日 优先权日2006年11月15日
发明者卢奇安·科德雷斯库, 威廉·C·安德森, 苏雷什·文库马汉提, 路易斯·阿奇列·詹尼尼, 陈旭峰, 马洛耶库马尔·皮拉 申请人:高通股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1