CN100543713C - 防止lpc总线死锁的方法和装置 - Google Patents
防止lpc总线死锁的方法和装置 Download PDFInfo
- Publication number
- CN100543713C CN100543713C CNB2006101270840A CN200610127084A CN100543713C CN 100543713 C CN100543713 C CN 100543713C CN B2006101270840 A CNB2006101270840 A CN B2006101270840A CN 200610127084 A CN200610127084 A CN 200610127084A CN 100543713 C CN100543713 C CN 100543713C
- Authority
- CN
- China
- Prior art keywords
- lpc bus
- waiting status
- long waiting
- lpc
- bus
- 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.)
- Active
Links
Images
Landscapes
- Debugging And Monitoring (AREA)
Abstract
本发明公开了一种防止LPC总线死锁的方法,该方法包括步骤:监听LPC总线进入长等待状态;确定LPC总线处于长等待状态的时间到达或超过预设的报警门限值后,驱动LPC总线进入正常的交易状态。本发明通过监听LPC总线的长等待状态,在长等待超时的情况下,控制LPC总线从长等待状态恢复到正常的总线交易状态,防止了LPC总线出现死锁。而且,本发明动态调整报警的时间,充分考虑了实际应用中主机对LPC总线长等待的忍耐程度,减少了不必要的总线开销。本发明还公开了一种防止LPC总线死锁的装置。
Description
技术领域
本发明涉及LPC(Low Pin Count,低脚数)总线技术领域,尤其涉及一种防止LPC总线死锁的方法和装置。
背景技术
LPC是Intel(英特尔)公司定义的一种总线,因管脚数少而得名。LPC总线的典型应用如图1所示,主机(Host)与设备(Peripheral)通过LPC总线通信,由控制器对LPC总线进行控制,LPC总线控制器由主机的南桥接管。其中,设备包括连接在超级输入/输出(Super I/O)接口上的鼠标(Mouse)、键盘(Keyboard)和软盘驱动器(Floppy Drive)等。
LPC总线规范中规定,LPC总线交易有很多个域组成,包括传输类型(读或写)、地址、数据和同步(SYNC)等不同的域。在LPC设备将总线权限交还给主机之前,可以驱动的LPC总线同步域状态有四种,分别是:
(1)就绪(ready):设备已准备好,可立即将总线权限交还给主机;
(2)短等待(short wait):设备未准备好,需要主机等待四至八个总线时钟周期,才能将总线权限交还给主机;
(3)长等待(long wait):设备未准备好,需要主机长期等待;直到设备准备好之后,才能将总线权限交还给主机;
(4)错误(error):设备出错,可立即将总线权限交还给主机,并通过该error值和主机交换错误信息。
LPC总线规范中还规定,若设备驱动总线为long wait值,则主机会无限期等待下去,不会主动中止总线传输,这就相当于LPC总线锁定在长等待状态,也即LPC总线“死锁”。
当某设备驱动LPC总线为long wait值且长期不释放,就会造成其它LPC设备无法通过LPC总线与南桥通信,最典型的表现为,鼠标、键盘等设备无法工作。而且,当等待时间过长、超过主机操作系统(OS,Operating System)能容忍的响应周期,就会引起OS重启,为主机使用者带来严重问题。
美国申请号6,292,910 B1、名为《Method and Apparatus for Detecting a BusDeadlock in an Electronic System》的专利中,公开了一种检测总线死锁的装置和方法,该专利采用总线跟踪电路监听总线交易,当检测到那些会导致总线死锁的状态时,启动计数器电路记录这些状态发生的次数,以实现检测总线死锁,并记录总线死锁时的总线信息。但是,该专利只是被动地监听总线状态,并没有从根本上解决LPC总线死锁的问题,也就是没有提供解除LPC总线死锁的方法。
发明内容
本发明的目的是提供一种防止LPC总线死锁的方法和装置,以实现控制LPC总线从长等待状态恢复到正常的总线交易状态。
为此,本发明采用如下技术方案:
一种防止低脚数总线LPC死锁的方法,包括步骤:
监听LPC总线进入长等待状态;
确定LPC总线处于长等待状态的时间到达或超过预设的报警门限值后,驱动LPC总线进入正常的交易状态。
所述确定LPC总线处于长等待状态的时间到达或超过预设的报警门限值,包括:
在监听到LPC总线进入长等待状态时刻起,开始正计时;
判断计时时间是否等于或大于预设的报警门限值,若是,则确定LPC总线处于长等待状态的时间到达或超过预设的报警门限值。
所述确定LPC总线处于长等待状态的时间到达或超过预设的报警门限值,包括:
在监听到LPC总线进入长等待状态时刻起,从预设的报警门限值开始倒计时;
判断计时是否溢出,若是,则确定LPC总线处于长等待状态的时间到达或超过预设的报警门限值。
所述方法还包括:
监听LPC总线是否退出长等待状态,若是,将计时时间复位。
所述预设的报警门限值,包括:硬件复位或软件设定得到的默认值。
所述方法还包括:
记录LPC总线交易信息;
记录LPC总线处于长等待状态的时间;
根据所述交易信息,对已记录的各次LPC总线处于长等待状态的时间进行统计;
根据所述统计的结果,更新报警门限值。
所述正常的交易状态,包括:LPC总线的就绪状态或错误状态。
在所述驱动LPC总线进入正常的交易状态的同时,所述方法还包括:
判断正常的交易状态是否是LPC总线的错误状态,若是,LPC总线与其连接的主机进行错误信息交互。
一种防止LPC总线死锁的装置,包括:状态监听电路、计时电路和死锁恢复电路;
所述状态监听电路,用于监听LPC总线进入长等待状态后,通知计时电路开始计时;
所述计时电路,用于计时,并在确定LPC总线处于长等待状态的时间到达或超过预设的报警门限值时,产生报警信号;
所述死锁恢复电路,由所述计时电路产生的报警信号触发,驱动LPC总线进入正常的交易状态。
所述装置还包括:计时优化电路,
所述计时优化电路,用于记录LPC总线的交易信息,并记录所述计时电路提供的LPC总线处于长等待状态的时间;根据所述交易信息对各次LPC总线处于长等待状态的时间进行统计,利用统计结果更新所述报警门限值。
所述状态监听电路,还用于监听LPC总线是否退出长等待状态,并将监听结果告知计时电路;
所述计时电路,根据来自状态监听电路的LPC总线退出长等待状态的监听结果对自身进行复位。
本发明通过监听LPC总线的长等待状态,在长等待超时的情况下,控制LPC总线从长等待状态恢复到正常的总线交易状态,防止了LPC总线出现死锁。
而且,本发明动态调整报警的时间,充分考虑了实际应用中主机对LPC总线长等待的忍耐程度,减少了不必要的总线开销。
附图说明
图1为现有技术中LPC总线应用示意图;
图2为LPC总线应用流程图;
图3为本发明中实施例一的流程图;
图4为本发明中实施例二的流程图;
图5为本发明中装置的结构示意图。
具体实施方式
首先,对LPC总线同步域各状态的工作情况进行简单的介绍。
如图2所示,LPC总线应用流程包括:
步骤201:主机通过LPC总线向LPC设备发起数据传输请求;
步骤202:LPC设备接收到主机的传输请求后,根据自身状况,在LPC总线同步域下驱动LPC总线进入不同的工作状态;
其中,LPC设备自身状况包括:
①就绪;②需要短等待;③需要长等待;④出错。
步骤203:LPC设备处于状况①,驱动LPC总线进入就绪状态;
步骤204:数据传输;
步骤205:LPC设备处于状况②,驱动LPC总线进入短等待状态;
步骤206:LPC设备是否在LPC工作时钟的八个周期内准备就绪,若是,执行步骤204,否则,执行步骤207;
步骤207:主机中止LPC总线传输;
步骤208:LPC设备处于状况③,驱动LPC总线进入长等待状态;
步骤209:LPC设备处于状况④,驱动LPC总线进入错误状态;
步骤210:LPC设备与主机进行错误信息交互。
可见,LPC总线在就绪、短等待和错误的状态下,都能顺利退出,唯独在长等待状态下,没有方法退出,这样,各种LPC设备以及主机都在被动的等待,不利于系统的整体运行。
为此,本发明通过设计一个LPC总线控制装置,对LPC总线的长等待状态进行监听,当LPC总线在长等待状态的时间超过预设的值时,驱动LPC总线退出长等待状态,恢复总线正常的交易状态。
下面详细介绍本发明实施例一。
如图3所示,实施例一包括:
步骤301:预设报警门限值;
其中,报警门限值是本发明中增加的,此报警门限值用来作为是否驱动LPC总线退出长等待状态的标准,它可以是硬件复位或软件设定而得的默认值。
步骤302:监听LPC总线同步域状态;
实时监听LPC总线同步域状态,特别是监听LPC总线进入长等待状态。
步骤303:LPC总线进入长等待状态时,开始计时;并判断是否出现以下两种情况之一:
1)计时时间大于或等于报警门限值,并且监听到LPC总线仍然处于长等待状态,执行步骤304;
2)计时时间小于报警门限值时,监听到LPC总线已退出长等待状态,执行步骤305;
其中,计时包括正计时和倒计时。
正计时,是从零开始计时,当计时时间等于或大于预设的报警门限值时,产生报警信号。
倒计时,是从预设的报警门限值开始倒计时,当产生溢出时,例如计时到零时,产生报警信号。
步骤304:报警,同时驱动LPC总线退出长等待状态,进入正常的交易状态;
其中,正常的交易状态包括LPC总线的就绪状态和错误状态。
当是就绪状态时,LPC设备通过LPC总线和主机进行数据传输;
当是错误状态时,LPC设备和主机进行错误信息交互,以查明产生错误的原因。
步骤305:将计时时间复位。
下面介绍本发明实施例二:
在实施例一的基础上,本实施例增加了对报警门限值的动态调整。
如图4所示,实施例二包括如下步骤:
步骤401:预设报警门限值;
步骤402:记录LPC总线交易信息;
其中,LPC总线交易信息包括LPC总线交易类型,交易类型可以是对数据的读操作,或者是写操作;交易信息还包括LPC总线交易地址,可以是控制寄存器地址,或是数据寄存器地址。
步骤403:监听LPC总线同步域状态;
步骤404:LPC总线进入长等待状态时,开始计时;并判断是否出现以下两种情况之一:
1)计时时间大于或等于报警门限值,并且监听到LPC总线仍然处于长等待状态,执行步骤405;
2)计时时间小于报警门限值时,监听到LPC总线已退出长等待状态,执行步骤406;
步骤405:报警,同时驱动LPC总线退出长等待状态,进入正常的交易状态;
步骤406:记录计时时间,之后对计时时间进行复位;
其中,记录的计时时间也就是LPC总线处于长等待状态的时间。
步骤407:根据LPC总线交易信息,统计历史记录的计时时间;
步骤408:根据统计的结果更新报警门限值。
其中,对于统计历史记录的计时时间,可以采用统计学中的统计方法。例如平均值法、加权法等。在得到计时时间的统计值后,用此统计值替换原报警门限值。
对于实施例二,在产生报警的情况下,也可以认为对报警门限值进行了更新,只不过是原值覆盖而已。
本发明还公开了一种防止LPC总线死锁的装置,如图5所示,此装置包括状态监听电路501、计时电路502和死锁恢复电路503。
状态监听电路501,主要用于监听LPC总线同步域状态。特别是监听到LPC总线进入长等待状态时,通知计时电路502开始计时;在监听到LPC总线退出长等待状态时,通知计时电路502对计时时间进行复位。
计时电路502,主要用于计时,以确定LPC总线处于长等待状态的时间是否到达或超过预设的报警门限值。在状态监听电路501告知其监听到的LPC总线状态仍然是长等待、且计时显示长等待状态的时间到达或超过预设的报警门限值时,计时电路502产生报警信号,此报警信号会触发死锁恢复电路503开始工作。在得到状态监听电路501告知的LPC总线已退出长等待状态时,计时电路502对自身的计时时间进行复位。
死锁恢复电路503,主要用于驱动LPC总线退出长等待状态。它由计时电路502产生的报警信号触发,驱动LPC总线进入就绪状态或错误状态。
如图5所示,防止LPC总线死锁的装置还包括计时优化电路504。
计时优化电路504主要用于动态调整计时电路502的报警门限值。它负责记录LPC总线每次交易的交易信息,以及每次LPC总线处于长等待状态的时间,并根据交易信息统计LPC总线处于长等待状态时间的历史信息,利用统计结果更新报警门限值。
其中,LPC总线处于长等待状态的时间,是从计时电路502读取到的,特别的,当状态监听电路501监听到LPC总线退出长等待状态、计时电路502的计时时间小于报警门限值的情况下,从计时电路502读取得到的计时时间值。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
Claims (11)
1、一种防止低脚数总线LPC死锁的方法,其特征在于,所述方法包括:
监听LPC总线进入长等待状态;
确定LPC总线处于长等待状态的时间到达或超过预设的报警门限值后,驱动LPC总线进入正常的交易状态。
2、根据权利要求1所述的防止LPC总线死锁的方法,其特征在于,所述确定LPC总线处于长等待状态的时间到达或超过预设的报警门限值,包括:
在监听到LPC总线进入长等待状态时刻起,开始正计时;
判断计时时间是否等于或大于预设的报警门限值,若是,则确定LPC总线处于长等待状态的时间到达或超过预设的报警门限值。
3、根据权利要求1所述的防止LPC总线死锁的方法,其特征在于,所述确定LPC总线处于长等待状态的时间到达或超过预设的报警门限值,包括:
在监听到LPC总线进入长等待状态时刻起,从预设的报警门限值开始倒计时;
判断计时是否到零,若是,则确定LPC总线处于长等待状态的时间到达或超过预设的报警门限值。
4、根据权利要求2或3所述的防止LPC总线死锁的方法,其特征在于,所述方法还包括:
监听LPC总线是否退出长等待状态,若是,将计时时间复位。
5、根据权利要求1、2或3所述的防止LPC总线死锁的方法,其特征在于,所述预设的报警门限值,包括:
硬件复位或软件设定得到的默认值。
6、根据权利要求1、2或3所述的防止LPC总线死锁的方法,其特征在于,所述方法还包括:
记录LPC总线交易信息;
记录LPC总线处于长等待状态的时间;
根据所述交易信息,对已记录的各次LPC总线处于长等待状态的时间进行统计;
根据所述统计的结果,更新报警门限值。
7、根据权利要求1、2或3所述的防止LPC总线死锁的方法,其特征在于,所述正常的交易状态,包括:
LPC总线的就绪状态或错误状态。
8、根据权利要求7所述的防止LPC总线死锁的方法,其特征在于,在所述驱动LPC总线进入正常的交易状态的同时,所述方法还包括:
判断正常的交易状态是否是LPC总线的错误状态,若是,LPC设备与其连接的主机进行错误信息交互。
9、一种防止LPC总线死锁的装置,其特征在于,所述装置包括:状态监听电路、计时电路和死锁恢复电路;
所述状态监听电路,用于监听LPC总线进入长等待状态后,通知计时电路开始计时;
所述计时电路,用于计时,并在确定LPC总线处于长等待状态的时间到达或超过预设的报警门限值时,产生报警信号;
所述死锁恢复电路,由所述计时电路产生的报警信号触发,驱动LPC总线进入正常的交易状态。
10、根据权利要求9所述的防止LPC总线死锁的装置,其特征在于,所述装置还包括:计时优化电路,
所述计时优化电路,用于记录LPC总线的交易信息,并记录所述计时电路提供的LPC总线处于长等待状态的时间;根据所述交易信息对各次LPC总线处于长等待状态的时间进行统计,利用统计结果更新所述报警门限值。
11、根据权利要求9或10所述的防止LPC总线死锁的装置,其特征在于,
所述状态监听电路,还用于监听LPC总线是否退出长等待状态,并将监听结果告知计时电路;
所述计时电路,根据来自状态监听电路的LPC总线退出长等待状态的监听结果对自身进行复位。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB2006101270840A CN100543713C (zh) | 2006-09-26 | 2006-09-26 | 防止lpc总线死锁的方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB2006101270840A CN100543713C (zh) | 2006-09-26 | 2006-09-26 | 防止lpc总线死锁的方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101154210A CN101154210A (zh) | 2008-04-02 |
CN100543713C true CN100543713C (zh) | 2009-09-23 |
Family
ID=39255875
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB2006101270840A Active CN100543713C (zh) | 2006-09-26 | 2006-09-26 | 防止lpc总线死锁的方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN100543713C (zh) |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102103560A (zh) * | 2009-12-16 | 2011-06-22 | 中兴通讯股份有限公司 | 用于系统总线的防死锁方法及装置 |
CN103678198B (zh) * | 2012-09-14 | 2017-07-07 | 京信通信系统(中国)有限公司 | 总线的锁定解除方法、装置及系统 |
CN103856381A (zh) * | 2012-11-28 | 2014-06-11 | 苏州工业园区新宏博通讯科技有限公司 | 自动恢复热插拔i2c总线锁死的方法、装置和系统 |
US9298507B2 (en) | 2013-09-26 | 2016-03-29 | International Business Machines Corporation | Data processing resource management |
CN105589821B (zh) * | 2014-10-20 | 2019-03-12 | 深圳市中兴微电子技术有限公司 | 一种防止总线死锁的装置及方法 |
CN106873403B (zh) * | 2015-12-10 | 2019-10-22 | 北京铁路信号有限公司 | Can总线控制器 |
US10380060B2 (en) | 2016-06-17 | 2019-08-13 | Etron Technology, Inc. | Low-pincount high-bandwidth memory and memory bus |
-
2006
- 2006-09-26 CN CNB2006101270840A patent/CN100543713C/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN101154210A (zh) | 2008-04-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN100543713C (zh) | 防止lpc总线死锁的方法和装置 | |
US7260749B2 (en) | Hot plug interfaces and failure handling | |
US6145098A (en) | System for displaying system status | |
TWI229796B (en) | Method and system to implement a system event log for system manageability | |
US6065053A (en) | System for resetting a server | |
CN102761439B (zh) | Pon接入系统中基于看门狗的异常检测记录装置及方法 | |
CN103019871B (zh) | 一种i2c总线的防死锁系统及其防死锁方法 | |
US6138250A (en) | System for reading system log | |
CN103500133A (zh) | 故障定位方法及装置 | |
CN106603265A (zh) | 管理方法、服务控制器装置以及非暂态计算机可读介质 | |
CN112540943B (zh) | 一种防止i2c接口错误唤醒soc系统的电路结构及方法 | |
CN103823708B (zh) | 虚拟机读写请求处理的方法和装置 | |
CN101667152A (zh) | 计算机系统及计算机系统的总线监控方法 | |
CN100378617C (zh) | 网络唤醒装置与方法 | |
CN110968352A (zh) | 一种pcie设备的复位系统及服务器系统 | |
US5983359A (en) | Processor fault recovering method for information processing system | |
US8839268B2 (en) | Method and system of preventing silent data corruption | |
US20090177807A1 (en) | Reset method for application specific integrated circuits (asic) | |
US8631169B2 (en) | Restore PCIe transaction ID on the fly | |
CN110765045B (zh) | 一种基于fpga的中断延时计数系统及方法 | |
CN109086081A (zh) | 一种即时提示SATA和NVMe设备在位变化的方法、系统及介质 | |
CN114579392A (zh) | 用于写事务的axi总线监视器 | |
CN116974818A (zh) | 一种具备模块状态恢复功能的系统及方法、设备及介质 | |
CN105589821A (zh) | 一种防止总线死锁的装置及方法 | |
US20050144346A1 (en) | Message based transport mechanism for level sensitive interrupts |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |