[0043] 以下通过特定的具体实例说明本发明的实施方式,本领域技术人员可由本说明书所揭露的内容轻易地了解本发明的其他优点与功效。本发明还可以通过另外不同的具体实施方式加以实施或应用,本说明书中的各项细节也可以基于不同观点与应用,在没有背离本发明的精神下进行各种修饰或改变。需说明的是,在不冲突的情况下,以下实施例及实施例中的特征可以相互组合。
[0044] 需要说明的是,以下实施例中所提供的图示仅以示意方式说明本发明的基本构想,遂图式中仅显示与本发明中有关的组件而非按照实际实施时的组件数目、形状及尺寸绘制,其实际实施时各组件的型态、数量及比例可为一种随意的改变,且其组件布局型态也可能更为复杂。
[0045] 本发明所述的背板I2C总线死锁的消除方法、系统及电子设备的发明原理如下:
[0046] 将CPLD接入主控板的I2C总线中,在CPLD接收到来自CPU的主备切换命令后,先监测I2C总线状态,如果I2C总线是空闲状态,CPLD就执行CPU的主备切换指令,否则,CPLD发出抢主操作,迫使正在使用I2C总线的器件,退出操作,释放总线,CPLD在消除了背板I2C总线死锁条件后,才执行主备切换。
[0047] 实施例一
[0048] 本实施例提供一种背板I2C总线死锁的消除方法,其特征在于,所述背板I2C总线死锁的消除方法包括以下步骤:
[0049] 接收主备板的切换命令;
[0050] 根据所述切换命令监测所述I2C总线是否处于空闲状态;若是,则执行切换命令,将主板转换成备板,将备板转换成主板;若否,则执行下一步骤;
[0051] 发送抢占信号;
[0052] 根据所述抢占信号继续监测所述I2C总线是否处于空闲状态;若是,则执行切换命令,将主板转换成备板,将备板转换成主板,若否,则返回发送包含有低电平数据位的抢占信号以继续监测所述I2C总线。
[0053] 以下将结合图示对本实施例提供的背板I2C总线死锁的消除方法进行详细阐述。本实施例提供一种所述的背板I2C总线死锁的消除方法,所述背板上通过IC2总线连接有其他板卡,其他板卡上插入有I2C器件,所述I2C器件包括温度传感器件,风扇转速控制器件,电源管理器,时钟质量监控器等等。请参阅图1,显示为背板I2C总线死锁的消除方法于一实施例中的流程示意图。如图1所示,所述背板I2C总线死锁的消除方法具体包括以下几个步骤:
[0054] S1,根据需求发送主备板的切换命令。所述主备板的切换命令就是根据需求将主板转换成备板,将备板转换成主板。所述主板也可称为主用主控板,所述备板也可称为备用主控板。
[0055] S2,接收主备板的切换命令。
[0056] S3,根据所述切换命令监测所述I2C总线是否处于空闲状态,若是,则执行步骤S4;若否,则执行步骤S5。在本步骤中,所述I2C总线是否处于空闲状态的判断标准是根据I2C总线中SDA和SCL信号都为高时,即I2C总线处于空闲状态。
[0057] S4,执行切换命令,将主板转换成备板,将备板转换成主板。
[0058] S5,发送抢占信号。所述抢占信号包括多个低电平数据信号。
[0059] S6,根据所述抢占信号继续监测所述I2C总线。
[0060] S7,将所述抢占信号与通过I2C总线连接在背板上的I2C器件输出的数据信号进行比较以判断两信号是否一致,若是,则表示所述I2C器件可继续占用I2C总线,不执行切换命令,返回步骤S5,即继续发送包含有低电平数据位的抢占信号以继续监测所述I2C总线;若否,则表示所述I2C器件可释放所占用的I2C总线,执行步骤S4,即执行切换命令,将主板转换成备板,将备板转换成主板。在本实施例中,一旦监测到I2C总线处于空闲状态,就开始执行硬件信号主备切换。
[0061] 实施例二
[0062] 本实施例提供一种背板I2C总线死锁的消除系统,所述背板I2C总线死锁的消除系统包括:
[0063] 控制模块,用于接收主备板的切换命令;
[0064] 第一监测模块,与所述控制模块连接,用于根据所述切换命令监测所述I2C总线是否处于空闲状态;若是,则调用用于执行切换命令,将主板转换成备板,将备板转换成主板的执行模块;若否,则调用发送抢占信号的信号发送模块;
[0065] 第二监测模块,与所述第一监测模块和信号发送模块连接,用于根据所述抢占信号继续监测所述I2C总线是否处于空闲状态;若是,则调用所述执行模块执行切换命令,将主板转换成备板,将备板转换成主板,若否,则调用所述发送模块继续发送包含有低电平数据位的抢占信号以继续监测所述I2C总线。
[0066] 以下将结合图示对本实施例提供的背板I2C总线死锁的消除系统进行详细阐述。本实施例提供一种所述的背板I2C总线死锁的消除系统10,请参阅图2,显示为背板I2C总线死锁的消除系统于一实施例中的原理结构示意图。如图2所示,所述背板I2C总线死锁的消除系统10包括:中央处理模块101、控制模块102、第一监测模块103、信号发送模块104、第二监测模块105、及比较模块106。
[0067] 所述中央处理模块101用于根据需求发送主备板的切换命令。所述主备板的切换命令就是根据需求将主板转换成备板,将备板转换成主板。所述主板也可称为主用主控板,所述备板也可称为备用主控板。
[0068] 与所述中央处理模块101连接的控制模块102用于接收主备板的切换命令。
[0069] 与所述控制模块102连接的第一监测模块103用于根据所述切换命令监测所述I2C总线是否处于空闲状态,若是,则调用所述控制模块102以执行切换命令,将主板转换成备板,将备板转换成主板;若否,则调用用于发送抢占信号的信号发送模块104。所述抢占信号包括多个低电平数据信号。在本步骤中,所述I2C总线是否处于空闲状态的判断标准是根据I2C总线中SDA和SCL信号都为高时,即I2C总线处于空闲状态。
[0070] 与所述第一监测模块103和信号发送模块104连接的第二监测模块105用于根据所述抢占信号继续监测所述I2C总线。
[0071] 与所述第二监测模块105连接的比较模块106用于将所述抢占信号与通过I2C总线连接在背板上的I2C器件输出的数据信号进行比较以判断抢占信号和所述输出的数据信号是否一致,若是,则表示所述I2C器件可继续占用I2C总线,不执行切换命令,继续调用所述信号发送模块104发送包含有低电平数据位的抢占信号以继续监测所述I2C总线;若否,则表示所述I2C器件可释放所占用的I2C总线,则调用所述控制模块102以执行切换命令,将主板转换成备板,将备板转换成主板。在本实施例中,一旦监测到I2C总线处于空闲状态,就开始执行硬件信号主备切换。
[0072] 本实施例还提供一种电子设备1,请参阅图3,显示为电子设备于一实施例中的电路结构示意图。如图3所示,所述电子设备1包括:背板11和通过I2C总线与所述背板11连接的板卡12,所述板卡12上插入有I2C器件121,所述I2C器件121包括温度传感器件,风扇转速控制器件,电源管理器,时钟质量监控器等等。如图3中所示,本实施例中所述背板11包括主板111和备板112,但是备板112的数量不限于1个。所述主板也可称为主用主控板,所述备板也可称为备用主控板。
[0073] 所述主板111和所述备板112内部的配置是一样的。如图3所示,所述主板111和备板112都包括:中央处理器201、可编程逻辑器件202、及驱动器203。
[0074] 其中,所述中央处理器(CPU)201用于发送主备板的切换命令。在本实施例中,所述中央处理器201还用于管理I2C器件121。主控板和板卡上的I2C接口都要支持热拔插功能。
[0075] 与所述中央处理器201通过I2C总线连接的所述可编程逻辑器件202用于接收主备板的切换命令,根据所述切换命令监测所述I2C总线是否处于空闲状态;若是,则执行切换命令,将主板转换成备板,将备板转换成主板;若否,则发送抢占信号。所述抢占信号包括多个低电平数据信号。在本实施例中,为了实现主备板切换前后,背板的I2C总线总是能够和主用主控板的中央处理器通信,在所述可编程逻辑器件202设置有I2C接口。
[0076] 与所述中央处理器201和可编程逻辑器件202通过I2C总线连接的驱动器203用于根据所述抢占信号继续监测所述I2C总线是否处于空闲状态;若是,则通过所述可编程逻辑器件执行切换命令,将主板转换成备板,将备板转换成主板,若否,则令所述可编程逻辑器件发送包含有低电平数据位的抢占信号以继续监测所述I2C总线。在本实施例中,所述驱动器203选取型号为PCA9511的芯片。
[0077] 通过I2C总线连接在背板的主板111和备板112上的I2C器件,所述I2C器件用于将所述抢占信号与自身输出的数据信号进行比较以判断两信号是否一致。若是,则表示所述I2C器件121可继续占用I2C总线,可编程逻辑器件202不执行切换命令,可编程逻辑器件202继续发送包含有低电平数据位的抢占信号以继续监测所述I2C总线;若否,则表示所述I2C器件可释放所占用的I2C总线,则可编程逻辑器件202执行切换命令,将主板转换成备板,将备板转换成主板。在本实施例中,可编程逻辑器件202一旦监测到I2C总线处于空闲状态,就开始执行硬件信号主备切换。
[0078] 以下是所述电子设备1在工作状态下为了使背板的I2C总线不出现死锁现象的具体工作过程:
[0079] 可编程逻辑器件202收到中央处理器201的主备板的切换命令后,首先监测I2C总线,如果I2C总线上的SDA和SCL信号线在2个I2C时钟周期内都为常高,则判定I2C总线是空闲状态,这时可以执行主备板的切换,不会导致系统I2C总线出现死锁问题。如果这时检测到I2C总线是非空闲状态,可编程逻辑器件202开始执行I2C总线的抢主操作,可编程逻辑器件202向I2C总线发抢占信号,抢占信号的数据内容包含多个低电平数据位,这时,就有两个数据源头在向数据线发送数据,一个是可编程逻辑器件202发出的数据DATA1,另一个是正在占用I2C总线的I2C器件121发出的DATA2,因为I2C总线的特性,I2C的数据线上的数据信号是DATA1和DATA2相与的结果,根据I2C协议,I2C器件121在每次发出一个数据位的同时都要对自己输出端的信号电平进行抽检,只要抽检的结果与它们预期的电平相符,就会继续占用总线,如果不相符,检测到了冲突,就会退出I2C总线的占用,释放总线。I2C总线冲突检测实际上遵循的是低电平优先的仲裁原则,可编程逻辑器件202利用I2C总线的这一特性,发送带有低电平的数据位到总线上,会强迫其它正在使用I2C总线的设备退出I2C总线的占用,使总线在较短的时间达到空闲状态。一旦可编程逻辑器件202监测到I2C总线处于空闲状态,可编程逻辑器件202开始做硬件信号主备切换,这时切换,新的主控板上的PCA9511的内部控制检测电路检测到两侧的I2C总线是空闲状态,会将两侧的I2C总线接通,整个系统I2C总线正常工作,不会出现死锁的现象。
[0080] 在此工作过程中,PCA9511是热插拔I2C总线驱动器,允许其他板卡上插入工作的背板中而不影响I2C总线的数据和时钟信号。PCA9511内部有一个初始化电路,当完成上电后,ENABLE管脚为由低变高,电路进入初始化状态,完成管脚的预充电功能,预充电的功能将插入的单板对I2C总线的影响降低到最小。在初始化结束后,PCA9511的内部控制检测电路开始工作,当检测到所有的SDA和SCL信号都为高时,即监测到所述I2C总线处于空闲状态,才允许驱动器两端开启连接,即图3中SDAIN和SDAOUT相连通,SCLIN和SCLOUT相连通,以保证在板卡中插入I2C器件时,不影响系统中正在进行的I2C总线操作。
[0081] 主用主控板的中央处理器201将主备板的切换命令下达到可编程逻辑器件202后,CPLD实现硬件信号的切换,将主板切换成备板,可编程逻辑器件202的ACTIVE信号由高变低,关断主板上的PCA9511,断开和其它板卡I2C总线的通信。同时备板切换成主板,成为主板的备板上的ACTIVE信号由低变高,将其上的PCA9511的使能管脚ENABLE拉高,通过背板和其它板卡的I2C总线通信。这样就实现了主备用主控板切换前后,背板的I2C总线总是能够和主用主控板的中央处理器201通信。
[0082] 综上所述,本发明所述的背板I2C总线死锁的消除方法、系统及电子设备具有以下几个优点:
[0083] 第一,从根源上消除主备切换时的背板I2C总线死锁的条件,现有的技术是发生死锁后再采取补救措施。
[0084] 第二,不会导致其它板卡功能和业务的暂时中断,对整个系统没有任何不良影响。所以,本发明有效克服了现有技术中的种种缺点而具高度产业利用价值。
[0085] 上述实施例仅例示性说明本发明的原理及其功效,而非用于限制本发明。任何熟悉此技术的人士皆可在不违背本发明的精神及范畴下,对上述实施例进行修饰或改变。因此,举凡所属技术领域中具有通常知识者在未脱离本发明所揭示的精神与技术思想下所完成的一切等效修饰或改变,仍应由本发明的权利要求所涵盖。