CN101667154A - 用于改善片上仿真***中高级语言的仿真速度的装置和方法 - Google Patents

用于改善片上仿真***中高级语言的仿真速度的装置和方法 Download PDF

Info

Publication number
CN101667154A
CN101667154A CN200910008797A CN200910008797A CN101667154A CN 101667154 A CN101667154 A CN 101667154A CN 200910008797 A CN200910008797 A CN 200910008797A CN 200910008797 A CN200910008797 A CN 200910008797A CN 101667154 A CN101667154 A CN 101667154A
Authority
CN
China
Prior art keywords
program
condition
execution
breakpoint
address
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.)
Pending
Application number
CN200910008797A
Other languages
English (en)
Inventor
M·W·伦德
G·米克勒比斯特
F·兰庭
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Atmel Corp
Original Assignee
Atmel Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Atmel Corp filed Critical Atmel Corp
Publication of CN101667154A publication Critical patent/CN101667154A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/362Software debugging
    • G06F11/3648Software debugging using additional hardware

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Theoretical Computer Science (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Debugging And Monitoring (AREA)

Abstract

本发明申请为“用于改善片上仿真***中高级语言的仿真速度的装置和方法”。是一种用于在调试操作过程中跳步执行和跳出执行在目标处理器(120)的程序执行期间所遇到函数的方法和装置,是在仿真器(125)和调试模块(140)的组合内实现的。通过在调试模块中可具有在片上可用的通信和存储器件(230、235、240、255、257、260),可在处理器本地以硬件速度来进行单步调试和地址的细节比较。该方法可正确地确定提供循环和嵌套函数调用的算法步骤,而无需主机调试平台和调试软件应用程序的组合干预。这就避免了否则调试主机级别在完成相同处理的循环通信所必需的时间量。用于目标处理器的超控指令(255)可***和替代在相同调试模块控制(245)之下要跳到的存储器位置,从而有效地使用硬件资源。

Description

用于改善片上仿真***中高级语言的仿真速度的装置和方法
本申请是国际申请日为2005年4月26日,国际申请号为PCT/US2005/014140,发明名称为“用于改善片上仿真***中高级语言的仿真速度的装置和方法”的PCT申请进入中国国家阶段申请号为200580022072.5的专利申请的分案申请。
技术领域
本发明涉及代码开发过程中的调试软件领域,尤其涉及在处理器上运行调试软件时的单步执行和断点确定的操作的硬件控制。
背景技术
软件或代码开发是参考所构想程序的详细说明、采用源代码语言编写程序语句、随后进行编译、链接,和下载最终可执行代码文件以及调试结果的过程。调试过程将确定是否能够以及何时能够实现适当的程序动作。如果不能实现期望结果,则整个过程就采用更新源代码的方式来重复,直至调试部分显示所运行的代码具有原始说明中所期望的适当动作。
调试器可单独使用,也可以是与软件开发工具链的其余工具一起合并成集成开发环境(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。
以下表格表示了与本发明有关的一个示例性命令字代码组。注意,没有阐述的某些字节代码可保留以备后用。
Figure G2009100087979D00061
Figure G2009100087979D00071
在本发明的另一实施例中,调试软件程序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 (22)

1.一种用于在目标处理器上执行程序时进行跳步函数调用的方法,包括:
在要执行的所述程序中设置一个或多个断点;
根据所述设置一个或多个断点的步骤所需来更新程序存储器;
将调试模式设置成跳步;
扫描用于下一暂停地址的符号表;
将调试寄存器的内容设置成所述下一暂停地址;
执行所述程序直至达到第一执行暂停条件;
暂停所述程序的所述执行;
确定所述第一执行暂停条件的有效中断条件;
如果所述确定有效中断条件的步骤为否,则重复所述跳步方法的部分;以及
如果所述确定有效中断条件的步骤为真,则读取和校正程序计数器。
2.如权利要求1所述的方法,其特征在于,所述扫描步骤还包括从当前程序位置扫描到第一次遇到所述一个或多个断点中的下一个断点、或者扫描范围限制。
3.如权利要求2所述的方法,其特征在于,所述扫描范围限制由最大扫描幅值加上所述当前程序位置来设置,所述最大扫描幅值是在扫描重复中要扫描的程序位置的数量,其中对所述最大扫描幅值进行设置以优化扫描时间。
4.如权利要求1所述的方法,其特征在于,所述设置内容步骤还包括:将所述调试寄存器的所述内容设置成在所述扫描步骤中发现的所述一个或多个断点中的任意下一个断点的地址、或者所述程序计数器的地址加上最大扫描范围。
5.如权利要求1所述的方法,其特征在于,所述第一执行暂停条件还包括所述程序计数器指示执行执行指令中的中断、或者执行所述一个或多个断点中的下一个断点。
6.如权利要求1所述的方法,其特征在于,所述重复一部分的步骤还包括继续在所述扫描步骤上执行。
7.如权利要求1所述的方法,其特征在于,所述设置内容的步骤还包括将超控指令寄存器设置成可以由仿真器指定,用于控制其它调试执行替代和程序类型的选择,所述调试执行替代和程序类型选择能够在不需要更新程序存储器的情况下执行。
8.如权利要求1所述的方法,其特征在于,所述更新程序存储器的步骤还包括访问签名寄存器,用于检索要调试部件的标识签名。
9.如权利要求1所述的方法,其特征在于,所述执行所述程序的步骤还包括:
执行指令;
确定是否到达有效暂停地址;
如果所述确定有效暂停地址为是,则完成所述执行所述程序的步骤;
如果所述确定有效暂停地址为否,则确定在所述程序的执行中是否检测到了流程变化;
如果确定流程变化步骤为否,则重复所述执行所述程序的步骤的一部分;
如果确定流程变化步骤为是,则确定指令的有效条件类型;
如果确定有效条件类型为否,则完成所述执行所述程序的步骤;
如果确定有效条件类型为是,则将所述调试模式设置成跳出;
将调用级别计数寄存器的内容设置成零;以及,
执行所述程序直至达到第二执行暂停条件。
10.如权利要求9所述的方法,其特征在于,所述有效暂停地址还包括所述程序的计数器等于所述调试寄存器的内容、或者表示在执行指令中的中断的执行。
11.如权利要求9所述的方法,其特征在于,所述重复一部分的步骤还包括在所述执行指令步骤时开始。
12.如权利要求9所述的方法,其特征在于,所述有效条件类型还包括调用指令或者中断请求。
13.如权利要求9所述的方法,其特征在于,所述第二暂停执行条件还包括所述调用级别计数器小于零、或者执行所执行指令中的中断。
14.一种用于在目标处理器上执行程序时进行跳出函数调用的方法,包括:
在要执行的所述程序中设置一个或多个断点;
根据所设置的一个或多个断点步骤的所需来更新程序存储器;
将调试模式设置成跳出;
将调用级别计数寄存器的内容设置成零;
开始所述程序的执行;
执行所述程序直至达到第一执行暂停条件;以及,
读取和校正程序计数器。
15.如权利要求14所述的方法,其特征在于,所述执行暂停条件还包括所述调用级别计数器的检测值变成为小于零、或者所述程序计数器指示中断指令的执行。
16.如权利要求14所述的方法,其特征在于,所述执行所述程序的步骤还包括:
从所述目标处理器的停止执行状态开始;
确定所述第一执行暂停条件的有效中断条件;
如果确定有效中断条件步骤为是,则完成所述执行所述程序的步骤;
如果确定有效中断条件步骤为否,则将调试模式设置成跳步方法;
在符号表中扫描下一个暂停地址;
将调试寄存器的内容设置成所述下一暂停地址;
执行所述程序直至达到第二执行暂停条件;
暂停所述程序的所述执行;
确定所述第二执行暂停条件的有效中断条件;
如果确定有效中断条件步骤为否,则重复所述跳步方法的一部分;以及,
如果确定有效中断条件步骤为是,则读取和校正程序计数器。
17.如权利要求16所述的方法,其特征在于,所述扫描步骤还包括从当前程序位置扫描到第一次遇到所述一个或多个断点中的下一个断点、或者扫描范围限制。
18.如权利要求17所述的方法,其特征在于,所述扫描范围限制根据最大扫描幅值加上所述当前程序位置来设置,所述最大扫描幅值是在扫描重复中所要扫描的程序位置的数量,其中对所述最大扫描幅值设置以优化扫描时间。
19.如权利要求16所述的方法,其特征在于,所述设置内容的步骤还包括:将所述调试寄存器的所述内容设置成在所述扫描步骤所发现的所述一个或多个断点中的任意下一个断点的地址、或者所述程序计数器的地址加上最大扫描范围。
20.如权利要求16所述的方法,其特征在于,所述第二执行暂停条件还包括所述程序计数器指示执行在执行指令中的中断、或者执行所述一个或多个断点中的下一个断点。
21.如权利要求16所述的方法,其特征在于,所述重复一部分的步骤还包括继续在所述扫描步骤上执行。
22.如权利要求16所述的方法,其特征在于,所述设置内容的步骤还包括将超控指令寄存器设置成可以由仿真器指定,用于控制其它调试执行的替代和程序类型的选择,所述调试执行替代和程序类型选择能够在不需要更新程序存储器的情况下执行。
CN200910008797A 2004-04-29 2005-04-26 用于改善片上仿真***中高级语言的仿真速度的装置和方法 Pending CN101667154A (zh)

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 Parent Applications (1)

Application Number Title Priority Date Filing Date
CNB2005800220725A Division CN100555218C (zh) 2004-04-29 2005-04-26 用于改善片上仿真***中高级语言的仿真速度的装置和方法

Publications (1)

Publication Number Publication Date
CN101667154A true CN101667154A (zh) 2010-03-10

Family

ID=35394794

Family Applications (2)

Application Number Title Priority Date Filing Date
CN200910008797A Pending CN101667154A (zh) 2004-04-29 2005-04-26 用于改善片上仿真***中高级语言的仿真速度的装置和方法
CNB2005800220725A Expired - Fee Related CN100555218C (zh) 2004-04-29 2005-04-26 用于改善片上仿真***中高级语言的仿真速度的装置和方法

Family Applications After (1)

Application Number Title Priority Date Filing Date
CNB2005800220725A Expired - Fee Related CN100555218C (zh) 2004-04-29 2005-04-26 用于改善片上仿真***中高级语言的仿真速度的装置和方法

Country Status (6)

Country Link
US (1) US20050268195A1 (zh)
EP (1) EP1743243A2 (zh)
CN (2) CN101667154A (zh)
NO (1) NO20065466L (zh)
TW (1) TW200620114A (zh)
WO (1) WO2005111801A2 (zh)

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101826051A (zh) * 2010-03-23 2010-09-08 苏州国芯科技有限公司 一种用于调试程序的硬件断点电路
CN106682370A (zh) * 2017-02-28 2017-05-17 郑州云海信息技术有限公司 一种仿真验证***
CN108267968A (zh) * 2017-01-03 2018-07-10 北京机电工程研究所 一种协同半实物仿真光纤数据交互安全性校验方法
CN111984521A (zh) * 2019-05-23 2020-11-24 核工业理化工程研究院 一种无需jtag介入的板级调试方法
CN112000584A (zh) * 2020-10-27 2020-11-27 北京智芯微电子科技有限公司 基于ide调试框架的用于cpu程序的调试方法及调试***
CN112199298A (zh) * 2020-11-02 2021-01-08 杭州安恒信息技术股份有限公司 一种单步调试的检测方法、装置和计算机可读存储介质

Families Citing this family (26)

* Cited by examiner, † Cited by third party
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
ATE367607T1 (de) * 2005-05-02 2007-08-15 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
US20110119044A1 (en) * 2008-08-26 2011-05-19 Anthony Dean Walker Processor simulation using instruction traces or markups
WO2012069883A1 (en) * 2010-11-25 2012-05-31 Freescale Semiconductor, Inc. Method of debugging software and corresponding computer program product
CN102955872B (zh) * 2011-08-31 2016-05-04 北京中电华大电子设计有限责任公司 具有参数传递功能的仿真器
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
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 삼성전자주식회사 인스트럭션을 실행하는 코어 및 그것을 포함하는 시스템
CN109542515B (zh) * 2017-10-30 2021-06-25 上海寒武纪信息科技有限公司 运算装置及方法
US20210133854A1 (en) 2018-09-13 2021-05-06 Shanghai Cambricon Information Technology Co., Ltd. Information processing method and terminal device
US11537505B2 (en) * 2020-10-16 2022-12-27 Cadence Design Systems, Inc. Forced debug mode entry
TWI768592B (zh) * 2020-12-14 2022-06-21 瑞昱半導體股份有限公司 中央處理器
CN116841515A (zh) * 2022-03-24 2023-10-03 瑞昱半导体股份有限公司 处理程序语言函数的装置及方法

Family Cites Families (7)

* Cited by examiner, † Cited by third party
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
JP3846939B2 (ja) * 1995-08-30 2006-11-15 フリースケール セミコンダクター インコーポレイテッド データプロセッサ
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

Cited By (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101826051A (zh) * 2010-03-23 2010-09-08 苏州国芯科技有限公司 一种用于调试程序的硬件断点电路
CN101826051B (zh) * 2010-03-23 2012-07-04 苏州国芯科技有限公司 一种用于调试程序的硬件断点电路
CN108267968A (zh) * 2017-01-03 2018-07-10 北京机电工程研究所 一种协同半实物仿真光纤数据交互安全性校验方法
CN108267968B (zh) * 2017-01-03 2021-02-05 北京机电工程研究所 一种协同半实物仿真光纤数据交互安全性校验方法
CN106682370A (zh) * 2017-02-28 2017-05-17 郑州云海信息技术有限公司 一种仿真验证***
CN106682370B (zh) * 2017-02-28 2020-07-28 苏州浪潮智能科技有限公司 一种仿真验证***
CN111984521A (zh) * 2019-05-23 2020-11-24 核工业理化工程研究院 一种无需jtag介入的板级调试方法
CN111984521B (zh) * 2019-05-23 2022-11-29 核工业理化工程研究院 一种无需jtag介入的板级调试方法
CN112000584A (zh) * 2020-10-27 2020-11-27 北京智芯微电子科技有限公司 基于ide调试框架的用于cpu程序的调试方法及调试***
CN112000584B (zh) * 2020-10-27 2021-01-29 北京智芯微电子科技有限公司 基于ide调试框架的用于cpu程序的调试方法及调试***
CN112199298A (zh) * 2020-11-02 2021-01-08 杭州安恒信息技术股份有限公司 一种单步调试的检测方法、装置和计算机可读存储介质
CN112199298B (zh) * 2020-11-02 2022-05-13 杭州安恒信息技术股份有限公司 一种单步调试的检测方法、装置和计算机可读存储介质

Also Published As

Publication number Publication date
CN101084485A (zh) 2007-12-05
WO2005111801A2 (en) 2005-11-24
CN100555218C (zh) 2009-10-28
WO2005111801A3 (en) 2007-08-09
EP1743243A2 (en) 2007-01-17
TW200620114A (en) 2006-06-16
US20050268195A1 (en) 2005-12-01
NO20065466L (no) 2007-01-29

Similar Documents

Publication Publication Date Title
CN100555218C (zh) 用于改善片上仿真***中高级语言的仿真速度的装置和方法
US9152531B2 (en) Post-compile instrumentation of object code for generating execution trace data
US7805638B2 (en) Multi-frequency debug network for a multiprocessor array
US7577874B2 (en) Interactive debug system for multiprocessor array
US9672133B2 (en) Systems and methods for debugging applications using dual code generation
CN101344899B (zh) 一种片上***的仿真测试方法及仿真测试***
JPH0734178B2 (ja) 変換コードを実行するための効果的エラー報告
WO2013007068A1 (zh) 一种面向硬件设备功能的自动测试***及方法
CN104205064A (zh) 将程序事件记录事件向运行时间检测事件的变换
WO2010074860A2 (en) Transforming user script code for debugging
JP6342129B2 (ja) 混合モードプログラムのソースコードエラー位置検出装置及び方法
US20110126179A1 (en) Method and System for Dynamic Patching Software Using Source Code
CN101246449B (zh) 跟踪函数调用轨迹的方法和装置
CN105094910A (zh) 一种驱动函数用户态调试***和方法
US20090100413A1 (en) Stack Walking Enhancements Using Sensorpoints
CN102722438A (zh) 一种内核调试的方法和设备
US8819626B2 (en) Sharable development environment bookmarks for functional/data flow
US20060174248A1 (en) Software tool for automatically protecting shared resources within software source code
US7222064B1 (en) Instruction processor emulation having inter-processor messaging accounting
CN112559336A (zh) 自适应调试异构计算芯片的方法、装置、***及主板芯片
CN114253554A (zh) 一种代码处理方法、装置及存储介质
US7228266B1 (en) Instruction processor emulator having separate operand and op-code interfaces
KR950012113B1 (ko) 멀티 아키텍춰 환경내의 다중 코드 실행 및 디버깅 시스템에서 코드 인터페이스 자케팅에 특히 적합한 크로스-도메인 명령 호출 및 데이타 참조를 검출하기 위한 시스템 및 방법
Jeon et al. SP-Fuzz: Fuzzing Soft PLC with Semi-automated Harness Synthesis
US8839207B2 (en) Debugging extensible markup language

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C02 Deemed withdrawal of patent application after publication (patent law 2001)
WD01 Invention patent application deemed withdrawn after publication

Open date: 20100310