掌桥专利:专业的专利平台
掌桥专利
首页

一种单线调试方法、装置、MCU芯片、调试器及系统

文献发布时间:2023-06-19 18:27:32


一种单线调试方法、装置、MCU芯片、调试器及系统

技术领域

本发明涉及芯片调试技术领域,具体涉及一种单线调试方法、装置、MCU芯片、调试器及系统。

背景技术

在MCU芯片的开发过程中,为保证其功能可按预期实现,对MCU芯片进行在线调试是不可获取的一环。在线调试时,开发人员通过调试器可直接在MCU上进行软件单步运行、断点和跟踪等,以对MCU芯片的功能实现进行完善。

在早期,MCU芯片的在线调试方式主要有JTAG接口和SWD接口,然而,通过JTAG接口或SWD接口进行调试时,都需要比较多的引脚才能实现。

为了减少调试所需的引脚,出现了单线调试接口的在线调试方式。通过现有的单线调试接口对MCU芯片进行在线调试时,有两种类型:一种是,需要一个专用于调试的引脚,也就是此引脚不可用于其它功能甚至在部分方案中,当此引脚进入调试模式时,还需至少一个其它引脚配合。也就是,现有的单线调试方法中,MCU芯片仍然至少一个专用的引脚才能对MCU芯片进行调试,可见,该专用的引脚除了专用于调试之外,无法进行其它正常功能的I/O数据收发,这就会占用实现正常功能的引脚,导致MCU芯片引脚的浪费。

因此,如何提供一种新的用于MCU芯片的单线调试方法,以最大化地利用MCU芯片的引脚资源,成为亟待解决的技术问题。

发明内容

基于上述现状,本发明的主要目的在于提供一种单线调试方法、装置、MCU芯片、调试器及系统,以解决现有的MCU芯片单线调试方法中引脚资源浪费的问题。

为实现上述目的,本发明采用的技术方案如下:

第一方面,本实施例公开了一种应用于MCU芯片的单线调试方法,MCU芯片的一个第一引脚用于连接至调试器,以构成调试系统;调试器用于调试MCU芯片,单线调试方法包括:

步骤S100,在正常工作模式下,通过第一引脚获取调试器发送的请求指令,请求指令的编码方式区别于正常工作指令的编码方式,请求指令用于指示MCU芯片进入单线调试模式;

步骤S110,响应请求指令从正常工作模式切换进入单线调试模式;

步骤S130,通过第一引脚与调试器进行调试数据交互,以进行单线调试操作;

步骤S140,在通过第一引脚接收到调试器发送的退出调试指令时,响应退出调试指令从单线调试模式切换至正常工作模式,以使第一引脚收发正常工作模式下的数据和/或指令;其中,退出调试指令由调试器在单线调试操作完成时通过第一引脚向MCU芯片发送。

第二方面,本实施例公开了一种应用于调试器的单线调试方法,调试器用于连接至MCU芯片的一个第一引脚,以构成调试系统;调试器用于调试MCU芯片,单线调试方法包括:

步骤S200,通过第一引脚向正常工作模式下的MCU芯片发送请求指令,以使MCU芯片通过响应请求指令,而由正常工作模式切换进入单线调试模式,请求指令的编码方式区别于正常工作指令的编码方式,其中,请求指令用于指示MCU芯片进入单线调试模式;

步骤S220,通过第一引脚与MCU芯片进行调试数据交互,以进行单线调试操作;

步骤S240,在调试完成时,通过第一引脚向MCU芯片发送退出调试指令,以使MCU芯片响应退出调试指令从单线调试模式切换至正常工作模式,以使MCU芯片可通过第一引脚收发正常工作模式下的数据和/或指令。

第三方面,本实施例公开了一种应用于MCU芯片的单线调试装置,MCU芯片的一个第一引脚用于连接至调试器,以构成调试系统;调试器用于调试MCU芯片,单线调试装置包括:

请求指令获取模块,在正常工作模式下,用于通过第一引脚获取调试器发送的请求指令,请求指令的编码方式区别于正常工作指令的编码方式,请求指令用于指示单线调试装置进入单线调试模式;

模式切换模块,用于响应请求指令从正常工作模式切换进入单线调试模式;还用于,在通过第一引脚接收到调试器发送的退出调试指令时,响应退出调试指令从单线调试模式切换至正常工作模式,以使第一引脚收发正常工作模式下的数据和/或指令;其中,退出调试指令由调试器在单线调试操作完成时通过第一引脚发送;

交互模块,用于通过第一引脚与调试器进行调试数据交互,以进行单线调试操作。

第四方面,本实施例公开了一种应用于调试器的单线调试装置,调试器用于连接至MCU芯片的一个第一引脚,以构成调试系统;调试器用于调试MCU芯片,单线调试装置包括:

请求指令发送模块,用于通过第一引脚向正常工作模式下的MCU芯片发送请求指令,以使MCU芯片通过响应请求指令,而由正常工作模式切换进入单线调试模式,请求指令的编码方式区别于正常工作指令的编码方式,其中,请求指令用于指示MCU芯片进入单线调试模式;

调试交互模块,用于通过第一引脚与MCU芯片进行调试数据交互,以进行单线调试操作;

退出指令发送模块,用于在调试完成时,通过第一引脚向MCU芯片发送退出调试指令,以使MCU芯片响应退出调试指令从单线调试模式切换至正常工作模式,以使MCU芯片可通过第一引脚收发正常工作模式下的数据和/或指令。

第五方面,本实施例公开了一种MCU芯片,包括处理器和存储器,存储器内存储有计算式程序,处理器能够执行计算式程序以实现如第一方面公开的单线调试方法。

第六方面,本实施例公开了一种用于调试MCU芯片的调试器,其特征在于,调试器内存储有计算式程序,以实现如第二方面公开的单线调试方法。

第七方面,本实施例公开了一种单线调试系统,其特征在于,包括调试器和MCU芯片,调试器用于对MCU芯片进行单线调试,其中:

MCU芯片为如第五方面公开的MCU芯片,和/或,调试器为如第六方面公开的调试器。

【有益效果】

与现有技术相比,依据本实施例公开的一种单线调试方法、装置、MCU芯片、调试器及系统,具有以下优点:

本实施例公开了一种应用于MCU芯片的单线调试方法,在该单线调试方法中,MCU芯片通过第一引脚获取调试器发送的请求指令,在成功响应该请求指令后,MCU芯片进入单线调试模式,则调试器与MCU芯片进行调试数据交互,以进行单线调试操作。将请求指令的编码方式设为与正常工作指令的编码方式不同,保证了MCU芯片可准确识别请求指令,而不会将请求指令与正常工作指令混淆,从而可分时复用第一引脚,使得MCU芯片既能在单线调试模式下通过第一引脚进行调试通信,又能在非单线调试模式下通过第一引脚进行正常工作通信,从而有效节省了MCU芯片的引脚资源,使得MCU芯片的引脚资源利用最大化。当调试完成时,调试器向MCU芯片发送退出调试指令,则MCU芯片退出单线调试模式而切换回正常工作模式,以使MCU芯片后续可通过第一引脚收发正常工作模式下的数据和/或指令,也就是,在MCU芯片下一次通过第一引脚获取到请求指令之前,第一引脚可用于其它功能。可见,本申请公开的单线调试方法中,MCU芯片仅通过第一引脚与调试器进行通信,即可在正常工作模式与单线调试模式之间来回切换,既不需要预留专门用于调试使用的引脚,也不需要其它引脚配合就可以进入单线调试模式,从而简洁有效地最大化利用了MCU芯片的引脚资源。

此外,在步骤S100中,MCU芯片获取的请求指令是调试器以小于或等于1000K的通信速率发送的,该通信速率为几乎所有MCU芯片都能支持的速率,从而在还未得知待调试的MCU芯片可支持的通信速率具体范围的情况下,也能保证MCU芯片可以成功接收并识别请求指令,从而使得MCU芯片可尽快地顺利进入单线调试模式,从而既保证了单线调试方法可适用于不同通信速率的MCU,又能保证MCU从正常工作模式切换为单线调试模式的效率。可见,请求指令是以小于或等于1000K的通信速率发送的,保证了不同通信速率的MCU芯片都能够成功进入单线调试模式,并且也提高了模式切换效率,从而提高了整个调试方法的效率。

此外,MCU芯片进入单线调试模式后,则主动向调试器回复确认信息,并在该确认信息中加载了MCU芯片的第二通信速率,第二通信速率与该MCU芯片的最高通信速率之间的差值小于第一阈值,也即第二通信速率为该MCU的较高或最高通信速率。由此,通过MCU芯片主动回复确认信息,既通知了调试器自身已成功进入单线调试模式,后续即可开始进行单线调试操作;又主动向调试器告知了MCU芯片可支持的较高通信速率或最高通信速率,使得调试器和MCU之间可直接根据第二通信速率进行后续的调试通信,从而在无需提前约定通信速率的情况下能够以至少较高的通信速率进行二者之间的通信,调试器和MCU之间的通信既能适应于各种通信速率的MCU芯片,又能保证效率性。

此外,请求指令与调试指令采用相同的编码方式,也就是请求指令与调试指令均区别于正常工作指令,从而能够进一步防止MCU芯片混淆单线调试模式下的请求指令、调试指令与正常工作模式下的通信数据,从而进一步保证了分时复用第一引脚的可靠性。此外,请求指令与调试指令采用相同的编码方式,还使得调试器与MCU芯片通过这两种指令进行通信时,无需来回切换,从而提高了单线调试方法的效率。而在此基础上,调试指令的命令头格式区别于请求指令的命令头格式,有效减小了MCU芯片误识别调试指令或请求指令的概率,从而防止将调试指令误识别为请求指令时,会重新从步骤S100开始执行单线调试方法的情况。

此外,请求指令的命令头中连续的“1”的数量为第一数量,调试指令的命令头中连续的“1”的数量为第二数量,第一数量与第二数量之间的差值至少大于5,这就保证了请求指令与调试指令之间的区别存在一定冗余,从而防止请求指令或调试指令的命令头中连续“1”的数量产生误差时,MCU芯片混淆请求指令与调试指令的情况。由此,进一步保证了请求指令与调试指令的区别性。

此外,在单线调试模式下的通信时段内,MCU芯片与调试器之间通过第一引脚进行调试通信,第一引脚处于被使用的状态;在单线调试模式下的空闲时段内时,若第一引脚存在被误用于非调试工作的风险。因此,本实施例公开的单线调试方法中,通过占用模块在空闲时段占用第一引脚,能够使第一引脚保持单线调试模式,防止在单线调试模式下,将第一引脚误用于非调试工作的情况,从而保证了分时复用第一引脚的可靠性,提高了单线调试方法的可靠性。

此外,占用模块在单线调试模式下的空闲时间上拉第一引脚的电平,从而使得MCU芯片能够通过推挽结构与调试器进行通信,由于推挽结构的水平跳变速度较高,因此使得MCU芯片能够以更快的速率与调试器进行调试通信。

本发明的其他有益效果,将在具体实施方式中通过具体技术特征和技术方案的介绍来阐述,本领域技术人员通过这些技术特征和技术方案的介绍,应能理解所述技术特征和技术方案带来的有益技术效果。

附图说明

以下将参照附图对本实施例进行描述。图中:

图1为本实施例公开的一种应用于MCU芯片的单线调试方法流程图;

图2为本实施例公开的一种应用于调试器的单线调试方法流程图;

图3为本实施例公开的一种应用于MCU芯片的单线调试装置的结构示意图;

图4为本实施例公开的一种应用于调试器的单线调试装置的结构示意图;

图5为本实施例公开的一种单线调试系统的结构示意图。

具体实施方式

以下基于实施例对本发明进行描述,但是本发明并不仅仅限于这些实施例。在下文对本发明的细节描述中,详尽描述了一些特定的细节部分,为了避免混淆本发明的实质,公知的方法、过程、流程、元件并没有详细叙述。

此外,本领域普通技术人员应当理解,在此提供的附图都是为了说明的目的,并且附图不一定是按比例绘制的。

除非上下文明确要求,否则整个说明书和权利要求书中的“包括”、“包含”等类似词语应当解释为包含的含义而不是排他或穷举的含义;也就是说,是“包括但不限于”的含义。

在本发明的描述中,需要理解的是,术语“第一”、“第二”等仅用于描述目的,而不能理解为指示或暗示相对重要性。此外,在本发明的描述中,除非另有说明,“多个”的含义是两个或两个以上。

本发明实施例公开一种应用于MCU芯片的单线调试方法,在本实施例中,MCU芯片的一个第一引脚用于连接至调试器,以构成调试系统,该调试器用于调试MCU芯片。

请参考图1,为本实施例公开的应用于MCU芯片的单线调试方法流程图,该方法包括步骤S100-160,其中:

步骤S100,在正常工作模式下,通过第一引脚获取调试器发送的请求指令,且请求指令的编码方式区别于正常工作指令的编码方式。在具体实施例中,请求指令用于指示MCU芯片进入单线调试模式,也就是,当MCU芯片获取并成功响应请求指令后,就会进入单线调试模式,并且MCU芯片在终止调试之前,会保持单线调试模式,而调试器可向MCU芯片发送调试指令以对其进行调试。在本实施例中,MCU芯片可在正常工作模式与单线调试模式之间切换,当MCU芯片在正常工作模式下进行通信时,所使用的指令为正常工作指令,此时MCU芯片可通过第一引脚收发正常工作模式下的数据和/或指令;当MCU芯片在单线调试模式下进行单线调试通信时,MCU芯片可通过第一引脚收发调试数据。

需要说明的是,第一引脚可以为MCU芯片的任意一个引脚,也就是,指MCU芯片在正常工作模式时,第一引脚的功能和工作方式等不受限制,只要MCU芯片能够通过该第一引脚获取调试器发送的请求指令即可。在具体实施例中,MCU芯片可以有多个能够作为第一引脚的引脚,在自步骤S100至执行完步骤S140的流程中,只需MCU芯片的其中一个引脚作为第一引脚即可。

将请求指令的编码格式设为与正常工作指令的编码格式不同,将请求指令的编码方式设为与正常工作指令的编码方式不同,保证了MCU芯片可准确识别请求指令,而不会将请求指令与正常工作指令混淆,从而可分时复用第一引脚,使得MCU芯片既能在单线调试模式下通过第一引脚进行调试通信,又能在非单线调试模式下通过第一引脚进行正常工作通信,从而有效节省了MCU芯片的引脚资源,使得MCU芯片的引脚资源利用最大化。

在具体实施例的步骤S100中,请求指令被调试器发送的通信速率为第一通信速率,在优选实施例中,第一通信速率小于或等于小于或等于1000K,以便于MCU芯片识别请求指令。

MCU芯片获取的请求指令是调试器以小于或等于1000K的通信速率发送的,该通信速率为几乎所有MCU芯片都能支持的速率,从而在还未得知待调试的MCU芯片可支持的通信速率具体范围的情况下,也能保证MCU芯片可以成功接收并识别请求指令,从而使得MCU芯片可尽快地顺利进入单线调试模式,从而既保证了单线调试方法可适用于不同通信速率的MCU,又能保证MCU从正常工作模式切换为单线调试模式的效率。可见,请求指令是以小于或等于1000K的通信速率发送的,保证了不同通信速率的MCU芯片都能够成功进入单线调试模式,并且也提高了模式切换效率,从而提高了整个调试方法的效率。

步骤S110,MCU芯片响应请求指令,从正常工作模式切换进入单线调试模式。在具体实施例中,MCU芯片识别请求指令的方式不限制,可以在MCU芯片中设置专门用于检测请求指令的电路,也可以是通过MCU芯片中的其它电路对请求指令进行检测识别。在优选实施例中,MCU芯片中设置有专门用于检测请求指令的检测电路,只要检测电路识别到请求指令,MCU芯片就会进入单线调试模式,并继续执行本实施例的单线调试方法。

步骤S120,通过第一引脚向调试器回复确认信息,以使调试器确认MCU芯片已成功进入单线调试模式,从而保证在MCU芯片已进入单线调试模式的情况下,调试器才开始对MCU芯片进行调试,保证了本实施例提供的单线调试方法的可靠性。

在具体实施例中,确认信息中加载了MCU芯片的第二通信速率,第二通信速率与MCU芯片可支持的最高通信速率之间的差值小于预设的第一阈值。本实施例中,当MCU芯片进入单线调试模式后,则主动向调试器回复确认信息,并在该确认信息中加载了MCU芯片的第二通信速率,第二通信速率与该MCU芯片的最高通信速率之间的差值小于第一阈值,也即第二通信速率为该MCU的较高或最高通信速率。由此,通过MCU芯片主动回复确认信息,既通知了调试器自身已成功进入单线调试模式,后续即可开始进行单线调试操作;又主动向调试器告知了MCU芯片可支持的较高通信速率或最高通信速率,使得调试器和MCU之间可直接根据第二通信速率进行后续的调试通信,从而在无需提前约定通信速率的情况下能够以至少较高的通信速率进行二者之间的通信,调试器和MCU之间的通信既能适应于各种通信速率的MCU芯片,又能保证效率性。

在优选实施例中,第二通信速率为MCU芯片可支持的最高通信速率,从而有效保证了MCU芯片与调试器之间进行调试通信的效率尽量高,也就是,使得无论待调试的MCU芯片通信速率为多少,都能够在MCU芯片支持的范围内,以最高通信速率进行调试通信,从而进一步提高了单线调试方法的效率和适用范围。

步骤S130,通过第一引脚与调试器进行调试数据交互,以进行单线调试操作。在具体实施例中,MCU芯片与调试器以第二通信速率通信,从而保证调试通信的高效。

在具体实施例中,在步骤S130中,通过第一引脚与调试器进行调试数据交互包括:获取调试器发送的调试指令,响应于调试指令得到调试数据,并向调试器回复调试数据,从而调试器能够直接或间接地将调试数据通知开发人员。

在本实施例中,请求指令与调试指令的采用相同的编码方式,且调试指令的命令头格式区别于请求指令的命令头格式。在具体实施例中,MCU芯片获取到调试指令后,则根据调试指令运行程序,例如进行软件单步运行、断点和跟踪等功能调试器。需要说明的是,MCU芯片可能按调试指令的指示成功运行,也可能运行失败,因此调试数据可以为运行成功的数据或运行失败的数据。

请求指令与调试指令采用相同的编码方式,也就是请求指令与调试指令均区别于正常工作指令,从而能够进一步防止MCU芯片混淆单线调试模式下的请求指令、调试指令与正常工作模式下的通信数据,从而进一步保证了分时复用第一引脚的可靠性。此外,请求指令与调试指令采用相同的编码方式,还使得调试器与MCU芯片通过这两种指令进行通信时,无需来回切换,从而提高了单线调试方法的效率。而在此基础上,调试指令的命令头格式区别于请求指令的命令头格式,有效减小了MCU芯片误识别调试指令或请求指令的概率,从而防止将调试指令误识别为请求指令时,会重新从步骤S100开始执行单线调试方法的情况。

在优选实施例中,请求指令与调试指令均采用差分双相编码,且请求指令的命令头中连续的“1”的数量为第一数量,调试指令的命令头中连续的“1”的数量为第二数量,第一数量不等于第二数量。由此,便于区分请求指令和调试指令。

在具体实施例中,请求指令的命令头包括第一数量的连续的“1”,调试指令的命令头包括第二数量的连续的“1”,第一数量与第二数量之间的差值至少大于5。从而保证了请求指令与调试指令之间的区别存在一定冗余,从而防止请求指令或调试指令的命令头中连续“1”的数量产生误差时,MCU芯片混淆请求指令与调试指令的情况。由此,进一步保证了请求指令与调试指令的区别性。

在优选实施例中,请求指令的命令头至少包括22个连续的“1”,调试指令的命令头和正常工作指令的命令头均最多包括11个连续的“1”,从而进一步拉大请求指令与调试指令的差别,能够更有效防止将调试指令误识别为请求指令的情况,保证了分时复用第一引脚的可靠性。

在具体实施例中,MCU芯片以第二通信速率向调试器回复调试数据。由于调试器在步骤S130中,调试器已经已第二通信速率向MCU芯片发送了调试指令,因此MCU芯片也可以确定调试器能够也能够支持第二通信速率,故在后续的调试通信中,MCU芯片直接以第二通信速率向调试器回复调试数据。从而,二者之间能够以双方均支持的较高速率进行调试通信,保证了单线调试方法的高效性。

需要说明的是,根据实际的调试过程,在步骤S140之前,步骤S130可执行多次,若调试过程完成,则进入步骤S140。

步骤S140,在通过第一引脚接收到调试器发送的退出调试指令时,响应退出调试指令从单线调试模式切换至正常工作模式,以使第一引脚收发正常工作模式下的数据和/或指令;其中,退出调试指令由调试器在单线调试操作完成时通过第一引脚向MCU芯片发送。

在单线调试模式下的通信时段内,MCU芯片与调试器之间通过第一引脚进行调试通信,第一引脚处于被使用的状态,故此时第一引脚不会被误用于非调试工作。然而,在单线调试模式下的空闲时段内时,若第一引脚处于未被使用的空闲状态,则可能被误用于非调试工作,若第一引脚实际已被误用于非调试工作,但调试器仍通过第一引脚向MCU芯片发送调试指令,则MCU芯片可能无法成功接收调试指令或识别出错。可见,在单线调试模式下,第一引脚存在被错误使用的风险,进而可能导致调试失败或错误中断的情况。

因此,在步骤S110中,使MCU芯片进入单线调试模式包括:向第一引脚对应的占用模块输出占用控制信号,使占用模块在空闲时段占用第一引脚,以使第一引脚保持单线调试模式。其中,空闲时段指单线调试模式下MCU芯片与调试器之间未进行通信的时段,例如,空闲时段包括MCU芯片在发送数据与接收数据之间切换的时段。

本实施例公开的单线调试方法中,通过占用模块在空闲时段占用第一引脚,能够防止在单线调试模式下,将第一引脚误用于非调试工作的情况,从而保证了分时复用第一引脚的可靠性,提高了单线调试方法的可靠性。

在具体实施例中,占用模块为上拉电阻,占用模块占用第一引脚的方式包括:上拉第一引脚的电平,使第一引脚的电平处于高电平。在后续的步骤S130-S140中,MCU芯片通过推挽结构与调试器通信。

也就是,占用模块在单线调试模式下的空闲时间上拉第一引脚的电平,从而使得MCU芯片能够通过推挽结构与调试器进行通信,由于推挽结构的水平跳变速度较高,因此使得MCU芯片能够以更快的速率与调试器进行调试通信。

综上所述,本实施例公开的一种应用于MCU芯片的单线调试方法,在该单线调试方法中,MCU芯片通过第一引脚获取调试器发送的请求指令,在成功响应该请求指令后,MCU芯片进入单线调试模式,则调试器与MCU芯片进行调试数据交互,以进行单线调试操作。将请求指令的编码方式设为与正常工作指令的编码方式不同,保证了MCU芯片可准确识别请求指令,而不会将请求指令与正常工作指令混淆,从而可分时复用第一引脚,使得MCU芯片既能在单线调试模式下通过第一引脚进行调试通信,又能在非单线调试模式下通过第一引脚进行正常工作通信,从而有效节省了MCU芯片的引脚资源,使得MCU芯片的引脚资源利用最大化。当调试完成时,调试器向MCU芯片发送退出调试指令,则MCU芯片退出单线调试模式而切换回正常工作模式,以使MCU芯片后续可通过第一引脚收发正常工作模式下的数据和/或指令,也就是,在MCU芯片下一次通过第一引脚获取到请求指令之前,第一引脚可用于其它功能。可见,本申请公开的单线调试方法中,MCU芯片仅通过第一引脚与调试器进行通信,即可在正常工作模式与单线调试模式之间来回切换,既不需要预留专门用于调试使用的引脚,也不需要其它引脚配合就可以进入单线调试模式,从而简洁有效地最大化利用了MCU芯片的引脚资源。

本实施例还公开了一种应用于调试器的单线调试方法。请参考图2,为本实施例公开的应用于调试器的单线调试方法流程图,调试器用于连接至MCU芯片的一个第一引脚,以构成调试系统;调试器用于调试MCU芯片,该单线调试方法包括步骤S200、S220和S240,其中:

步骤S200,通过第一引脚向正常工作模式下的MCU芯片发送请求指令,以使MCU芯片通过响应请求指令,而由正常工作模式切换进入单线调试模式,请求指令的编码方式区别于正常工作指令的编码方式,其中,请求指令用于指示MCU芯片进入单线调试模式。

步骤S210,通过第一引脚获取确认信息,确认信息用于表征MCU芯片已成功进入单线调试模式。在本实施例中,确认信息中加载了MCU芯片的第二通信速率,以使在步骤S220中,调试器与MCU芯片以第二通信速率通信;其中,第二通信速率与MCU芯片可支持的最高通信速率之间的差值小于预设的第一阈值。

步骤S220,通过第一引脚与MCU芯片进行调试数据交互,以进行单线调试操作;

步骤S230,获取MCU芯片回复的调试数据;

步骤S240,在调试完成时,通过第一引脚向MCU芯片发送退出调试指令,以使MCU芯片响应退出调试指令从单线调试模式切换至正常工作模式,以使MCU芯片可通过第一引脚收发正常工作模式下的数据和/或指令。

其中,在步骤S240之前,步骤S230可执行多次。

在具体实施例中,当调试器向MCU芯片发送请求指令后,可能存在MCU芯片接收失败或进入单线调试模式失败的情况。若MCU芯片接收失败或进入单线调试模式失败时,MCU芯片不会向调试器回复确认信息,则调试器无法成功获取确认信息,也就无法继续执行单线调试操作。

为了保证在MCU芯片成功进入单线调试模式后,再进行调试,因此在步骤S210中,当在第一预设时间内获取到正确的确认信息时,则进入步骤S220;当在第一预设时间内没有获取到正确的确认信息时,则返回顺次执行步骤S200和步骤S210。需要说明的是,没有获取到正确的确认信息包括获取到错误的确认信息和未获取到确认信息两种情况。

当连续N次执行步骤S200和步骤S210均没有获取到正确的确认信息时,则终止单线调试方法,其中,N为预设的第一次数阈值。

在调试器发出请求指令后的第一预设时间内,调试器会尝试获取MCU芯片回复的确认信息,若调试器成功获取到MCU芯片的确认信息,则代表MCU芯片已经成功进入单线调试模式,那么调试器就可以向MCU芯片发送调试指令以对MCU芯片进行调试。

在第一预设时间内,若调试器没有获取到正确的确认信息,则代表MCU芯片接收请求指令失败,或进入单线调试模式失败,那么调试器则返回步骤S200,以重新向MCU芯片发送请求指令。通过重新向MCU芯片发送请求指令,能够避免大部分的偶然原因导致获取确认信息失败的问题,提高了单线调试方法的便捷性和使用体验。

然而,当存在例如非偶然原因导致获取确认信息失败时,重新发送请求指令往往也无法解决此类问题。因此,在本实施例公开的单线调试方法中,当连续尝试获取确认信息N次均失败时,则停止重发请求指令或获取确认信息的尝试,并终止调试,以避免能源浪费。调试器还可通过上位机发出进入单线调试模式失败的信息。在具体实施例中,调试器可直接或间接地通知开发人员进入单线调试模式失败。例如,当在预设时间内均尝试获取失败时,调试器可发出警报,或调试器发送进入单线调试模式失败的信息至上位机,进而上位机可通知开发人员。在具体实施例中,上位机可以为各种类型的计算机。

在具体实施例中,即使MCU芯片正常进入调试模式后,也可能存在MCU芯片回复调试数据时数据包错误的情况,或者调试器未在预设时间内成功接收到调试数据的情况。

因此,在本实施例中,步骤S220包括步骤S221和步骤S222,其中:

步骤S221,向MCU芯片发送调试指令,以使MCU芯片响应于调试指令得到的数据为调试数据。

步骤S222,获取MCU芯片回复的调试数据,当在第二预设时间内,没有获取到正确的调试数据时,则返回顺次执行步骤S221以重新发送调试指令,和步骤S222以重新获取MCU芯片回复的调试数据。需要说明的是,没有获取到正确的调试数据包括获取到错误的调试数据和未获取到调试数据。

在具体实施例中,当连续M次执行步骤S221和步骤S222均没有获取到正确的调试数据时,终止单线调试方法,其中,M为预设的第二次数阈值。

在第二预设时间内,若调试器获取MCU芯片回复的调试数据失败,则代表MCU芯片未成功接收调试指令,或MCU芯片无法成功运行该调试指令,或MCU芯片回复调试数据失败,那么调试器则返回步骤S221并重新向MCU芯片发送该调试指令,以使MCU芯片重新接收调试指令并按该调试指令运行程序后回复调试数据。通过重新向MCU芯片发送调试指令,能够避免大部分的偶然原因导致获取调试数据失败的问题,提高了单线调试方法的便捷性和使用体验。

然而,当存在例如非偶然原因导致获取调试数据失败时,重新发送调试指令往往也无法解决此类问题。因此,当连续M次执行步骤S221和步骤S222均没有获取到正确的调试数据时,则终止调试,以避免无谓的功能损耗。此外,在优选实施例中,终止调试时,调试器同时直接或间接的通知开发者,以使开发人员能够及时得知此异常状态。

本实施例还公开了一种应用于MCU芯片的单线调试装置。请参阅图3,为本实施例公开的一种应用于MCU芯片的单线调试装置的结构示意图。该应用于MCU芯片的单线调试装置中,MCU芯片的一个第一引脚用于连接至调试器,以构成调试系统;调试器用于调试MCU芯片。该单线调试装置包括第一引脚、请求指令获取模块100、模式切换模块110和交互模块130。其中:

请求指令获取模块100,在正常工作模式下,用于通过第一引脚获取调试器发送的请求指令,请求指令的编码方式区别于正常工作指令的编码方式,请求指令用于指示单线调试装置进入单线调试模式。在具体实施例中,请求指令被发送的通信速率为小于或等于1000K。

模式切换模块110,用于响应请求指令从正常工作模式切换进入单线调试模式;还用于,在通过第一引脚接收到调试器发送的退出调试指令时,响应退出调试指令从单线调试模式切换至正常工作模式,以使第一引脚收发正常工作模式下的数据和/或指令;其中,退出调试指令由调试器在单线调试操作完成时通过第一引脚发送;

交互模块130,用于通过第一引脚与调试器进行调试数据交互,以进行单线调试操作。

在具体实施例中,交互模块130模块还用于,通过第一引脚向调试器回复确认信息,以使调试器确认单线调试装置已成功进入单线调试模式,以使调试器与单线调试装置以第二通信速率通信;其中,确认信息中加载了单线调试装置的第二通信速率,第二通信速率与单线调试装置可支持的最高通信速率之间的差值小于预设的第一阈值。

在本实施例中,交互模块130还用于,获取调试器发送的调试指令,响应于调试指令而运行程序以得到调试数据,并向调试器回复调试数据;其中,请求指令与调试指令的采用相同的编码方式,且调试指令的命令头格式区别于请求指令的命令头格式。

在具体实施例中,请求指令的命令头包括第一数量的连续的“1”,调试指令的命令头包括第二数量的连续的“1”,第一数量与第二数量之间的差值至少大于5。

在本实施例中,单线调试装置还包括:占用模块150,用于响应于占用控制型号,以在空闲时段占用第一引脚,以使第一引脚保持单线调试模式,其中,空闲时段指单线调试模式下单线调试装置与调试器之间未进行通信的时段;模式切换模块110还用于,向第一引脚对应的占用模块输出占用控制信号。

在具体实施例中,占用模块150还用于:上拉第一引脚的电平,使第一引脚的电平处于高电平;单线调试装置还包括推挽结构160,用于使交互模块130通过推挽结构160与调试器通信。

本实施例还公开了一种应用于调试器的单线调试装置,请参阅图4,为本实施例公开的一种应用于调试器的单线调试装置的结构示意图。该应用于调试器的单线调试装置中。调试器用于连接至MCU芯片的一个第一引脚,以构成调试系统;调试器用于调试MCU芯片。该单线调试装置包括请求指令发送模块200、调试交互模块220及退出指令发送模块240:

请求指令发送模块200,用于通过第一引脚向正常工作模式下的MCU芯片发送请求指令,以使MCU芯片通过响应请求指令,而由正常工作模式切换进入单线调试模式,请求指令的编码方式区别于正常工作指令的编码方式,其中,请求指令用于指示MCU芯片进入单线调试模式;

调试交互模块220,用于通过第一引脚与MCU芯片进行调试数据交互,以进行单线调试操作;

退出指令发送模块240,用于在调试完成时,通过第一引脚向MCU芯片发送退出调试指令,以使MCU芯片响应退出调试指令从单线调试模式切换至正常工作模式,以使MCU芯片可通过第一引脚收发正常工作模式下的数据和/或指令。

在本实施例中,请求指令发送模块200以第一通信速率向MCU芯片发送请求指令,第一通信速率小于或等于1000K,以使不同通信速率的多种MCU芯片均能够接收请求指令,其中,多种MCU芯片中的各个MCU芯片的最高通信速率大于第一通信速率。

在本实施例中,调试交互模块220还用于,通过第一引脚获取确认信息,确认信息用于表征MCU芯片已成功进入单线调试模式;其中,确认信息中加载了MCU芯片的第二通信速率,以使单线调试装置与MCU芯片以第二通信速率通信;其中,第二通信速率与MCU芯片可支持的最高通信速率之间的差值小于预设的第一阈值。

在具体实施例中,调试交互模块220还用于,当在第一预设时间内获取到正确的确认信息时,则开始与MCU芯片进行调试数据交互;

当在第一预设时间内没有获取到正确的确认信息时,则请求指令发送模块200重发请求指令,且调试交互模块220通过第一引脚获取确认信息;其中,没有获取到正确的确认信息是指获取失败包括获取到错误的确认信息和未获取到确认信息;

当连续N次请求指令发送模块200重发请求指令且调试交互模块220通过第一引脚获取确认信息,均没有获取到正确的确认信息时,则单线调试装置终止对MCU芯片进行单线调试,其中,N为预设的第一次数阈值。

在具体实施例中,调试交互模块220还用于:向MCU芯片发送调试指令,以使MCU芯片响应于调试指令而运行程序,MCU芯片运行程序得到的数据为调试数据;及,

获取MCU芯片回复的调试数据,当在第二预设时间内,没有获取到正确的调试数据时,则重新发送调试指令,并重新获取MCU芯片回复的调试数据;

当连续M次重新发送调试指令和重新获取调试数据后,均没有获取到正确的调试数据时,则单线调试装置终止对MCU芯片进行单线调试,其中,M为预设的第二次数阈值。

在具体实施例中,占用模块150还用于:上拉第一引脚的电平,使第一引脚的电平处于高电平;单线调试装置还包括推挽结构250,调试交互模块220通过推挽结构250与MCU芯片通信。

本实施例还公开了一种用于调试MCU芯片的调试器,请参阅图5,为本实施例公开的一种单线调试系统的结构示意图。该单线调试系统中,调试器内存储有计算式程序,以实现如上述实施例公开的单线调试方法,从而调试器可通过如上述实施例公开的单线调试方法对MCU芯片进行调试。

本实施例还公开了一种MCU芯片,包括处理器和存储器,存储器内存储有计算式程序,处理器能够执行计算式程序以实现如上述实施例公开的单线调试方法,以使MCU芯片可通过如上述实施例公开的单线调试方法,被调试器调试。

本实施例还公开了一种单线调试系统,该单线调试系统包括通信连接的调试器和MCU芯片,其中,调试器为如上述实施例公开的调试器,和/或,MCU芯片为如上述实施例公开的MCU芯片。

在具体实施例中,调试器包括第一推挽结构10,且MCU芯片包括第二推挽结构20,调试器与MCU芯片之间通过第一推挽结构10及第二推挽结构20进行通信。从而能够有效提高调试过程中,MCU芯片与调试器之间的通信速率。

在具体实施例中,单线调试系统还包括上位机,上位机与调试器配合以对MCU芯片进行单线调试,其中,上位机通过调试器与MCU芯片通信连接。例如,上位机可以为台式电脑、笔记本电脑或其它可用于向调试器发送调试程序的设备。

需要说明的是,本公开的实施例所述的计算机可读存储介质并不限定于上述所给实施例,例如还可以为电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本公开的实施例中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。

本领域的技术人员能够理解的是,在不冲突的前提下,上述各优选方案可以自由地组合、叠加。其中,附图中的流程图和框图,图示了按照本公开各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,该模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生,例如,两个接连表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。本文中对于各步骤的编号仅为了方便说明和引用,并不用于限定前后顺序,具体的执行顺序是由技术本身确定的,本领域技术人员可以根据技术本身确定各种允许的、合理的顺序。

需要说明的是,本发明中采用步骤编号(字母或数字编号)来指代某些具体的方法步骤,仅仅是出于描述方便和简洁的目的,而绝不是用字母或数字来限制这些方法步骤的顺序。本领域的技术人员能够明了,相关方法步骤的顺序,应由技术本身决定,不应因步骤编号的存在而被不适当地限制,本领域技术人员可以根据技术本身确定各种允许的、合理的步骤顺序。

本领域的技术人员能够理解的是,在不冲突的前提下,上述各优选方案可以自由地组合、叠加。

应当理解,上述的实施方式仅是示例性的,而非限制性的,在不偏离本发明的基本原理的情况下,本领域的技术人员可以针对上述细节做出的各种明显的或等同的修改或替换,都将包含于本发明的权利要求范围内。

技术分类

06120115577029