一种基于VxWorks实时操作系统的封装方法技术方案

技术编号:30679862 阅读:12 留言:0更新日期:2021-11-06 09:09
一种基于VxWorks实时操作系统的封装方法,首先设计消息队列管理结构体;然后定义全局数组管理消息,数组元素为消息队列管理结构体;在消息队列发送函数中,通过为消息队列管理结构体申请指针变量,实现为所要传递的消息内容申请空间;并对消息队列管理结构体指针变量进行赋值;将消息队列管理结构体通过操作系统消息队列发送函数发送出去,并释放消息队列管理结构体指针变量的空间;将消息的发送线程和接收线程进行关联,并在接收线程中获取收到的消息队列管理结构体,解析并处理消息队列管理结构体的内容,完成封装。本发明专利技术将实时操作系统的任务和消息队列进行进一步的封装,后续直接调用封装好的框架进行开发,提高了效率,保证了操作系统的安全。保证了操作系统的安全。保证了操作系统的安全。

【技术实现步骤摘要】
一种基于VxWorks实时操作系统的封装方法


[0001]本专利技术属于计算机操作系统领域,涉及一种基于VxWorks实时操作系统的封装方法。

技术介绍

[0002]实时操作系统属于基于任务优先级的操作系统,任务与消息队列是实时操作系统的两大核心特性,任务间的数据传输通常使用操作系统消息队列进行完成,二者使用通常紧密结合在一起的。
[0003]实时操作系统属于基于任务优先级的操作系统,在系统运行过程中经常会需要任务之间进行消息传递,而且消息的长度一般不是定长的,传统的做法是创建消息队列时将消息队列消息的长度值设置的非常大,另外申请一个足够大的数组变量临时存储要发送的消息,或者在不同的任务中定义不同长度的消息队列,申请不同长度的数组临时变量存储要发送的消息。传统设计方法的缺点:内存空间浪费比较大,任务间消息的传递效率比较低,当两个任务之间传递多种类型的数据时,还需在数据内容中增加消息类型的内容,这样不利于保证整个消息的完整性。,同时对于接收的消息类型增多时,伴随消息处理函数增多而导致的处理函数的处理效率降低。

技术实现思路

[0004]本专利技术解决的技术问题是:克服现有技术的不足,提出一种基于VxWorks实时操作系统的封装方法。
[0005]本专利技术解决技术的方案是:
[0006]第一方面,本专利技术提供一种基于VxWorks实时操作系统的封装方法,该方法的步骤包括:
[0007]步骤一,设计消息队列管理结构体,消息队列管理结构体中包括结构状态、消息类型、消息特征码、消息长度、数据指针;
[0008]步骤二,定义全局数组管理消息,数组元素为消息队列管理结构体,对全局数组中的所有元素进行初始化操作,将数组每个元素的消息队列管理结构体中结构状态标识为未占用;
[0009]步骤三,在消息队列发送函数中,通过为消息队列管理结构体申请指针变量,实现为所要传递的消息内容申请空间;
[0010]步骤四,对步骤三申请的消息队列管理结构体指针变量进行赋值;
[0011]步骤五,将消息队列管理结构体通过操作系统消息队列发送函数发送出去,并释放消息队列管理结构体指针变量的空间;
[0012]步骤六,将消息的发送线程和接收线程进行关联,并在接收线程中获取收到的消息队列管理结构体,接收线程接收到的消息队列管理结构体中的数据指针和发送线程发送的消息队列管理结构体中的数据指针指向相同的地址,数据获取成功后,进入步骤七;
[0013]步骤七,解析并处理消息队列管理结构体的内容,完成VxWorks实时操作系统的封装。
[0014]所述步骤一中,结构状态表示该消息结构是否被占用;
[0015]消息类型表示消息最终传递所使用的物理总线类型;
[0016]消息特征码表示消息的类型,根据系统安全分为公开消息和私有消息;
[0017]长度信息表示消息的长度;
[0018]数据指针表示所传递数据在内存堆中的位置,类型为无符号字符指针类型。
[0019]所述步骤三的实现方式如下:
[0020]在消息队列发送函数中申请一个消息管理结构体指针变量,并对此指针变量进行内存申请,通过遍历全局数组中元素查找结构状态标记为未占用的元素,将该元素的地址赋值给消息管理结构体指针变量。
[0021]所述步骤四中,对该指针变量进行赋值的实现方式如下:
[0022](1)将消息类型赋值为此次传输消息所使用的物理总线类型;
[0023](2)将消息特征码赋值为此次发送数据类型;
[0024](3)将消息长度赋值为用户传递的数据长度;
[0025](4)将数据指针赋值为动态申请到的对应消息长度的内存空间首地址。
[0026]所述步骤七的实现方式如下:
[0027](1)申请一个消息处理表结构,结构的内容包括消息类型、特征码、无符号指针型函数指针;
[0028](2)由用户定义一个消息处理表,消息处理表为数组形式,每个元素为消息处理表结构;
[0029](3)设计消息处理函数,消息处理函数的形参包括接收到的消息队列管理结构体指针、消息处理表的地址以及消息处理表中的元素个数;
[0030](4)从消息处理表第一个元素开始,判断消息处理表中当前元素是否同时满足以下三个要求:
[0031]消息处理表中当前元素的消息类型与消息队列管理结构体中的消息类型一致;
[0032]消息处理表中当前元素的特征码与消息队列管理结构体中的消息特征码一致;
[0033]消息处理函数指针不为NULL;
[0034]若同时满足,则根据消息处理函数指针所指的消息处理函数实体对消息队列管理结构体中的消息进行处理;
[0035]若不能同时满足上述三个要求,则进行消息处理表中下一个元素的判断,直到完成所有元素的判断。
[0036]所述步骤(1)中,消息类型表示此次传输消息的物理类型;特征码表示此次发送数据类型;函数指针表示处理函数的指针。
[0037]所述步骤(3)中,消息处理表中的元素个数=数组a所占的空间/数组a中第一个元素所占的空间,其中a为消息处理表的数组名。
[0038]所述步骤(2)中,消息处理表的内容由使用者填充。
[0039]第二方面,本专利技术提供一种终端设备,包括:
[0040]存储器,用于存储至少一个处理器所执行的指令;
[0041]处理器,用于执行存储器中存储的指令实现第一方面所述的方法。
[0042]第三方面,本专利技术提供一种计算机可读存储介质,所述计算机可读存储介质存储有计算机指令,当所述计算机指令在计算机上运行时,使得计算机执行第一方面所述的方法。
[0043]本专利技术与现有技术相比的有益效果是:本专利技术通过设计消息队列管理结构体,将所传输的消息存储到按照消息长度开辟的内存空间中,从而节省了内存空间,同时将消息类型字段设计到消息队列管理结构体中,而非加到消息数据中,这种方式保证了消息的完整性,提高了消息的传递效率。本专利技术通过设计消息处理表结构,通过遍历匹配的方式进行处理函数管理,提高了消息接收处理函数的处理效率。
[0044]按照本专利技术方法进行VxWorks操作系统封装后,任务中消息队列传输数据,可以不受任务本身堆栈大小的限制,可以传递满足系统堆长度的任何变长数据,同时任务间数据传输只需提供数据的首地址以及内存的长度,提高了系统层调用的便利性。
附图说明
[0045]图1为一种基于VxWorks实时操作系统的封装方法流程图;
[0046]图2为任务间传输的消息管理结构体示意图。
具体实施方式
[0047]下面结合附图对本专利技术作进一步阐述。
[0048]为了解决在实时操作系统VxWorks下更高效地开发程序,本专利技术将实时操作系统的任务和消息队列进行进一步的封装,让二者进行更紧密的耦合,使得在实时操作系统上开发不需要调用系统底层的操作配置函数进行繁琐配置。按照本专利技术方法对本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种基于VxWorks实时操作系统的封装方法,其特征在于该方法的步骤包括:步骤一,设计消息队列管理结构体,消息队列管理结构体中包括结构状态、消息类型、消息特征码、消息长度、数据指针;步骤二,定义全局数组管理消息,数组元素为消息队列管理结构体,对全局数组中的所有元素进行初始化操作,将数组每个元素的消息队列管理结构体中结构状态标识为未占用;步骤三,在消息队列发送函数中,通过为消息队列管理结构体申请指针变量,实现为所要传递的消息内容申请空间;步骤四,对步骤三申请的消息队列管理结构体指针变量进行赋值;步骤五,将消息队列管理结构体通过操作系统消息队列发送函数发送出去,并释放消息队列管理结构体指针变量的空间;步骤六,将消息的发送线程和接收线程进行关联,并在接收线程中获取收到的消息队列管理结构体,接收线程接收到的消息队列管理结构体中的数据指针和发送线程发送的消息队列管理结构体中的数据指针指向相同的地址,数据获取成功后,进入步骤七;步骤七,解析并处理消息队列管理结构体的内容,完成VxWorks实时操作系统的封装。2.根据权利要求1所述的一种基于VxWorks实时操作系统的封装方法,其特征在于,所述步骤一中,结构状态表示该消息结构是否被占用;消息类型表示消息最终传递所使用的物理总线类型;消息特征码表示消息的类型,根据系统安全分为公开消息和私有消息;长度信息表示消息的长度;数据指针表示所传递数据在内存堆中的位置,类型为无符号字符指针类型。3.根据权利要求1所述的一种基于VxWorks实时操作系统的封装方法,其特征在于,所述步骤三的实现方式如下:在消息队列发送函数中申请一个消息管理结构体指针变量,并对此指针变量进行内存申请,通过遍历全局数组中元素查找结构状态标记为未占用的元素,将该元素的地址赋值给消息管理结构体指针变量。4.根据权利要求1所述的一种基于VxWorks实时操作系统的封装方法,其特征在于,所述步骤四中,对该指针变量进行赋值的实现方式如下:(1)将消息类型赋值为此次传输消息所使用的物理总线类型;(2)将消息特征码赋值为此次发送数据类型;(3)将消息长度赋值为用户传递的数据长度;(4)...

【专利技术属性】
技术研发人员:王雨龙
申请(专利权)人:天津津航计算技术研究所
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1