CN101084485A - 用于改善片上仿真系统中高级语言的仿真速度的装置和方法 - Google Patents
用于改善片上仿真系统中高级语言的仿真速度的装置和方法 Download PDFInfo
- Publication number
- CN101084485A CN101084485A CNA2005800220725A CN200580022072A CN101084485A CN 101084485 A CN101084485 A CN 101084485A CN A2005800220725 A CNA2005800220725 A CN A2005800220725A CN 200580022072 A CN200580022072 A CN 200580022072A CN 101084485 A CN101084485 A CN 101084485A
- Authority
- CN
- China
- Prior art keywords
- program
- execution
- register
- debugging
- condition
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/362—Software debugging
- G06F11/3648—Software debugging using additional hardware
Abstract
一种用于在调试操作过程中跳步执行和跳出执行在目标处理器(120)的程序执行期间所遇到函数的方法和装置,是在仿真器(125)和调试模块(140)的组合内实现的。通过在调试模块中可具有在片上可用的通信和存储器件(230、235、240、255、257、260),可在处理器本地以硬件速度来进行单步调试和地址的细节比较。该方法可正确地确定提供循环和嵌套函数调用的算法步骤,而无需主机调试平台和调试软件应用程序的组合干预。这就避免了否则调试主机级别在完成相同处理的循环通信所必需的时间量。用于目标处理器的超控指令(255)可插入和替代在相同调试模块控制(245)之下要跳到的存储器位置,从而有效地使用硬件资源。
Description
技术领域
本发明涉及代码开发过程中的调试软件领域,尤其涉及在处理器上运行调试软件时的单步执行和断点确定的操作的硬件控制。
背景技术
软件或代码开发是参考所构想程序的详细说明、采用源代码语言编写程序语句、随后进行编译、链接,和下载最终可执行代码文件以及调试结果的过程。调试过程将确定是否能够以及何时能够实现适当的程序动作。如果不能实现期望结果,则整个过程就采用更新源代码的方式来重复,直至调试部分显示所运行的代码具有原始说明中所期望的适当动作。
调试器可单独使用,也可以是与软件开发工具链的其余工具一起合并成集成开发环境(Integrated development environment(IDE))的应用。软件开发工具链可包括源代码编辑器、语法代码检验器、编译器、链接器和加载器,从而可产生可执行代码文件。调试器可提供处理器和编程环境的多个视窗。当结合图形用户界面(GUI)时,就可在窗口中出现各个视窗。窗口在源代码编辑器中示出源级视图。处理器的其它视窗可包括:程序堆栈,该程序堆栈是一种包含并存储适用于在跳入新例程时返回处理器状态的数据结构;以及汇编级视窗(或者机器码视窗)、多个各种寄存器的视窗、用于确定数据和变量值的寄存器内容视窗、由编译器所产生的调试信息视窗。对于在处理器对正在开发程序的运行过程中可用的这些视图,动作可通过询问和跟踪来检索,从而编程人员可确定是否已经获得了期望的响应。
调试器可读写所要调试的处理器的可执行代码空间。在要设置的断点的位置上,可删除和保存原始指令。中断指令,例如特定操作码(操作数)或者非操作指令(非操作数)可设置在原始指令位置上以影响操作过程的中断。然后可在期望位置上开始代码执行。当执行到达新设置的断点位置时,处理器就停止。为了使任何执行都能够继续运行或者单步运行,就从存储器中检索原始指令并且将其放置在原始位置上。可继续执行,并且可产生原来想要的程序行为。
在现有技术中可以发现有关这一领域中改进现有技术的信息。例如,授予Alpert等人的美国专利No.5,740,413描述了用于提供地址断点、分支断点和单步执行的方法和装置。另外,Halcomb等人申请的美国专利申请No.2002/0170030描述了将程序下载到可编程逻辑器件(PLD)中,以便于在仿真操作中模仿处理器运行。
然而,这些参考文献在一个方面或者多个方面存在缺陷:当重新启动或者单步执行代码时,没有一个允许原始代码来超控已经写入程序存储器中用于表示断点的特定中断指令;没有一个允许以硬件速度进行断点处理;没有一个能在可结合循环函数的情形下处理跳出函数;没有一个能在不使调试器直接参与具体逐步执行方法的情形下管理断点;以及没有一个能根据片上调试状态来处理这些问题。
在现有技术下,单步调试(step through)程序包括大量的仿真器干预,用于执行少量的步骤并读取处理器的状态以确定下一步要干什么。如果在片上调试模块中没有硬件支持可用,则执行还正确处理循环调用的跳步和跳出操作会耗费大量的时间。所需要的是一种允许全速执行大多数指令同时执行跳步和跳出函数的方法。由于这些函数需要数百万条处理器指令来完成,因此可获得显著的执行效益。此外,随着片上调试模块不断增加它要添加其上的各个器件的成本,能在形成片上调试模块时重新使用现有硬件将是极大的优点。
发明内容
本发明涉及一种在调试时快速单步调试程序语句的装置。该装置是一个调试模块,用于在调试期间管理软件在目标处理器上的执行。该调试模块包含物理层,它被配置成连接调试模块与仿真器以便于交换调试信息。该调试模块还包含访问控制层,它实现对调试模块的普通访问。该访问控制层被配置成接收来自仿真器的通信控制命令、寄存器标识和模式控制命令。调试模块还包含应用层,用于管理目标处理器的操作。该应用层被配置成可接收来自仿真器的命令、模式设置和处理器指令数据。
本发明还涉及一种用于软件在目标处理器上执行时跳步函数调用的方法。该方法包括:通过根据断点设置所需更新程序存储器而在要执行的软件中设置一个或多个断点,将调试模式设置成跳步,从当前程序位置扫描程序存储器以发现下一连续符号断点,将调试寄存器的内容设置成在扫描步骤中发现的任一断点地址、或者如果未发现任何断点地址则将其内容设置成当前程序位置的最大偏移,将程序计数器设置到程序中的期望执行点上,启动所述程序的执行,当程序计数器等于调试寄存器的内容时就暂停程序的执行,执行中断指令或者遭遇流程中的特定变化。如果在当前程序计数器中没有发现任何中断指令或符号断点,则处理就从扫描阶段开始重复,否则过程就通过读取和校正程序计数器来完成。
本发明还涉及一种用于软件在目标处理器上执行时跳出函数调用的方法。该方法包括:在要执行的软件中设置一个或者多个断点,根据断点设置所需更新程序存储器,将调试模式设置成跳出,将调用级别计数寄存器设置为零,将程序计数器设置在程序中的第一期望执行点上,启动程序的执行,当调用级别计数寄存器变成小于零时就暂停程序的执行,以及读取和校正程序计数器。
本发明的这些和其它性能、方面以及优点将参考以下描述和所附权利要求而得到更佳的理解。
附图简要说明
图1示出了用于集成电路芯片的通用调试环境。
图2示出了调试模块的寄存器级视图、以及与仿真器和所要调试的图1目标处理器的相关连接。
图3示出了在图2调试模块的断点控制部分的寄存器级视图、以及与程序存储器和目标处理器的连接。
图4示出了图2调试模块内的流程控制状态机的状态流程图。
图5A示出了调试的跳步方法的过程步骤。
图5B进一步详细地示出了用于实现图5A中在程序存储器中扫描设定断点的过程步骤。
图5C进一步详细地示出用于实现图5A中启动程序执行的过程步骤。
图6A示出了调试的跳出方法的过程步骤。
图6B进一步详细地示出用于实现在跳出方法中对跳步方法的调用。
具体实施方法
参看图1,图1示出了通用调试环境100的示例性实施例。该通用调试环境100的实施例包括与仿真器125相连的调试主机平台105。仿真器125连接到集成电路芯片150,该芯片包括执行要调试程序的目标处理器120。
例如个人计算机形式的调试主机平台105包含由软件开发工具包110和调试软件应用115所组成的通用编程环境。软件开发工具包110和调试软件应用115可访问可执行图像文件135。调试软件使用来自图像文件135的信息来创建符号表117。该符号表包含要调试程序中高级指令的地址等等。这些地址在调试过程中用作符号断点。调试主机平台105通过内部连接和器件(未示出)将软件开发工具包110和调试软件115耦合到接口(I/F)160,该接口通过连接总线130A与仿真器125耦合。该仿真器可包含事件存储器127,它包含全部或部分符号表117的副本。在调试主机平台105的接口160和仿真器125之间的连接可以是,例如,RS23总线、通用串行总线(USB)或者光纤连接。
集成电路芯片150包含调试模块140、目标处理器120以及程序存储器170。仿真器125通过调试模块140由总线连接130B连接到集成电路芯片150。调试模块140直接和通过多路复用器155与目标处理器120相连。目标处理器120还连接到程序存储器170。
在调试主机平台105内,调试软件115向用户提供由窗口(未示出)构成的图形界面,各个窗口表示调试处理的不同视窗。调试软件115与其它应用程序(诸如软件开发工具包110)结合,以形成通用编程环境,用户可用该编程环境来确定在目标处理器120上执行的代码的适当程序操作。
目标处理器120一般可包含:程序计数器250(图2)、程序堆栈(未示出)、指令寄存器315(图3)、多个通用寄存器(未示出),以及本地存储器(未示出)。调试软件115将通过目标处理器120,部分地是通过设置断点、设置监视点(数据断点)、源代码指令级的单步执行、机器代码级的单步执行或者通过提供故障检测支持来控制程序的执行。调试软件115询问目标处理器120来呈现出堆栈、寄存器、机器状态和要在程序存储器170中执行的代码的视窗。此外,调试软件115可修改在程序计数器250、堆栈、通用寄存器或者程序存储器170中的值,以便进行拟定的变化来校正所发现的任何问题。
图2示出了仿真器125,它与调试模块140的物理层200相连接。物理层200保存同步的通信细节,使得仿真器125可向内部调试模块数据总线210发送数据和命令,也可接收来自调试模块数据总线210和各种相连寄存器的数据(下文将进一步讨论)。物理层还连接到访问控制层220的访问控制状态机225,以联合协调命令将如何输入访问命令寄存器230。访问命令寄存器230与调试模块数据总线210相连接。
访问控制状态机225连接到应用层265中的流程控制状态机245。访问控制状态机225用于管理访问命令状态(未示出)以及与流程控制状态机245协调命令状态信息。流程命令寄存器240和模式寄存器235连接到流程控制状态机245,从而其内容可直接引导流程控制状态机245。该流程控制状态机245还连接到目标处理器120上的接口(未示出),用于控制要进行的执行。
应用层265包含签名寄存器257,该签名寄存器由调试软件115用来识别所要调试的器件。超控指令寄存器255设置在应用层265中,从而仿真器125可在每当程序重新启动或者从包含需要中断指令310的位置开始单步执行时向目标处理器120发送干预指令而不必更新程序存储器170。在调试操作中,调试寄存器260将包含断点的地址、或者所调用函数的计数值。所调用函数的计数值在调试过程中输入或返回函数调用时在调试寄存器260中增1和减1。签名寄存器257、超控指令寄存器255和调试寄存器260各自连接到调试模块数据总线210。目标处理器120内的内核270通过调试模块数据总线210连接到调试模块140。内核270内的程序计数器250可由调试模块140访问,以观察和控制目标处理器120正在执行的程序的位置。
图3示出了程序存储器170的一示例性实施例,例如闪存存储器。程序存储器170还可用其它方式实现,例如,SRAM、DRAM、与主存储器相连的一个或多个缓存器的存储器分层结构、结合盘式驱动存储器的虚拟存储器系统、或存储器媒介的组合。程序存储器170设备通过指令数据总线连接335连接到目标处理器120。中断指令310可通过用户或由仿真器插入直接编程为可执行图像文件135,作为应用程序的断点。程序存储器170连接到第一多路复用器155。第一多路复用器155的输出端连接到目标处理器120内的指令寄存器315。
指令地址总线370将目标处理器120的程序计数器250与程序存储器170和比较器330相连。调试寄存器260和指令地址总线370的输出端是比较器30的输入端,该输出端连接到流程控制状态机245。程序计数器250的地址在程序执行过程中置于指令地址总线370上,并可与调试寄存器260中的地址作比较。当指令地址总线370上的地址与调试寄存器260中所存储的地址相匹配时,就向流程控制状态机245发送一信号,从而如果以由模式寄存器235给出的现有操作模式使能,则通过强制硬连线中断指令进入指令寄存器315来暂停目标处理器120的执行。
超控指令寄存器255的输出端连接到第二多路复用器320,该多路复用器是由流程控制状态机245控制的。该多路复用器还通过诸如ROM 345和硬连线中断指令310的通用程序存储器馈入。通用程序存储器也可用闪存器件、EPROM或者SRAM配置。超控指令寄存器255的内容取决于操作的模式。超控指令寄存器可以提供替换指令源或者选择ROM 345内的程序类型。在流程控制状态机245的控制下,当从流程控制状态机245中选择替代指令控制信号350时,输入到第二多路复用器320中的这些输入量中的任一个都可以馈入第一多路复用器155,并且也可以从那里馈入目标处理器120的指令寄存器315。
各个寄存器元件和控制状态机的组合都是本领域技术人员所熟知的,并且能够以任何数量的电路组合方式来实现,例如,触发器、具有时钟锁存的触发器、具有可编程控制存储器和状态寄存器的微序列器、或者具有组合电路的锁存存储器元件。
图4示出了流程控制状态机245所管理的状态转换功能图400。所表示的三个状态分别是停止状态410、已停止状态420和运行状态401。停止状态410等效于正在停止的状况,而已停止状态420指定程序流已经完全停止。运行状态401表示正常的程序执行状况。运行状态401是上电时的默认系统状态。外部事件复位和复位标志415馈入停止状态410。当目标处理器120执行中断指令310时,可以从停止状态410到达已停止状态420。通过单步450或者其中流程控制命令正在执行的超控单步455就可以从已停止状态420到达停止状态410。当调试软件115发出停止命令425时,也可以从运行状态401到达停止状态410。
当在程序代码执行期间执行中断指令310时,也可以从运行状态401到达已停止状态420。从已停止状态420,通过Go命令435或者超控Go命令440可恢复程序执行,这两个命令的任一个都将产生到运行状态401的转换。当外部事件复位和未设置任何复位标志405时,也可到达运行状态401。
以下表格表示了与本发明有关的一个示例性命令字代码组。注意,没有阐述的某些字节代码可保留以备后用。
命令字节代码 | |
命令位 | 命令或指令 |
76543210 | 流程控制命令 |
00xx0000 | Go |
00xx0001 | 单步 |
00xx0010 | 超控Go |
00xx0011 | 超控单步 |
00xx0101 | 停止 |
00xx0110 | 复位和调试模块禁用 |
00xx0111 | 复位 |
通信控制 | |
0000xxxx | Goto命令模式 |
0010xxxx | Goto CPU模式 |
0011xxxx | Goto空闲模式 |
通用和调试模式 | |
01xxx000 | 正常 |
01xxx001 | 具有断点的正常 |
01xxx010 | 跳步 |
01xxx011 | 跳出 |
01xxx100 | 监视 |
01xxx101 | 具有断点的监视 |
流程控制设置 | |
01xx1xxx | 中断时的中止 |
01x1xxxx | 流程变化时的中止 |
寄存器访问 | |
11xx0000 | 程序计数器 |
11xx0001 | 调试寄存器 |
11xx0010 | 超控指令 |
访问模式 | |
110xxxxx | 写入访问 |
111xxxxx | 读取访问 |
在本发明的另一实施例中,调试软件程序115和软件开发工具包110、连同要调试的可执行图像文件135如图1所示配置。仿真器125、调试主机平台105、调试应用程序以及目标处理器120相互连接,如图1所示。调试部分在调试主机平台105上初始化,且与目标处理器120的连接被确认为包括与调试模块140连接所必需的任何配置设置。可执行图像文件135被载入程序存储器区域170;在本实施例中,该程序存储器区域是设置在具有目标处理器120的集成电路芯片150上的闪存存储器。从调试软件115的程序视窗来看,它可以是编程语言源代码视窗,在感兴趣的地址位置上以一个或者多个断点来标记程序。所要执行的代码可包含在所考虑的代码范围内的函数调用或嵌套的函数调用。该示例性实施例的跳步和跳出方法是由仿真器125来实现的,它采用上述装置工作、且在调试软件115配置下工作。
图5A示出了用于跳步方法500的处理流程图的一个示例性实施例。跳步方法500所包括的过程是:设置一个或者多个感兴趣的应用程序断点(505),在设置一个或者多个应用程序断点步骤(505)中所发现的应用程序断点地址上采用一个或者多个中断指令310来更新(510)程序存储器170,将调试模式设置为跳步(520),在符号表117中扫描在当前程序计数器之后所发生的任何连续符号断点(530)。扫描步骤(530)的符号表117可驻留在调试主机平台105或者事件存储器127中。跳步方法500继续:将调试寄存器260设置(540)成等于所发现的任何符号断点、或者程序计数器加上最大的扫描范围,设置(550)程序计数器250,执行程序(560)直至到达停止条件,暂停程序执行(570),确定在当前程序计数器地址上是否不存在符号断点或者中断指令(575),在这种情况下该操作可从扫描步骤530开始重复。如果存在符号断点或者中断指令(575),则过程就通过读取和校正程序计数器250得以继续(580),并且进入到已停止状态(420)的步骤。
图5B示出了在符号表117中扫描断点设置(530)的方法的过程流程图的一个更详细示例性实施例。在将调试模式设置成跳步的步骤(520)之后,通用的扫描过程包括:将扫描范围限制设置成等于当前程序计数器250加上最大扫描幅值(531),以及地址增1和符号断点的校验(532)。如果发现了符号断点(533),则采取将调试寄存器260设置成所发现的断点地址的过程(540)。如果没有发现断点(533),则进行扫描地址是否等于扫描范围限制的校查步骤(534)。如果扫描地址等于扫描范围限制(534),则采取设置调试寄存器260的过程(540);在这种情况下,可将调试寄存器260设置成程序计数器250内容的值加上最大扫描范围。如果扫描地址不等于扫描范围限制(534),则地址增1并进行校查符号断点(532)来重复处理。该方法允许用户设置最大扫描幅值531,该幅值可在执行中的停止过于频繁和仿真器125或者调试软件115扫描时间过长之间进行优化。最大扫描幅值设置(531)的示例性范围是包含从20至100个程序位置。
在名义上,指令的顺序流程中的变化可例如在示例性实施例中分类如下:
指令类别
1.跳转、跳过和分支指令
2.返回;
3.调用;以及,
4.中断确认。
当调试模式不是跳步或者跳出时,前三类是由流程变化上中断的流程控制设置所控制的,而最后一类是由中断流程控制设置(称为命令字节代码表,流程控制设置)上的中断所控制的。跳步模式采取这些类的特定控制。在跳步模式中,第一和第二类都是启用的,而第三和第四类用于管理函数调用和硬件中断的代码的全速执行。
图5C示出了启动程序执行(560)方法的一示例性实施例。在设置(550)程序计数器250的过程(550)之后,在启动程序执行处理过程中将由硬件来区分第三和第四类中指令的执行。启动程序执行方法包括执行一条指令的步骤(567)、以及确定程序计数器是否等于调试寄存器、或者指令是否中断指令的步骤(568)。当程序计数器250等于调试寄存器260、或者正在执行的指令是中断指令时,则下一步骤是暂停程序执行(570)。如果程序计数器250不等于调试寄存器260或者程序计数器未定位成执行中断指令,则下一步骤是确定是否已经检测到流程的变化(561)。如果确定所检测到的流程变化(561)为假,则过程就返回到执行一条指令的步骤(567)。如果确定所检测到的流程变化(561)为真,则过程包括校查流程已经检测到由于调用指令所引起的变化(562)或者中断确认。如果指令的类别不是调用指令(类三)或者中断确认(类四)(即,它必须是类一或者类二),则暂停程序的执行(570),否则由于类三和类四的指令类别而使得确定流程变化为真,并且该方法继续将调试模式设置成跳出(563),将调用级别计数器设置成零(564),全速执行直至调用级别计数器变成小于零(566)或者执行中断指令,并随后暂停执行(570)。
以跳出模式继续执行允许嵌套级的调用函数能以处理器的全速继续执行,并且无需中断直至返回调用位置。这就便于调试寄存器在嵌套函数调用中的调用级别计数期间可使用从存储断点到存储增1和减1计数的变化。
图6A示出了跳出方法600的一示例性过程流程图。跳出方法包括:设置感兴趣的一个或多个断点(505),在设置一个或多个断点的步骤(505)中所发现的应用程序断点地址上用一个或多个中断指令310来更新程序存储器170(510),将调试模式设置成跳出(610),将调用级别计数器设置成等于零(620),将程序计数器250设置成等于期望地址(550),启动程序执行(665),当调用级别计数器小于零(566)或者执行中断指令时暂停程序执行,对程序计数器250进行读取和校正(580),以及进入已停止状态420的步骤。
流程断点的变化在跳出模式中是禁用的,以便于函数调用和硬件中断处理代码可以全速执行直至调试寄存器260的内容变成为小于零,这表示执行已经完成,并且返回到在代码中的调用点。通过每当调用函数或者调用中断服务例程使调试寄存器260中的调用级别计数器增1、或者每当从所调用的函数或者所调用的中断服务例程中返回使调用级别计数器减1,实现调用程序级别的管理。当计数变成小于零时执行就返回到调用位置,并且已适当处理好了循环函数的调用。在调试寄存器260中的值小于零将会引起流程控制状态机245在执行中创建一中断。
图6B示出了用于调用跳步方法650的一示例性过程流程图,该过程从跳出方法600(见图6A)的已停止状态420开始。
调用跳步方法650包括确定在当前的程序计数器的位置上是否存在中断指令或者符号断点(655)的过程。如果这两个条件的任一个为真,则采取进入已停止状态420的步骤。如果没有发现任何断点,则执行一定是在进行函数调用时的表达式或程序语句之间。如果没有发现任何断点,则该方法包括将调试模式设置成跳步(520),在符号表117中扫描在当前程序计数器之后所发生的任何连续符号断点(530)步骤。扫描步骤530的符号表117可驻留在调试主机平台105或者在事件存储器127中。跳步方法650继续将调试寄存器260设置成等于所发现的任何符号断点或程序计数器加上最大的扫描范围(540),将程序寄存器250设置在第二感兴趣位置上(675),执行程序(560)直至达到停止条件,暂停程序执行(570),确定在当前程序计数器地址上是否存在符号断点或中断指令(575),在这种情况下可以从扫描步骤530开始重复该操作,否则该过程就通过读取和校正程序计数器250得以继续(580),以及进入已停止状态420的步骤。
图6A和6B一起示出了在单步调试在程序语句中所遇到的函数调用时如何解决可能发生的循环函数调用。
尽管已经结合示例性实施例讨论了本发明,但是本领域技术人员将易于理解:在本发明的范围内还会有许多其它实施例。例如,特定的过程流程图、调试系统图和集成处理器系统都可提供为易于实现这些单步方法的解决方案的示例性实施例。然而,熟练技术人员也易于重新安排过程流程图中的某些步骤,实现其它的调试系统,采用不同的仿真系统,将替换集成开发环境(IDE)用于软件研究,结合在通信架构中与存储器元件相耦合的不同总线结构,以及获得确定断点和全速运行可执行图像文件135的相同效果。因此,本发明的范围仅仅只受所附权利要求的限制。
Claims (28)
1.一种用于在调试期间管理在目标处理器上软件的执行的调试模块,包括:
物理层,它被配置为将所述调试模块与仿真器耦合以交换调试信息;
访问控制层,它被配置为接收来自所述仿真器的通信控制命令、寄存器标识和模式控制命令,所述访问控制层还被配置为实现对所述调试模块的访问;以及
应用层,它被配置为接收来自所述仿真器的命令、模式设置和处理器指令数据,所述应用层还被配置为管理所述目标处理器的操作。
2.如权利要求1所述的调试模块,其特征在于,还包括:用于接收来自所述仿真器的命令和输入数据的输入端,用于向所述仿真器发送输出数据的输出端,以及与所述物理层、所述访问控制层、所述应用层和所述目标处理器的每一个内的一个或多个寄存器相耦合的数据总线。
3.如权利要求1所述的调试模块,其特征在于,所述访问控制层还包括与所述数据总线相连的访问命令寄存器,用于保存多个访问命令;以及访问控制状态机,用于控制通信和寄存器访问,所述访问控制状态机与所述访问命令寄存器、所述物理层以及置于所述应用层内的流程控制状态机电耦合。
4.如权利要求1所述的调试模块,其特征在于,所述应用层还包括超控指令寄存器、流程命令寄存器、模式寄存器、调试寄存器以及签名寄存器,所述签名寄存器用于保持所要调试器件的标识,其中所述超控指令寄存器、所述流程命令寄存器、所述模式寄存器、所述调试寄存器和所述签名寄存器都与所述数据总线相耦合。
5.如权利要求4所述的调试模块,其特征在于,所述应用层还包括用于控制处理器执行状态的流程控制状态机,其中所述流程控制状态机与所述流程命令寄存器、所述模式寄存器、所述目标处理器以及置于所述访问控制层中的访问控制状态机电耦合,其中所述应用层还包括比较器电路,它具有来自所述数据总线和所述调试寄存器的输入连接、以及与所述流程控制状态机电耦合的输出比较结果。
6.如权利要求4所述的调试模块,其特征在于,所述超控指令寄存器可被配置为依次处理多个替代超控指令,从而根据来自所述仿真器的命令提供程序控制、避免程序存储器的更新,并且所述多个替代超控指令可用于提供程序存储器空间内的其它程序源的选择性程序调用。
7.一种用于在目标处理器上执行程序时进行跳步函数调用的方法,包括:
在要执行的所述程序中设置一个或多个断点;
根据所述设置一个或多个断点的步骤所需来更新程序存储器;
将调试模式设置成跳步;
扫描用于下一暂停地址的符号表;
将调试寄存器的内容设置成所述下一暂停地址;
执行所述程序直至达到第一执行暂停条件;
暂停所述程序的所述执行;
确定所述第一执行暂停条件的有效中断条件;
如果所述确定有效中断条件的步骤为否,则重复所述跳步方法的部分;以及
如果所述确定有效中断条件的步骤为真,则读取和校正程序计数器。
8.如权利要求7所述的跳步方法,其特征在于,所述扫描步骤还包括从当前程序位置扫描到第一次遇到所述一个或多个断点中的下一个断点、或者扫描范围限制。
9.如权利要求7所述的跳步方法,其特征在于,所述扫描范围限制由最大扫描幅值加上所述当前程序位置来设置,所述最大扫描幅值是在扫描重复中要扫描的程序位置的数量,其中对所述最大扫描幅值进行设置以优化扫描时间。
10.如权利要求7所述的跳步方法,其特征在于,所述设置内容步骤还包括:将所述调试寄存器的所述内容设置成在所述扫描步骤中发现的所述一个或多个断点中的任意下一个断点的地址、或者所述程序计数器的地址加上最大扫描范围。
11.如权利要求7所述的跳步方法,其特征在于,所述第一执行暂停条件还包括所述程序计数器指示执行执行指令中的中断、或者执行所述一个或多个断点中的下一个断点。
12.如权利要求7所述的跳步方法,其特征在于,所述重复一部分的步骤还包括继续在所述扫描步骤上执行。
13.如权利要求7所述的跳步方法,其特征在于,所述设置内容的步骤还包括将超控指令寄存器设置成可以由仿真器指定,用于控制其它调试执行替代和程序类型的选择,所述调试执行替代和程序类型选择能够在不需要更新程序存储器的情况下执行。
14.如权利要求7所述的跳步方法,其特征在于,所述更新程序存储器的步骤还包括访问签名寄存器,用于检索要调试部件的标识签名。
15.如权利要求7所述的跳步方法,其特征在于,所述执行所述程序的步骤还包括:
执行指令;
确定是否到达有效暂停地址;
如果所述确定有效暂停地址为是,则完成所述执行所述程序的步骤;
如果所述确定有效暂停地址为否,则确定在所述程序的执行中是否检测到了流程变化;
如果确定流程变化步骤为否,则重复所述执行所述程序的步骤的一部分;
如果确定流程变化步骤为是,则确定指令的有效条件类型;
如果确定有效条件类型为否,则完成所述执行所述程序的步骤;
如果确定有效条件类型为是,则将所述调试模式设置成跳出;
将调用级别计数寄存器的内容设置成零;以及,
执行所述程序直至达到第二执行暂停条件。
16.如权利要求15所述的跳步方法,其特征在于,所述有效暂停地址还包括所述程序的计数器等于所述调试寄存器的内容、或者表示在执行指令中的中断的执行。
17.如权利要求15所述的跳步方法,其特征在于,所述重复一部分的步骤还包括在所述执行指令步骤时开始。
18.如权利要求15所述的跳步方法,其特征在于,所述有效条件类型还包括调用指令或者中断请求。
19.如权利要求15所述的执行所述程序的步骤,其特征在于,所述第二暂停执行条件还包括所述调用级别计数器小于零、或者执行所执行指令中的中断。
20.一种用于在目标处理器上执行程序时进行跳出函数调用的方法,包括:
在要执行的所述程序中设置一个或多个断点;
根据所设置的一个或多个断点步骤的所需来更新程序存储器;
将调试模式设置成跳出;
将调用级别计数寄存器的内容设置成零;
开始所述程序的执行;
执行所述程序直至达到第一执行暂停条件;以及,
读取和校正程序计数器。
21.如权利要求20所述的跳出方法,其特征在于,所述执行暂停条件还包括所述调用级别计数器的检测值变成为小于零、或者所述程序计数器指示中断指令的执行。
22.如权利要求20所述的跳出方法,其特征在于,所述执行所述程序的步骤还包括:
从所述目标处理器的停止执行状态开始;
确定所述第一执行暂停条件的有效中断条件;
如果确定有效中断条件步骤为是,则完成所述执行所述程序的步骤;
如果确定有效中断条件步骤为否,则将调试模式设置成跳步方法;
在符号表中扫描下一个暂停地址;
将调试寄存器的内容设置成所述下一暂停地址;
执行所述程序直至达到第二执行暂停条件;
暂停所述程序的所述执行;
确定所述第二执行暂停条件的有效中断条件;
如果确定有效中断条件步骤为否,则重复所述跳步方法的一部分;以及,
如果确定有效中断条件步骤为是,则读取和校正程序计数器。
23.如权利要求22所述的跳出方法,其特征在于,所述扫描步骤还包括从当前程序位置扫描到第一次遇到所述一个或多个断点中的下一个断点、或者扫描范围限制。
24.如权利要求23所述的扫描步骤,其特征在于,所述扫描范围限制根据最大扫描幅值加上所述当前程序位置来设置,所述最大扫描幅值是在扫描重复中所要扫描的程序位置的数量,其中对所述最大扫描幅值设置以优化扫描时间。
25.如权利要求22所述的跳出方法,其特征在于,所述设置内容的步骤还包括:将所述调试寄存器的所述内容设置成在所述扫描步骤所发现的所述一个或多个断点中的任意下一个断点的地址、或者所述程序计数器的地址加上最大扫描范围。
26.如权利要求22所述的跳出方法,其特征在于,所述第二执行暂停条件还包括所述程序计数器指示执行在执行指令中的中断、或者执行所述一个或多个断点中的下一个断点。
27.如权利要求22所述的跳出方法,其特征在于,所述重复一部分的步骤还包括继续在所述扫描步骤上执行。
28.如权利要求22所述的跳出方法,其特征在于,所述设置内容的步骤还包括将超控指令寄存器设置成可以由仿真器指定,用于控制其它调试执行的替代和程序类型的选择,所述调试执行替代和程序类型选择能够在不需要更新程序存储器的情况下执行。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US10/837,483 US20050268195A1 (en) | 2004-04-29 | 2004-04-29 | Apparatus and method for improving emulation speed of high-level languages in on-chip emulation systems |
US10/837,483 | 2004-04-29 |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN200910008797A Division CN101667154A (zh) | 2004-04-29 | 2005-04-26 | 用于改善片上仿真系统中高级语言的仿真速度的装置和方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101084485A true CN101084485A (zh) | 2007-12-05 |
CN100555218C CN100555218C (zh) | 2009-10-28 |
Family
ID=35394794
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB2005800220725A Expired - Fee Related CN100555218C (zh) | 2004-04-29 | 2005-04-26 | 用于改善片上仿真系统中高级语言的仿真速度的装置和方法 |
CN200910008797A Pending CN101667154A (zh) | 2004-04-29 | 2005-04-26 | 用于改善片上仿真系统中高级语言的仿真速度的装置和方法 |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN200910008797A Pending CN101667154A (zh) | 2004-04-29 | 2005-04-26 | 用于改善片上仿真系统中高级语言的仿真速度的装置和方法 |
Country Status (6)
Country | Link |
---|---|
US (1) | US20050268195A1 (zh) |
EP (1) | EP1743243A2 (zh) |
CN (2) | CN100555218C (zh) |
NO (1) | NO20065466L (zh) |
TW (1) | TW200620114A (zh) |
WO (1) | WO2005111801A2 (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102132278A (zh) * | 2008-08-26 | 2011-07-20 | 爱立信电话股份有限公司 | 使用指令追踪或标出的处理器仿真 |
CN102955872A (zh) * | 2011-08-31 | 2013-03-06 | 北京中电华大电子设计有限责任公司 | 具有参数传递功能的仿真器 |
CN110610236A (zh) * | 2017-10-30 | 2019-12-24 | 上海寒武纪信息科技有限公司 | 一种用于执行神经网络运算的装置 |
Families Citing this family (28)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP4837247B2 (ja) * | 2003-09-24 | 2011-12-14 | パナソニック株式会社 | プロセッサ |
US7546585B2 (en) * | 2005-01-24 | 2009-06-09 | International Business Machines Corporation | Method, system and computer program product for testing computer programs |
US20060179258A1 (en) * | 2005-02-09 | 2006-08-10 | International Business Machines Corporation | Method for detecting address match in a deeply pipelined processor design |
DE502005001065D1 (de) * | 2005-05-02 | 2007-08-30 | Accemic Gmbh & Co Kg | Verfahren und Vorrichtung zur Emulation einer programmierbaren Einheit |
US7613951B2 (en) * | 2005-05-13 | 2009-11-03 | Texas Instruments Incorporated | Scaled time trace |
JP4038220B2 (ja) * | 2005-09-27 | 2008-01-23 | ソフトバンクモバイル株式会社 | プログラム開発支援装置 |
US7437584B2 (en) * | 2006-02-27 | 2008-10-14 | Atmel Corporation | Apparatus and method for reducing power consumption in electronic devices |
EP1864219A1 (en) | 2006-02-28 | 2007-12-12 | Mentor Graphics Corporation | Monitoring physical parameters in an emulation environment |
GB2447683B (en) * | 2007-03-21 | 2011-05-04 | Advanced Risc Mach Ltd | Techniques for generating a trace stream for a data processing apparatus |
US7983893B2 (en) | 2008-01-08 | 2011-07-19 | Mentor Graphics Corporation | Fault support in an emulation environment |
US20090182544A1 (en) * | 2008-01-15 | 2009-07-16 | Eric Durand | Multiple chassis emulation environment |
US8214192B2 (en) | 2008-02-27 | 2012-07-03 | Mentor Graphics Corporation | Resource remapping in a hardware emulation environment |
US8214195B2 (en) * | 2008-03-21 | 2012-07-03 | Mentor Graphics Corporation | Testing in a hardware emulation environment |
US20090248390A1 (en) * | 2008-03-31 | 2009-10-01 | Eric Durand | Trace debugging in a hardware emulation environment |
CN101826051B (zh) * | 2010-03-23 | 2012-07-04 | 苏州国芯科技有限公司 | 一种用于调试程序的硬件断点电路 |
US9117018B2 (en) * | 2010-11-25 | 2015-08-25 | Freescale Semiconductor, Inc. | Method of debugging software and corresponding computer program product |
US9489287B2 (en) * | 2013-08-23 | 2016-11-08 | Atmel Corporation | Breaking code execution based on time consumption |
US9684578B2 (en) * | 2014-10-30 | 2017-06-20 | Qualcomm Incorporated | Embedded universal serial bus (USB) debug (EUD) for multi-interfaced debugging in electronic systems |
CN108267968B (zh) * | 2017-01-03 | 2021-02-05 | 北京机电工程研究所 | 一种协同半实物仿真光纤数据交互安全性校验方法 |
CN106682370B (zh) * | 2017-02-28 | 2020-07-28 | 苏州浪潮智能科技有限公司 | 一种仿真验证系统 |
US10395722B2 (en) * | 2017-09-29 | 2019-08-27 | Intel Corporation | Reading from a mode register having different read and write timing |
KR102467842B1 (ko) * | 2017-10-13 | 2022-11-16 | 삼성전자주식회사 | 인스트럭션을 실행하는 코어 및 그것을 포함하는 시스템 |
CN111984521B (zh) * | 2019-05-23 | 2022-11-29 | 核工业理化工程研究院 | 一种无需jtag介入的板级调试方法 |
US11537505B2 (en) * | 2020-10-16 | 2022-12-27 | Cadence Design Systems, Inc. | Forced debug mode entry |
CN112000584B (zh) * | 2020-10-27 | 2021-01-29 | 北京智芯微电子科技有限公司 | 基于ide调试框架的用于cpu程序的调试方法及调试系统 |
CN112199298B (zh) * | 2020-11-02 | 2022-05-13 | 杭州安恒信息技术股份有限公司 | 一种单步调试的检测方法、装置和计算机可读存储介质 |
TWI768592B (zh) * | 2020-12-14 | 2022-06-21 | 瑞昱半導體股份有限公司 | 中央處理器 |
CN116841515A (zh) * | 2022-03-24 | 2023-10-03 | 瑞昱半导体股份有限公司 | 处理程序语言函数的装置及方法 |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5329471A (en) * | 1987-06-02 | 1994-07-12 | Texas Instruments Incorporated | Emulation devices, systems and methods utilizing state machines |
EP0762280B1 (en) * | 1995-08-30 | 2001-11-14 | Motorola, Inc. | Data processor with built-in emulation circuit |
US5828824A (en) * | 1996-12-16 | 1998-10-27 | Texas Instruments Incorporated | Method for debugging an integrated circuit using extended operating modes |
US6041406A (en) * | 1997-04-08 | 2000-03-21 | Advanced Micro Devices, Inc. | Parallel and serial debug port on a processor |
GB9805479D0 (en) * | 1998-03-13 | 1998-05-13 | Sgs Thomson Microelectronics | Microcomputer |
US6564339B1 (en) * | 1999-02-19 | 2003-05-13 | Texas Instruments Incorporated | Emulation suspension mode handling multiple stops and starts |
US7089334B2 (en) * | 2000-12-14 | 2006-08-08 | Mindspeed Technologies, Inc. | Intelligent network interface port for visiting computers |
-
2004
- 2004-04-29 US US10/837,483 patent/US20050268195A1/en not_active Abandoned
-
2005
- 2005-04-26 WO PCT/US2005/014140 patent/WO2005111801A2/en active Application Filing
- 2005-04-26 CN CNB2005800220725A patent/CN100555218C/zh not_active Expired - Fee Related
- 2005-04-26 CN CN200910008797A patent/CN101667154A/zh active Pending
- 2005-04-26 EP EP05738986A patent/EP1743243A2/en not_active Withdrawn
- 2005-04-27 TW TW094113406A patent/TW200620114A/zh unknown
-
2006
- 2006-11-29 NO NO20065466A patent/NO20065466L/no not_active Application Discontinuation
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102132278A (zh) * | 2008-08-26 | 2011-07-20 | 爱立信电话股份有限公司 | 使用指令追踪或标出的处理器仿真 |
CN102132278B (zh) * | 2008-08-26 | 2015-05-20 | 爱立信电话股份有限公司 | 使用指令追踪或标出的处理器仿真 |
CN102955872A (zh) * | 2011-08-31 | 2013-03-06 | 北京中电华大电子设计有限责任公司 | 具有参数传递功能的仿真器 |
CN102955872B (zh) * | 2011-08-31 | 2016-05-04 | 北京中电华大电子设计有限责任公司 | 具有参数传递功能的仿真器 |
CN110610236A (zh) * | 2017-10-30 | 2019-12-24 | 上海寒武纪信息科技有限公司 | 一种用于执行神经网络运算的装置 |
US11922132B2 (en) | 2017-10-30 | 2024-03-05 | Shanghai Cambricon Information Technology Co., Ltd. | Information processing method and terminal device |
Also Published As
Publication number | Publication date |
---|---|
US20050268195A1 (en) | 2005-12-01 |
NO20065466L (no) | 2007-01-29 |
CN101667154A (zh) | 2010-03-10 |
WO2005111801A2 (en) | 2005-11-24 |
TW200620114A (en) | 2006-06-16 |
EP1743243A2 (en) | 2007-01-17 |
WO2005111801A3 (en) | 2007-08-09 |
CN100555218C (zh) | 2009-10-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN100555218C (zh) | 用于改善片上仿真系统中高级语言的仿真速度的装置和方法 | |
EP2359247B1 (en) | Transforming user script code for debugging | |
US6161216A (en) | Source code debugging tool | |
US9152531B2 (en) | Post-compile instrumentation of object code for generating execution trace data | |
US7316005B2 (en) | Data race detection using sequential program analysis | |
US7805638B2 (en) | Multi-frequency debug network for a multiprocessor array | |
US7577874B2 (en) | Interactive debug system for multiprocessor array | |
CN101339581B (zh) | 基于中断通讯的嵌入式系统的在线调试仿真方法 | |
US20120331449A1 (en) | Device, method and computer program product for evaluating a debugger script | |
CN101344899B (zh) | 一种片上系统的仿真测试方法及仿真测试系统 | |
JPH0734178B2 (ja) | 変換コードを実行するための効果的エラー報告 | |
CN104205064A (zh) | 将程序事件记录事件向运行时间检测事件的变换 | |
WO2013007068A1 (zh) | 一种面向硬件设备功能的自动测试系统及方法 | |
CN101122880A (zh) | 内嵌调试器的嵌入式系统及嵌入式系统调试方法 | |
US20090125888A1 (en) | Expression-level debugging without format changes | |
JP6342129B2 (ja) | 混合モードプログラムのソースコードエラー位置検出装置及び方法 | |
US20110126179A1 (en) | Method and System for Dynamic Patching Software Using Source Code | |
CN113110859A (zh) | 一种嵌入式终端远程在线开发系统 | |
US8533683B2 (en) | Stack walking enhancements using sensorpoints | |
CN100334561C (zh) | 程序调试装置、程序调试方法 | |
JP2008033849A (ja) | 障害解析システム | |
US20080127118A1 (en) | Method and system for dynamic patching of software | |
CN101784905B (zh) | 用于对片上系统的制造进行控制的设计信息的验证 | |
CN101727388B (zh) | 一种网络计算机系统行为远程调试方法及其装置 | |
US20060080636A1 (en) | Method of building intelligent platform management interface firmware architecture |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
C17 | Cessation of patent right | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20091028 Termination date: 20100426 |