CN100543713C - 防止lpc总线死锁的方法和装置 - Google Patents

防止lpc总线死锁的方法和装置 Download PDF

Info

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
Application number
CNB2006101270840A
Other languages
English (en)
Other versions
CN101154210A (zh
Inventor
吕渊
毛兴中
成嵩
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.)
Lenovo Beijing Ltd
Original Assignee
Lenovo Beijing Ltd
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 Lenovo Beijing Ltd filed Critical Lenovo Beijing Ltd
Priority to CNB2006101270840A priority Critical patent/CN100543713C/zh
Publication of CN101154210A publication Critical patent/CN101154210A/zh
Application granted granted Critical
Publication of CN100543713C publication Critical patent/CN100543713C/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Debugging And Monitoring (AREA)

Abstract

本发明公开了一种防止LPC总线死锁的方法,该方法包括步骤:监听LPC总线进入长等待状态;确定LPC总线处于长等待状态的时间到达或超过预设的报警门限值后,驱动LPC总线进入正常的交易状态。本发明通过监听LPC总线的长等待状态,在长等待超时的情况下,控制LPC总线从长等待状态恢复到正常的总线交易状态,防止了LPC总线出现死锁。而且,本发明动态调整报警的时间,充分考虑了实际应用中主机对LPC总线长等待的忍耐程度,减少了不必要的总线开销。本发明还公开了一种防止LPC总线死锁的装置。

Description

防止LPC总线死锁的方法和装置
技术领域
本发明涉及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总线退出长等待状态的监听结果对自身进行复位。
CNB2006101270840A 2006-09-26 2006-09-26 防止lpc总线死锁的方法和装置 Active CN100543713C (zh)

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)

* Cited by examiner, † Cited by third party
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

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