基于VxWorks系统的串口中断处理方法和装置与流程

文档序号:13136688阅读:998来源:国知局
基于VxWorks系统的串口中断处理方法和装置与流程

本发明涉及计算机技术领域,尤其涉及一种基于vxworks系统的串口中断处理方法和装置。



背景技术:

通用异步收发传输器(universalasynchronousreceiver/transmitter,简称uart),是一种异步收发传输器,是电脑硬件的一部分,其用在串行通信与并行通信间作为传输转换的工具,作为并行输入转为串行输出的芯片,通常集成于其他通讯接口上,当uart用于传输数据时称为串口。

美国风河公司设计开发的vxworks操作系统是一种嵌入式操作系统,其通常通过扩展多个串口来提高系统的通信能力,并且使扩展的多个串口共享一个中断号。具体的,当cpu通过串口接收到串口设备发出的中断请求后,获取该串口对应的中断号,并遍历共享该中断号的所有串口,进而获取中断请求对应的中断类型,从而根据该中断类型对所有串口对应的所有串口设备执行相应的中断处理操作。因此,扩展的多个串口共享一个中断号的方案,不仅提高了系统的通信能力,而且避免了资源浪费。

然而,对于多个串口共享一个中断号的vxworks操作系统,当cpu通过串口接收到某一串口设备发出的中断请求后,其不仅对该串口设备执行中断处理过程,还会对共享同一中断号、无中断请求的其他串口设备执行中断处理操作,不仅使无中断请求的其他串口设备的运行过程出现错误,而且增加了操作系统的负担,降低了操作系统的稳定性。



技术实现要素:

本发明提供一种基于vxworks系统的串口中断处理方法和装置,以解决现有串口驱动中断处理方法会对共享同一中断号、无中断请求的其他串口设备执行中断处理操作,致使无中断请求的其他串口设备的运行过程出现错误,且使得操作系统的负担增加、操作系统稳定性降低的问题。

本发明提供的一种基于vxworks系统的串口中断处理方法,包括:

通过串口获取串口设备发出的中断请求和所述串口对应的中断号;

根据所述中断号,查找发出所述中断请求的中断串口设备和所述中断请求对应的中断类型;

根据所述中断类型,对所述中断串口设备执行相应的操作。

本发明还提供一种基于vxworks系统的串口中断处理装置,包括:

获取模块,用于通过串口获取串口设备发出的中断请求和所述串口对应的中断号;

查找模块,用于根据所述获取模块获取到的所述中断号,查找发出所述中断请求的中断串口设备和所述中断请求对应的中断类型;

执行模块,用于根据所述查找模块查询到的所述中断类型,对所述查找模块确定的所述中断串口设备执行相应的操作。

本发明提供的基于vxworks系统的串口中断处理方法和装置,首先通过串口获取串口设备发出的中断请求和该串口对应的中断号,根据该中断号,查找发出上述中断请求的中断串口设备和该中断请求对应的中断类型,并根据该中断类型,对中断串口设备执行相应的操作。本发明的技术方案,通过查找发出中断请求的中断串口设备和中断请求对应的中断类型,并只对发出中断请求的中断串口设备执行相应的操作,提高了操作系统的稳定性,解决了现有串口驱动中断处理方法会对共享同一中断号、无中断请求的其他串口设备执行中断处理操作,致使无中断请求的其他串口设备的运行过程出现错误,且使得操作系统的负担增加、操作系统稳定性降低的问题。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。

图1为本发明提供的基于vxworks系统的串口中断处理方法实施例一的流程示意图;

图2为本发明提供的基于vxworks系统的串口中断处理方法实施例二的流程示意图;

图3为本发明提供的基于vxworks系统的串口中断处理方法实施例三的流程示意图;

图4为本发明提供的基于vxworks系统的串口中断处理装置实施例一的结构示意图;

图5为本发明提供的基于vxworks系统的串口中断处理装置实施例二的结构示意图;

图6为本发明提供的基于vxworks系统的串口中断处理装置实施例三的结构示意图。

具体实施方式

为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

操作系统(operatingsystem,简称os)是管理和控制计算机硬件与软件资源的计算机程序,是直接运行在“裸机”上的最基本的系统软件,任何其他软件都必须在操作系统的支持下才能运行。串口是采用串行通信方式的扩展接口,其作为嵌入式实时操作系统的重要数据通信接口,按照位(bit)的形式发送和接收数据,提高了操作系统的应用范围以及获取信息的能力。

目前,具备多串口的操作系统应用的越来越广泛,其通过扩展的多个串口,不仅大大提高了系统的通信能力,而且使该多个串口共享同一中断号有效的避免了资源浪费。由于同一操作系统的多个串口共享同一中断号,所以,该多个串口对应的多个串口设备需要产生中断时均通过同一中断号向中央处理器(cpu)上报中断处理请求,而cpu并不知道到底是哪一个串口设备发出的中断处理请求,因此,cpu将遍历所有的串口设备,分别对串口设备执行中断处理过程,进而实现中断处理响应。

然而,当发出中断处理请求的串口设备与cpu执行中断处理程序所处理的串口设备不一致时,将会产生一些问题,不仅使无中断请求的其他串口设备的运行过程出现错误,而且增加了操作系统的负担,降低了操作系统的稳定性。例如,在系统初始化过程中,中断处理函数对未完成初始化的串口执行操作时表现为系统访问空指针,而对于在中断处理过程中发生的异常vxworks系统作出重启的操作。因此,这会造成系统不稳定。

针对上述缺陷,本发明提出了一种基于vxworks系统的串口中断处理方法和装置,用于解决现有串口驱动中断处理方法会对共享同一中断号、无中断请求的其他串口设备执行中断处理操作,致使无中断请求的其他串口设备的运行过程出现错误,且使得操作系统的负担增加、操作系统稳定性降低的问题。

图1为本发明提供的基于vxworks系统的串口中断处理方法实施例一的流程示意图。如图1所示,本发明实施例提供的基于vxworks系统的串口中断处理方法,包括:

步骤101:通过串口获取串口设备发出的中断请求和该串口对应的中断号。

中断是指在计算机执行程序的过程中,当出现异常情况或者特殊请求时,计算机停止现行程序的运行,转而对这些异常或特殊请求进行处理,处理结束后再返回到现行程序的中断处,继续执行原程序。例如,vxworks系统等嵌入式操作系统,当某个串口设备需要收发数据时,会产生中断请求信号,中断请求信号通过对应的串口传送到操作系统,进而使vxworks系统获取到串口设备的中断请求以及该串口对应的中断号。

步骤102:根据上述中断号,查找发出中断请求的中断串口设备和中断请求对应的中断类型。

具体的,vxworks系统获取串口设备发出的中断请求的同时,会获取到串口对应的中断号,进而使操作系统根据中断号去执行相应的中断处理程序,从该中断号对应的所有串口设备中查找到发出该中断请求的中断串口设备以及该中断请求对应的中断类型。

举例来说,当多个串口设备共享一个中断号时,若某一串口设备发出中断请求,那么操作系统会根据该中断请求信号获取到其对应的中断号,该中断号对应于所有共享该中断号的串口设备,操作系统并不知道到底是哪个或哪些串口设备发出的,因此,需要对所有共享该中断号的串口设备进行判断,从而才能够确定出发出中断请求的中断串口设备,以及该中断请求对应的中断类型。

步骤103:根据上述中断类型,对上述中断串口设备执行相应的操作。

由于串口设备会根据不同的中断事件产生不同的中断请求,例如,当串口设备接收到数据时会产生接收类型的中断;当设备发送完毕时会产生发送完成类型的中断等,所以,操作系统将根据上述查找到的中断串口设备以及每一中断串口设备对应的中断类型,分别对中断串口设备执行相应的操作。

在本实施例中,中断处理操作步骤使得vxworks系统只对发出中断请求的中断串口设备进行操作,避免了vxworks系统对其他不需要中断处理操作的串口设备的冗余操作,提高了vxworks系统的稳定性和执行效率。

值得说明的是,假设vxworks系统在初始化的过程中,本发明实施例还能解决由于中断处理函数扫描到某个未来得及初始化的串口时,出现vxworks系统访问空指针异常的现象,进而对于在中断处理过程中发生的异常,致使vxworks系统作出重启操作的问题,造成操作系统不稳定。

本发明实施例提供的基于vxworks系统的串口中断处理方法,通过串口获取串口设备发出的中断请求和该串口对应的中断号,根据该中断号,查找发出上述中断请求的中断串口设备和该中断请求对应的中断类型,并根据该中断类型,对中断串口设备执行相应的操作。本发明的技术方案,只对发出中断请求的中断串口设备执行相应的操作,提高了操作系统的稳定性,解决了现有串口驱动中断处理方法会对共享同一中断号、无中断请求的其他串口设备执行中断处理操作,致使无中断请求的其他串口设备的运行过程出现错误,且使得操作系统的负担增加、操作系统稳定性降低的问题。

图2为本发明提供的基于vxworks系统的串口中断处理方法实施例二的流程示意图。本发明实施例是在上述实施例的基础上对基于vxworks系统的串口中断处理方法的进一步说明。如图2所示,在本发明实施例提供的基于vxworks系统的串口中断处理方法中,上述步骤102,也即,根据上述中断号,查找发出中断请求的中断串口设备和中断请求对应的中断类型,具体包括:

步骤201:根据串口对应的中断号,确定该中断号对应的中断向量。

中断向量是指中断服务程序入口地址,中断向量表用来存储中断号对应的中断向量,因此,操作系统根据中断号可查找到对应的中断向量。例如,在中断响应过程中,vxworks系统首先获取到串口对应的中断号,其次根据该中断号计算出其对应的中断向量在中断向量表中的位置,最后查找获取到该中断号对应的中断向量。

步骤202:根据该中断号对应的中断向量,遍历共享该中断号的所有串口设备,分别判断每一串口设备是否有发出中断请求,锁定发出该中断请求的所有中断串口设备。

具体的,由于vxworks系统中可能存在多个串口共享同一中断号的现象,因此,在某一时刻,如果该中断号对应的串口中有任一串口产生中断,那么vxworks系统将根据该中断号对应的中断向量,遍历共享该中断号的所有串口设备,分别依次对每一串口设备是否发出中断请求进行判断,进而锁定出真正有发出该中断请求的所有中断串口设备。

举例来说,vxworks系统在扫描该中断号对应的所有串口设备时,首先判断中断号对应的一个串口设备是否产生了中断,也即,判断上述中断请求是否由该串口设备发出。如果该串口设备没有发出中断请求,则直接结束对该串口设备的本次操作,继续扫描其余的串口设备,直到扫描完该中断号对应的所有串口设备为止;如果确定出该中断请求是由该串口设备发出的,则锁定该串口设备为中断串口设备,进而执行相应的中断处理操作。

步骤203:分别查询上述所有中断串口设备对应的中断状态寄存器,获取每一中断串口设备中该中断请求对应的中断类型。

串口设备会根据不同的中断事件产生不同的中断请求,例如,当串口设备接收到数据时会产生接收类型的中断;当设备发送完毕时会产生发送完成类型的中断等。

中断状态寄存器中存储有不同中断类型对应的标识,中断状态寄存器的第1至3位为中断类型表示位,因此,通过查找中断串口设备的中断状态寄存器其第1至3位中的值便可确定出中断请求对应的中断类型,进而使vxworks系统根据不同的中断类型作出相应的操作。例如,如果中断类型是接收中断,vxworks系统则将接收中断串口设备发送的数据,如果中断类型是发送完成中断,vxworks系统则继续发送向中断串口设备发送下一个数据或结束发送过程。

本发明实施例提供的基于vxworks系统的串口中断处理方法,通过根据串口对应的中断号,确定出中断号对应的中断向量,根据中断号对应的中断向量,遍历共享该中断号的所有串口设备,分别判断每一串口设备是否有发出中断请求,锁定发出中断请求的所有中断串口设备,进而分别查询所有中断串口设备对应的中断状态寄存器,获取每一中断串口设备中上述中断请求对应的中断类型,本发明的技术方案,根据对中断号对应的所有串口设备进行中断请求判断,使得操作系统只对发出中断请求的中断串口设备执行中断处理过程,而且根据锁定的中断串口设备的中断状态寄存器获取到每一中断串口设备的中断类型,查找效率高,中断串口设备和中断类型的定位准确,降低了操作系统的负担,增强了操作系统的稳定性。

图3为本发明提供的基于vxworks系统的串口中断处理方法实施例三的流程示意图。本发明实施例是在上述实施例的基础上对基于vxworks系统的串口中断处理方法的进一步说明。如图3所示,在本发明实施例提供的基于vxworks系统的串口中断处理方法中,上述步骤202,也即,根据该中断号对应的中断向量,遍历共享该中断号的所有串口设备,分别判断每一串口设备是否有发出中断请求,锁定发出该中断请求的所有中断串口设备,具体包括:

步骤301:根据中断号对应的中断向量,依次扫描共享该中断号的所有串口设备,分别查询每一串口设备对应的中断状态寄存器。

中断向量是中断服务程序的入口地址,所以,根据中断号对应的中断向量,对共享该中断号的所有串口设备进行扫描。具体的,对于每一串口设备,查询该串口设备对应的中断状态寄存器,根据中断状态寄存器中相应位的值,确定出该串口设备是否有发出中断请求。

步骤302:在该中断状态寄存器的中断表示位对应的状态值为0时,确定该串口设备为发出中断请求的中断串口设备。

具体的,中断状态寄存器的第0位为中断表示位,而且,0表示该串口设备有中断请求发出,1表示该串口设备未发出中断请求,所以,当该中断状态寄存器的中断表示位对应的状态值为0时,则可确定该串口设备为发出中断请求的中断串口设备。

本发明实施例提供的基于vxworks系统的串口中断处理方法,根据中断号对应的中断向量,依次扫描共享该中断号的所有串口设备,并分别查询每一串口设备对应的中断状态寄存器,在中断状态寄存器的中断表示位对应的状态值为0时,确定串口设备为发出中断请求的中断串口设备,可准确的确定出发出中断请求的中断串口设备,为降低操作系统负担,增强系统稳定性奠定了基础。

进一步的,在本发明上述实施例提供的基于vxworks系统的串口中断处理方法中,若上述中断类型包括:发送中断和接收中断,那么上述步骤103,也即,根据中断类型,对中断串口设备执行相应的操作,具体包括:

在中断类型为发送中断时,对上述中断串口设备执行发送任务,在中断类型为接收中断时,对中断串口设备执行接收任务。

具体的,当操作系统判断得知上述中断处理请求对应的中断类型为发送中断,那么其将会通过调用中断服务程序,对该中断串口设备执行发送任务,继续发送数据,实现数据的发送;而当操作系统判断得知该中断类型为接收中断,那么其将会通过调用中断服务程序,对该中断串口设备执行接收任务,进而实现数据的接收。

可选的,在本实施例中,若中断类型包括发送中断和接收中断,那么可以首先判断上述中断处理请求对应的中断类型是否为发送中断,其次可对判断结果进行相应的处理。

实际上,在具体的实施例中,发送中断和接收中断的判断顺序可以颠倒,具体的,也可以先判断中断处理请求对应的中断类型是否为接收中断,然后在对判断结果进行处理,本发明并不对判断的顺序进行限定。

值得说明的是,本发明实施例是在中断类型只包括发送中断和接收中断的基础上举例说明的。实际上,中断类型还可以包括其他中断类型,因此,当系统判断出该中断类型既不是发送中断,也不是接收中断时,还可以判断其是否为其他中断类型,对于具体的中断类型表示形式本发明并不对其进行限定。

图4为本发明提供的基于vxworks系统的串口中断处理装置实施例一的结构示意图。如图4所示,本发明实施例提供的基于vxworks系统的串口中断处理装置,包括:

获取模块401,用于通过串口获取串口设备发出的中断请求和串口对应的中断号。

查找模块402,用于根据获取模块401获取到的中断号,查找发出中断请求的中断串口设备和中断请求对应的中断类型。

执行模块403,用于根据查找模块402查询到的中断类型,对查找模块402确定的中断串口设备执行相应的操作。

本发明实施例提供的基于vxworks系统的串口中断处理装置,可用于执行如图1所示方法实施例的技术方案,其实现原理类似,此处不再赘述。

本发明实施例提供的基于vxworks系统的串口中断处理装置,获取模块通过串口获取串口设备发出的中断请求和该串口对应的中断号,通过查找模块根据上述中断号,查找发出中断请求的中断串口设备和该中断请求对应的中断类型,进而通过执行模块根据上述中断类型,对上述中断串口设备执行相应的操作,其只对发出中断请求的中断串口设备执行相应的操作,降低了操作系统的负担,提高了操作系统的稳定性,解决了现有串口驱动中断处理方法会对共享同一中断号、无中断请求的其他串口设备执行中断处理操作,致使无中断请求的其他串口设备的运行过程出现错误,且使得操作系统的负担增加、操作系统稳定性降低的问题。

图5为本发明提供的基于vxworks系统的串口中断处理装置实施例二的结构示意图。本发明实施例是在上述实施例的基础上对基于vxworks系统的串口中断处理装置的进一步说明。如图5所示,在本发明实施例提供的基于vxworks系统的串口中断处理装置中,上述查找模块402,具体包括:确定子模块501、锁定子模块502和获取子模块503。

该确定子模块501,用于根据获取模块401获取到的串口对应的中断号,确定中断号对应的中断向量。

该锁定子模块502,用于根据确定子模块501确定的中断号对应的中断向量,遍历共享该中断号的所有串口设备,分别判断每一串口设备是否有发出中断请求,锁定发出该中断请求的所有中断串口设备。

该获取子模块503,用于分别查询锁定子模块502锁定的所有中断串口设备对应的中断状态寄存器,获取每一中断串口设备中该中断请求对应的中断类型。

本发明实施例提供的基于vxworks系统的串口中断处理装置,可用于执行如图2所示方法实施例的技术方案,其实现原理和技术效果类似,此处不再赘述。

图6为本发明提供的基于vxworks系统的串口中断处理装置实施例三的结构示意图。本发明实施例是在上述实施例的基础上对基于vxworks系统的串口中断处理装置的进一步说明。如图6所示,在本发明实施例提供的基于vxworks系统的串口中断处理装置中,上述锁定子模块502,具体包括:扫描单元601和确定单元602。

该扫描单元601,用于根据中断号对应的中断向量,依次扫描共享该中断号的所有串口设备,分别查询每一串口设备对应的中断状态寄存器。

该确定单元602,用于在中断状态寄存器的中断表示位对应的状态值为0时,确定该串口设备为发出中断请求的中断串口设备。

本发明实施例提供的基于vxworks系统的串口中断处理装置,可用于执行如图3所示方法实施例的技术方案,其实现原理和技术效果类似,此处不再赘述。

可选的,在上述任一实施例提供的基于vxworks系统的串口中断处理装置中,若上述中断类型包括:发送中断和接收中断,那么上述执行模块403,具体用于在中断类型为发送中断时,对中断串口设备执行发送任务,或者在中断类型为接收中断时,对中断串口设备执行接收任务。

本发明实施例提供的基于vxworks系统的串口中断处理方法和装置,通过串口获取串口设备发出的中断请求和该串口对应的中断号,根据该中断号,查找发出上述中断请求的中断串口设备和该中断请求对应的中断类型,并根据该中断类型,对中断串口设备执行相应的操作,其只对发出中断请求的中断串口设备执行相应的操作,避免了无中断请求的串口设备的运行过程出现错误的现象,降低了操作系统的负担,提高了操作系统的稳定性。

本领域普通技术人员可以理解:实现上述各方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成。前述的程序可以存储于一计算机可读取存储介质中。该程序在执行时,执行包括上述各方法实施例的步骤;而前述的存储介质包括:rom、ram、磁碟或者光盘等各种可以存储程序代码的介质。

最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1