一种RTX实时系统下事件通知机制的实现方法与流程
未命名
07-23
阅读:95
评论:0

一种rtx实时系统下事件通知机制的实现方法
技术领域
1.本发明涉及计算机技术领域。更具体地,涉及一种rtx实时系统下事件通知机制的实现方法。
背景技术:
2.软件移植技术在跨操作系统或使用环境时应用非常广泛,可以在原有应用程序不做改动或者只做较少改动的情况下适配到新的平台环境,大大减少不必要的二次开发工作量。
3.现有技术中从vxworks软件向rtx系统移植的技术方案已经有所应用,利用中间件形式重新利用rtx系统的用户api封装了部分vxworks系统的api,实现了基于rtx系统完成了部分vxworks软件功能函数的移植适配,其中包括消息队列、互斥信号量、计数信号量、二值信号量等。但是同时也使用了部分功能,例如事件通知(消息队列事件、信号量事件)功能,针对该类功能rtx并未提供直接可用的api,该功能允许被注册了事件的消息队列或者信号量在发送消息或者触发信号量后同时以事件机制通知接收方响应,由此可以由单个或多个事件通知灵活的组合控制程序任务的执行。
4.因此,需要提供一种rtx实时系统下事件通知机制的实现方法。
技术实现要素:
5.本发明的一个实施例在于提供一种rtx实时系统下事件通知机制的实现方法。为达到上述目的,本发明采用下述技术方案:
6.一种rtx实时系统下事件通知机制的实现方法,该方法包括,
7.利用rtx的api对vxworks软件的事件通知功能进行封装,所述事件包括消息队列事件和信号量事件;
8.对当前任务进行注册,在当前任务队列属性数组中标记该事件注册并记录线程,完成后函数正常返回;
9.事件接收时判断是否注册过事件实体,首次调用时创建事件实体之后,记录所有调用等待的事件,同时开始等待所有注册事件的发生;
10.当消息队列发送消息时,若该消息注册过消息队列事件,则需要发送消息队列的同时发送事件,查找对应的时间数组位,标记该事件已发送同时进行事件通知;
11.当信号量释放发送消息时,若该消息注册过信号量事件,则需要释放信号量的同时发送事件,查找对应的时间数组位,标记该事件已发送同时进行事件通知;
12.当等待获取事件通知时,同时完成对传入可选参数的判断,对等待事件通知进行判断:若为等待一个事件通知,若事件发生,则标记该事件等待数组的该事件位数值,重置事件等待数组该数值位,同时重置已发生的事件实体;若为等待所有事件通知,若所有等待的事件均已发生,则标记该事件等待数组的所有事件位数值,标记后重置事件等待数组所有位,同时重置所有发生的事件实体。
13.可选地,所述对当前任务进行消息队列事件或信号量事件的注册进一步包括使用msgqevstart()函数注册消息队列事件,使用semevstart()函数注册信号量事件。
14.可选地,所述判断是否注册过事件实体进一步包括若该消息注册过消息队列事件,则需要发送消息队列的同时发送事件,若未注册过,则作为普通消息发送;若该消息注册过信号量事件,则需要释放信号量的同时发送事件,若未注册,则作为普通消息发送。
15.可选地,所述事件通知功能采用rtx事件机制作为事件通知的基础,通过rtx下的event作为开发基础实现。
16.可选地,所述事件通知功能使得注册了事件机制的消息队列或者信号量发出消息通知或者信号量触发后,以事件通信的形式通知接收方,进一步触发后续的执行。
17.可选地,所述事件通知机制采用互斥锁保护标志位,使得多个任务同步进行。
18.可选地,当消息队列发送消息且该消息队列注册了消息事件时调用vxworks系统下消息队列发送函数,在中间件中实际除调用rtx下的消息队列发送外同时调用事件发送函数;当信号量释放且该信号量注册了信号量事件时调用vxworks系统下信号量释放函数,在中间件中实际除调用rtx下的信号量释放外同时调用事件发送函数。
19.可选地,所述等待获取事件调用vxworks系统下的事件等待函数,在中间件内实际调用rtx下的事件等待功能函数。
20.本发明第二个实施例提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现如第一个实施例所述的方法。
21.本发明第三个实施例提供一种计算设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行程序时实现如第一个实施例所述的方法。
22.本发明的有益效果如下:
23.本发明的中rtx系统上运行模拟事件通知(消息队列事件、信号量事件)正确性和性能优异主要由两部分设计决定:采用rtx事件机制作为事件通知基础以及消息队列事件和信号量事件发送方与接收方之间交互逻辑的处理。采用rtx事件机制作为事件通知基础,保证了该事件通知在等待和发送时的实时性要求,进而保证原软件运行时实时性不受影响;经过设计消息队列事件、信号量事件、事件接收标志位、事件状态句柄等标志位,同时对这些标志位采用互斥锁保护,进而实现了vxworks下事件通知应有的逻辑,实现了多核、多线程应用程序,内部逻辑包含有多个事件通知进行任务的同步。
附图说明
24.下面结合附图对本发明的具体实施方式作进一步详细的说明。
25.图1示出事件通知多任务运行时序示意图;
26.图2示出本发明事件通知注册机制设计示意图;
27.图3示出本发明事件通知机制逻辑设计示意图;
28.图4示出根据本发明一个实施例的计算机设备的结构示意图。
具体实施方式
29.为了更清楚地说明本发明,下面结合优选实施例和附图对本发明做进一步的说
明。附图中相似的部件以相同的附图标记进行表示。本领域技术人员应当理解,下面所具体描述的内容是说明性的而非限制性的,不应以此限制本发明的保护范围。
30.本发明方法的思路是利用rtx的api对vxworks软件的事件通知(消息队列事件、信号量事件)功能进行封装,在不改变原软件代码调用形式和软件运行逻辑流程的情况下,基于rtx+windows环境实现事件通知应有的功能,且移植后的软件运行逻辑正确、实时性良好。本发明使用的rtx版本为rtx64 2014,对应原vxworks版本为6.8,原软件设计为多核、多线程应用程序,内部逻辑包含有多个事件通知进行任务的同步。
31.利用rtx原有api采用中间件形式模拟事件通知(消息队列事件、信号量事件)机制。在已有rtx event机制基础上进行设计开发,模拟事件通知机制,从而实现类似于vxworks系统的事件功能。
32.rtx系统用户api中用于创建事件的是rtcreateevent(),该功能创建的事件是基础的事件通知,采用32位数每一位作为一个事件标记。该事件可用于不同线程或者进程间任务同步或者事件触发,具有良好的实时性且资源耗费少。本发明中采用rtevent作为开发基础以实现事件通知(消息队列事件、信号量事件)功能。
33.事件通知就是基于vxworks系统上编写的软件大量使用的功能,该功能使得注册了事件机制的消息队列或者信号量当发出消息通知或者信号量触发后,可以以事件通信的形式通知接收方,进一步触发后续的执行。该机制尤其适用于同时等待多个事件的处理场合。
34.实施例1
35.一种rtx实时系统下事件通知机制的实现方法,包括:
36.利用rtx的api对vxworks软件的事件通知(消息队列事件、信号量事件)功能进行封装;
37.通过对当前任务进行消息队列事件或信号量事件的注册,并在当前任务队列属性数组中标记该事件注册并记录线程,完成后函数正常返回;
38.事件接收时判断是否注册过事件实体,首次调用时创建事件实体之后,记录所有调用等待的事件,同时开始等待所有注册事件的发生;
39.当消息队列发送消息时,若该消息注册过消息队列事件,则需要发送消息队列的同时发送事件,查找对应的时间数组位,标记该事件已发送同时进行事件通知;
40.当信号量释放发送消息时,若该消息注册过信号量事件,则需要释放信号量的同时发送事件,查找对应的时间数组位,标记该事件已发送同时进行事件通知;
41.当等待获取事件通知时,同时完成对传入可选参数的判断,对等待事件通知进行判断:若为等待一个事件通知,若事件发生,则标记该事件等待数组的该事件位数值,重置事件等待数组该数值位,同时重置已发生的事件实体;若为等待所有事件通知,若所有等待的事件均已发生,则标记该事件等待数组的所有事件位数值,标记后重置事件等待数组所有位,同时重置所有发生的事件实体。
42.vxworks6.8系统下注册信号量事件使用semevstart()函数,注册消息队列事件使用msgqevstart()函数,当任务线程调用消息队列msgqsend()发送消息时,若本消息所在线程是注册了消息队列事件的线程,则同时发送对应消息队列注册的事件通知,若未注册,则作为普通消息发送;当任务线程调用信号量semgive()释放信号量时,若本信号量所在
线程是注册了信号量事件的线程,则同时发送对应信号量注册的事件通知,若未注册,则作为普通消息发送。
43.本发明中维护一个任务数组类成员中的事件句柄数组,其中包含部分属性和对属性访问的互斥锁。通过semevstart()或msgqevstart()函数对当前任务进行信号量事件或者消息队列事件的注册,并在当前任务队列属性数组中标记该事件注册,记录线程id,完成后函数正常返回。当调用eventreceive()事件接收时通过判断是否注册过事件实体,首次调用时实际调用rtx下的rtcreateevent(),在创建事件实体之后,记录所有调用等待的事件,同时开始等待所有注册事件的发生。
44.当消息队列发送消息时调用msgqsend(),若该消息注册过消息队列事件,则需要发送消息同时发送事件,其中事件发送在中间件内实际调用的是eventsend(),查找对应的时间数组位,标记该事件以发送,同时调用rtx的函数rtsetevent()用于进行事件通知。
45.当信号量释放发送消息时调用semgive(),若该消息注册过信号量事件,则需要释放信号量的同时发送事件,其中事件发送在中间件内实际调用的是eventsend(),查找对应的时间数组位,标记该事件以发送,同时调用rtx的函数rtsetevent()用于进行事件通知。
46.当等待获取事件通知的函数调用eventreceive(),在中间件内实际调用rtwaitforsingleobject(),且同时完成对eventreceive()传入可选参数的判断,若为等待一个事件通知,若事件发生后,标记该事件等待数组的该事件位数值,标记后重置事件等待数组该数值位,同时调用rtresetevent()重置已发生的事件实体。
47.当等待获取事件通知的函数调用eventreceive(),在中间件内实际调用rtwaitforsingleobject(),且同时完成对eventreceive()传入可选参数的判断,若为等待所有事件通知,若所有等待的事件均已发生,则标记该事件等待数组的所有事件位数值,标记后重置事件等待数组所有位,同时调用rtresetevent()重置所有发生的事件实体。
48.在一个具体实施中,如附图1示出了本发明在一个多线程处理过程中,对于不同的事件通知不同线程间访问的时序:
49.1)一开始占用信号量的任务1,当其资源使用过程中任务4注册了信号量事件,并且等待该事件的激活,任务1执行中释放了信号量,同时该信号量发送信号量事件通知任务4,任务4收到事件通知后激活并开始执行;
50.2)一开始占用消息队列的任务2,当其资源使用过程中任务3注册了消息队列事件,并且等待该事件的激活,任务2执行中发送消息队列的消息,同时该消息队列发送消息队列事件通知任务3,任务3收到事件通知后激活并开始执行;
51.3)任务5同时注册了两种事件,包括信号量事件和消息队列事件,执行中等待两个事件同时发生,进而才能激活事件继续执行,当任务1和任务2先后发送了信号量事件和消息队列事件后,任务5等待到两个事件同时接收后,此时可以继续执行。
52.实际使用过程的任务逻辑可能比图中复杂也可能简化,本示意图只做为事假发送和接收任务时序正确性的说明。
53.在本发明中,多个事件同时由不同的线程获取和释放,包括2个普通事件,2个信号量事件和3个消息队列事件,经过大量测试验证在测试软件中,2个线程同时获取两种事件进行同步,1个线程获取任意一个普通事件进行同步,1个线程获取多个信号量事件进行同
步,整个运行流程和实时性与原本vxworks下软件运行状态完全一致,时间通知机制工作逻辑正确,性能优秀。
54.在一个具体实施例中,附图2是本发明事件通知(消息队列事件、信号量事件)的事件注册机制设计示意图,图中展示了消息队列事件和信号量事件的注册机制。
55.1)信号量事件注册时,调用vxworks的semevstart()函数,在中间件中遍历所有信号量数组查找当前位,找到后获取当前线程id,在信号量数组的线程标记位赋值为当前线程id,向信号量数组的事件位赋值为当前待注册事件,将信号量数组事件标记为信号量事件;
56.2)消息队列事件注册时,调用vxworks的msgqevstart()函数,在中间件查找该消息队列数组存在,找到后获取当前线程id,在消息队列数组的线程标记位赋值为当前线程id,向消息队列数组的事件位赋值为当前待注册事件,将消息队列数组事件标记为消息队列事件。
57.在一个具体实施例中,附图3是本发明事件通知(消息队列事件、信号量事件)的交互逻辑设计示意图,图中详细展示了事件通知(消息队列事件、信号量事件)获取和释放相互之间的逻辑关系设计,同时也展示了事件通知(消息队列事件、信号量事件)获取和释放功能内部的执行逻辑设计。
58.事件机制设计了一个数组用于保存所有创建成功的事件句柄,以及每个事件对应的标志位和标志位保护锁。
59.本发明中共使用标志位如下:
60.eventhandle:用于记录任务数组中事件句柄位;
61.eventshavereceived:用于任务数组中标记该事件已经发生;
62.使用标志位的互斥锁如下:
63.havereceivedmutex:任务数组中标记位保护锁;
64.eventhandlemutex:任务数组中事件句柄位保护锁;
65.每个标识位都需要在访问和修改时对该变量加锁进行保护,避免多线程同时操作该变量造成系统错误。
66.消息队列事件发送msgqsend()
67.1)首先发送消息队列消息时判断消息队列事件标志位是否为true;
68.2)若是消息队列事件则调用事件发送函数;
69.3)事件掩码和待发送事件数组32位数按位与操作,判断结果是否非0;
70.4)若结果非0,则eventshavereceived中标记该事件已经发生;
71.5)同时rtsetevent重置当前任务数组中事件句柄位eventhandle,激活事件实体;
72.6)若结果是0,则进行下一位循环判断,共循环32次;
73.7)函数返回。
74.信号量事件发送semgive()
75.1)首先信号量释放时判断信号量事件标志位是否为true;
76.2)若是信号量事件则调用事件发送函数;
77.3)事件掩码和待发送事件数组32位数按位与操作,判断结果是否非0;
78.4)若结果非0,则eventshavereceived中标记该事件已经发生;
79.5)同时rtsetevent重置当前任务数组中事件句柄位eventhandle,激活事件实体;
80.6)若结果是0,则进行下一位循环判断,共循环32次;
81.7)函数返回。
82.获取事件eventreceive()
83.1)首先事件掩码和待接收事件数组32位数按位与操作,判断结果是否非0;
84.2)若结果非0,判断当前事件句柄是否创建,若为空则rtcreateevent创建事件实体,记录在eventhandle数组;
85.3)完成后将时间句柄加入等待数组lphandles,记录等待数量count;
86.4)判断事件传入参数option值,events_wait_any等待到任何一个事件即返回,或者events_wait_all等到所有事件后返回;
87.5)在events_wait_any情况下eventshavereceived数组位与enents事件数组等于events时,任务数组事件标记eventshavereceived置为初始态,rtresetevent重置已发生的事件句柄,传出记录发生的事件*eventsreceived值;
88.6)events_wait_any情况下eventshavereceived数组位与enents事件数组不等于events时,rtwaitformultipleobjects等待任意发生一个事件,等到后任务数组事件标记eventshavereceived置为初始态,rtresetevent重置已发生的事件句柄,传出记录发生的事件*eventsreceived值;
89.7)在events_wait_all情况下count次调用rtwaitforsingleobject等待第n个事件通知,所有count个通知都等到后,且eventshavereceived数组位与enents事件数组等于events时,任务数组事件标记eventshavereceived置为初始态,rtresetevent重置已发生的事件句柄,传出记录发生的事件*eventsreceived值。
90.至此本发明的rtx环境下事件通知(消息队列事件、信号量事件)的功能模拟已经完成。
91.实施例2
92.一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现实施例1所述的方法。
93.在实际应用中,所述计算机可读存储介质可以采用一个或多个计算机可读的介质的任意组合。计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质。计算机可读存储介质例如可以是但不限于电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机存取存储器(ram)、只读存储器(rom)、可擦式可编程只读存储器(eprom或闪存)、光纤、便携式紧凑磁盘只读存储器(cd-rom)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本实施例中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
94.计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于
由指令执行系统、装置或者器件使用或者与其结合使用的程序。
95.计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于无线、电线、光缆、rf等等,或者上述的任意合适的组合。
96.可以以一种或多种程序设计语言或其组合来编写用于执行本发明操作的计算机程序代码,所述程序设计语言包括面向对象的程序设计语言—诸如java、smalltalk、c++,还包括常规的过程式程序设计语言—诸如“c”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络——包括局域网(lan)或广域网(wan)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
97.实施例3
98.如图4所示,本发明的另一个实施例提供的一种计算机设备的结构示意图。图4显示的计算机设备12仅仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。
99.在附图4中,计算机设备12以通用计算设备的形式表现。计算机设备12的组件可以包括但不限于:一个或者多个处理器或者处理单元16,系统存储器28,连接不同系统组件(包括系统存储器28和处理单元16)的总线18。
100.总线18表示几类总线结构中的一种或多种,包括存储器总线或者存储器控制器,外围总线,图形加速端口,处理器或者使用多种总线结构中的任意总线结构的局域总线。举例来说,这些体系结构包括但不限于工业标准体系结构(isa)总线,微通道体系结构(mac)总线,增强型isa总线、视频电子标准协会(vesa)局域总线以及外围组件互连(pci)总线。
101.计算机设备12典型地包括多种计算机系统可读介质。这些介质可以是任何能够被计算机设备12访问的可用介质,包括易失性和非易失性介质,可移动的和不可移动的介质。
102.系统存储器28可以包括易失性存储器形式的计算机系统可读介质,例如随机存取存储器(ram)30和/或高速缓存存储器32。计算机设备12可以进一步包括其它可移动/不可移动的、易失性/非易失性计算机系统存储介质。仅作为举例,存储系统34可以用于读写不可移动的、非易失性磁介质(图4未显示,通常称为“硬盘驱动器”)。尽管图4中未示出,可以提供用于对可移动非易失性磁盘(例如“软盘”)读写的磁盘驱动器,以及对可移动非易失性光盘(例如cd-rom,dvd-rom或者其它光介质)读写的光盘驱动器。在这些情况下,每个驱动器可以通过一个或者多个数据介质接口与总线18相连。存储器28可以包括至少一个程序产品,该程序产品具有一组(例如至少一个)程序模块,这些程序模块被配置以执行本发明各实施例的功能。
103.计算机设备12也可以与一个或多个外部设备14(例如键盘、指向设备、显示器24等)通信,还可与一个或者多个使得用户能与该计算机设备12交互的设备通信,和/或与使得该计算机设备12能与一个或多个其它计算设备进行通信的任何设备(例如网卡,调制解调器等等)通信。这种通信可以通过输入/输出(i/o)接口22进行。并且,计算机设备12还可以通过网络适配器20与一个或者多个网络(例如局域网(lan),广域网(wan)和/或公共网络,例如因特网)通信。如图4所示,网络适配器20通过总线18与计算机设备12的其它模块通
信。应当明白,尽管图4中未示出,可以结合计算机设备12使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、raid系统、磁带驱动器以及数据备份存储系统等。
104.处理器单元16通过运行存储在系统存储器28中的程序,从而执行各种功能应用以及数据处理,例如实现本发明实施例1所提供的方法。
105.显然,本发明的上述实施例仅仅是为清楚地说明本发明所作的举例,而并非是对本发明的实施方式的限定,对于所属领域的普通技术人员来说,在上述说明的基础上还可以做出其它不同形式的变化或变动,这里无法对所有的实施方式予以穷举,凡是属于本发明的技术方案所引伸出的显而易见的变化或变动仍处于本发明的保护范围之列。
技术特征:
1.一种rtx实时系统下事件通知机制的实现方法,其特征在于,该方法包括,利用rtx的api对vxworks软件的事件通知功能进行封装,所述事件包括消息队列事件和信号量事件;对当前任务进行注册,在当前任务队列属性数组中标记该事件注册并记录线程,完成后函数正常返回;事件接收时判断是否注册过事件实体,首次调用时创建事件实体之后,记录所有调用等待的事件,同时开始等待所有注册事件的发生;当消息队列发送消息时,若该消息注册过消息队列事件,则需要发送消息队列的同时发送事件,查找对应的时间数组位,标记该事件已发送同时进行事件通知;当信号量释放发送消息时,若该消息注册过信号量事件,则需要释放信号量的同时发送事件,查找对应的时间数组位,标记该事件已发送同时进行事件通知;当等待获取事件通知时,同时完成对传入可选参数的判断,对等待事件通知进行判断:若为等待一个事件通知,若事件发生,则标记该事件等待数组的该事件位数值,重置事件等待数组该数值位,同时重置已发生的事件实体;若为等待所有事件通知,若所有等待的事件均已发生,则标记该事件等待数组的所有事件位数值,标记后重置事件等待数组所有位,同时重置所有发生的事件实体。2.根据权利要求1所述的方法,其特征在于,所述对当前任务进行消息队列事件或信号量事件的注册进一步包括使用msgqevstart()函数注册消息队列事件,使用semevstart()函数注册信号量事件。3.根据权利要求1所述的方法,其特征在于,所述判断是否注册过事件实体进一步包括若该消息注册过消息队列事件,则需要发送消息队列的同时发送事件,若未注册过,则作为普通消息发送;若该消息注册过信号量事件,则需要释放信号量的同时发送事件,若未注册,则作为普通消息发送。4.根据权利要求1所述的方法,其特征在于,所述事件通知功能采用rtx事件机制作为事件通知的基础,通过rtx下的event作为开发基础实现。5.根据权利要求4所述的方法,其特征在于,所述事件通知功能使得注册了事件机制的消息队列或者信号量发出消息通知或者信号量触发后,以事件通信的形式通知接收方,进一步触发后续的执行。6.根据权利要求1所述的方法,其特征在于,所述事件通知机制采用互斥锁保护标志位,使得多个任务同步进行。7.根据权利要求1所述的方法,其特征在于,当消息队列发送消息且该消息队列注册了消息事件时调用vxworks系统下消息队列发送函数,在中间件中实际除调用rtx下的消息队列发送外同时调用事件发送函数;当信号量释放且该信号量注册了信号量事件时调用vxworks系统下信号量释放函数,在中间件中实际除调用rtx下的信号量释放外同时调用事件发送函数。8.根据权利要求1所述的方法,其特征在于,所述等待获取事件调用vxworks系统下的事件等待函数,在中间件内实际调用rtx下的事件等待功能函数。9.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现如权利要求1-8中任一项所述的方法。
10.一种计算设备,包括处理器,其特征在于,所述处理器执行程序时实现如权利要求1-8中任一项所述的方法。
技术总结
本发明公开一种RTX实时系统下事件通知机制的实现方法,该方法包括,利用RTX的API对VxWorks软件的事件通知功能进行封装,在不改变原软件代码调用形式和软件运行逻辑流程的情况下,基于RTX+Windows环境实现事件通知应有的功能,且移植后的软件运行逻辑正确、实时性良好。本发明保证了该事件通知在等待和发送时的实时性要求,进而保证原软件运行时实时性不受影响,实现了VxWorks下事件通知应有的逻辑,实现多核、多线程应用程序,以及内部逻辑包含有多个事件通知进行任务的同步。含有多个事件通知进行任务的同步。含有多个事件通知进行任务的同步。
技术研发人员:段雨昕 陈秋瑞 慈岩 马榕 夏南 朱双琳
受保护的技术使用者:北京仿真中心
技术研发日:2023.03.13
技术公布日:2023/7/21
版权声明
本文仅代表作者观点,不代表航家之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)
航空之家 https://www.aerohome.com.cn/
飞机超市 https://mall.aerohome.com.cn/
航空资讯 https://news.aerohome.com.cn/