CN106776054A - 一种死锁检测方法、装置和电路 - Google Patents
一种死锁检测方法、装置和电路 Download PDFInfo
- Publication number
- CN106776054A CN106776054A CN201611223459.3A CN201611223459A CN106776054A CN 106776054 A CN106776054 A CN 106776054A CN 201611223459 A CN201611223459 A CN 201611223459A CN 106776054 A CN106776054 A CN 106776054A
- Authority
- CN
- China
- Prior art keywords
- machine
- scl
- master machine
- level state
- deadlock
- 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
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/52—Program synchronisation; Mutual exclusion, e.g. by means of semaphores
- G06F9/524—Deadlock detection or avoidance
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明实施例提供了一种死锁检测方法、装置和电路。一方面,本发明实施例提供的死锁检测方法执行于主机器上,主机器与从机器之间通过时钟线SCL和数据线SDA连接;该方法包括:当主机器与从机器通过SDA进行数据交互时,检测SCL的电平状态;根据SCL的电平状态,检测主机器与所述从机器之间是否发生死锁现象。因此,本发明实施例提供的技术方案能够解决现有技术中的死锁检测方法应用场景比较少以及适用性较低的问题。
Description
【技术领域】
本发明涉及通信技术领域,尤其涉及一种死锁检测方法、装置和电路。
【背景技术】
现有技术中,I2C(Inter-Integrated Circuit)总线是一种两线式串行总线通讯标准,I2C总线由一条数据线SDA和一条时钟线SCL构成。当主机器与从机器通过I2C总线中的SDA进行数据交互时,在一些异常情况下,SCL经常会出现时序错误,进而,会导致主机器与从机器互相等待对方发送通信结束信号的情况,造成了主机器与从机器之间的通讯被阻塞卡死,也就是,主机器与从机器之间容易发生死锁现象。系统管理总线(SystemManagement Bus,SMBus)与I2C总线类似,主机器与从机器进行数据交互时,也容易发生死锁现象。
现有技术中,针对主机器与从机器之间容易发生死锁现象这一问题,通常采用添加从机器看门狗、添加从机器复位模块、添加从机器死锁检测模块等方式,由这些添加的独立模块进行死锁现象的检测和复位。
在实现本发明过程中,发明人发现现有技术中至少存在如下问题:
现有技术中的死锁检测方法,需要在从机器端添加额外的从机器模块才能实现对死锁现象的检测,若不为从机器添加额外的从机器模块,就无法检测到主机器与从机器之间的死锁现象,应用场景比较少,适用性较低。
【发明内容】
有鉴于此,本发明实施例提供了一种死锁检测方法、装置和电路,用以解决现有技术中的死锁检测方法应用场景比较少以及适用性较低的问题。
一方面,本发明实施例提供了一种死锁检测方法,执行于主机器上,所述主机器与从机器之间通过时钟线SCL和数据线SDA连接;所述方法包括:
当所述主机器与所述从机器通过所述SDA进行数据交互时,检测所述SCL的电平状态;
根据所述SCL的电平状态,检测所述主机器与所述从机器之间是否发生死锁现象。
如上所述的方面和任一可能的实现方式,进一步提供一种实现方式,根据所述SCL的电平状态,检测所述主机器与所述从机器之间是否发生死锁现象,包括:
根据所述SCL的电平状态的变化,进行计数,得到计数结果;
判断所述计数结果是否大于预设的数目阈值;
当所述计数结果大于所述数目阈值时,检测到所述主机器与所述从机器之间发生死锁现象。
如上所述的方面和任一可能的实现方式,进一步提供一种实现方式,根据所述SCL的电平状态的变化,进行计数,包括:
当检测到所述SCL的当前电平状态与所述SCL的上一个电平状态一致时,计数值加1;或者,
当检测所述SCL的当前电平状态与所述SCL的上一个电平状态不一致时,计数值清零。
如上所述的方面和任一可能的实现方式,进一步提供一种实现方式,所述方法还包括:
当检测到所述主机器与所述从机器之间发生死锁现象时,发送复位信号给所述从机器,以触发所述从机器执行复位操作。
如上所述的方面和任一可能的实现方式,进一步提供一种实现方式,所述方法还包括:
当检测到所述主机器与所述从机器之间发生死锁现象时,执行复位操作。
另一方面,本发明实施例提供了一种死锁检测装置,位于主机器上,所述主机器与从机器之间通过时钟线SCL和数据线SDA连接;所述装置包括:
电平检测单元,用于当所述主机器与所述从机器通过所述SDA进行数据交互时,检测所述SCL的电平状态;
死锁检测单元,用于根据所述SCL的电平状态,检测所述主机器与所述从机器之间是否发生死锁现象。
如上所述的方面和任一可能的实现方式,进一步提供一种实现方式,所述死锁检测单元,包括:
计数子单元,用于根据所述SCL的电平状态的变化,进行计数,得到计数结果;
判断子单元,用于判断所述计数结果是否大于预设的数目阈值;
检测子单元,用于当所述计数结果大于所述数目阈值时,检测到所述主机器与所述从机器之间发生死锁现象。
如上所述的方面和任一可能的实现方式,进一步提供一种实现方式,所述计数子单元,具体用于:
当检测到所述SCL的当前电平状态与所述SCL的上一个电平状态一致时,计数值加一;或者,
当检测到所述SCL的当前电平状态与所述SCL的上一个电平状态不一致时,计数值清零。
如上所述的方面和任一可能的实现方式,进一步提供一种实现方式,所述装置还包括:
发送单元,用于当检测到所述主机器与所述从机器之间发生死锁现象时,发送复位信号给所述从机器,以触发所述从机器执行复位操作。
如上所述的方面和任一可能的实现方式,进一步提供一种实现方式,所述装置还包括:
复位单元,用于当检测到所述主机器与所述从机器之间发生死锁现象时,执行复位操作。
再一方面,本发明实施例提供了一种死锁检测电路,包括:
主机器;
从机器;
时钟线SCL,所述SCL的一端连接所述主机器,另一端连接所述从机器;
数据线SDA,所述SDA的一端连接所述主机器,另一端连接所述从机器;
检测引脚,位于所述主机器上,所述检测引脚与所述SCL相连接。
上述技术方案中的一个技术方案具有如下有益效果:
本发明实施例提供的死锁检测方法执行于主机器上,主机器与从机器之间通过时钟线SCL和数据线SDA连接,当主机器与从机器通过SDA进行数据交互时,检测SCL的电平状态;根据SCL的电平状态,检测主机器与所述从机器之间是否发生死锁现象。本发明实施例中,考虑到死锁现象时由于主机器与从机器之间由于时序错误产生的,因此,通过主机器检测二者之前连接的SCL的电平状态,可以判断是否发生时序错误,进而,当主机器检测到SCL发生时序错误,就可以检测到主机器与从机器之间是否发生了死锁现象。如此,不需要再为从机器添加额外的模块就可以实现对死锁现象的检测,节省不必要的资源浪费,并且,通过主机器实现死锁检测,也能够适用于现有技术中一些必须依赖主机器的复位信号才能复位的情况,应用场景更加广泛,实现方式简便可靠,因此,本发明实施例提供的技术方案解决了现有技术中的死锁检测方法应用场景比较少以及适用性较低的问题。
【附图说明】
为了更清楚地说明本发明实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其它的附图。
图1是本发明实施例所提供的死锁检测方法的实施例一的流程示意图;
图2是本发明实施例所提供的死锁检测电路的示意图;
图3是本发明实施例所提供的死锁检测方法的实施例二的流程示意图;
图4是本发明实施例所提供的死锁检测装置的功能方块图。
【具体实施方式】
为了更好的理解本发明的技术方案,下面结合附图对本发明实施例进行详细描述。
应当明确,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。
在本发明实施例中使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本发明。在本发明实施例和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。
应当理解,本文中使用的术语“和/或”仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,本文中字符“/”,一般表示前后关联对象是一种“或”的关系。
应当理解,尽管在本发明实施例中可能采用术语第一、第二、第三等来描述电平状态,但这些电平状态不应限于这些术语。这些术语仅用来将电平状态彼此区分开。例如,在不脱离本发明实施例范围的情况下,第一电平状态也可以被称为第二电平状态,类似地,第二电平状态也可以被称为第一电平状态。
取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”或“响应于检测”。类似地,取决于语境,短语“如果确定”或“如果检测(陈述的条件或事件)”可以被解释成为“当确定时”或“响应于确定”或“当检测(陈述的条件或事件)时”或“响应于检测(陈述的条件或事件)”。
现有技术中,当主机器与从机器之间通过I2C总线或SMBus总线进行数据交互时,若某些异常情况发生,例如,主机器异常复位、总线上存在干扰或者电源异常等情况发生时,就容易发生死锁现象。若不为从机器添加额外的从机器模块,就无法检测到主机器与从机器之间的死锁现象,应用场景比较少,适用性较低。
针对现有技术中主机器与从机器之间容易发生死锁现象这一问题,本发明实施例给出一种不需要在从机器侧添加额外从机器模块就可以有效检测到死锁现象的方法。
为了具体说明本方案,先以主机器异常复位这种异常情况为例具体说明死锁现象。为方便表述,以下说明以I2C总线为例进行说明。可以理解的是,与I2C总线具有类似结构的其他总线也适用于本发明实施例提供的死锁检测方法,在此不做赘述。
具体的,在主机器通过I2C总线与从机器进行读写等操作的过程中,主机器在开始信号后会控制SCL产生8个时钟脉冲信号,然后,主机器会拉低SCL为低电平,此时,从机器会输出应答信号,将SDA拉为低电平。若此时主机器发生了异常复位,SCL就会被释放为高电平。此时,从机器没有进行复位,从机器会继续通过I2C总线向主机器输出应答信号,占用SDA并将SDA拉为低电平,直至SCL变为低电平,从机器才会停止输出应答信号。而对于主机器来讲,主机器发生异常复位后会去检测SCL和SDA的电平状态,若发现SDA为低电平,就会认为I2C总线被占用,就会一直等待从机器释放SDA为高电平。这样,由于主机器发生异常复位,此时的SDA为低电平,SCL为高电平,但是,主机器会一直等待从机器释放SDA为高电平,而从机器也会一直等待主机器将SCL拉低以停止输出应答信号;这时候,主机器和从机器就会相互进行等待状态,通讯被阻塞卡死,I2C总线进入死锁状态。
基于此可知,当主机器与从机器之间发生死锁现象时,SCL中发生时序错误,SCL的电平状态会长时间没有变化。基于此,本发明实施例提供死锁检测方法可以基于以下构思实现:在主机器与从机器之间进行数据交互时,主机器检测SCL的电平状态,从而,通过SCL的电平状态来检测是否发生死锁现象。
以下,本发明实施例给出基于该构思的死锁检测方法的实施例。
实施例一
本发明实施例给出一种死锁检测方法,该方法执行于主机器中,并且,主机器与从机器之间通过时钟线SCL和数据线SDA连接。其中,SDA用于主机器和从机器之间的数据交互,SCL用于控制数据交互过程中的时序。
需要说明的是,本发明实施例中,主机器用于作整个系统的工作参数的读取分析,并进行任务协调和划分;相应的,从机器用于接收主机器发布的命令,完成这些命令指示的具体动作指令。也就是说,在主机器与从机器进行数据交互的过程中,一般由主机器主动读取从机器中的数据,并由主机器主动发送任务指令。
本发明实施例中,主机器与从机器可以为一对一的对应关系,或者,还可以为一个主机器对应于多个从机器的对应关系,本发明实施例对此不进行特别限定,并且,本发明实施例对与主机器和从机器所对应的具体设备不进行特别限定。
可以理解的是,主机器与从机器在一些特殊的应用情境下可以是相同的设备,例如,主机器和从机器可以都是微控制单元(Microcontroller Unit,MCU)。当时,当主机器和从机器是相同的设备时,主动发布命令的一个设备为主机器,响应于这个设备发送的命令的设备为从机器。例如,MCU1与MCU 2通过I2C进行数据交互时,MCU1主动向MCU2发布改写MCU2中数据的命令,而MCU2响应于这一命令的过程中,MCU1为主机器,MCU2为从机器。
具体的,请参考图1,其为本发明实施例所提供的死锁检测方法的实施例一的流程示意图。如图1所示,该方法包括:
S101,当主机器与从机器通过SDA进行数据交互时,检测SCL的电平状态。
S102,根据SCL的电平状态,检测主机器与从机器之间是否发生死锁现象。
可以理解的是,当主机器与从机器没有进行数据交互时,可以认为主机器和从机器之间没有发生死锁现象,此时,主机器可以检测SCL的电平状态,或者,主机器也可以不检测SCL的电平状态,本发明实施例对此不进行特别限定。
在一个具体的实现过程中,主机器还可以采用定时中断模式检测SCL的电平状态。此时,无论主机器是否与从机器进行数据交互,主机器一直以指定频率检测获得SCL的电平状态,然后,当主机器与从机器开始进行数据交互时,才启动对死锁现象的检测。
在实际实现过程中,主机器检测SCL的电平状态可以有多种实现方式,为了具体说明本方案,本发明实施例给出一种具体的实现方式:利用主机器上的引脚实现对SCL的电平状态的检测。
具体的,请参考图2,其为本发明实施例所提供的死锁检测电路的示意图。如图2所示,主机器与从机器之间连接有两条线,第一条为SCL,SCL的一端连接主机器,另一端连接从机器;第二条为SDA,SDA的一端连接主机器,另一端也连接从机器。如图2所示,主机器上还设置有一个检测引脚,这个检测引脚位于主机器上,因此,检测引脚的一端与主机器连接,另一端与SCL连接。如此,主机器可以通过与SCL连接的检测引脚,检测SCL的电平状态。
需要说明的是,如图2所示的检测引脚,可以利用主机器上原有的引脚,这样,只有启用本发明实施例提供的死锁检测方法时,这个引脚用于检测SCL的电平状态;而在其他应用场景下,这个检测引脚可以有其他的应用,本发明实施例对此不进行特别限定。这样,不需要再在主机器端或者从机器端添加其他设备,就可以实现对死锁现象的检测,节省成本,实现方式简单可靠。
或者,如图2所示的检测引脚,也可以在主机器端新增加一个用于检测SCL的电平状态的引脚。可以理解的是,这个检测引脚在必要的情况下,也是可以用作其他应用的。这样,只需要为主机器增加一个与SCL相连接的引脚就可以实现本方案。
具体的,主机器在检测SCL的电平状态的时,可以以预设的指定频率检测SCL的电平状态,每到这个指定频率指定的时间间隔时,就获取SCL的一个电平状态。
本发明实施例中,SCL的电平状态包括:高电平或者低电平。
本发明实施例中,根据SCL的电平状态,检测主机器与从机器之间是否发生死锁现象,可以包括以下步骤:
根据SCL的电平状态的变化,进行计数,得到计数结果;
判断计数结果是否大于预设的数目阈值;
当计数结果大于数目阈值时,检测到主机器与从机器之间发生死锁现象。
本发明实施例中,根据SCL的电平状态的变化,进行计数,得到的计数结果若大于预设的数目阈值时,说明SCL的电平状态在这段时长内一直没有发生变化,另外,考虑到若I2C总线的通讯正常,则SCL的电平状态是会根据主机器与从机器之间的数据交互发生变化的,因此,当SCL的电平一直没有发生变化时,说明SCL发生了时序错误,此时就认为主机器与从机器之间发生了死锁现象。
基于此,根据SCL的电平状态,进行计数的实现过程中,可以包括以下两种情况:
当检测到SCL的当前电平状态与SCL的上一个电平状态一致时,计数值加一;或者,当检测到SCL的当前电平状态与SCL的上一个电平状态不一致时,计数值清零。
通过该方案得到计数结果的过程中,由于主机器能够检测得到SCL的电平状态,因此,只需要判断当前检测得到的一个电平状态是否与检测到的上一个电平状态是否一致就可以判断SCL的电平状态是否发生变化。考虑到主机器与从机器交互过程中,存在I2C总线正常通讯状态时的合理等待时间,因此,通过计数的方式,当得到的计数结果大于数目阈值的时候,才认为是发生死锁现象,这样,也就排除了误检测的几率,提高检测的准确率。而这个数目阈值则可以根据实际需要进行预设。
举例说明,假设主机器与从机器在通过I2C总线进行数据交互过程中,主机器检测得到的SCL的当前电平状态为第二电平状态,在此之前检测到的上一个SCL的电平状态为第一电平状态。则主机器将第二电平状态与第一电平状态进行比对,若第一电平状态与第二电平状态都是高电平,或者,第一电平状态与第二电平状态都是低电平,则判断出第一电平状态和第二电平状态一致,此时,计数值加一,假设得到的当前的计数结果为A。而预设的数目阈值为B,则当A>B时,主机器检测到发生了死锁现象;或者,若A≤B,主机器检测到没有发生死锁现象,继续进行下一个电平状态与第二电平状态的判断与计数过程,直至通讯过程结束或检测到发生死锁现象。
或者,又例如,假设主机器与从机器在通过I2C总线进行数据交互过程中,主机器检测得到的SCL的当前电平状态为第四电平状态,在此之前检测到的上一个SCL的电平状态为第三电平状态。则主机器将第三电平状态与第四电平状态进行比对,若第三电平状态为高电平,第四电平状态为低电平;或者,若第三电平状态为低电平,第四电平状态为高电平,则判断出第三电平状态和第四电平状态不一致,此时,计数值清零,得到的技术结果为C;可以确定的是,此时C=0,也就是说,C一定小于B,主机器检测到没有发生死锁现象。
在实际的实现过程中,当主机器检测到发生了死锁现象,还需要对死锁现象进行处理。具体的,可以对主机器与从机器之间的通讯进行复位,执行复位操作后,主机器与从机器重新开始进行数据交互。
基于此,本发明实施例给出以下两种具体处理方式。
第一种处理方式,当检测到主机器与从机器之间发生死锁现象时,发送复位信号给从机器,以触发从机器执行复位操作。
通过该方式对死锁现象进行处理时,可以提前在从机器中预设:当从机器接收到这个复位信号后,执行复位操作,以使得主机器和从机器重新开始进行数据交互。复位信号可以根据实际需要进行预设。
在一个具体的实现过程中,复位信号可以为:连续的9个时钟方波信号。这个复位信号可以通过SCL生成并发送给从机器。
第二种处理方式,当检测到主机器与从机器之间发生死锁现象时,执行复位操作。此时,主设备直接对死锁现象执行复位操作。
在一个具体的实现过程中,通过该方式对死锁现象进行处理时,主机器可以自身的复位单元执行复位操作,这个复位单元可以是一个独立的从机器复位模块,或者,这个复位单元可以是主机器自带的复位程序。复位单元被主机器调用后,执行复位操作,以使得主机器和从机器重新开始进行数据交互。
需要说明的是,在具体实现过程中,可以单独使用上述的两种处理方式对死锁现象进行处理。或者,还可以使用上述两种处理方式的组合方式对死锁现象进行处理,此时,对上述两种处理方式的先后执行顺序不进行特别限定。
举例说明,当检测到主机器与从机器之间发生死锁现象时,主机器可以先发送复位信号给从机器,以触发从机器执行复位操作;然后,若检测到I2C的通讯依然处于死锁状态时,主机器再自身执行复位操作。
需要说明的是,本发明实施例提供的死锁检测方法在实现过程中,结束检测的终点可以是:检测到主机器与从机器之间发生了死锁现象,停止检测,对死锁现象进行处理;或者,主机器与从机器之间的数据交互结束,在这个交互过程中,并未发生死锁现象。
需要说明的是,S101~S102的执行主体可以为死锁检测装置,该装置可以位于主机器的应用,或者还可以为位于主机器的应用中的插件或软件开发工具包(SoftwareDevelopment Kit,SDK)等功能单元,本发明实施例对此不进行特别限定。
本发明实施例的技术方案具有以下有益效果:
本发明实施例提供的死锁检测方法执行于主机器上,主机器与从机器之间通过时钟线SCL和数据线SDA连接;该方法包括:当主机器与从机器通过SDA进行数据交互时,检测SCL的电平状态;根据SCL的电平状态,检测主机器与从机器之间是否发生死锁现象。本发明实施例中,考虑到死锁现象时由于主机器与从机器之间由于时序错误产生的,因此,通过主机器检测二者之前连接的SCL的电平状态,主机器可以根据SCL的电平状态判断是否发生时序错误,进而,当主机器检测到SCL发生时序错误,就可以检测到主机器与从机器之间是否发生了死锁现象。如此,不需要再为从机器添加额外的从机器模块就可以实现对死锁现象的检测,节省不必要的资源浪费,并且,通过主机器实现死锁检测,也能够适用于现有技术中一些必须依赖主机器的复位信号才能复位的情况,应用场景更加广泛,实现方式简便可靠,因此,本发明实施例提供的技术方案解决了现有技术中的死锁检测方法应用场景比较少以及适用性较低的问题。
实施例二
基于上述实施例一所提供的死锁检测方法,本发明实施例给出一种上述死锁检测方法的具体实现方式。
请参考图3,其为本发明实施例所提供的死锁检测方法的实施例二的流程示意图。如图3所示,该方法执行于主机器侧,该方法包括:
S301,主机器与从机器开始以I2C进行数据交互;执行S302.
S302,检测SCL的电平状态;执行S303。
S303,判断当前SCL的电平状态是否与上一个SCL的电平状态一致;若是,执行S304;若否,执行S305。
S304,计数值加一;执行S306。
S305,计数值清零;执行S306。
S306,得到当前计数结果;执行S307。
S307,判断当前计数结果是否大于500次;若是,执行S308;若否,执行S312。
此时,预设的数目阈值为500。
S308,检测到主机器与从机器之间发生死锁现象;执行S309。
S309,连续发送9个时钟方波信号给从机器,以触发从机器执行复位操作;执行S310。
S310,判断主机器与从机器之间是否仍处于死锁状态;若是,执行S311;若否,执行S301。
S311,调用自身的复位单元执行复位操作,执行S301。
S312,判断主机器与从机器之间的数据交互是否结束;若是,结束;若否,执行S302。
可以理解的是,本发明实施例提供的死锁检测方法仅为实施例一所提供的死锁检测方法的一种具体实现方式,并不用以限制本申请。未尽之处,请参考图1的相关说明。
本发明实施例的技术方案具有以下有益效果:
本发明实施例中,考虑到死锁现象时由于主机器与从机器之间由于时序错误产生的,因此,通过主机器检测二者之前连接的SCL的电平状态,主机器可以根据SCL的电平状态判断是否发生时序错误,进而,当主机器检测到SCL发生时序错误,就可以检测到主机器与从机器之间是否发生了死锁现象。如此,不需要再为从机器添加额外的从机器模块就可以实现对死锁现象的检测,节省不必要的资源浪费,并且,通过主机器实现死锁检测,也能够适用于现有技术中一些必须依赖主机器的复位信号才能复位的情况,应用场景更加广泛,实现方式简便可靠,因此,本发明实施例提供的技术方案解决了现有技术中的死锁检测方法应用场景比较少以及适用性较低的问题。
实施例三
基于上述实施例一所提供的死锁检测方法,本发明实施例进一步给出实现上述方法实施例中各步骤及方法的装置实施例。
请参考图4,其为本发明实施例所提供的死锁检测装置的功能方块图。具体的,该装置位于主机器上,并且,主机器与从机器之间通过SCL和SDA连接。
具体的,如图4所示,该装置包括:
电平检测单元41,用于当主机器与从机器通过SDA进行数据交互时,检测SCL的电平状态;
死锁检测单元42,用于根据SCL的电平状态,检测主机器与从机器之间是否发生死锁现象。
在实际实现过程中,死锁检测单元42,包括:
计数子单元421,用于根据SCL的电平状态的变化,进行计数,得到计数结果;
判断子单元422,用于判断计数结果是否大于预设的数目阈值;
检测子单元423,用于当计数结果大于数目阈值时,检测到主机器与从机器之间发生死锁现象。
在一个具体的实现过程中,计数子单元421,具体用于:
当检测到SCL的当前电平状态与SCL的上一个电平状态一致时,计数值加一;或者,
当检测到SCL的当前电平状态与SCL的上一个电平状态不一致时,计数值清零。
在一个具体的实现过程中,该装置还包括:
发送单元43,用于当检测到主机器与从机器之间发生死锁现象时,发送复位信号给从机器,以触发从机器执行复位操作。
在另一个具体的实现过程中,该装置还包括:
复位单元44,用于当检测到主机器与从机器之间发生死锁现象时,执行复位操作。
由于本实施例中的各单元能够执行图1所示的方法,本实施例未详细描述的部分,可参考对图1的相关说明。
本发明实施例的技术方案具有以下有益效果:
本发明实施例中,考虑到死锁现象时由于主机器与从机器之间由于时序错误产生的,因此,通过主机器检测二者之前连接的SCL的电平状态,主机器可以根据SCL的电平状态判断是否发生时序错误,进而,当主机器检测到SCL发生时序错误,就可以检测到主机器与从机器之间是否发生了死锁现象。如此,不需要再为从机器添加额外的从机器模块就可以实现对死锁现象的检测,节省不必要的资源浪费,并且,通过主机器实现死锁检测,也能够适用于现有技术中一些必须依赖主机器的复位信号才能复位的情况,应用场景更加广泛,实现方式简便可靠,因此,本发明实施例提供的技术方案解决了现有技术中的死锁检测方法应用场景比较少以及适用性较低的问题。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本发明所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如,多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。
上述以软件功能单元的形式实现的集成的单元,可以存储在一个计算机可读取存储介质中。上述软件功能单元存储在一个存储介质中,包括若干指令用以使得一台计算机装置(可以是个人计算机,服务器,或者网络装置等)或处理器(Processor)执行本发明各个实施例所述方法的部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器、随机存取存储器、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明保护的范围之内。
Claims (11)
1.一种死锁检测方法,其特征在于,执行于主机器上,所述主机器与从机器之间通过时钟线SCL和数据线SDA连接;所述方法包括:
当所述主机器与所述从机器通过所述SDA进行数据交互时,检测所述SCL的电平状态;
根据所述SCL的电平状态,检测所述主机器与所述从机器之间是否发生死锁现象。
2.根据权利要求1所述的方法,其特征在于,根据所述SCL的电平状态,检测所述主机器与所述从机器之间是否发生死锁现象,包括:
根据所述SCL的电平状态的变化,进行计数,得到计数结果;
判断所述计数结果是否大于预设的数目阈值;
当所述计数结果大于所述数目阈值时,检测到所述主机器与所述从机器之间发生死锁现象。
3.根据权利要求2所述的方法,其特征在于,根据所述SCL的电平状态的变化,进行计数,包括:
当检测到所述SCL的当前电平状态与所述SCL的上一个电平状态一致时,计数值加1;或者,
当检测所述SCL的当前电平状态与所述SCL的上一个电平状态不一致时,计数值清零。
4.根据权利要求1或2所述的方法,其特征在于,所述方法还包括:
当检测到所述主机器与所述从机器之间发生死锁现象时,发送复位信号给所述从机器,以触发所述从机器执行复位操作。
5.根据权利要求1或2所述的方法,其特征在于,所述方法还包括:
当检测到所述主机器与所述从机器之间发生死锁现象时,执行复位操作。
6.一种死锁检测装置,其特征在于,位于主机器上,所述主机器与从机器之间通过时钟线SCL和数据线SDA连接;所述装置包括:
电平检测单元,用于当所述主机器与所述从机器通过所述SDA进行数据交互时,检测所述SCL的电平状态;
死锁检测单元,用于根据所述SCL的电平状态,检测所述主机器与所述从机器之间是否发生死锁现象。
7.根据权利要求6所述的装置,其特征在于,所述死锁检测单元,包括:
计数子单元,用于根据所述SCL的电平状态的变化,进行计数,得到计数结果;
判断子单元,用于判断所述计数结果是否大于预设的数目阈值;
检测子单元,用于当所述计数结果大于所述数目阈值时,检测到所述主机器与所述从机器之间发生死锁现象。
8.根据权利要求7所述的装置,其特征在于,所述计数子单元,具体用于:
当检测到所述SCL的当前电平状态与所述SCL的上一个电平状态一致时,计数值加一;或者,
当检测到所述SCL的当前电平状态与所述SCL的上一个电平状态不一致时,计数值清零。
9.根据权利要求6或7所述的装置,其特征在于,所述装置还包括:
发送单元,用于当检测到所述主机器与所述从机器之间发生死锁现象时,发送复位信号给所述从机器,以触发所述从机器执行复位操作。
10.根据权利要求6或7所述的装置,其特征在于,所述装置还包括:
复位单元,用于当检测到所述主机器与所述从机器之间发生死锁现象时,执行复位操作。
11.一种死锁检测电路,其特征在于,所述电路包括:
主机器;
从机器;
时钟线SCL,所述SCL的一端连接所述主机器,另一端连接所述从机器;
数据线SDA,所述SDA的一端连接所述主机器,另一端连接所述从机器;
检测引脚,位于所述主机器上,所述检测引脚与所述SCL相连接。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201611223459.3A CN106776054A (zh) | 2016-12-27 | 2016-12-27 | 一种死锁检测方法、装置和电路 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201611223459.3A CN106776054A (zh) | 2016-12-27 | 2016-12-27 | 一种死锁检测方法、装置和电路 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN106776054A true CN106776054A (zh) | 2017-05-31 |
Family
ID=58926631
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201611223459.3A Pending CN106776054A (zh) | 2016-12-27 | 2016-12-27 | 一种死锁检测方法、装置和电路 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106776054A (zh) |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107562668A (zh) * | 2017-08-31 | 2018-01-09 | 广东欧珀移动通信有限公司 | 总线死锁恢复系统和方法 |
CN108170627A (zh) * | 2017-12-12 | 2018-06-15 | 晶晨半导体(上海)股份有限公司 | 一种通过时钟信号控制的数据传输方法 |
CN109032876A (zh) * | 2018-08-28 | 2018-12-18 | 郑州云海信息技术有限公司 | 一种处理方法、电源及系统 |
CN109388526A (zh) * | 2018-11-01 | 2019-02-26 | 郑州云海信息技术有限公司 | 一种控制电路及复位操作的方法 |
CN111061587A (zh) * | 2019-12-12 | 2020-04-24 | 浪潮商用机器有限公司 | 一种i2c总线的通信控制方法、装置、设备及存储介质 |
TWI739556B (zh) * | 2020-08-19 | 2021-09-11 | 瑞昱半導體股份有限公司 | 時脈死結檢測系統、方法以及非暫態電腦可讀取媒體 |
CN116909197A (zh) * | 2023-09-05 | 2023-10-20 | 江苏正泰泰杰赛智能科技有限公司 | 一种多类型水表采集的mbus信号转换模块以及转换方法 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102073613A (zh) * | 2010-12-15 | 2011-05-25 | 创新科存储技术有限公司 | 一种消除i2c总线死锁的装置及方法 |
CN102521187A (zh) * | 2011-11-29 | 2012-06-27 | 广东东研网络科技有限公司 | 一种i2c总线通信死锁解决方法 |
CN103019871A (zh) * | 2012-12-31 | 2013-04-03 | 四川迪佳通电子有限公司 | 一种i2c总线的防死锁系统及其防死锁方法 |
-
2016
- 2016-12-27 CN CN201611223459.3A patent/CN106776054A/zh active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102073613A (zh) * | 2010-12-15 | 2011-05-25 | 创新科存储技术有限公司 | 一种消除i2c总线死锁的装置及方法 |
CN102521187A (zh) * | 2011-11-29 | 2012-06-27 | 广东东研网络科技有限公司 | 一种i2c总线通信死锁解决方法 |
CN103019871A (zh) * | 2012-12-31 | 2013-04-03 | 四川迪佳通电子有限公司 | 一种i2c总线的防死锁系统及其防死锁方法 |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107562668A (zh) * | 2017-08-31 | 2018-01-09 | 广东欧珀移动通信有限公司 | 总线死锁恢复系统和方法 |
CN107562668B (zh) * | 2017-08-31 | 2019-02-12 | Oppo广东移动通信有限公司 | 总线死锁恢复系统和方法 |
CN108170627A (zh) * | 2017-12-12 | 2018-06-15 | 晶晨半导体(上海)股份有限公司 | 一种通过时钟信号控制的数据传输方法 |
CN109032876A (zh) * | 2018-08-28 | 2018-12-18 | 郑州云海信息技术有限公司 | 一种处理方法、电源及系统 |
CN109388526A (zh) * | 2018-11-01 | 2019-02-26 | 郑州云海信息技术有限公司 | 一种控制电路及复位操作的方法 |
CN111061587A (zh) * | 2019-12-12 | 2020-04-24 | 浪潮商用机器有限公司 | 一种i2c总线的通信控制方法、装置、设备及存储介质 |
TWI739556B (zh) * | 2020-08-19 | 2021-09-11 | 瑞昱半導體股份有限公司 | 時脈死結檢測系統、方法以及非暫態電腦可讀取媒體 |
CN116909197A (zh) * | 2023-09-05 | 2023-10-20 | 江苏正泰泰杰赛智能科技有限公司 | 一种多类型水表采集的mbus信号转换模块以及转换方法 |
CN116909197B (zh) * | 2023-09-05 | 2024-01-05 | 江苏正泰泰杰赛智能科技有限公司 | 一种多类型水表采集的mbus信号转换模块以及转换方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106776054A (zh) | 一种死锁检测方法、装置和电路 | |
CN106649180B (zh) | 一种解除i2c总线死锁的方法及装置 | |
CN102759724B (zh) | 一种智能电能表的通信可靠性测试方法及系统 | |
CN102761439B (zh) | Pon接入系统中基于看门狗的异常检测记录装置及方法 | |
CN103116563B (zh) | 一种主机通信方法、一种主机及通信系统 | |
CN100507585C (zh) | 一种单板在位检测方法及系统 | |
CN110249319A (zh) | 处理i2c总线死锁的方法、电子设备和通信系统 | |
CN103440216A (zh) | 一种通过i2c从设备调试mcu的芯片及方法 | |
CN103631534B (zh) | 数据存储系统以及其管理方法 | |
US7353300B2 (en) | Apparatus to improve the firmware efficiency for a multiframe serial interface | |
CN104460406B (zh) | 单线通信的方法及基于单线通信的单片机固件升级方法 | |
CN105446837B (zh) | 检测iic接口器件是否连接的方法、装置以及系统 | |
CN110647486A (zh) | 一种PCIe链路训练方法、端设备及通讯系统 | |
CN105988905A (zh) | 异常处理方法及装置 | |
CN105718396B (zh) | 一种大数据主设备传输的i2c总线装置及其通讯方法 | |
TW515947B (en) | Test method of 1394 controller | |
CN214225796U (zh) | 时间同步电路 | |
JPWO2017104437A1 (ja) | 通信装置、通信方法、プログラム、および通信システム | |
CN106254149B (zh) | 一种判断板卡被拔出的方法及管理板 | |
CN107479900A (zh) | 一种适用于实时操作系统的热插拔软件方案 | |
CN109062839A (zh) | 一种检测hba卡的方法、装置和计算机可读存储介质 | |
CN104252430B (zh) | 一种状态指示的方法及电子设备 | |
CN103856381A (zh) | 自动恢复热插拔i2c总线锁死的方法、装置和系统 | |
CN106506074A (zh) | 一种检测光口状态的方法和装置 | |
KR20100054734A (ko) | 리퀘스트 순서 제어 시스템, 리퀘스트 순서 제어 방법 및 리퀘스트 순서 제어 프로그램을 기록한 컴퓨터 판독 가능한 기록 매체 |
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 | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20170531 |