CN107346282A - 用于微处理器的调试支持单元 - Google Patents
用于微处理器的调试支持单元 Download PDFInfo
- Publication number
- CN107346282A CN107346282A CN201610289784.3A CN201610289784A CN107346282A CN 107346282 A CN107346282 A CN 107346282A CN 201610289784 A CN201610289784 A CN 201610289784A CN 107346282 A CN107346282 A CN 107346282A
- Authority
- CN
- China
- Prior art keywords
- debugging
- register
- processor
- instruction
- software
- 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
- 238000012545 processing Methods 0.000 claims abstract description 55
- 238000004891 communication Methods 0.000 claims abstract description 30
- 230000015654 memory Effects 0.000 claims description 79
- 238000000034 method Methods 0.000 claims description 49
- 238000012360 testing method Methods 0.000 claims description 15
- 238000011010 flushing procedure Methods 0.000 claims description 9
- 230000001052 transient effect Effects 0.000 claims description 5
- 238000013500 data storage Methods 0.000 claims description 4
- 238000011022 operating instruction Methods 0.000 claims description 2
- 238000012546 transfer Methods 0.000 claims description 2
- 230000008569 process Effects 0.000 description 13
- 230000009471 action Effects 0.000 description 10
- 230000006870 function Effects 0.000 description 10
- 230000008859 change Effects 0.000 description 4
- 230000006872 improvement Effects 0.000 description 4
- XLYOFNOQVPJJNP-UHFFFAOYSA-N water Substances O XLYOFNOQVPJJNP-UHFFFAOYSA-N 0.000 description 4
- 230000006399 behavior Effects 0.000 description 3
- 230000008901 benefit Effects 0.000 description 3
- 230000005540 biological transmission Effects 0.000 description 3
- 239000000463 material Substances 0.000 description 3
- 238000004590 computer program Methods 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 230000005611 electricity Effects 0.000 description 2
- 238000013507 mapping Methods 0.000 description 2
- RZVAJINKPMORJF-UHFFFAOYSA-N Acetaminophen Chemical compound CC(=O)NC1=CC=C(O)C=C1 RZVAJINKPMORJF-UHFFFAOYSA-N 0.000 description 1
- 101000746134 Homo sapiens DNA endonuclease RBBP8 Proteins 0.000 description 1
- 101000969031 Homo sapiens Nuclear protein 1 Proteins 0.000 description 1
- 102100021133 Nuclear protein 1 Human genes 0.000 description 1
- 230000001133 acceleration Effects 0.000 description 1
- 239000002253 acid Substances 0.000 description 1
- 238000004378 air conditioning Methods 0.000 description 1
- 230000015572 biosynthetic process Effects 0.000 description 1
- 210000004556 brain Anatomy 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 238000007796 conventional method Methods 0.000 description 1
- 230000001351 cycling effect Effects 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 230000003340 mental effect Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000004806 packaging method and process Methods 0.000 description 1
- 238000011160 research Methods 0.000 description 1
- 238000000926 separation method Methods 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 239000000725 suspension Substances 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
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/3624—Software debugging by performing operations on the source code, e.g. via a compiler
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/22—Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing
- G06F11/2205—Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing using arrangements specific to the hardware being tested
- G06F11/2236—Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing using arrangements specific to the hardware being tested to test CPU or processors
-
- 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
-
- 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/3636—Software debugging by tracing the execution of the program
-
- 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
-
- 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/3664—Environments for testing or debugging software
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- General Engineering & Computer Science (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Debugging And Monitoring (AREA)
Abstract
本披露涉及用于微处理器的调试支持单元。一种调试启用处理设备包括处理器、通信收发器电路以及调试支持单元。该调试支持单元具有帮助对由该处理器执行的软件程序进行调试的多个专用调试寄存器。该多个调试寄存器之一是具有至少四个位的控制寄存器,该至少四个位用于启用/禁用多项调试操作。这些调试寄存器中的其他调试寄存器包括可以被配置成用于向和从该处理器传递数据的索引寄存器组。
Description
技术领域
本披露总体上涉及调试软件程序。更具体地但是不排他地,本披露涉及对于调试软件程序有用的基于硬件的调试支持单元。
背景技术
自从开发人员已经编写软件代码开始,已经存在对软件进行调试的需要。在一些情况下,当软件无法正确工作时,开发人员研究软件代码并且脑中尝试调试该问题。在许多情况下,尤其是当软件不只是简短的简单程序时,对软件进行调试的脑力方法将不起效。
已经创造了各种工具来辅助开发人员对软件进行调试。在一些情况下,完全地从软件形成常规调试工具。在其他情况下,从硬件和软件的组合形成常规调试工具。
图1是常规调试系统10。在该系统中,主机计算设备12经由串行通信介质34通信地耦合到目标系统50。通常是个人计算机的主机计算设备12包括硬件模块14和存储器模块16。硬件模块14包括处理器18以及支持逻辑模块20。存储器模块116通常包括操作系统软件22、应用软件24以及调试软件程序26。
主机计算设备12通常受软件从业者(诸如开发人员)控制。开发人员经由显示器28从主机计算设备12接收信息,并且开发人员经由键盘30和鼠标32向主机计算设备12提供信息。在软件从业者的指导下,处理器18执行存储在存储器模块16中的软件指令。
主机计算设备12的支持逻辑模块20包括电路,诸如通用异步接收器/发送器(UART)控制器、存储器控制器、时钟、图形控制器等等。在软件从业者的指导下,调试软件程序26与目标系统通信以便发送控制信息和接收数据或状态信息。在图1的常规调试系统10中,控制信息和数据被传递通过支持逻辑模块20的UART通过串行通信介质34(即,串行数据线缆)到达目标系统50。此外,通过串行通信介质34将数据和状态信息从目标系统50传递到主机计算设备12。
图1的目标系统50包括处理器52、支持逻辑模块54、存储器模块56以及常规调试支持单元(DSU)58。目标系统50的支持逻辑模块54类似于主机计算设备12的逻辑支持模块20。除通信控制器、存储器控制器、时钟、图形控制器等等之外,支持逻辑模块54还可以包括用于支持目标系统50的功能的其他电路和结构。
程序60驻留在目标系统50的存储器模块56中。程序60包括可由处理器52执行以便实施目标系统50的功能的软件指令。存根62可选地位于程序60的软件指令集内。在一些情况下,以下更详细描述的一个或多个存根62被放置在程序60中。
DSU 58包括可选处理器64、可选DSU软件66以及可选逻辑模块68。DSU 58指导目标系统50上的调试操作。在DSU 58包括可选处理器64的情况下,DSU 58还将包括可选DSU软件66,该软件包括可由可选处理器64执行的软件指令。DSU 58的可选逻辑模块68可以包括用于帮助对操作进行调试的寄存器、比较器、时钟、输入/输出电路等等。在目标系统50的常规实现方式中,DSU 58的操作由软件从业者指导。软件从业者使用主机计算设备12输入调试命令,这些命令由调试软件程序26解释并且经由串行通信介质34被传达到目标系统50。
软件从业者所使用的常规调试方法被称为“存根(stub)”方法。基本上在软件中实现存根方法。在存根方法中,软件从业者标识程序60中的可能发现嫌疑错误的区域。然后,在这个区域中,用非法指令替换程序60中的所选指令。非法指令是无法由处理器52理解的指令,从而使得当处理器52尝试执行为存根62的非法指令时,处理器52反而断言非法指令陷阱。不像传统的非法指令陷阱处理程序,非法指令陷阱的发送导致DSU 58执行调试操作。也就是,DSU58允许软件从业者在程序60中的软件从业者认为存在错误的那个点“接管”对目标系统50的控制。
例如,如果当遇到具体的情况时目标系统50无法照亮某个发光二极管(LED),软件从业者可以标识程序60的其中软件指令询问这个具体情况的那一部分。软件从业者选择那些软件指令中的一个指令的地址,并且用非法软件指令替换原始软件指令。软件从业者通过在主机计算设备12输入命令来执行这个替换,该主机计算设备指导DSU 58执行该替换。
在存根62被放置在程序60的存储器地址空间中之后,处理器52被准许正常地执行程序60的指令。当遇到非法指令(即,存根62)时,处理器52将挂起其正常指令流、保存处理器的当前状态并且为程序计数器(PC)寄存器加载预先确定的陷阱处理程序的地址。预先确定的陷阱处理程序包括调试软件指令。例如,预先确定的陷阱处理程序中的第一指令可以在临时存储器空间中保存处理器52的一个或多个寄存器的内容、在临时存储器空间中保存存储器的其他部分的内容、或者采用其他动作来在遇到非法指令(即,存根)的时刻捕捉目标系统50的状态。在预先确定的陷阱处理程序内,软件从业者还可以交互性地读取处理器52的寄存器、在存储器模块56中读取和写入数据或软件指令、或者执行其他动作来尝试并且确定程序60中的何处存在错误。
当软件从业者已经确定已经执行充分的调试时,软件从业者将指示DSU 58用程序60的在加载存根62之前存在的原始软件指令替换存根62,并且将恢复之前保存在临时存储空间中的寄存器和存储器区域。接下来,软件从业者将指导示处理器52从该预先确定的陷阱处理程序返回。处理器52还将恢复处理器的原始状态并且用现在替换的软件指令的地址重新加载PC寄存器。以此方式,执行程序60将在其之前被中断的地方并且以其在陷阱之前存在的上下文和状态重新开始。
返回无法照亮LED的先前示例,软件从业者将强制DSU 58替换程序60的策略区域中的一个或多个存根62。当处理器52执行程序60的软件指令并且遇到每个存根62时,软件从业者有机会标识无法实现预期的特定情况的原因、无法正确地询问预期的特定情况的原因、无法照亮LED的原因或某个其他错误。
在存根方法中,软件从业者策略性地将一个或多个存根62放在程序60的期望调试的区域中。在遇到存根62的每个点,触发非法指令陷阱,并且软件从业者有机会询问或者以其他方式控制目标系统50。当发现错误时,可以更新或者以其他方式重新写入程序60的软件指令以便移除错误。
在背景部分中讨论的所有主题无需是现有技术并且不应当仅仅由于其在背景部分的讨论而被假定为是现有技术。据此,除非特别说明是现有技术,对在背景部分中所讨论的现有技术中存在的问题或与这种主题相关联的问题的任何认识不应该被看作现有技术。替代地,对在背景部分中的任何主题的讨论都应该被看做发明人解决具体问题的方法的一部分,其本身以及本质上也可以是有创造性的。
发明内容
使用允许软件从业者对软件进行调试的常规调试支持单元和方法已经导致发现常规方法的显著缺陷。常规调试迄今为止是受限的并且难以实现过程。使用在此描述的改善的调试支持单元(DSU)为软件从业者提供了更简单的实现方式,该实现方式可以完全基于硬件、还包括在常规系统中不可用的功能。
调试启用处理设备可以被总结为包括:处理器;通信收发器电路;以及调试支持单元,该调试支持单元具有帮助对由该处理器执行的软件程序进行调试的多个专用调试寄存器,该多个调试寄存器包括:具有至少四个位的控制寄存器,该至少四个位包括用于启用/禁用多项调试操作的控制位;以及索引寄存器组,该索引寄存器组可配置成用于向和从该处理器传递数据。
该控制寄存器可以包括:该至少四个位中的第一位,该第一位被安排成用于当该至少四个位中的该第一位采用第一值时启用调试模式并且被进一步安排成用于当该至少四个位中的该第一位采用第二值时禁用该调试模式;该至少四个位中的第二位,该第二位被安排成用于提供有关流水线冲洗操作的状态;该至少四个位中的第三位,该第三位被安排成用于启用和禁用陷阱处理操作;以及该至少四个位中的第四位,该第四位被安排成用于控制该陷阱处理操作。该索引寄存器组可以包括:写入启用寄存器,该写入启用寄存器用于控制数据传送操作是读取操作还是写入操作;地址寄存器,该地址寄存器用于存储表示该处理器的架构状态的值;以及数据寄存器,该数据寄存器用于存储正在传送的数据。
该调试启用处理设备可以进一步包括集成电路封装体,该集成电路封装体在其内形成有该处理器、该通信收发器电路以及该调试支持单元。
该处理器可以是精简指令集计算(RISC)设备。该处理器可以包括多级执行流水线,该多级执行流水线至少包括取出级、解码级、执行级以及回写级。
该调试启用处理设备可以包括存储器,该存储器其中存储有该软件程序。
该存储器可以是非瞬态只读存储器(ROM)。该调试支持单元可以是不具有任何软件的电子电路。该调试支持单元可以包括调试控制电路,该调试控制电路被安排成用于在该处理器与该调试支持单元的至少一个寄存器之间传递信号。
一种经由目标设备执行的调试方法,该目标设备具有处理器、通信收发器电路以及调试支持单元,该调试支持单元具有多个专用调试寄存器,该方法可以被总结为包括:将第一值写入这些专用调试寄存器中的控制寄存器以便启用该目标设备的调试模式;将第二值写入这些专用调试寄存器中的控制寄存器以便挂起对正在调试的程序的指令的执行;向这些专用调试寄存器中的控制寄存器轮询信号,该信号指示该处理器在挂起正在调试的程序的该指令执行之前已经冲洗了存在于该处理器的执行流水线中的任何指令;经由这些专用调试寄存器中的索引寄存器组向和从该处理器的寄存器传递数据;并且将第二值写入这些专用调试寄存器中的控制寄存器以便禁用该目标设备的调试模式。
该调试方法可以进一步包括:将第三值写入这些专用调试寄存器中的该控制寄存器以便启用该目标设备的单步模式;写入正在调试的该程序的所选指令的地址;向这些专用调试寄存器中的控制寄存器轮询信号,该信号指示该处理器在所选指令的地址上落入陷阱;经由这些专用调试寄存器中的索引寄存器组向和从该处理器的寄存器传递第二数据;将正在调试的程序的下一个地址写入作为所选指令的地址;将第四值写入这些专用调试寄存器中的控制寄存器以便重新开始程序执行;并且向该专用调试寄存器中的控制寄存器轮询信号,该信号指示该处理器在所选指令的地址上落入陷阱。
向或从该处理器的这些寄存器传递该数据可以包括:将该通信收发器电路通信地耦合到在该目标设备外部的主机计算设备;并且经由该通信收发器电路和该主机计算设备根据联合测试行动小组(JTAG)协议传达该数据。
该调试方法可以包括从该主机计算设备接收多个调试指令,该多个调试指令取自包括停止指令、运行指令、单步指令、数据读取指令以及数据写入指令的调试指令集。
该执行流水线可以至少包括取出级、解码级以及执行级,该方法包括:接受来自主机计算设备的第一调试指令,该第一调试指令包括有待由该处理器执行的指令;将该第一调试指令从该调试支持单元的专用调试寄存器传递到该处理器的执行流水线的至少一个级。
一种嵌入式处理系统可以被总结为包括:用于执行目标程序的软件指令的处理器装置;用于在该嵌入式处理器系统与外部主机计算设备之间传达第一数据的收发器装置;以及用于在该目标程序上指导调试操作的调试支持单元装置,该调试支持装置包括:用于启用和禁用多项调试操作的控制寄存器装置;以及用于向和从该处理器传递第二数据的索引寄存器装置。
该控制寄存器装置可以包括:用于启用调试模式并且用于禁用该调试模式的第一装置;用于指示流水线冲洗操作的状态的第二装置;用于启用陷阱处理操作并且用于禁用该陷阱处理操作的第三装置;以及用于控制该陷阱处理操作的第四装置。
该索引寄存器装置可以包括:用于指示读取操作和写入操作的写入启用装置;用于存储有待访问的地址的地址装置;以及用于存储正在传送的数据的数据存储装置。
该嵌入式处理系统可以包括存储器装置,该存储器装置存储该目标程序。
该嵌入式处理系统包括用于指导该调试支持单元装置的操作的软件。
已提供了此简要概述来以简化的形式引入在以下详细说明书中进一步详细描述的某些概念。除非另外明确表述,否则本简要概述并不旨在标识所要求的主题的关键或必要特征,也不旨在限制或限定所要求保护的主题的范围。
附图说明
参照以下附图描述了非限制性且非穷尽的实施例,其中,除非另外指定,贯穿不同视图,类似的标号指代类似的部分。附图中元件的大小和相对位置不一定成比例地绘制。例如,对不同元件的形状进行选择、放大以及定位,以提高附图可识别性。为了易于在附图中进行识别,选择了如所描绘的这些元件的具体形状。以下参照附图描述一个或多个实施例,在附图中:
图1是常规调试系统。
图2是具有改善的调试支持单元实施例的调试系统;并且
图3是图2的调试支持单元的数据流实施例。
具体实施方式
在以下说明中,列出了某些特定细节以便提供对各个所披露的实施例的透彻理解。然而,相关领域的技术人员将会认识到,多个实施例可以无需这些具体细节中的一个或多个细节来实践,或者可以使用其他方法、部件、材料等来实践。在其他实例中,并未详细示出或者描述与计算系统(包括客户端和服务器计算系统)以及网络相关联的公知结构,以避免对这些实施例的不必要的晦涩说明。
随着时间推移,现代的微处理器和应用程序继续变得更复杂并且应用程序设计周期继续变得更短。为了解决这些新需求,强大并且高效的调试系统变得对软件从业者(诸如应用设计者)来说更重要。发明人已经认识到在已知的调试工具(诸如图1的常规调试系统10)中发现的某些弱点和低效。通过在本披露中详细描述的改善的调试支持单元(DSU)的一个或多个创造性实施例解决并改善已知的调试工具的缺点。改善的DSU具有与图1的常规DSU 58不同的强大的新结构,该结构可以简化调试流程并且减少调试系统对应用程序的影响。
当发明人研究常规调试系统10时,认识到尽管存根方法主导性地在软件中实现,但系统要求处理器52的某些硬件资源。例如,在常规调试系统10中,处理器52的中断资源、UART接口以及特定存储器空间必须专用于调试器。
在常规调试系统10中,专用中断资源用于初始化调试模式。当实现存根方法时,仅可以在处理器52已经处于调试模式之后才设定新的调试点(即,存根62)。相应地,必须以不同的方式触发第一次进入调试模式。在许多情况下,通过触发专用中断源并且使用相关联的中断处理程序初始化调试方法来实施第一次进入调试模式。
同样在常规调试系统10中,为调试器分配通信接口,诸如专用UART接口。专用UART接口用于从主机计算设备12接收命令并且将信息从目标系统50传输回主机计算设备12。
常规调试系统10中的存储器空间也必须专用于调试器。在软件中实现存根方法的所有功能。附加的软件指令存储在目标系统50的存储器模块56中。
目标系统50的某些硬件资源对调试器的专用造成设计低效并且对目标系统50带来令人不快的限制。例如,将中断资源专用于调试器意味着专用中断资源被保存并且无法由软件从业者用于另一个目的。据此,将UART资源专用于调试系统意味着至少在调试会话期间UART资源无法由目标系统50使用。进一步地,由于软件从业者无法预测将何时需要调试,UART资源必须通常保持被分配并且不在目标系统50的正常操作中使用。
作为另一个示例,存根方法将调试软件指令放置在存储器中。在DSU 58没有在DSU 58中存储可选DSU软件66的情况下,调试软件指令替代地必须存储在存储器模块56中。在这些情况下,用于调试软件指令的存储器不可用于实现程序60。在目标系统具有非常有限的微处理器的情况下,丢失用于目标程序60的存储器空间会变得非常重要。存根方法的另一个限制是要求用存根62替换程序60的正常指令。为了实现该替换,存储器模块56必须包括程序60存储在其中的动态可重写存储器,诸如随机存取存储器(RAM)。
常规调试系统10也是非常复杂的。在存根方法中,实现调试操作需要许多步骤。例如,必须用非法指令替换正常指令,必须保存上下文,调试操作必须访问处理器52的特定状态,并且然后必须恢复被替换的原始正常指令。当退出存根方法时,也必须恢复处理器52的原始状态(例如,上下文)信息。存根方法的这种复杂实现方式非常低效。
图2是具有改善的调试支持单元实施例158的改善的调试系统100。改善的调试系统100具有包括主机和目标的至少两个计算设备。主机是计算设备112,诸如个人计算机、膝上计算机、平板、智能电话或某个其他计算设备;目标是目标系统150,该目标系统可以是指向零售设备、制造设备以及工业设备、军用设备、消费者设备的嵌入式计算设备、或者包括基于处理器的系统的几乎任何其他种类的设备。在一些情况下,在图2中展示的目标系统150可以表示整个设备,该目标系统具有为了简洁而未示出的其他特征。例如,在图2中展示的目标系统150可以是工业机器、建筑系统(诸如空调或加热单元)、汽车或某个其他整体系统。在其他实施例中,在图2中展示的目标系统150可以是具有在IC封装体中形成的一个或多个裸片的集成电路(IC)。在另外其他实施例中,在图2中展示的目标系统150可以是在单个裸片上形成的结构集。
主机计算设备112包括硬件模块114和存储器模块116。主机计算设备112可以接收输入并且通过一个或多个人类接口设备(HID)(诸如呈现设备128(例如,显示器、LED、振动器或其他触觉反馈设备)、第一输入设备130(例如,键盘、小键盘或麦克风)以及第二输入设备132(例如,鼠标、触控板、触摸屏、智能笔等等))提供输出。
目标系统150包括处理器152、支持逻辑154、存储器模块156以及改善的调试支持单元(DSU)158。在一些情况下,存储器模块156完全在图2中示出的目标系统150内部、完全在目标系统150外部或者部分在目标系统150内部并且部分在其外部。
在一些情况下,处理器152是具有根据高级RISC机器(ARM)设计形成的核心的精简指令集计算机(RISC)设备。如图2所示,处理器152包括具有多个级的多级指令流水线。第一流水线级170是取出级,该取出级负责从存储器模块156检索软件指令。第二流水线级172是解码级。解码级负责解析在第一流水线级170中取出的软件指令。解码级将包括用于标识、分组或以其他方式区别软件指令的字节、半字节、对、其他位分组或单独位的解码逻辑176。解码级还可以包括分支逻辑174和地址生成逻辑178。分支逻辑174执行与跳转或分支软件指令相关联的前瞻动作,而地址发生逻辑178处理软件指令的在存储器模块156中检索或存储数据的多个部分。第三流水线级180是执行单元级。执行单元级可以包括一个或多个算术逻辑单元(ALU)、乘法单元、比较器单元或其他执行逻辑。第四流水线级182是负责在存储器模块156中存储(即,写回)在执行单元中生成的数据的回写单元。
还考虑了处理器152的其他架构。其他架构可以是被配置成用于以不同的方式操作的RISC架构或处理器。在一些情况下,例如,像发明人设想的,处理器152可以被安排在具有五个状态的执行流水线中:预取状态、取出状态、解码状态、存储器访问状态以及执行状态。
改善的DSU 158包括调试控制器222、调试控制寄存器202、索引寄存器组(即,写入启用寄存器196、地址寄存器198以及数据寄存器200)以及测试端口194。调试控制寄存器202可以包括离散部分(例如,单个位或两个或更多位的分组),诸如调试模式启用/禁用部分204、流水线冲洗状态部分206、执行停止控制部分208、陷阱处理程序控制/状态部分210以及其他部分。
可以在改善的DSU 158与处理器152之间传递核心控制信号184。在一些实施例中,可以在单个导管中传递所有核心控制信号184。在其他实施例中,可以在调试控制器222与处理器152的执行流水线的各个级之间传递核心控制信号184中的某些信号。例如,可选取出级控制信号186在调试控制器222与第一流水线级170之间传递,可选解码级控制信号188在调试控制器222与第二流水线级172之间传递,可选执行单元控制信号190在调试控制器222与第三流水线级180之间传递,可选回写级控制信号192在调试控制器222与第四流水线级182之间传递。这些及其他控制信号可以在调试控制器222与处理器152中所展示的这些级中的一个或多个级之间传递。在一些情况下,这种信号中的一个或多个信号可以是单向的;在其他情况下,这种信号中的一个或多个信号是双向或多向的。
其他可选信号也可以在改善的DSU 158的结构之间传递。例如,调试控制寄存器信号a在调试控制器222与调试控制寄存器202之间传递。数据寄存器控制信号218、地址寄存器控制信号216以及写入启用寄存器控制信号214可以可选地在调试控制器222与对应的索引寄存器(即,数据寄存器200、地址寄存器198以及写入启用寄存器196)之间传递。
测试端口194包括通信收发器电路。在一些实施例中,测试端口194符合标准化协议,该标准化协议可以包括硬件协议、软件协议或硬件和软件协议。例如,测试端口194可以符合IEEE的协议,诸如联合测试访问小组(JTAG)。在测试端口194与调试控制器222之间传递控制和数据信号212。此外,测试端口194可以经由第一通信介质134a耦合到主机计算设备112。第一通信介质134a可以是串行通信介质(例如,RS-232、USB等等)或多路通信介质(例如,并行)。第一通信介质134a可以是有线的或无线的(例如,蓝牙、红外(IR)、蜂窝等等)。相应地,在一些情况下,主机计算设备112和目标系统150可以远离彼此、但是相对靠近彼此。在其他情况下,主机计算设备112和目标系统150可以彼此分离开很大的距离(例如,在不同的房间、不同的城市等等)。如在此所使用的,测试端口194可以另外被称为通信收发器电路、测试端口收发器电路、通信测试端口等等。
目标系统150的支持逻辑154可以包括对于目标系统150的运作有用的任何类型的逻辑。例如,支持逻辑154可以包括通用输入/输出(GPIO)、模数(A2D)转换器和数模(D2A)转换器、加速度计或其他微电子机械系统(MEMS)、收发器、时钟、计数器、防篡改电路、电源、加密/解密或其他安全逻辑、用于向和从在目标系统150内部或外部的存储器传递数据的存储器控制器等等。在一些情况下,目标系统150可选地经由支持逻辑154、经由第二通信介质134b耦合到主机计算设备112。第二通信介质134b可以类似于第一通信介质(即,串行、多路、有线、无线等等)。
在一些实施例中,专门用硬件中实现整个改善的DSU 158。也就是,改善的DSU 158的所有结构由不具有任何软件的电子电路组成。在其他实施例中,用软件实现改善的DSU 158的某些部分。在这些情况下,调试控制器222可以包括可选处理器164和用于存储改善的DSU软件166的可选存储器。在这两种情况下(即,专门用硬件实现改善的DSU 158并且改善的DSU 158具有用软件实现的部分),可以包括可选逻辑模块168。可选逻辑模块168可以包括时钟逻辑、计数逻辑、定时器逻辑、比较器逻辑、数学逻辑或任何其他逻辑。
调试控制器222可以在此被称为调试控制电路、调试电路或某个其他类似的术语。可以使用例如组合逻辑将调试控制器222实现为状态机。除其他事项之外,调试控制器222被安排成用于在处理器152与改善的DSU 158的至少一个寄存器之间传递信号。
调试软件程序126可以存储在存储器模块116中。经由在主机计算设备112上运行的调试软件程序126,软件从业者可以向目标系统150发送调试命令并且从目标系统150接收信息。调试命令准许软件从业者执行某些调试功能,诸如停止处理器152、读取或修改处理器152的状态、读取或修改存储器模块156中的信息和将处理器152恢复到运行状态。
通常来说,软件从业者实现具有三个组成部分的调试操作。第一组成部分准许软件从业者进入调试模式,该调试模式停止目标设备程序软件160的正常流程。第二组成部分准许软件从业者访问处理器152的一个或多个状态。例如,软件从业者可以读取或修改通用寄存器、控制寄存器、程序计数器寄存器等等。第三组成部分准许软件从业者退出调试模式。当退出调试模式时,在一些情况下,恢复程序状态、上下文以及存储器数据中的一些或全部,从而使得目标设备程序软件160将在与进入调试模式时相同的程序情况下恢复。
与在常规调试系统10(图1)上执行的常规存根方法相比,改善的调试系统100提供了许多优点。例如,改善的调试系统100是简单得多的实现方式。例如,改善的调试系统100的一些实施例完全在硬件中形成。在这些实施例中,可以通过仅仅配置少量的硬件寄存器(例如,包括一个控制寄存器和三个索引寄存器的四个寄存器)执行调试。
改善的调试系统100的硬件寄存器靠近处理器152形成。在一些情况下,寄存器与处理器152在同一个集成电路封装体内、与处理器152在同一裸片上或者在某个其他区域中形成。在处理器152是微处理器的情况下,例如,可以在微处理器内实现这些少量的寄存器。在这些情况下,可以在微处理器内形成整个改善的DSU 158。可替代地,在微处理器中实现改善的DSU 158的仅仅一些部分(诸如这些少量的硬件寄存器)。
如在此所使用的,改善的调试系统100的硬件寄存器还可以可互换地被称为改善的DSU 158的多个专用调试寄存器、调试寄存器、专用寄存器等等。硬件寄存器用于帮助对由处理器152执行的软件程序进行调试。
使用硬件寄存器,软件从业者无需指导用非法指令(例如,存根62)替换正常的程序指令。替代地,可以加载某些寄存器值,并且由于硬件寄存器与处理器152的各个部分(诸如执行流水线)集成在一起,软件从业者能够指导目标设备程序软件160的执行。软件从业者可以停止执行、重新开始执行、从存储器或寄存器检索数据值、将数据值存储在存储器或寄存器中或执行其他动作。此外,软件从业者无需如在存根方法中所必需的那样当执行停止时指导操作来保存处理器152的上下文或当重新开始执行时指导操作来恢复处理器152的上下文。
改善的调试系统100的另一个优点是不存在专用资源。改善的DSU 158包括用于实现调试操作的少量的硬件寄存器。软件从业者无需使用目标系统150的其他硬件资源执行目标系统150的期望操作。例如,目标系统150的以其他方式可用的通信端口无需专用于调试,这不同于常规调试系统10。附加的优点与存储器相关联。在改善的调试系统100中,与目标系统150相关联的存储器可以全部用于实现并支持目标设备程序软件160,并且无需额外的存储器来支持调试操作。此外,由于无需存根62,目标系统150可以在任何类型的存储器(包括易失性存储器,诸如RAM,和非易失性存储器,诸如只读存储器(ROM))中存储目标设备程序软件160。
改善的调试系统100的硬件寄存器可以被分组为两个集合:索引寄存器和控制寄存器。在图2的非限制性实施例中,形成三个索引寄存器并且形成一个控制寄存器。在其他实施例中,形成更多或更少索引寄存器。在其他实施例中,形成更多或更少控制寄存器。
图2的三个索引寄存器包括:第一索引寄存器,即,写入启用寄存器196;第二索引寄存器,即,地址寄存器198;以及第三索引寄存器,即,数据寄存器200。在本实施例中,写入启用寄存器196是一个位宽,地址寄存器198是八个位宽,并且数据寄存器是32个位宽。发明人还已经设想了其他配置。例如,在具有16位宽或32位宽地址总线的处理器152中,地址寄存器198可以被形成为具有相应的宽度。据此,在具有八个位宽或16位宽数据总线的处理器152中,数据寄存器200可以被形成为具有相应的宽度。
图2的调试控制寄存器202可以被认为是具有四个位的单个寄存器、各自具有一个位的四个寄存器,或者控制寄存器组可以具有更多或更少寄存器、更多或更少位等等的某个其他配置。在调试控制寄存器202中,第一控制部分是调试模式启用/禁用部分204,该部分是一个位宽并且被安排为被写入或读取;第二控制部分是流水线冲洗状态部分206,该部分是一个位宽并且被安排为只读;第三控制部分是执行停止控制部分208,该部分是一个位宽并且被安排为被写入或读取;并且第四控制部分是陷阱处理程序控制/状态部分210,该部分是一个位宽并且被安排为被写入或读取。
索引寄存器通常用于指示正在调试处理器152的哪些状态。控制寄存器通常用于启用和禁用调试、与处理器152的执行流水线交互、和执行其他控制操作。以下将更详细地描述索引寄存器集合和控制寄存器集合两者。在表1和表2中示出了索引寄存器集合和控制寄存器集合的示例性而非限制性实施例。
表1–索引寄存器的描述
表2–控制寄存器的描述
在一些实施例中,改善的调试系统100的硬件寄存器(例如,表1和表2的硬件寄存器)可以被改善的DSU 158在软件从业者的指导下并且经由主机计算设备112写入、读取或只写入和读取。例如,软件从业者可以经由传递到呈现设备128的界面与调试软件程序126交互。界面可以是例如在显示器上呈现的图形用户界面(GUI)。使用一个或多个输入设备(诸如第一输入设备130和第二输入设备132),软件从业者可以标识表示这些硬件寄存器中的一个或多个硬件寄存器的数据。以此方式,软件从业者可以指导将某些值写入这些硬件寄存器中的一个或多个硬件寄存器,并且软件从业者可以询问存储在这些硬件寄存器中的一个或多个硬件寄存器中的这些值。软件从业者可以开始、停止并且重新开始执行处理器152。软件从业者可以读取值和将其写入通用寄存器、控制寄存器、状态寄存器以及处理器152的任何上下文的寄存器。此外,软件从业者可以读取值和将其写入存储器模块156。软件从业者可以通过读取或写入与支持逻辑154相关联的数据、通过改变目标设备程序软件160的指令或执行与目标系统150相关联的任何其他动作来更改目标系统150的操作。换言之,在一些实施例中,软件从业者可以访问存储器模块156的每个位、处理器152的每个寄存器的每个位、改善的DSU158的每个寄存器的每个位、与支持逻辑154相关联的数据的每个位等等。以此方式,改善的调试系统100提供无法由图1的常规调试系统提供的低成本、非常有效且高效的调试系统。
在一些实施例中,可以经由在主机计算设备112上执行调试软件程序126来实施软件从业者的调试指导。经由第一通信介质134a通过测试端口194双向地传递指令和数据。可以全部在改善的DSU 158内、全部在改善的DSU 158外部或部分在改善的DSU 158内并且部分在其外部配置的测试端口194与调试控制器222交互。以此方式,调试控制器222由软件从业者指示读取这些硬件寄存器的某些硬件寄存器、写入这些硬件寄存器的某些硬件寄存器、和读取并写入这些硬件寄存器的某些硬件寄存器。
在一些情况下,这些硬件寄存器中的一个或多个硬件寄存器可以由处理器152在由处理器152执行的软件(诸如目标设备程序软件160)的指导下写入或读取并写入。例如,如果软件从业者预料到由目标系统150的操作所引起的具体挑战,软件从业者可以将执行非常特定的动作的软件指令包括在目标设备程序软件160中。例如,在执行目标设备程序软件160期间的某些点,软件从业者可以写入将加载这些硬件寄存器中的某些硬件寄存器的软件指令以便强制读取特定的寄存器或存储器;并且软件指令还将强制将存储在那些寄存器中的值经由第一通信介质134a或第二通信介质134b输出到主机计算设备112。还设想用于配置、操作并以其他方式利用改善的DSU 158的调试特征的其他程序操作。
写入启用寄存器196指示软件从业者所指示的调试操作是读取操作还是写入操作。当第一值(例如,如表1中所展示的“1”)被写入到写入启用寄存器196时,硬件寄存器将执行写入操作。当第二值(例如,如表1中所展示的“0”)被写入到写入启用寄存器196时,硬件寄存器将执行读取操作。具体的写入或读取操作可以被指向处理器152的寄存器、存储器模块156的一个或多个地址、支持逻辑154的存储器映射硬件设备、或某个其他可访问的位置。
地址寄存器198指示将调试处理器152的哪个状态。在一些情况下,如表2所示,例如,地址寄存器198可以是只读的。在其他情况下,也可以读取地址寄存器198。地址寄存器198可以接受具有N个位的地址值。N个位可以表示全地址、部分地址或多个地址。在表1的实施例中,值N被定义为8以便指示八个位宽的地址。在其他实施例中,N可以是4、16、32、64或某个其他值。在一些实施例中,N是八的整数倍。
将调试的处理器152的状态可以指示在处理器152的具体操作模式下可访问的寄存器组或其他存储器映射地址。例如,如果处理器152被安排成用于在监管程序模式和非监管程序模式下操作,处理器152可以基于操作模式访问不同的寄存器。以此方式,处理器152可访问的所有寄存器可以是基于数字地址单独地或结合操作模式或某个其他索引值可唯一定址的。当软件从业者指导对地址寄存器198的写入操作时,软件从业者向改善的DSU 158提供将读取或写入唯一可标识的寄存器、存储器地址或存储器映射地址的指导。在一些实施例中,改善的DSU 158的具体特征准许自动增量地址寄存器198、自动减量地址寄存器198或以其他方式自动调整地址寄存器198的内容以使写入或读取数据更高效。
在一些实施例中,数据寄存器200是只写寄存器。在其他实施例中,数据寄存器200是只读寄存器。在另外其他实施例中,诸如表1的实施例,数据寄存器200是读/写寄存器。当软件从业者希望向寄存器写入数据时,从业者将标识有待写入的数据,并且调试软件程序126将数据从主机计算设备112传递到改善的DSU 158,该改善的DSU将然后将数据加载数据寄存器200中。在一些情况下,改善的DSU 158可以直接向存储器模块156按照改善的DSU 158与存储器模块156之间的虚线所指示的那样读取和写入数据。在这些情况下或可替代地在其他情况下,改善的DSU 158可以通过在执行流水线的具体级向处理器152中插入指令来指导对存储器156读取和写入。可以在一些实施例中经由电子电路执行从存储器模块156读取并且向存储器模块156写入数据的操作。在其他实施例中,其中,调试控制器222包括可选处理器164和改善的DSU软件166,可以程序地执行在存储器模块156中读取和写入数据(例如,通过写入在第二流水线级172(即,解码级)解码并且由第三流水线级180(即,执行级)执行的的软件指令)。
控制寄存器组中的单独寄存器的操作还可以由软件从业者经由主机计算设备112或程序地通过在目标设备程序软件160或某个其他软件中定义的指令指导。在一些实施例中,如表2中所定义的,例如,控制寄存器组中的单独寄存器被形成为单个调试控制寄存器202的离散部分(例如,相邻位)。
在一些实施例中,调试模式启用/禁用部分204可以仅由改善的DSU 158使用例如调试控制器222访问。在一些实施例中,软件从业者必须指导改善的DSU 158经由主机计算设备112访问调试模式启用/禁用部分204。在其他实施例中,处理器152所执行的软件指令可以指导改善的DSU 158访问调试模式启用/禁用部分204。在这些或其他实施例中,可以在任何时间写入调试模式启用/禁用部分204,包括目标系统150的初始化(例如,在复位操作时或在其期间)。因为改善的调试系统100配置有调试模式启用/禁用部分204,所以无需像其在图1的常规调试系统10中那样的专用中断或错误处理程序。
当调试模式启用/禁用部分204被设定为第一值(例如,“1”)时,处理器152的执行流水线暂停。流水线暂停信号可以被作为调试控制寄存器信号220之一、作为核心控制信号184之一并且此外或可替代地经由某个其他装置传递。当调试模式启用/禁用部分204被设定为第二值(例如,“0”)时,处理器152的执行流水线重新开始。
当调试模式启用/禁用部分204被设定为第一值时,还可以创建其他信号并且将其作为一个或多个调试控制寄存器信号220或经由某个其他装置传递。例如,在一些实施例中,除流水线暂停信号之外,还生成流水线清除或冲洗信号。流水线暂停信号暂停从存储器模块156向处理器152发出新指令。此外,在一些实施例中,已经存在于执行流水线中的软件指令被允许引退。这个操作允许在已知的、可预测的点停止处理器152。也就是,可以知道哪个指令是有待在处理器152停止并且调试器开始时全部完成的最后一个指令。以此方式冲洗执行流水线允许软件从业者从已知开始点执行调试操作。也就是,处理器152可以被置于已知状态,从而使得调试操作是可预测的并且不受在调试器开始时执行的延迟或部分指令影响。
在一些实施例中,在冲洗执行流水线之后,禁用流水线暂停信号和流水线清除信号。通过禁用这两个信号,软件从业者可以使用处理器512执行将辅助调试操作的软件指令。也就是,软件从业者可以经由调试软件程序126手动地将软件指令从主机计算设备112传递通过改善的DSU 158并进入处理器152。在一些情况下,全部软件指令在初始级(诸如第一流水线级170(即,取出级))被传递到处理器152中。在其他情况下,软件指令的各部分被传递到处理器152的执行流水线的不同级(例如,第二流水线级172(即,解码级)、第三流水线级180(即,执行级)、第四流水线级182(即,回写级)或某个其他级)中。
调试控制寄存器202的流水线冲洗状态部分206可以是相对于改善的DSU 158的只读部分和相对于处理器152的只写部分。在其他情况下,改善的DSU 158和处理器152两者可以读取流水线冲洗状态部分206。在其他情况下,改善的DSU 158和处理器152两者可以写入流水线冲洗状态部分206。流水线冲洗状态部分206在调试模式已经被断言之后(例如,将调试模式启用/禁用部分204设定为第一值)提供执行流水线的冲洗操作的状态指示。当冲洗操作正在进行时,流水线冲洗状态部分206将指示第一值。在冲洗操作完成之后,流水线冲洗状态部分206将指示第二值。以此方式,调试控制器222可以轮询流水线冲洗状态部分206并且保持空闲直至流水线冲洗状态部分206由处理器加载有第二值。一旦流水线被冲洗,处理器152就处于调试模式并且可以被调试。
执行停止控制部分208(即,表2的实施例的停止陷阱(StopTrap)信号)用于启用和禁用可以在目标设备程序软件160的具体地址停止正常程序执行的特征。此外或可替代地,执行停止控制部分208可以用于实现单步调试模式。当设定这个特征时,调试控制器222将与处理器152合作以便当遇到陷阱或其他执行停止控制信号时停止程序执行或以其他方式启用这种特征。在一些情况下,改善的DSU158安排有一个或多个可配置的或以其他方式用户定义的执行停止控制信号。
在一个或多个非限制性实施例中,执行停止控制部分208生成以与用调试模式启用/禁用部分204生成的流水线暂停和流水线清除信号类似方式实现的指令陷阱信号。通过将第一或第二值加载到执行停止控制部分208中,处理器152将阻止新指令进入执行流水线并且当确定执行停止状况时(例如,陷阱、具体的中断、用户定义的状况等等)处理器152将准许当前指令从执行流水线引退。以此方式,软件从业者所产生的或者作为目标设备程序软件160的一部分执行的每个软件指令进入执行流水线、导致执行停止状况、暂停执行流水线并且被准许引退。为了调试“下一个”指令,改善的DSU 158将用目标设备程序软件160或另一个程序的下一个序列地址设定指令间断陷阱。
调试控制寄存器202的陷阱处理程序控制/状态部分210用于控制陷阱处理操作。在表2中所展示的实施例中,陷阱处理程序控制/状态部分210(即,陷阱挂起)可以被读取或写入。在不同实施例中可以用其他方式实现陷阱处理程序控制/状态部分210。当冲洗执行流水线时,处理器152可以将陷阱处理程序控制/状态部分210设定为第一值(例如,“1”)以便指示处理器152在陷阱处理程序中停止并且已经进入调试模式。这个第一值可以由改善的DSU 158读取以便获知处理器152已经进入调试模式。当改善的DSU 158在陷阱处理程序控制/状态部分210中读取第二值(例如,“0”)时,改善的DSU 158将知道处理器152尚未停止并且未处于调试模式。在一些情况下,当调试模式由软件从业者或以其他方式通过改善的DSU158指导时,改善的DSU 158将轮询陷阱处理程序控制/状态部分210并且在陷阱处理程序控制/状态部分210被设定为第二值并且开始其他操作(诸如单步操作)时、当陷阱处理程序控制/状态部分210被处理器152设定为第一值时保持空闲。
当改善的DSU 158准备好开始处理下一个指令时,该指令可以是目标设备程序软件160中的下一个软件指令或者可以是由软件从业者指导并从主机计算设备112传递的另一个软件指令,改善的DSU158将把第一值写入到陷阱处理程序控制/状态部分210中。处理器152将读取陷阱处理程序控制/状态部分210中的第一值并且重新开始处理。重新开始处理可以是另一个单个步骤,或者取决于软件从业者已经如何指导其他硬件寄存器,重新开始处理可以是自由运行处理器152。
图3是图2的改善的调试支持单元(DSU)158的数据流实施例300。改善的DSU 158支持两种调试模式:正常调试模式和单步调试模式。数据流实施例300中的处理在302开始。
在304,使用主机计算设备112或软件程序(例如,目标设备程序软件160)的软件从业者致使改善的DSU 158将第一值加载到调试控制寄存器202的调试模式启用/禁用部分204中。在306,改善的DSU 158将轮询或以其他方式询问调试控制寄存器202的流水线冲洗状态部分206。当流水线冲洗状态部分206加载有第一值时,改善的DSU 158将保持空闲或以其他方式不执行具体的调试操作。这由从306处的询问发出并且返回到306处的询问的箭头表示。当改善的DSU 158确定流水线冲洗状态部分206加载有第二值时,改善的DSU 158已经进入调试模式。调试模式可以是正常调试模式,或者调试模式可以是单步调试模式。在正常调试模式下,处理降落到308。在单步调试模式下,处理降落到312。
在308处的支持调试模式下,允许改善的DSU 158访问处理器152的架构状态。也就是,改善的DSU 158可以读取或写入处理器152的寄存器、存储器模块156的地址、支持逻辑模块154的存储器映射地址、或由软件从业者确定的其他地址。如果读取架构状态,例如,改善的DSU 158将在写入启用寄存器196中加载第二值(例如,如表1中定义的“0”),并且改善的DSU 158将在地址寄存器198中加载具体的地址。接下来,改善的DSU 158将从数据寄存器200检索值,该值可以经由测试端口194传递到主机计算设备112。如果写入具体状态,改善的DSU 158将在写入启用寄存器196中加载第一值(例如,如表1中定义的“1”)。改善的DSU 158将在地址寄存器198中加载具体的地址并且将具体的数据值加载到数据寄存器200中。改善的DSU 158将然后将具体的数据值写入到寄存器、存储器位置、存储器映射位置或地址寄存器198中的地址所定义的其他位置中。在一些情况下,改善的DSU 158将直接从相应的地址读取和写入数据。在其他情况下,改善的DSU 158将与处理器152的执行流水线的一个或多个级合作做出动作以便实施读取或写入。
在软件从业者或调试程序指令执行具体动作以便在308处访问架构状态(即,在具体的地址处读取/写入数据),处理降落到310。在310,改善的DSU 158将调试模式启用/禁用部分204设定为第二值。处理器152将重新开始执行程序指令。
在正常调试模式下,处理在322结束。然而,认识到数据流实施例300中的处理可以在302在任何时间通过设定调试控制寄存器202的调试模式启用/禁用部分204再次开始。
在312讨论单步调试模式下的处理。在312,改善的DSU 158将把执行停止控制部分208(即,如表2中所定义的停止陷阱)设定为第一值(例如,“1”)。将确定与具体的指令相对应的具体的指令间断陷阱、中断或其他用户配置的执行停止控制,该指令是在进入调试模式时处理器152从其处停止的下一个指令。在图3中展示为“ibreak”的指令间断陷阱、中断或用户配置的执行停止控制可以是下一个指令的具体地址或指示符的内部寄存器、缓冲器、或其他储存库。
在314,改善的DSU 158将把调试控制寄存器202的调试模式启用/禁用部分204设定为第二值(例如,如表2中定义的“0”)。将调试模式启用/禁用部分204设定为第二值导致退出正常调试模式以及重新开始处理器152。在316,改善的DSU 158将询问、轮询或以其他方式检查调试控制寄存器202的陷阱处理程序控制/状态部分210。当陷阱处理程序控制/状态部分210被设定为第二值(例如,如表1中所定义的“0”)时,处理将保持在316的询问动作中。当陷阱处理程序控制/状态部分210被处理器152设定为第一值(例如,如表1中所定义的“1”)时,处理将降落到318。
如在此所讨论的,直至执行流水线被冲洗(即,执行流水线中的指令被准许引退)并且处理器152准备好被调试时处理器152才将陷阱处理程序控制/状态部分210设定为第一值。
在318,改善的DSU 158被准许驱动架构状态。这个驱动架构状态的动作类似于在308处的处理,其中,改善的DSU 158被准许读取、写入、或读取并写入架构状态。在由软件从业者或调试软件执行这种调试之后,在图3中展示为“ibreak”的指令间断陷阱、中断或用户配置的执行停止控制被设定为下一个指令。处理降落到320。
在320,陷阱处理程序控制/状态部分210被改善的DSU 158设定为第一值。采用这个行动准许处理器152重新开始正常指令流程。改善的DSU 158中的处理将返回到316。当处理器152取出下一个软件指令时,下一个软件指令将导致另一个陷阱或其他执行停止控制发生,这在318将作为另一个单步继续循环。
为了退出单步调试模式,改善的DSU 158可以将执行停止控制部分208设定为第二值并且将调试模式启用/禁用部分204设定为第二值。处理器152将重新开始软件指令执行,并且改善的DSU 158中的处理将传递到322。
如在本披露中所使用的,术语“模块”指代特定用途集成电路(ASIC)、电子电路、处理器和操作以便执行一个或多个软件或固件程序的存储器、组合式逻辑电路、或提供参照模块描述的功能的其他合适的组件(硬件、软件、或硬件和软件)。
如在本披露中所使用的,处理器(即,处理单元)是指单独地、共享的或在一个组内的具有一个或多个处理核(例如,执行流水线)的一个或多个处理单元,包括执行指令的中央处理单元(CPU)、数字信号处理器(DSP)、微处理器、微控制器、状态机等等。本说明书的实施例中的一个处理器可以与另一个处理器相同或不同。例如,主机计算设备112中的处理器可以与目标系统150的处理器152相同或不同。当包括改善的DSU 158的可选处理器164时,目标系统150的处理器152可以与这种可选处理器164相同或不同。
在本披露中,存储器(诸如存储器模块156的存储器和改善的DSU 158的可选存储器,当包括这种存储器时)可以在一个配置或另一个配置中使用。存储器可以被配置成用于存储数据。可替代地或此外,存储器可以是非瞬态计算机可读介质(CRM),其中,CRM被配置成用于存储可由处理器执行的指令。指令可以单独地或作为指令组存储在文件中。文件可以包括函数、服务、库等等。文件可以包括一个或多个计算机程序或者可以是更大计算机程序的一部分。可替代地或此外,每个文件可以包括对于实施在本披露中描述的系统、方法和装置的计算功能有用的数据或其他计算支持材料。存储器可以被形成为一个或多个存储器,并且每个存储器可以包括用于读取和写入的瞬态和非瞬态、易失性和非易失性计算机可读介质的任何组合。易失性计算机可读介质包括例如随机存取存储器(RAM)。非易失性计算机可读介质包括例如只读存储器(ROM)、磁介质(诸如硬盘)、光盘驱动器、闪存设备、CD-ROM等等。在一些情况下,具体的存储器被虚拟地或物理地分离为多个分离的区域,诸如第一存储器、第二存储器、第三存储器等。在这些情况下,应理解的是不同存储器划分可以位于不同设备中或体现在单个存储器中。存储器的一些或所有存储内容可以包括可由处理设备执行以便实施一个或多个具体动作的软件指令。
图3的数据流实施例300展示了可以由改善的DSU 158的实施例使用的一个或多个过程。在此方面,每个所描述的过程可以表示包括用于实现所指定的逻辑功能的一个或多个可执行指令的代码模块、区段或部分。在一些实现方式中,在过程中标注的功能可以按照不同的顺序发生、可以包括附加功能、可以并发地发生和/或可以被省略。
在前述描述中,列出了某些特定细节以便提供各个所披露的实施例的透彻理解。然而,本领域的技术人员将认识到可以在没有这些特定细节中的一个或多个细节的情况下或者通过其他方法、组件、材料等等实践各实施例。在其他情形下,与包括客户机和服务器计算系统的电子和计算系统相关联的公知结构以及网络未被详细地示出或描述以便避免不必要地混淆这些实施例的描述。
除非上下文另有要求,否则贯穿说明书和所附权利要求书,“包括(comprise)”一词及其多种变体(诸如,“包括(comprises)”和“包括(comprising)”)将以一种开放式的和包含性的意义来进行解释,例如,“包括,但不限于(including,but not limited to)”。
贯穿本说明书所提到的“一个实施例”或“一种实施例”及其组合是指与该实施例相关联地描述的具体的特征、结构或特性被包括在至少一个实施例中。因而,贯穿本说明书,短语“在一个实施例中”或“在实施例中”在不同场合中的出现并不必定都是指相同的实施例。另外,特定特征、结构或特性可以根据任何合适的方式组合在一个或多个实施例中。
如在本说明书和所附权利要求书中所使用的,除非内容和上下文另外明确指明,否则单数形式的“一种”、“一个”以及“所述”包括复数对象。还应当注意,除非内容和上下文视情况而定明确指示包容性或排他性可以,连接词术语“和”及“或”在最广义上被采用,包括“和/或”。此外,当本文中被引用为“和/或”时,“和”与“或”的组合旨在包含包括所有相关联术语或思想的实施并包括少于所有相关联术语或思想的一个或多个其他替代实施例。
本文提供的本披露的小标题以及摘要只是为了方便起见,而并非限制或解释这些实施例的范围或含义。
上述各实施例可以被组合以提供进一步的实施例。如果有必要,可以对实施例的各方面进行修改,以采用各专利、申请和公开的概念来提供更进一步的实施例。鉴于以上详细说明,可以对实施例做出这些和其他变化。总之,在以下权利要求书中,所使用的术语不应当被解释为将权利要求书局限于本说明书和权利要求书中所披露的特定实施例,而是应当被解释为包括所有可能的实施例、连同这些权利要求有权获得的等效物的整个范围。因此,权利要求书并不受到本披露的限制。
Claims (20)
1.一种调试启用处理设备,包括:
处理器;
通信收发器电路;以及
调试支持单元,所述调试支持单元具有帮助对由所述处理器执行的软件程序进行调试的多个专用调试寄存器,所述多个调试寄存器包括:
具有至少四个位的控制寄存器,所述至少四个位包括用于启用/禁用多项调试操作的控制位;以及
索引寄存器组,所述索引寄存器组可配置成用于向和从所述处理器传递数据。
2.根据权利要求1所述的调试启用处理设备,其中,所述控制寄存器包括:
所述至少四个位中的第一位,所述第一位被安排成用于当所述至少四个位中的所述第一位采用第一值时启用调试模式,并且被进一步安排成用于当所述至少四个位中的所述第一位采用第二值时禁用所述调试模式;
所述至少四个位中的第二位,所述第二位被安排成用于提供有关流水线冲洗操作的状态;
所述至少四个位中的第三位,所述第三位被安排成用于启用和禁用陷阱处理操作;以及
所述至少四个位中的第四位,所述第四位被安排成用于控制所述陷阱处理操作。
3.根据权利要求1所述的调试启用处理设备,其中,所述索引寄存器组包括:
写入启用寄存器,所述写入启用寄存器用于控制数据传送操作是读取操作还是写入操作;
地址寄存器,所述地址寄存器用于存储表示所述处理器的架构状态的值;以及
数据寄存器,所述数据寄存器用于存储正在传送的数据。
4.根据权利要求1所述的调试启用处理设备,包括:
集成电路封装体,所述集成电路封装体在其内形成有所述处理器、所述通信收发器电路以及所述调试支持单元。
5.根据权利要求1所述的调试启用处理设备,其中,所述处理器是精简指令集计算(RISC)设备。
6.根据权利要求5所述的调试启用处理设备,其中,所述处理器包括多级执行流水线,所述多级执行流水线至少包括取出级、解码级、执行级以及回写级。
7.根据权利要求1所述的调试启用处理设备,包括:
存储器,所述存储器其内存储有所述软件程序。
8.根据权利要求1所述的调试启用处理设备,其中,所述存储器是非瞬态只读存储器(ROM)。
9.根据权利要求1所述的调试启用处理设备,其中,所述调试支持单元是不具有任何软件的电子电路。
10.根据权利要求1所述的调试启用处理设备,其中,所述调试支持单元包括:
调试控制电路,所述调试控制电路被安排成用于在所述处理器与所述调试支持单元的至少一个寄存器之间传递信号。
11.一种经由目标设备执行的调试方法,所述目标设备具有处理器、通信收发器电路以及调试支持单元,所述调试支持单元具有多个专用调试寄存器,所述方法包括:
将第一值写入所述专用调试寄存器中的控制寄存器以便启用所述目标设备的调试模式;
将第二值写入所述专用调试寄存器中的所述控制寄存器以便挂起对正在调试的程序的指令的执行;
向所述专用调试寄存器中的所述控制寄存器轮询信号,所述信号指示所述处理器在挂起正在调试的所述程序的所述指令执行之前已经冲洗了存在于所述处理器的执行流水线中的任何指令;
经由所述专用调试寄存器中的索引寄存器组向或从所述处理器的寄存器传递数据;并且
将第二值写入所述专用调试寄存器中的所述控制寄存器以便禁用所述目标设备的所述调试模式。
12.根据权利要求11所述的调试方法,进一步包括:
将第三值写入所述专用调试寄存器中的所述控制寄存器以便启用所述目标设备的单步模式;
写入正在调试的所述程序的所选指令的地址;
向所述专用调试寄存器中的所述控制寄存器轮询信号,所述信号指示所述处理器在所述所选指令的所述地址上落入陷阱;
经由所述专用调试寄存器中的所述索引寄存器组向或从所述处理器的寄存器传递第二数据;
写入正在调试的所述程序的下一个地址,作为所述所选指令的所述地址;
将第四值写入所述专用调试寄存器中的所述控制寄存器以便重新开始程序执行;并且
向所述专用调试寄存器中的所述控制寄存器轮询所述信号,所述信号指示所述处理器在所述所选指令的所述地址上落入陷阱。
13.根据权利要求12所述的调试方法,其中,向或从所述处理器的所述寄存器传递所述数据包括:
将所述通信收发器电路通信地耦合到在所述目标设备外部的主机计算设备;并且
经由所述通信收发器电路和所述主机计算设备根据联合测试行动小组(JTAG)协议传达所述数据。
14.根据权利要求13所述的调试方法,包括:
从所述主机计算设备接收多个调试指令,所述多个调试指令取自包括停止指令、运行指令、单步指令、数据读取指令以及数据写入指令的调试指令集。
15.根据权利要求11所述的调试方法,其中,所述执行流水线至少包括取出级、解码级以及执行级,所述方法包括:
接受来自主机计算设备的第一调试指令,所述第一调试指令包括有待由所述处理器执行的指令;
将所述第一调试指令从所述调试支持单元的专用调试寄存器传递到所述处理器的所述执行流水线的至少一个级。
16.一种嵌入式处理系统,包括:
用于执行目标程序的软件指令的处理器装置;
用于在所述嵌入式处理器系统与外部主机计算设备之间传达第一数据的收发器装置;以及
用于在所述目标程序上指导调试操作的调试支持单元装置,所述调试支持装置包括:
用于启用和禁用多项调试操作的控制寄存器装置;以及
用于向和从所述处理器传递第二数据的索引寄存器装置。
17.根据权利要求16所述的嵌入式处理系统,其中,所述控制寄存器装置包括:
用于启用调试模式并且用于禁用所述调试模式的第一装置;
用于指示流水线冲洗操作的状态的第二装置;
用于启用陷阱处理操作并且用于禁用所述陷阱处理操作的第三装置;以及
用于控制所述陷阱处理操作的第四装置。
18.根据权利要求16所述的嵌入式处理系统,其中,所述索引寄存器装置包括:
用于指导读取操作和写入操作的写入启用装置;
用于存储有待访问的地址的地址装置;以及
用于存储正在传送的数据的数据存储装置。
19.根据权利要求16所述的嵌入式处理系统,包括:
存储器装置,所述存储器装置存储所述目标程序。
20.根据权利要求16所述的嵌入式处理系统,包括:
用于指导所述调试支持单元装置的操作的软件。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610289784.3A CN107346282B (zh) | 2016-05-04 | 2016-05-04 | 用于微处理器的调试支持单元 |
US15/203,659 US10296441B2 (en) | 2016-05-04 | 2016-07-06 | Debugging support unit for microprocessor |
US16/368,742 US10970192B2 (en) | 2016-05-04 | 2019-03-28 | Debugging support unit for microprocessor |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610289784.3A CN107346282B (zh) | 2016-05-04 | 2016-05-04 | 用于微处理器的调试支持单元 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107346282A true CN107346282A (zh) | 2017-11-14 |
CN107346282B CN107346282B (zh) | 2024-03-12 |
Family
ID=60243513
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610289784.3A Active CN107346282B (zh) | 2016-05-04 | 2016-05-04 | 用于微处理器的调试支持单元 |
Country Status (2)
Country | Link |
---|---|
US (2) | US10296441B2 (zh) |
CN (1) | CN107346282B (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111104267A (zh) * | 2018-10-26 | 2020-05-05 | 长鑫存储技术有限公司 | 存储器的调试处理方法及其调试处理系统 |
CN113407350A (zh) * | 2021-07-19 | 2021-09-17 | 北京百度网讯科技有限公司 | 指令处理装置、处理器、芯片、计算设备及相应的方法 |
CN113672555A (zh) * | 2021-07-13 | 2021-11-19 | 平头哥(杭州)半导体有限公司 | 处理器核、处理器、片上系统和调试系统 |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10922150B2 (en) * | 2017-11-03 | 2021-02-16 | Dell Products L.P. | Deep hardware access and policy engine |
US10564218B2 (en) * | 2017-11-03 | 2020-02-18 | Dell Products L.P. | Systems and methods for debugging access |
US10540253B2 (en) | 2017-11-30 | 2020-01-21 | International Business Machines Corporation | Breakpoint with specified anchor points |
CN108335701B (zh) * | 2018-01-24 | 2021-04-13 | 青岛海信移动通信技术股份有限公司 | 一种进行声音降噪的方法及设备 |
US10754743B2 (en) * | 2018-12-17 | 2020-08-25 | Arm Limited | Apparatus and method using debug status storage element |
CN112285542B (zh) * | 2020-10-14 | 2023-02-03 | 天津津航计算技术研究所 | 一种面向fpga外部接口逻辑的调试与测试方法 |
CN112506727A (zh) * | 2020-12-16 | 2021-03-16 | 珠海昇生微电子有限责任公司 | 一种芯片调试、测试以及固件更新的方法及其系统 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5560036A (en) * | 1989-12-14 | 1996-09-24 | Mitsubishi Denki Kabushiki Kaisha | Data processing having incircuit emulation function |
CN101154183A (zh) * | 2006-09-29 | 2008-04-02 | 上海海尔集成电路有限公司 | 一种微控制器嵌入式在线仿真调试系统 |
CN101821719A (zh) * | 2007-10-12 | 2010-09-01 | 飞思卡尔半导体公司 | 用于数据处理系统的调试指令 |
CN205680085U (zh) * | 2016-05-04 | 2016-11-09 | 世意法(北京)半导体研发有限责任公司 | 调试启用处理设备和嵌入式处理系统 |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5530804A (en) * | 1994-05-16 | 1996-06-25 | Motorola, Inc. | Superscalar processor with plural pipelined execution units each unit selectively having both normal and debug modes |
US5964893A (en) * | 1995-08-30 | 1999-10-12 | Motorola, Inc. | Data processing system for performing a trace function and method therefor |
JP3846939B2 (ja) * | 1995-08-30 | 2006-11-15 | フリースケール セミコンダクター インコーポレイテッド | データプロセッサ |
US6314530B1 (en) * | 1997-04-08 | 2001-11-06 | Advanced Micro Devices, Inc. | Processor having a trace access instruction to access on-chip trace memory |
US6553513B1 (en) * | 1999-02-19 | 2003-04-22 | Texas Instruments Incorporated | Emulation suspend mode with differing response to differing classes of interrupts |
US6760864B2 (en) * | 2001-02-21 | 2004-07-06 | Freescale Semiconductor, Inc. | Data processing system with on-chip FIFO for storing debug information and method therefor |
US7231551B1 (en) * | 2001-06-29 | 2007-06-12 | Mips Technologies, Inc. | Distributed tap controller |
US20070214389A1 (en) * | 2006-03-08 | 2007-09-13 | Severson Matthew L | JTAG power collapse debug |
US20130007533A1 (en) * | 2011-06-28 | 2013-01-03 | Miller Gary L | Data processing system having a sequence processing unit and method of operation |
US9459977B2 (en) * | 2014-08-26 | 2016-10-04 | Freescale Semiconductor, Inc. | Data processing system with debug control |
-
2016
- 2016-05-04 CN CN201610289784.3A patent/CN107346282B/zh active Active
- 2016-07-06 US US15/203,659 patent/US10296441B2/en active Active
-
2019
- 2019-03-28 US US16/368,742 patent/US10970192B2/en active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5560036A (en) * | 1989-12-14 | 1996-09-24 | Mitsubishi Denki Kabushiki Kaisha | Data processing having incircuit emulation function |
CN101154183A (zh) * | 2006-09-29 | 2008-04-02 | 上海海尔集成电路有限公司 | 一种微控制器嵌入式在线仿真调试系统 |
CN101821719A (zh) * | 2007-10-12 | 2010-09-01 | 飞思卡尔半导体公司 | 用于数据处理系统的调试指令 |
CN205680085U (zh) * | 2016-05-04 | 2016-11-09 | 世意法(北京)半导体研发有限责任公司 | 调试启用处理设备和嵌入式处理系统 |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111104267A (zh) * | 2018-10-26 | 2020-05-05 | 长鑫存储技术有限公司 | 存储器的调试处理方法及其调试处理系统 |
CN111104267B (zh) * | 2018-10-26 | 2022-05-13 | 长鑫存储技术有限公司 | 存储器的调试处理方法及其调试处理系统 |
CN113672555A (zh) * | 2021-07-13 | 2021-11-19 | 平头哥(杭州)半导体有限公司 | 处理器核、处理器、片上系统和调试系统 |
CN113672555B (zh) * | 2021-07-13 | 2024-04-19 | 杭州中天微系统有限公司 | 处理器核、处理器、片上系统和调试系统 |
CN113407350A (zh) * | 2021-07-19 | 2021-09-17 | 北京百度网讯科技有限公司 | 指令处理装置、处理器、芯片、计算设备及相应的方法 |
Also Published As
Publication number | Publication date |
---|---|
US20170322867A1 (en) | 2017-11-09 |
US10970192B2 (en) | 2021-04-06 |
US20190227905A1 (en) | 2019-07-25 |
CN107346282B (zh) | 2024-03-12 |
US10296441B2 (en) | 2019-05-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107346282A (zh) | 用于微处理器的调试支持单元 | |
TWI725077B (zh) | 用於排序的處理器、系統和方法 | |
CN104049948B (zh) | 指令仿真处理器、方法和系统 | |
CN105264513B (zh) | 用于过程返回地址验证的系统和方法 | |
CN104951697B (zh) | 来自过程指令的返回-目标限制性返回、处理器、方法及系统 | |
KR102074961B1 (ko) | 비대칭 실행 유닛들의 효율적인 스케줄링을 위한 방법 및 장치 | |
CN104951274B (zh) | 用于控制流安全性的二进制转换机制的指令和逻辑 | |
CN108027750A (zh) | 乱序提交 | |
CN104050012B (zh) | 指令模拟处理器、方法和系统 | |
CN104850777B (zh) | 使用认证的清单来实现对多处理器平台的外部确认 | |
TWI294573B (en) | Apparatus and method for controlling establishing command order in an out of order dma command queue, and computer readable medium recording with related instructions | |
CN108027769A (zh) | 使用寄存器访问指令发起指令块执行 | |
CN108351786B (zh) | 在指令集架构中对数据进行排序并且合并经排序数据 | |
CN107003965A (zh) | 向用户级应用传递中断 | |
US20150033001A1 (en) | Method, device and system for control signalling in a data path module of a data stream processing engine | |
Walls | Embedded software: the works | |
CN108351839A (zh) | 用来挂起/恢复安全飞地页面高速缓存中飞地的迁移的指令和逻辑 | |
CN107003921A (zh) | 具有有限状态机控制的可重配置测试访问端口 | |
CN107209722A (zh) | 用于在安全飞地页面高速缓存中使安全飞地的进程分叉和建立子飞地的指令和逻辑 | |
BR112015022683B1 (pt) | Sistema de processamento e método de realização de uma operação de manipulação de dados | |
US20180196946A1 (en) | Preventing code modification after boot | |
CN108027773A (zh) | 存储器访问指令顺序编码的生成和使用 | |
CN107003971A (zh) | 用于高性能互连中的嵌入式流通道的方法、装置、系统 | |
CN108351781A (zh) | 用于利用monitor和mwait架构的用户级线程同步的方法和设备 | |
CN108351784A (zh) | 用于在乱序处理器中进行有序处理的指令和逻辑 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |