本发明涉及处理器中断处理技术,尤其涉及一种中断号分配方法及装置。
背景技术:
中断是指在中央处理器(centralprocessingunit,简称cpu)运行期间,被cpu内部或外部事件打断、暂停当前程序的执行而转去执行一段特定的处理内部或外部时间程序的过程。中断号是可以使cpu能够判断是哪个设备提出中断请求的标识。
目前,在vxworks系统下无内部互锁流水级的微处理器(microprocessorwithoutinterlockedpipedstages,简称mips)架构中挂接外部设备互连总线(peripheralcomponentinterconnect,简称pci)设备时,需要将该pci设备资源注册到vxworks系统中用于支持设备驱动的特有的架构vxbus中,同时,由操作人员根据资源注册信息在路由为pci设备分配对应的中断号,使得该pci设备提出中断请求的时候,cpu能够根据中断号判断出是哪个设备提出的中断请求。
但是,在上述的技术方案中,每增加一个新的pci设备之后,都需要修改vxbus中的资源注册信息,同时操作人员需要重新在路由设置pci设备对应的中断号,也就是说,现有的vxworks系统下mips架构中分配中断号的方式操作需要操作人员手动完成,操作比较繁琐,且浪费时间。
技术实现要素:
本发明提供一种中断号分配方法及装置,实现自动分配设备中断号,操作简便,节省时间。
本发明提供一种中断号分配方法,包括:
获取待分配设备标识和与所述待分配设备连接的中断线的标识;
根据所述待分配设备的标识和所述中断线的标识将预设的中断号分配给 所述待分配设备;
其中,所述中断号与所述中断线的标识对应。
本发明还提供一种中断号分配装置,包括:
第一获取模块,用于获取待分配设备标识和与所述待分配设备连接的中断线的标识;
分配模块,用于根据所述第一获取模块获取得到的所述待分配设备的标识和所述中断线的标识将预设的中断号分配给所述待分配设备;
其中,所述中断号与所述中断线的标识对应。
本发明提供一种中断号分配方法及装置,其中,该方法通过获取待分配设备标识和与所述待分配设备连接的中断线的标识,了解硬件设备的连接情况,并根据所述待分配设备的标识和所述中断线的标识将预设的中断号分配给所述待分配设备。本发明通过将预设的中断号分配到与中断线的标识对应的中断线连接的待分配设备中,实现自动分配设备中断号,操作简便,节省时间,避免了现有技术中需要操作人员手动完成,操作比较繁琐,且浪费时间的缺陷。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的中断号分配方法实施例一的流程图;
图2为本发明实施例提供的中断号分配方法实施例二的流程图;
图3为本发明实施例提供的中断号分配方法实施例四的流程图;
图4为本发明实施例提供的中断号分配装置实施例一的结构示意图;
图5为本发明实施例提供的中断号分配装置实施例二的结构示意图;
图6为本发明实施例提供的中断号分配装置实施例四的结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发 明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
图1为本发明实施例提供的中断号分配方法实施例一的流程图;如图1所示,本发明提供的中断号分配方法具体包括以下步骤:
步骤110、获取待分配设备标识和与待分配设备连接的中断线的标识。
其中,待分配设备指的是插在pci槽上,且满足pci标准的设备。
步骤120、根据待分配设备的标识和中断线的标识将预设的中断号分配给待分配设备。
其中,中断号与中断线的标识对应。
需要说明的是,在本实施例中,执行主体为外部设备互连总线pci控制器与处理器计算机设备或者其他的设备。
具体的,在vxworks操作系统中,外部设备互连总线pci有四根中断线a、b、c和d,其中,每根中断线对应不同的中断号。
另外,一个待分配设备只与一个中断线连接,而一根中断线却可以多个待分配设备连接。而在为待分配设备分配预设中断号的时候,可以为与中断线连接的多个待分配设备分配多个中断号,也可以为多个待分配设备分配一个中断号。当多个待分配设备分配一个中断号的时候,在执行中断的过程中vxworks操作系统也可以识别出来是对应的需要中断的外接设备。
本发明实施例提供的中断号分配方法通过获取待分配设备标识和与待分配设备连接的中断线的标识,了解硬件设备的连接情况,并根据待分配设备的标识和中断线的标识将预设的中断号分配给待分配设备。本发明通过将预设的中断号分配到与中断线的标识对应的中断线连接的待分配设备中,实现自动分配设备中断号,操作简便,节省时间,避免了现有技术中需要操作人员手动完成,操作比较繁琐,且浪费时间的缺陷。
进一步地,在上述实施例一的技术方案的基础上,在实施例二中,图2为本发明实施例提供的中断号分配方法实施例二的流程图,如图2所示,若待分配设备与外部设备互连总线pci连接;本实施例提供的方法中步骤120,具体包括以下步骤:
步骤121、根据待分配设备的标识和中断线的标识得到分配给待分配设备的中断号。
步骤122、将待分配设备的中断号写入pci配置空间中的中断请求域。
进一步地,上述实施例一和实施例二的技术方案的基础上,在实施例三中,步骤120之前还包括:
获取分配函数。
在本实施例中,步骤120包括:以调用分配函数的形式,根据待分配设备的标识和中断线的标识将预设的中断号分配给待分配设备。
具体的,在本实施例中,分配函数是由用户自定义设置的,只要能够为待分配设备分配中断号都可以,本发明并不对此做进一步的限定。
举例来说,分配函数可以为:
localucharpciautoconfigintrassign
(
pci_system*psys,/*pci_systemstructurepointer*/
pci_loc*ploc,/*pointertofunctioninquestion*/
ucharpin/*contentsofpciintpinregister*/
)
{if(ploc->bus==0&&pin!=0&&pin<=4)
{
/*pin1-4–>pcia-d*/
line=func;
return(uchar)((line-1));
}
}。
其中,pciautoconfigintrassign指的就是分配函数,ploc是结构体ploc中的一个对象;pin1-4指的中断线a、b、c和d;ploc->bus指的是待分配设备的标识,func是用户预先设置的中断号;line指的是中断线连接的待分配设备的中断号。
另外,在本实施例中,获取分配函数包括:从驱动资源中获取已注册的分配函数。
举例来说,在vxworks系统mips架构下可以通过以下方式实现在驱动资源中添加分配函数的注册信息:
{"intassignfuncset",hcf_res_addr,{(void*)pciautoconfigintrassign}}。
进一步地,在上述实施例三的技术方案的基础上,在实施例四中,图3为本发明实施例提供的中断号分配方法实施例四的流程图,如图3所示,中断号分配方法,还包括:
步骤130、读取中断请求域中的中断号。
步骤140、调用中断挂接函数,将中断号对应的中断处理函数挂接到中断线的标识对应的中断链表中。
其中,中断线与中断链表一一对应,也就是说,每个中断线对应一个中断链表。
具体的,本实施例通过读取中断号,并通过中断挂接函数将中断号对应的中断处理函数挂接到与中断号对应的中断线的标识对应的中断链表中,实现当处理器响应待分配设备的中断请求时,待分配设备能够即刻响应,开始工作。
可选地,在vxworks操作系统中,中断挂接函数从vxworks系统中的库函数获取得到,另外,中断挂接函数还可以为用户自己添加的可以实现中断响应的函数。
具体的,采用中断挂接函数,将中断号对应的中断处理函数挂接到中断线的标识对应的中断链表中;可以如下代码实现:
pciintconnect(vector,routine,parameter),其中vector指的是中断号,routine指的是中断处理函数,parameter指的是参数。
值得说明的是,针对本发明实施例提供的中断号分配的方法,在有外接设备接入时,若是标准类中断,通过本发明实施例二提供的将中断号写入pci配置空间中的中断请求irq域中即可实现中断号的分配,若非标准类中断,则需要在将中断号写入pci配置空间中的中断请求irq域中即可实现中断号的分配之后调用中断挂接函数,将所述中断号对应的中断处理函数挂接到所述中断线的标识对应的中断链表中以实现中断号分配后实现中断处理的有效执行。不管是标准类中断亦或是非标准类中断,都实现了中断号的自动分配, 免去了现有技术中技术人员人工干预的情况发生。
在本发明实施例五中,以包含pci控制器和cpu的设备为例进行详细的说明,该设备为mips架构,基于vxworks系统实现中断号的自动分配。具体的,本发明实施例五提供了一种中断号分配方法,包括:
pci控制器扫描获取待分配设备标识和与待分配设备连接的中断线的标识,了解硬件的设备连接情况,然后,从驱动资源中获取已注册的分配函数,以调用分配函数的形式,根据待分配设备的标识和中断线的标识得到分配给待分配设备的中断号;将待分配设备的中断号写入pci配置空间中的中断请求域中,实现为待分配设备分配中断号;
当中断类型为非标准类型时,还需要cpu读取中断请求域中的中断号;并且调用中断挂接函数,将中断号对应的中断处理函数挂接到中断线的标识对应的中断链表中,使得处理器响应待分配设备的中断请求时,待分配设备能够即刻响应,开始工作。
本发明还提供一种中断号分配装置,图4为本发明实施例提供的中断号分配装置实施例一的结构示意图,如图4所示,本发明实施例提供的装置包括:第一获取模块210和分配模块220。
具体的,第一获取模块210,用于获取待分配设备标识和与待分配设备连接的中断线的标识;分配模块220,用于根据第一获取模块210获取得到的待分配设备的标识和中断线的标识将预设的中断号分配给待分配设备。
其中,中断号与中断线的标识对应。
其中,该装置是用于实现图1所示的方法,其实现原理和实现效果类似,在此不再赘述。
进一步地,在上述实施例一的技术方案的技术上,在实施例二中,图5为本发明实施例提供的中断号分配装置实施例二的结构示意图,如图5所示,若待分配设备与外部设备互连总线pci连接;则分配模块220包括:分配模块220包括:获取单元221和写入单元222。
具体的,获取单元221,根据待分配设备的标识和中断线的标识得到分配给待分配设备的中断号;写入单元222,将获取单元221获取到的待分配设备的中断号写入pci配置空间中的中断请求域。
其中,在本实施例中实现图2的方法,其实现原理和实现效果类似,在 此不再赘述。
进一步地,在上述实施例一和实施例二的技术方案的基础上,在本实施例三中,该装置还包括:第二获取模块,用于获取分配函数;分配模块220具体用于以调用第二获取模块获得的分配函数的形式,根据待分配设备的标识和中断线的标识将预设的中断号分配给待分配设备。
具体的,第二获取模块具体用于从驱动资源中获取已注册的分配函数。
进一步地,在上述实施例三的技术方案的基础上,在实施例四中,图6本发明实施例提供的中断线分配装置实施例四的结构示意图,如图6所示,中断号分配装置还包括:读取模块230和挂接模块240。
具体的,读取模块230,用于读取中断请求域中的中断号;挂接模块240,用于调用中断挂接函数,将读取模块230读取到的中断号对应的中断处理函数挂接到中断线的标识对应的中断链表中。
其中,中断线与中断链表一一对应。
可选地,在vxworks操作系统中,中断挂接函数从vxworks系统中的库函数获取得到,另外,中断挂接函数还可以为用户自己添加的可以实现中断响应的函数。
其中,本实施例提供的装置用于实现图3所示的方法,实现原理与效果类似,在此不再赘述。
最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。