一种消息及时处理方法和嵌入式多任务操作系统的制作方法

文档序号:6561018阅读:145来源:国知局
专利名称:一种消息及时处理方法和嵌入式多任务操作系统的制作方法
技术领域
本发明涉及嵌入式多任务操作系统,尤其涉及在嵌入式多任务操作系统中对任务接收的消息进行及时处理的方法。
背景技术
在很多嵌入式操作系统中,系统都是多任务(或叫多进程)系统,而且采用的调度方式是抢占式的。每个任务之间的切换和执行操作都是基于消息机制。也就是说,当一个任务A接收到一条消息以后,解析该消息内容,并开始执行该消息相应的具体操作;当本条消息执行完成后,任务A等待接收下一条消息,并按照接收的下一条消息的指令内容执行相应的操作,直到任务A接收并处理完全部消息后结束任务。但是在任务A执行消息的具体操作过程中,可能会被优先级更高的任务B或者中断程序所打断,这时,任务A将被停止执行当前消息,任务A被系统挂起;这样,就很难保证任务A在一定的时间内被执行完成。特别是当任务A接收到比较重要的消息时,往往需要及时处理,以保证该消息的完成时间,如果在重要消息执行过程中,任务A被优先级更高的任务或者中断处理程序所打断,则任务A的该条重要消息将被中断执行,只能等待优先级高的其他的任务或者中断处理程序执行完成后才能够继续执行,所以,重要消息很难保证在一定的时间内执行完成。
现有技术中,在一些嵌入式系统中为了保证某一任务的执行时间,直接使用定时器,把该任务的每一条消息要完成的操作直接放在了定时器中断处理程序中执行,定时器启动后就会每隔一段时间产生一次中断,定时器中断处理程序会每隔一段时间被执行一次。采用这种方式,当任务已完成,没有任何消息需要处理时,定时器还将继续周期产生中断,但实际上在这种情况下定时器中断处理程序并没有执行任何具体的操作,这些中断是没有意义的,会造成系统资源的浪费。

发明内容
本发明提供一种消息及时处理方法,用以解决现有技术中存在的不能保证消息或任务的执行时间以及浪费系统资源的问题。
本发明方法包括应用于嵌入式多任务操作系统,包括当任务接收到消息后,判断当前接收的消息是否需要及时处理,如果需要及时处理,则启动定时器;当定时器中断产生后,在定时器中断处理程序中执行与该消息对应的具体工作。
根据本发明的上述方法,在系统中预先设定需要及时处理的消息对应的消息类型;当任务接收到消息后,根据消息类型来判断当前接收的消息是否需要及时处理。
根据本发明的上述方法,预先将不同类型消息需要执行的相关工作封装成对应函数,存储在系统中;如果判断出当前接收的消息需要及时处理,执行下列步骤匹配出当前消息的对应函数,将对应函数的地址信息传递给所述定时器中断处理程序;启动所述定时器,当定时器中断产生后,由定时器中断处理程序根据所述函数地址信息执行所述对应函数,完成与当前消息相关的具体工作。
根据本发明的上述方法,当与当前消息相关的具体工作完成后,所述定时器中断处理程序自动关闭所述定时器。
所述定时器的时间间隔可设置。
根据本发明的上述方法,预先设定需要及时处理的不同类型消息的优先级,并设定与不同优先级对应的定时器的时间间隔;
当判断出当前接收的消息需要及时处理时,根据消息类型确定其对应的优先级,将所述定时器的时间间隔设置为与确定出的优先级对应的时间间隔后启动所述定时器。
根据本发明的上述方法,如果判断出当前接收的消息不需要及时处理,则执行常规的消息处理流程。
根据本发明的上述方法,当前消息处理完毕后,所述任务等待接收下一个消息进行处理,直到任务完成。
本发明另提供一种嵌入式多任务操作系统,包括若干个任务执行单元、定时器以及存储单元,每一个任务执行单元包括消息接收模块,接收发送到该任务的消息,并转发给消息判断模块;消息判断模块,用于判断当前接收的消息是否需要及时处理,如果需要及时处理,则发送消息给中断处理模块;否则,将消息发送到普通消息处理模块;中断处理模块,用于启动定时器,并当定时器中断产生后,启动存储在所述存储单元中的定时器中断处理程序,在定时器中断处理程序中执行与该消息相关的具体工作;普通消息处理模块,执行常规的消息处理流程。
所述存储单元中还存储与不同类型消息对应的函数,每一函数中封装对应消息需要执行的相关工作,所述中断处理模块包括匹配子模块,匹配出当前消息的对应函数;传递子模块,将对应函数的地址信息传递给所述存储单元中存储的定时器中断处理程序;中断子模块,启动定时器,当定时器中断产生后,执行定时器中断处理程序,根据所述函数地址信息执行对应函数,完成消息相关具体工作。
本发明有益效果如下采用本发明,当任务接收到消息后,判断当前接收的消息是否需要及时处理,如果需要及时处理,则启动定时器,当定时器中断产生后,启动定时器执行中断处理程序,在定时器中断处理程序中执行与该消息对应的具体工作,当与消息对应的具体工作完成后,定时器中断处理程序自动关闭定时器。由于定时器中断处理程序一旦被执行,就会执行完毕,中间不会被任何任务或中断处理程序所打断,因此能够保证消息的执行时间。当一个任务包含多个消息时,如果每个消息都采用本发明的方法进行及时处理,则就可以保证整个任务的执行时间。换句话说,当需要保证一个任务的执行时间时,可以预先将该任务所包含的各种消息类型都设定为需要及时处理,当任务接收到消息后,就会启动定时器,产生中断,由定时器的中断处理程序执行消息对应的具体操作。如果任务中仅有一部分消息需要保证其执行时间,则将该种类型消息设定为需要及时处理,由定时器的中断处理程序执行该种类型消息对应的具体操作即可。这样,采用本发明方法,使得任务本身具备了一定的中断程序的特性,不但可以保证整个任务或任务中某一段工作的执行时间,而且任务或相应操行执行完成后,中断程序自动关闭定时器,避免了定时器由于周期性启动产生无用中断造成系统资源浪费的问题。


图1为本发明提供的方法实施例流程图;图2为本发明提供的嵌入式多任务系统结构示意图。
具体实施例方式
本发明提供一种消息及时处理方法,应用于嵌入式多任务操作系统,包括当任务接收到消息后,判断当前接收的消息是否需要及时处理,如果需要及时处理,则启动定时器,当定时器中断产生后,执行定时器中断处理程序,在定时器中断处理程序中执行与该消息对应的具体工作。
下面结合附图,对本发明方法加以详细描述。
参见图1,为本发明方法实施例流程图,包括如下具体步骤
步骤S101、系统启动后,在系统中创建一个任务,系统中存储有预先将任务的不同类型消息相关的工作内容封装成的对应函数;步骤S102、被创建的任务开始启动;步骤S103、被创建的任务启动以后,等待用户发送消息;步骤S104、判断是否接收到发送给任务的消息,如果没有接收到消息,则转至步骤S103,继续等待消息;如果已接收到消息,则执行步骤S105;步骤S105、判断当前接收的消息是否为需要及时处理的消息,如果是,则执行步骤S106;否则,执行步骤S108;判断当前接收的消息是否为需要及时处理的消息时,具体判断方法例如在系统中预先设定需要及时处理的消息对应的消息类型;当任务接收到消息后,根据消息类型来判断当前接收的消息是否需要及时处理;步骤S106、匹配出当前消息的对应函数,将对应函数地址信息传递给定时器中断处理程序;并启动定时器;继续步骤S107;步骤S107、当定时器设定的时间间隔到达时(例如,设定定时器的时间间隔为1毫秒),产生定时器中断;启动定时器中断处理程序,根据传递的函数地址信息执行对应函数,完成该消息对应的具体工作,当与消息对应的具体工作完成后,定时器中断处理程序自动关闭定时器;继续步骤S109;步骤S108、执行常规的消息处理流程,继续步骤S109;所述常规的消息处理流程,即当前任务没有被中断时,直接执行该消息对应的具体操作;在消息执行过程中,可以被优先级更高的任务所中断;步骤S109、判断当前任务是否完成,如果已处理完当前任务的最后一条消息,则判断当前任务完成,结束当前任务;否则,转至步骤S103、继续等待用户发送消息,重复以上流程。
在具体应用中,可以针对不同的任务分别设置需要及时处理的消息类型,当需要保证一个重要任务的执行时间时,可以预先将该任务所包含的各种消息类型都设定为需要及时处理,当任务接收到每一个消息后,按照本发明实施例的上述流程都会启动定时器产生中断,由定时器的中断处理程序执行消息对应的具体操作;如果当前任务中仅有一部分消息需要保证其执行时间,则将该种需要保证执行时间的消息对应的消息类型设定为需要及时处理,当任务接收到该种类型的消息后,由定时器的中断处理程序执行该种类型消息对应的具体操作,从而实现保证任务中某一段工作的执行时间。
根据本发实施例提供的上述方法,定时器的时间间隔可设置。
例如预先设定需要及时处理的不同类型消息的优先级,并设定与不同优先级对应的定时器的时间间隔;当判断出当前接收的消息需要及时处理时,根据消息类型确定其对应的优先级,将定时器的时间间隔设置为与确定出的优先级对应的时间间隔后再启动定时器。
如下表1所示表1

由表1可知,类型A的消息优先级最高,在定时器启动1毫秒后定时器产生中断,执行定时器中断处理程序,在中断处理程序中执行该消息对应的具体操作。同理,对于接收的类型B和类型C的消息,也需要启动定时器产生中断,只不过定时器时间间隔稍长些,分别在2毫秒后和3毫秒后产生中断。
根据本发明提供的上述方法,本发明提供一种具备相应功能的嵌入式多任务操作系统10,其结构示意图如图2所示,包括若干个任务执行单元101、定时器102以及存储单元103,每一个任务执行单元101包括消息接收模块1011,接收发送到该任务的消息,并转发给消息判断模块1012;
消息判断模块1012,用于判断当前接收的消息是否需要及时处理,如果需要及时处理,则发送消息给中断处理模块1013;否则,将消息发送到普通消息处理模块1014;中断处理模块1013,启动定时器,当设置的定时器时间间隔到达时,启动存储单元103中存储的定时器中断处理程序,在定时器中断处理程序中执行与该消息对应的具体工作;普通消息处理模块1014,直接执行该消息对应的具体工作。
存储单元103中还可以存储有与不同类型消息对应的函数,每一函数中封装对应消息的相关工作内容;中断处理模块1013还可以包括匹配子模块10131,匹配出当前消息的对应函数;传递子模块10132,将对应函数地址信息传递给存储单元103中存储的定时器中断处理程序;中断子模块10133,启动定时器,当定时器中断产生后,执行定时器中断处理程序,根据函数地址信息执行对应函数,完成消息对应的具体工作。
综上所述,采用本发明,当任务接收到消息后,判断当前接收的消息是否需要及时处理,如果需要及时处理,则启动定时器,当定时器中断产生后执行定时器中断处理程序,在定时器中断处理程序中执行与该消息对应的具体工作,当与消息对应的具体工作完成后,定时器中断处理程序自动关闭定时器。由于定时器中断处理程序一旦被执行,就会执行完毕,中间不会被打断,因此中断处理程序能够保证消息的执行时间。当一个任务包含多个消息时,如果每个消息都采用本发明的方法进行及时处理,则就可以保证整个任务的执行时间。如果任务中仅有一部分消息需要保证其执行时间,则将该种类型消息设定为需要及时处理,由定时器的中断处理程序执行该种类型消息对应的具体操作即可。这样,采用本发明方法,使得任务本身具备了一定的中断程序的特性,不但可以保证整个任务或任务中某一段工作的执行时间,而且任务或相应操行执行完成后,中断程序自动关闭定时器,避免了定时器由于周期性启动产生无用中断造成系统资源浪费的问题。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。
权利要求
1.一种消息及时处理方法,应用于嵌入式多任务操作系统,其特征在于,包括当任务接收到消息后,判断当前接收的消息是否需要及时处理,如果需要及时处理,则启动定时器;当定时器中断产生后,在定时器中断处理程序中执行与该消息对应的具体工作。
2.如权利要求1所述的方法,其特征在于,在系统中预先设定需要及时处理的消息对应的消息类型;当任务接收到消息后,根据消息类型来判断当前接收的消息是否需要及时处理。
3.如权利要求2所述的方法,其特征在于,预先将不同类型消息需要执行的相关工作封装成对应函数,存储在系统中;如果判断出当前接收的消息需要及时处理,执行下列步骤匹配出当前消息的对应函数,将对应函数的地址信息传递给所述定时器中断处理程序;启动所述定时器,当定时器中断产生后,由定时器中断处理程序根据所述函数地址信息执行所述对应函数,完成与当前消息相关的具体工作。
4.如权利要求3所述的方法,其特征在于,当与当前消息相关的具体工作完成后,所述定时器中断处理程序自动关闭所述定时器。
5.如权利要求3所述的方法,其特征在于,所述定时器的时间间隔可设置。
6.如权利要求5所述的方法,其特征在于,预先设定需要及时处理的不同类型消息的优先级,并设定与不同优先级对应的定时器的时间间隔;当判断出当前接收的消息需要及时处理时,根据消息类型确定其对应的优先级,将所述定时器的时间间隔设置为与确定出的优先级对应的时间间隔后启动所述定时器。
7.如权利要求1所述的方法,其特征在于,如果判断出当前接收的消息不需要及时处理,则执行常规的消息处理流程。
8.如权利要求7所述的方法,其特征在于,当前消息处理完毕后,所述任务等待接收下一个消息进行处理,直到任务完成。
9.一种嵌入式多任务操作系统,包括若干个任务执行单元、定时器以及存储单元,其特征在于,每一个任务执行单元包括消息接收模块,接收发送到该任务的消息,并转发给消息判断模块;消息判断模块,用于判断当前接收的消息是否需要及时处理,如果需要及时处理,则发送消息给中断处理模块;否则,将消息发送到普通消息处理模块;中断处理模块,用于启动定时器,并当定时器中断产生后,启动存储在所述存储单元中的定时器中断处理程序,在定时器中断处理程序中执行与该消息相关的具体工作;普通消息处理模块,执行常规的消息处理流程。
10.如权利要求9所述的嵌入式多任务操作系统,其特征在于,所述存储单元中还存储与不同类型消息对应的函数,每一函数中封装对应消息需要执行的相关工作,所述中断处理模块包括匹配子模块,匹配出当前消息的对应函数;传递子模块,将对应函数的地址信息传递给所述存储单元中存储的定时器中断处理程序;中断子模块,启动定时器,当定时器中断产生后,执行定时器中断处理程序,根据所述函数地址信息执行对应函数,完成消息相关具体工作。
全文摘要
本发明公开了一种消息及时处理方法,应用于嵌入式多任务操作系统,包括当任务接收到消息后,判断当前接收的消息是否需要及时处理,如果需要及时处理,则启动定时器,当定时器中断产生后,启动定时器中断处理程序,在定时器中断处理程序中执行与该消息对应的具体工作。本发明还公开了能实现本发明方法的一种嵌入式多任务操作系统结构。采用本发明不但可以保证整个任务或任务中某一段工作的执行时间,而且任务或相应操行执行完成后,中断程序自动关闭定时器,避免了定时器由于周期性启动产生无用中断造成系统资源浪费的问题。
文档编号G06F9/48GK1952899SQ20061011475
公开日2007年4月25日 申请日期2006年11月22日 优先权日2006年11月22日
发明者唐勉 申请人:北京中星微电子有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1