热插拔的实现方法和系统的制作方法

文档序号:8402745阅读:506来源:国知局
热插拔的实现方法和系统的制作方法
【技术领域】
[0001]本发明涉及计算机技术领域,特别是涉及一种热插拔的实现方法和系统。
【背景技术】
[0002]热插拔(hot-plugging或Hot Swap)即带电插拔,热插拔功能是允许用户在不关闭操作系统,不切断电源的情况下取出硬盘、电源或板卡等部件,进行维护或更换,从而提高了系统对故障的及时恢复能力、扩展性和灵活性等。PICMG (PCI Industrial ComputerManufacturers Group, PCI工业计算机制造商协会)协会也将热插拔功能加入了 CPCI(Compact Peripheral Component Interconnect,紧凑型 PCI)规范,成为高端 CPCI 产品必备的功能。
[0003]热插拔的实现方法通常是:通过在卡的插入/拔出机构中添加一个微开关装置,这个开关藏在手柄中,当CPCI卡被插入或拔出时,在卡开始或停止工作之前,微开关首先改变状态,产生ENUM#信号,即系统枚举信号,该信号通过某种途径通知OS (OperatingSystem,操作系统)将要插入或拔出一个卡,OS再执行总线枚举、安装驱动程序或卸载驱动程序等动作。
[0004]传统技术中,ENUM#信号通知OS的方法,通常采用一个专用的CPLD (Complexprogrammable logic devices,复杂可编程逻辑器件)芯片,将输入的ENUM#信号转换成Serial IRQ (Serial Interrupt Request,串行中断请求),通过 Serial IRQ 来通知 OS 执行相应的动作。
[0005]但是,传统的X86架构是使用中断服务程序处理各种中断事件,随着X86架构的不断发展,基于X86架构的系统功能越来越复杂,接口越来越丰富,要处理的中断也越来越多。众多的PCI (Peripheral Component Interconnect,总线接口标准)设备、串口、打印口、键盘和鼠标等都使用Serial IRQ,资源有限。并且传统技术中由于要采用专用的CPLD芯片,增加了成本,同时CPLD需要编程,以将ENUM#信号模拟转换成serial IRQ的协议发出,因此增加了设计难度。

【发明内容】

[0006]基于此,有必要针对上述问题,提供一种能节省资源、减少成本且降低设计难度的热插拔的实现方法和系统。
[0007]一种热插拔的实现方法,所述方法包括:
[0008]检测预设GP1是否为低电平,所述预设GP1被配置为输入功能且配置为低电平有效,用于接收热插拔产生的系统枚举信号;
[0009]当所述预设GP1为低电平时,触发系统控制中断;
[0010]读取设备状态,根据所述设备状态判断有设备接入还是有设备被拔掉;
[0011]执行与判断结果对应的动作。
[0012]在其中一个实施例中,所述读取设备状态,根据所述设备状态判断有设备接入还是有设备被拔掉的步骤为:
[0013]检测当前状态寄存器的值,如果为低电平,则判定为有设备接入,如果为高电平,则判定为有设备被拔掉;或者
[0014]检测当前状态寄存器的值,如果为高电平,则判定为有设备接入,如果为低电平,则判定为有设备被拔掉。
[0015]在其中一个实施例中,所述执行与判断结果对应的动作的步骤,包括:
[0016]当判定为有设备接入时,通知操作系统有设备接入,并基于当前操作系统,对接入的设备进行初始化;
[0017]当判定为有设备被拔掉时,通知操作系统有设备被拔掉,并从操作系统的逻辑设备列表中移除所述设备。
[0018]在其中一个实施例中,在所述执行与判断结果对应的动作的步骤之后,还包括:
[0019]将所述GP1设置为高电平。
[0020]在其中一个实施例中,所述方法还包括:
[0021]配置所述GP1为输入功能;
[0022]配置所述GP1为低电平有效;
[0023]配置所述GP1可触发系统控制中断。
[0024]一种热插拔的实现系统,所述系统包括:
[0025]检测模块,用于检测预设GP1是否为低电平,所述预设GP1被配置为输入功能且配置为低电平有效,用于接收热插拔产生的系统枚举信号;
[0026]所述检测模块还用于当所述预设GP1为低电平时,触发系统控制中断;
[0027]热插拔处理模块,用于读取设备状态,根据所述设备状态判断有设备接入还是有设备被拔掉;
[0028]所述热插拔处理模块还用于执行与判断结果对应的动作。
[0029]在其中一个实施例中,所述热插拔处理模块用于检测当前状态寄存器的值,如果为低电平,则判定为有设备接入,如果为高电平,则判定为有设备被拔掉;或者
[0030]所述热插拔处理模块用于检测当前状态寄存器的值,如果为高电平,则判定为有设备接入,如果为低电平,则判定为有设备被拔掉。
[0031]在其中一个实施例中,所述热插拔处理模块还用于当判定为有设备接入时,通知操作系统有设备接入,并基于当前操作系统,对接入的设备进行初始化;当判定为有设备被拔掉时,通知操作系统有设备被拔掉,并从操作系统的逻辑设备列表中移除所述设备。
[0032]在其中一个实施例中,所述热插拔处理模块还用于在执行与判断结果对应的动作之后,将所述GP1设置为高电平。
[0033]在其中一个实施例中,所述系统还包括:
[0034]配置模块,用于配置所述GP1为输入功能、配置所述GP1为低电平有效和配置所述GP1可触发系统控制中断。
[0035]上述热插拔的实现方法和系统中,由于GP1被配置为输入功能且低电平有效,用于接收热插拔产生的系统枚举信号,当检测到预设GP1为低电平时,则说明产生了热插拔,触发系统控制中断(System Control Interrupt, SCI),从而调用中断处理程序,该中断处理程序能够读取设备状态,根据设备状态判断有设备接入还是有设备被拔掉,并执行与判断结果对应的动作。由于SCI是操作系统可见的、可以共享的且由低电平触发的一种中断,通过触发SCI使得对应的中断处理程序得以执行,从而实现热插拔。相对于传统的将输入的ENUM#信号转换成Serial IRQ的方式,该方法和系统能够节省资源,且不依赖于专用的CPLD芯片,因此能够节省成本,同时降低了设计难度。
【附图说明】
[0036]图1为一个实施例中热插拔的实现方法的应用环境图;
[0037]图2为一个实施例中热插拔的实现方法的流程示意图;
[0038]图3为另一个实施例中热插拔的实现方法的流程示意图;
[0039]图4为一个实施例中热插拔的实现系统的结构示意图;
[0040]图5为另一个实施例中热插拔的实现系统的结构示意图。
【具体实施方式】
[0041]为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
[0042]请参见图1,本发明实施例所提供的热插拔的实现方法可应用于如图1所示的环境中。在图1中,CPCI采用背板和垂直连接的功能板构成,其中:功能板为根据系统功能需要,在处理器板支持的总线上开发的能够实现指定功能的CPCI功能板卡,如实现串口功能的串口卡。背板是实现功能板与处理器板的数据通讯和控制的CPCI背板。处理器板即为(PU板卡,其不依赖功能板,可单独运行,处理器板有可运行的操作系统,通过总线与功能板通讯。
[0043]功能板在插入或拔出时,比如当功能板需要进行在线维护时,通常是打开手柄准备拔出的过程中,触动手柄中的开关,开关状态改变,从而产生系统枚举信号(ENUM#信号),该信号经过背板通知处理器板有拔出或插入动作。本发明方案中,通过触发SCI实现热插拔功能。由于SCI是操作系统可见的、可以共享的且由低电平触发的一种中断,通过触发SCI使得对应的中断处理程序得以执行,从而实现热插拔。相对于传统的将输入的ENUMi^f号转换成Serial IRQ的方式,该方法和系统能够节省资源,且不依赖于专用的CPLD芯片,因此能够节省成本,同时降低了设计难度。
[0044]如图2所示,在一个实施例中,提供了一种热插拔的实现方法,包括:
[0045]步骤202,检测预设GP1是否为低电平,该预设GP1被配置为输入功能且配置为低电平有效,用于接收热插拔产生的系统枚举信号。
[0046]本实施例中,可将主板/底板插槽上的一个针脚和GP10(General Purpose Input/Output)相连接,该GP1硬件默认上拉为高电平,待插入的设备对应针脚硬件连接触动手柄中的开关。
[0047]进一步的,预先可对GP1进行配置,包括:配置该GP1为输入功能;配置该GP1为低电平有效;配置该GP1可触发SCI。
[0048]具体的,将GP1配置为输入功能,使得GP1只接收输入信号,由于GP1与插槽上的一个针脚相连接,因此GP1能接收热插拔产生的ENUM#信号。由于SCI是操作系统可见的、可以共享的且由低电平触发的一种中断,配置GP1为低电平有效,且可触发SCI,使得当该GP1为低电平时,就可触发SCI。
[0049]另外,可使用单功能的GP1信号,也可使用多功能复用信号作为GP1信号,当使用多功能复用信号时,需将该信号配置为GP1信号。
[0050]步骤204,当预设GP1为低电平时,触发SCI。
[0051]步骤206,读取设备状态,根据设备状态判断有设备接入还是有设备被拔掉。
[0052]触发SCI则即可调用中断处理程序,该中断处理程序用于执行步骤206及后续步骤。
[0053]可以理解的是,接入或拔出设备,设备对应的状态寄存器的值是由高变为低,还是由低变为高,可以事先由用户自定义。
[0054]在一个实施例中,预先定义了有设备接入,则对应的状态寄存器的值由高变为低,有设备被拔掉,则对应的状态寄存器的值由低变为高。步骤206为:检测当前状态寄存器的值,如果为低电平,则判定为有设备接入,如果为高电平,则判定为有设备被拔掉。
[0055]在另一个实施例中,预先定义了有设备接入,则对应的状态寄存器的值由低变为高,有设备被拔掉,则对应的状态寄存器的值由高
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1