CN111240828A - 一种嵌入式实时操作系统的同步通信系统和方法 - Google Patents
一种嵌入式实时操作系统的同步通信系统和方法 Download PDFInfo
- Publication number
- CN111240828A CN111240828A CN201911393142.8A CN201911393142A CN111240828A CN 111240828 A CN111240828 A CN 111240828A CN 201911393142 A CN201911393142 A CN 201911393142A CN 111240828 A CN111240828 A CN 111240828A
- Authority
- CN
- China
- Prior art keywords
- message
- message queue
- queue
- messages
- memory
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
- G06F9/5016—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
- G06F9/5022—Mechanisms to release resources
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/546—Message passing systems or structures, e.g. queues
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明提供了一种嵌入式实时操作系统的同步通信系统和方法,涉及通信技术领域,该系统包括主控制模块和PC机,主控制模块包括:内存创建模块,用于创建内存池;分配模块,用于在发送消息前,从内存池中得到一块分配好的内存空间;释放模块,用于在从消息队列获取消息之后,将消息所占用的内存块还给内存池;消息队列模块,用于创建接收消息的消息队列;存放模块,从消息队列接收消息;获取模块,将消息放入消息队列;移除模块,用于在消息队列中的某个消息被获取之后,将该消息从消息队列中移除;通过本通信系统及通信方法,可以实现任务间的同步数据交换,哪怕偶尔产生消息堆积,也可以在消息队列中获得缓冲,解决消息的堆积问题。
Description
技术领域
本发明涉及通信技术领域,尤其是涉及一种嵌入式实时操作系统的同步通信系统和方法。
背景技术
消息(Message)是一种任务间数据传送的单位,它可以是只包含文本的字符串或数字,也可以更复杂,如结构体类型等,所以相比使用事件时传递的少量数据(1位或1个字),消息则可以在任务间传递更多、更复杂的数据,但传输的数据只能为32位数据或指针。而任务间消息的传递,则是通过消息队列(Message Queue)来实现的,消息队列是在消息的传输过程中保存消息的容器,是将消息从它的源头发送到目的地的中转站。
但目前的通信系统在多个任务之间传递数据时,容易出现消息堆积的情况,导致数据不能够及时的同步交换,影响同步通信的效果。
发明内容
本发明的目的在于提供一种嵌入式实时操作系统的同步通信系统和方法,以解决现有技术中目前的通信系统在多个任务之间传递数据时,容易出现消息堆积的情况,导致数据不能够及时的同步交换,影响同步通信的效果的技术问题;本发明提供的诸多技术方案中的优选技术方案所能产生的诸多技术效果详见下文阐述。
为实现上述目的,本发明提供了以下技术方案:
本发明提供的一种嵌入式实时操作系统的同步通信系统,包括主控制模块和PC机,所述主控制模块包括:
内存创建模块,用于创建内存池,任务根据内存池ID从私有内存池中分配内存块;
分配模块,用于在发送消息前,从内存池中得到一块分配好的内存空间;
释放模块,用于在从消息队列获取消息之后,将消息所占用的内存块还给内存池;
消息队列模块,用于创建接收消息的消息队列;
存放模块,从消息队列接收消息,若消息队列非空,则将消息队列中首个消息出队,此消息变为该任务的资源;若消息队列为空,则任务阻塞,直到消息队列接收到消息或者等待时间超过中的规定;
获取模块,将消息放入消息队列,若消息阻塞队列中有等待消息的线程,则将消息直接给线程并不进入消息队列;否则给消息分配内存,并放入消息队列中;若无可分配内存,则返回等待超时或资源不可用;
移除模块,用于在消息队列中的某个消息被获取之后,将该消息从消息队列中移除。
可选地,内存池为消息信封的集合,任务需要发送消息时,从内存池中分配消息信封,填写好消息的内容及消息的源地址与目标地址,将填写好的消息发往消息队列。
可选地,消息信封是消息分配与传递的单位,多个消息信封组成消息队列。
可选地,消息队列是在消息的传输过程中保存消息的容器,不同的消息队列由消息队列号来区分。
可选地,主控制模块的内核为MCU芯片,包括串口、USB端口,所述串口作为默认通信设备与外界通信,USB端口接PC机的USB口。
可选的,还包括测试硬件和MUC评估板,所述串口与MUC评估板连接,所述测试硬件连接于MUC评估板并由主控制模块控制。
可选的,测试硬件为三色灯硬件,所述MUC评估板AHL-IOT-GEC评估板,MCU芯片的串口连接于AHL-IOT-GEC评估板上的MicroUSB口。
一种基于上述同步通信系统的同步通信方法,包括以下步骤,
步骤1:为所要创建的消息队列分配空间,在为消息队列分配空间后,对其进行初始化,设置队列中消息的最大数目及消息的类型;
步骤2:在发送消息前,创建内存池,为消息提供内存块;
步骤3:在创建内存池后,为消息分配空间;
步骤4:在空间分配好后,先将消息队列成员分别赋值,再将数据放入消息队列,并返回消息队列操作状态;
步骤5:消息存放后,获取消息队列中的消息,并且返回操作状态,再得到对应消息队列的地址赋值给新的变量,并且将消息队列成员赋值给新的变量;
步骤6:获得消息队列的数据后,释放内存块。
可选地,步骤1中,初始化消息队列时确定消息结构体即包含多少种成员。
可选地,步骤4中,每次存放消息时先申请消息控制块的内存,消息控制块的地址存放在消息队列中,消息的地址存放在消息控制块中。
本发明提供的一种嵌入式实时操作系统的同步通信系统和方法,其有益效果为:
通过本通信系统及通信方法,消息发送方在消息队列未满时将消息发往消息队列,接收方则在消息队列非空时将消息队列中的首个消息取出接收;而在消息队列满或者空时,消息发送方及接收方既可以等待队列满足条件,也可以不等待而直接继续后续操作,这样只要消息的平均发送速度小于消息的平均接收速度,就可以实现任务间的同步数据交换,哪怕偶尔产生消息堆积,也可以在消息队列中获得缓冲,解决消息的堆积问题。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明同步通信系统的系统结构图;
图2是本发明同步通信方法的执行流程图;
图3是本发明消息队列的使用方法时序图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将对本发明的技术方案进行详细的描述。显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所得到的所有其它实施方式,都属于本发明所保护的范围。
实施例1:
如图1-3所示,一种嵌入式实时操作系统的同步通信系统,包括主控制模块和PC机,所述主控制模块包括:
内存创建模块,用于创建内存池,任务根据内存池ID从私有内存池中分配内存块;
分配模块,用于在发送消息前,从内存池中得到一块分配好的内存空间;
释放模块,用于在从消息队列获取消息之后,将消息所占用的内存块还给内存池;
消息队列模块,用于创建接收消息的消息队列;
存放模块,从消息队列接收消息,若消息队列非空,则将消息队列中首个消息出队,此消息变为该任务的资源;若消息队列为空,则任务阻塞,直到消息队列接收到消息或者等待时间超过中的规定;
获取模块,将消息放入消息队列,若消息阻塞队列中有等待消息的线程,则将消息直接给线程并不进入消息队列;否则给消息分配内存,并放入消息队列中;若无可分配内存,则返回等待超时或资源不可用;
移除模块,用于在消息队列中的某个消息被获取之后,将该消息从消息队列中移除;
其中,内存池为消息信封的集合,任务需要发送消息时,从内存池中分配消息信封,填写好消息的内容及消息的源地址与目标地址,将填写好的消息发往消息队列;消息信封是消息分配与传递的单位,多个消息信封组成消息队列;消息队列是在消息的传输过程中保存消息的容器,不同的消息队列由消息队列号来区分。
实施例2:
在上述实施例的基础上,作为进一步的优选方案:主控制模块的内核为MCU芯片,包括串口、USB端口,串口作为默认通信设备与外界通信,USB端口接PC机的USB口,还包括测试硬件和MUC评估板,串口与MUC评估板连接,测试硬件连接于MUC评估板并由主控制模块控制,测试硬件为三色灯硬件,MUC评估板AHL-IOT-GEC评估板,MCU芯片的串口连接于AHL-IOT-GEC评估板上的MicroUSB口。
实施例3:
在上述实施例的基础上,如图2所示,作为进一步的优选方案:一种基于上述同步通信系统的同步通信方法,包括以下步骤,
步骤1:为所要创建的消息队列分配空间,在为消息队列分配空间后,对其进行初始化,设置队列中消息的最大数目及消息的类型,初始化消息队列时确定消息结构体即包含多少种成员;
步骤2:在发送消息前,创建内存池,为消息提供内存块;
步骤3:在创建内存池后,为消息分配空间;
步骤4:在空间分配好后,先将消息队列成员分别赋值,再将数据放入消息队列,并返回消息队列操作状态,每次存放消息时先申请消息控制块的内存,消息控制块的地址存放在消息队列中,消息的地址存放在消息控制块中;
步骤5:消息存放后,获取消息队列中的消息,并且返回操作状态,再得到对应消息队列的地址赋值给新的变量,并且将消息队列成员赋值给新的变量;
步骤6:获得消息队列的数据后,释放内存块。
其中,消息队列的触发机制为,在mbedOS中消息队列的触发机制主要为接收消息和发送消息的操作。下面以接收消息为例说明它的触发机制。
首先将接收的消息的参数传入接收消息的存放模块模块,此模块直接返回执行状态,插入消息的参数传入存放模块。首先检查传入参数,若是参数有误则返回参数错误状态;然后检查队列状态,队列是否活跃,如果不活跃,则返回错误状态位;之后尝试分配内存,若没有可用内存,则返回内存分配错误。若上述错误都未发生则执行插入消息的操作,并返回执行正确的状态。插入操作的执行流程如下,首先检查开始检查消息队列是否为空,若不为空,则从消息队列最后一个消息开始检查待插入消息优先级和消息队列里消息的优先级高低,将待插入消息按优先级顺序插入,然后再检查插入的消息前后是否有消息,若有则分别设置队首队尾,若没有则不操作;若消息队列为空,则将带插入消息直接插入队列,并将队首队尾都设置为此消息。
实施例4:
在上述实施例的基础上,作为进一步的优选方案,如图3所示:MCU芯片选择KL36板套件,该套件的MCU是内核为ARM Cortex-M0+的Kinetis MKL36Z64VLH4,该芯片为64引脚LQFP封装、64KB Flash,包含SysTick、GPIO、串口、A/D、D/A、I2C、SPI、CAN、USB;串口作为默认通信设备与外界通信,将“USB-MicroUSB串口线”的“USB端口”接PC机的USB口,串口线的MicroUSB端接AHL-IOT-GEC评估板上的MicroUSB口(对应UART_2,由PTE16、PTE17作为串口的收发引脚);三色灯硬件连接于AHL-IOT-GEC评估板的S1,由KL36芯片的PTA5、PTA12和PTA13引脚控制。
下面结合上述硬件,将对消息队列中消息的放入和获取过程进行分段解析,并给出各段的运行结果,
(1)绿灯线程第1、2次存放消息
由于绿灯线程每隔1秒存放一次消息,而红灯线程要每隔2秒才会获取一次消息,因此绿灯线程先存放两次消息,消息队列中消息个数为2。每次存放消息时先申请消息控制块的内存,大小为16字节(16B=消息控制块大小12字节+消息指针4字节),消息控制块的地址存放在消息队列的msg_first成员中,消息的地址存放在消息控制块+12的位置,具体的,
1.第1发送消息之前的消息队列状态:消息个数为0,首个消息控制块的地址为0,末尾消息控制块的地址为0
2.准备将消息(1-2-3)放入消息队列中
7.从内存池中给新消息控制块分配地址
将消息控制块放入消息队列中.
3.第1发送消息之后的消息队列状态:消息个数为1,首个消息控制块的地址为,末尾消息控制块的地址为
10.消息已放入消息队列,切换绿灯亮暗.
1.第2发送消息之前的消息队列状态:消息个数为1,首个消息控制块的地址为,末尾消息控制块的地址为
2.准备将消息(1-2-3)放入消息队列中
7.从内存池中给新消息控制块分配地址
将消息控制块放入消息队列中.
3.第2发送消息之后的消息队列状态:消息个数为2,首个消息控制块的地址为1FFFFB88,末尾消息控制块的地址为1FFFFB98
10.消息已放入消息队列,切换绿灯亮暗.
(2)红灯线程第1次获取消息
当绿灯线程存放完2次消息之后,红灯线程开始从消息队列获取首个消息控制块地址,并从该地址+12的位置获取消息,同时释放消息控制块,且消息个数为1。
4.接收消息之前消息队列情况:消息个数为2,首个消息控制块的地址为1FFFFB88,末尾消息控制块地址为1FFFFB98
从消息队列中获取消息控制块,并释放消息控制块的内存空间.
5.取出消息之后消息队列情况:消息个数为1,首个消息控制块的地址为1FFFFB98,末尾消息控制块地址为1FFFFB98
6.取出消息队列控制块中消息的成员:1-2-3.
9.已从消息队列中获得消息,切换红灯亮暗.
(3)绿灯线程第3、4次存放消息
绿灯线程继续存放两次消息,消息队列中消息个数为3。由于消息控制块在红灯线程获取消息时已被释放,故在第3次存放消息时1FFFFB88地址开始的16字节内存空间会再次被申请到,同时第4次存放消息继续申请后续内存空间。
1.第3发送消息之前的消息队列状态:消息个数为1,首个消息控制块的地址为1FFFFB98,末尾消息控制块的地址为1FFFFB98
2.准备将消息(1-2-3)放入消息队列中
7.从内存池中给新消息控制块分配地址
将消息控制块放入消息队列中.
3.第3发送消息之后的消息队列状态:消息个数为2,首个消息控制块的地址为1FFFFB98,末尾消息控制块的地址为1FFFFB88
10.消息已放入消息队列,切换绿灯亮暗.
1.第4发送消息之前的消息队列状态:消息个数为2,首个消息控制块的地址为1FFFFB98,末尾消息控制块的地址为1FFFFB88
2.准备将消息(1-2-3)放入消息队列中
7.从内存池中给新消息控制块分配地址
将消息控制块放入消息队列中.
3.第4发送消息之后的消息队列状态:消息个数为3,首个消息控制块的地址为1FFFFB98,末尾消息控制块的地址为1FFFFBA8
10.消息已放入消息队列,切换绿灯亮暗.
(4)红灯线程第2次获取消息
红灯线程开始从消息队列获取首个消息控制块地址,并从该地址+12的位置获取消息,同时释放消息控制块,且消息个数为2。
4.接收消息之前消息队列情况:消息个数为3,首个消息控制块的地址为1FFFFB98,末尾消息控制块地址为1FFFFBA8
从消息队列中获取消息控制块,并释放消息控制块的内存空间.
5.取出消息之后消息队列情况:消息个数为2,首个消息控制块的地址为1FFFFB88,末尾消息控制块地址为1FFFFBA8
6.取出消息队列控制块中消息的成员:1-2-3.
9.已从消息队列中获得消息,切换红灯亮暗.
(5)绿灯线程第5、6次存放消息
绿灯线程继续存放两次消息,消息队列中消息个数为4。由于消息控制块在红灯线程获取消息时已被释放,故在第5次存放消息时1FFFFB98地址开始的16字节内存空间会再次被申请到,同时第6次存放消息继续申请后续内存空间。
1.第5发送消息之前的消息队列状态:消息个数为2,首个消息控制块的地址为1FFFFB88,末尾消息控制块的地址为1FFFFBA8
2.准备将消息(1-2-3)放入消息队列中
7.从内存池中给新消息控制块分配地址
将消息控制块放入消息队列中.
3.第5发送消息之后的消息队列状态:消息个数为3,首个消息控制块的地址为1FFFFB88,末尾消息控制块的地址为1FFFFB98
10.消息已放入消息队列,切换绿灯亮暗.
1.第6发送消息之前的消息队列状态:消息个数为3,首个消息控制块的地址为1FFFFB88,末尾消息控制块的地址为1FFFFB98
2.准备将消息(1-2-3)放入消息队列中
7.从内存池中给新消息控制块分配地址
**将消息控制块放入消息队列中.
3.第6发送消息之后的消息队列状态:消息个数为4,首个消息控制块的地址为1FFFFB88,末尾消息控制块的地址为1FFFFBB8
10.消息已放入消息队列,切换绿灯亮暗.
(6)红灯线程第3次获取消息
红灯线程开始从消息队列获取首个消息控制块地址(1FFFFB88),并从该地址+12的位置获取消息,同时释放消息控制块(1FFFFB88),且消息个数为3。
4.接收消息之前消息队列情况:消息个数为4,首个消息控制块的地址为1FFFFB88,末尾消息控制块地址为1FFFFBB8
从消息队列(1FFFFBD8)中获取消息控制块(1FFFFB88),并释放消息控制块的内存空间.
5.取出消息之后消息队列情况:消息个数为3,首个消息控制块的地址为1FFFFBA8,末尾消息控制块地址为1FFFFBB8
6.取出消息队列控制块(1FFFFBA8)中消息(地址1FFFFC10)的成员:1-2-3.
9.已从消息队列中获得消息,切换红灯亮暗.
(7)绿灯线程第7、8次存放消息
绿灯线程继续存放两次消息,消息队列中消息个数为5。由于消息控制块(1FFFFB88)在红灯线程获取消息时已被释放,故在第7次存放消息时1FFFFB88地址开始的16字节内存空间会再次被申请到,同时第8次存放消息继续申请后续内存空间(1FFFFBC8)。
1.第7发送消息之前的消息队列状态:消息个数为3,首个消息控制块的地址为1FFFFBA8,末尾消息控制块的地址为1FFFFBB8
2.准备将消息(1-2-3)放入消息队列中
7.从内存池中给新消息控制块分配地址(1FFFFB88)
将消息控制块(1FFFFB88)放入消息队列(1FFFFBD8)中.
3.第7发送消息之后的消息队列状态:消息个数为4,首个消息控制块的地址为1FFFFBA8,末尾消息控制块的地址为1FFFFB88
10.消息已放入消息队列,切换绿灯亮暗.
1.第8发送消息之前的消息队列状态:消息个数为4,首个消息控制块的地址为1FFFFBA8,末尾消息控制块的地址为1FFFFB88
2.准备将消息(1-2-3)放入消息队列中
7.从内存池中给新消息控制块分配地址(1FFFFBC8)
将消息控制块(1FFFFBC8)放入消息队列(1FFFFBD8)中.
3.第8发送消息之后的消息队列状态:消息个数为5,首个消息控制块的地址为1FFFFBA8,末尾消息控制块的地址为1FFFFBC8
10.消息已放入消息队列,切换绿灯亮暗.
(8)红灯线程第4次获取消息
红灯线程开始从消息队列获取首个消息控制块地址(1FFFFBA8),并从该地址+12的位置获取消息,同时释放消息控制块(1FFFFBA8),且消息个数为4。
4.接收消息之前消息队列情况:消息个数为5,首个消息控制块的地址为1FFFFBA8,末尾消息控制块地址为1FFFFBC8
从消息队列(1FFFFBD8)中获取消息控制块(1FFFFBA8),并释放消息控制块的内存空间.
5.取出消息之后消息队列情况:消息个数为4,首个消息控制块的地址为1FFFFB98,末尾消息控制块地址为1FFFFBC8
6.取出消息队列控制块(1FFFFB98)中消息(地址1FFFFC10)的成员:1-2-3.
9.已从消息队列中获得消息,切换红灯亮暗.
(9)绿灯线程第9次发送消息
绿灯线程继续第9次存放消息,消息队列中消息个数为5。由于消息控制块(1FFFFBA8)在红灯线程获取消息时已被释放,故在第9次存放消息时1FFFFBA8地址开始的16字节内存空间会再次被申请到。
1.第9发送消息之前的消息队列状态:消息个数为4,首个消息控制块的地址为1FFFFB98,末尾消息控制块的地址为1FFFFBC8
2.准备将消息(1-2-3)放入消息队列中
7.从内存池中给新消息控制块分配地址(1FFFFBA8)
将消息控制块(1FFFFBA8)放入消息队列(1FFFFBD8)中.
3.第9发送消息之后的消息队列状态:消息个数为5,首个消息控制块的地址为1FFFFB98,末尾消息控制块的地址为1FFFFBA8
10.消息已放入消息队列,切换绿灯亮暗.
(10)绿灯线程第10次存放消息
绿灯线程继续第10次存放消息,由于此时消息队列中消息个数为5已达到最大消息数,内存池已满,故本次存放的消息未被存入消息队列中,产生了消息堆积现象。
1.第10发送消息之前的消息队列状态:消息个数为5,首个消息控制块的地址为1FFFFB98,末尾消息控制块的地址为1FFFFBA8
2.准备将消息(1-2-3)放入消息队列中
8.消息个数已达到消息队列的最大数5,内存池已满,无法为消息分配可用内存块.
3.第10发送消息之后的消息队列状态:消息个数为5,首个消息控制块的地址为1FFFFB98,末尾消息控制块的地址为1FFFFBA8
10.消息已放入消息队列,切换绿灯亮暗.
(11)红灯线程第5次获取消息
红灯线程开始从消息队列获取首个消息控制块地址(1FFFFB98),并从该地址+12的位置获取消息,同时释放消息控制块(1FFFFB98),且消息个数为4。此后,每次只能存放一次消息(存放完一次消息之后消息个数就达到5),当消息个数为4时可以才可以进行下一次的消息存放。
4.接收消息之前消息队列情况:消息个数为5,首个消息控制块的地址为1FFFFB98,末尾消息控制块地址为1FFFFBA8
从消息队列(1FFFFBD8)中获取消息控制块(1FFFFB98),并释放消息控制块的内存空间.
5.取出消息之后消息队列情况:消息个数为4,首个消息控制块的地址为1FFFFBB8,末尾消息控制块地址为1FFFFBA8
6.取出消息队列控制块(1FFFFBB8)中消息(地址1FFFFC10)的成员:1-2-3.
9.已从消息队列中获得消息,切换红灯亮暗.
说明:演示程序主要是为了说明消息的存放和获取过程,因此,在程序设计上存放消息的时间(1秒)比获取消息的时间(2秒)短,故产生了消息堆积现象。但在实际应用场景中,应该是存放消息的平均时间比获取消息的平均时间长,这样就不会产生消息堆积,进而消除消息堆积,通信不同步的情况。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以所述权利要求的保护范围为准。
Claims (10)
1.一种嵌入式实时操作系统的同步通信系统,其特征在于,包括主控制模块和PC机,所述主控制模块包括:
内存创建模块,用于创建内存池,任务根据内存池ID从私有内存池中分配内存块;
分配模块,用于在发送消息前,从内存池中得到一块分配好的内存空间;
释放模块,用于在从消息队列获取消息之后,将消息所占用的内存块还给内存池;
消息队列模块,用于创建接收消息的消息队列;
存放模块,从消息队列接收消息,若消息队列非空,则将消息队列中首个消息出队,此消息变为该任务的资源;若消息队列为空,则任务阻塞,直到消息队列接收到消息或者等待时间超过中的规定;
获取模块,将消息放入消息队列,若消息阻塞队列中有等待消息的线程,则将消息直接给线程并不进入消息队列;否则给消息分配内存,并放入消息队列中;若无可分配内存,则返回等待超时或资源不可用;
移除模块,用于在消息队列中的某个消息被获取之后,将该消息从消息队列中移除。
2.根据权利要求1所述的一种嵌入式实时操作系统的同步通信系统,其特征在于,所述内存池为消息信封的集合,任务需要发送消息时,从内存池中分配消息信封,填写好消息的内容及消息的源地址与目标地址,将填写好的消息发往消息队列。
3.根据权利要求2所述的一种嵌入式实时操作系统的同步通信方法,其特征在于,所述消息信封是消息分配与传递的单位,多个消息信封组成消息队列。
4.根据权利要求3所述的一种嵌入式实时操作系统的同步通信系统,其特征在于,所述消息队列是在消息的传输过程中保存消息的容器,不同的消息队列由消息队列号来区分。
5.根据权利要求4所述的一种嵌入式实时操作系统的同步通信系统,其特征在于,所述主控制模块的内核为MCU芯片,包括串口、USB端口,所述串口作为默认通信设备与外界通信,USB端口接PC机的USB口。
6.根据权利要求5所述的一种嵌入式实时操作系统的同步通信系统,其特征在于,还包括测试硬件和MUC评估板,所述串口与MUC评估板连接,所述测试硬件连接于MUC评估板并由主控制模块控制。
7.根据权利要求6所述的一种嵌入式实时操作系统的同步通信系统,其特征在于,所述测试硬件为三色灯硬件,所述MUC评估板AHL-IOT-GEC评估板,MCU芯片的串口连接于AHL-IOT-GEC评估板上的MicroUSB口。
8.一种基于上述同步通信系统的同步通信方法,其特征在于,包括以下步骤,
步骤1:为所要创建的消息队列分配空间,在为消息队列分配空间后,对其进行初始化,设置队列中消息的最大数目及消息的类型;
步骤2:在发送消息前,创建内存池,为消息提供内存块;
步骤3:在创建内存池后,为消息分配空间;
步骤4:在空间分配好后,先将消息队列成员分别赋值,再将数据放入消息队列,并返回消息队列操作状态;
步骤5:消息存放后,获取消息队列中的消息,并且返回操作状态,再得到对应消息队列的地址赋值给新的变量,并且将消息队列成员赋值给新的变量;
步骤6:获得消息队列的数据后,释放内存块。
9.根据权利要求8所述的一种嵌入式实时操作系统的同步通信方法,其特征在于,所述步骤1中,初始化消息队列时确定消息结构体即包含多少种成员。
10.根据权利要求8所述的一种嵌入式实时操作系统的同步通信方法,其特征在于,所述步骤4中,每次存放消息时先申请消息控制块的内存,消息控制块的地址存放在消息队列中,消息的地址存放在消息控制块中。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911393142.8A CN111240828A (zh) | 2019-12-30 | 2019-12-30 | 一种嵌入式实时操作系统的同步通信系统和方法 |
PCT/CN2020/139843 WO2021136127A1 (zh) | 2019-12-30 | 2020-12-28 | 一种嵌入式实时操作系统的同步通信系统和方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911393142.8A CN111240828A (zh) | 2019-12-30 | 2019-12-30 | 一种嵌入式实时操作系统的同步通信系统和方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN111240828A true CN111240828A (zh) | 2020-06-05 |
Family
ID=70879442
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911393142.8A Pending CN111240828A (zh) | 2019-12-30 | 2019-12-30 | 一种嵌入式实时操作系统的同步通信系统和方法 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN111240828A (zh) |
WO (1) | WO2021136127A1 (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112416443A (zh) * | 2020-11-16 | 2021-02-26 | 苏州大学 | 实现实时操作系统在嵌入式架构下的驻留方法 |
WO2021136127A1 (zh) * | 2019-12-30 | 2021-07-08 | 苏州大学 | 一种嵌入式实时操作系统的同步通信系统和方法 |
CN113434600A (zh) * | 2021-06-30 | 2021-09-24 | 青岛海尔科技有限公司 | 一种数据同步方法及装置 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1549108A (zh) * | 2003-05-07 | 2004-11-24 | 中兴通讯股份有限公司 | 一种实现通信过程零拷贝消息队列的方法 |
CN1779646A (zh) * | 2005-09-12 | 2006-05-31 | 浙江大学 | 嵌入式实时操作系统中基于消息对象的任务间通信方法 |
US20160196295A1 (en) * | 2015-01-07 | 2016-07-07 | International Business Machines Corporation | Rendezvous-based optimistic concurrency control |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111240828A (zh) * | 2019-12-30 | 2020-06-05 | 苏州大学 | 一种嵌入式实时操作系统的同步通信系统和方法 |
-
2019
- 2019-12-30 CN CN201911393142.8A patent/CN111240828A/zh active Pending
-
2020
- 2020-12-28 WO PCT/CN2020/139843 patent/WO2021136127A1/zh active Application Filing
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1549108A (zh) * | 2003-05-07 | 2004-11-24 | 中兴通讯股份有限公司 | 一种实现通信过程零拷贝消息队列的方法 |
CN1779646A (zh) * | 2005-09-12 | 2006-05-31 | 浙江大学 | 嵌入式实时操作系统中基于消息对象的任务间通信方法 |
US20160196295A1 (en) * | 2015-01-07 | 2016-07-07 | International Business Machines Corporation | Rendezvous-based optimistic concurrency control |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2021136127A1 (zh) * | 2019-12-30 | 2021-07-08 | 苏州大学 | 一种嵌入式实时操作系统的同步通信系统和方法 |
CN112416443A (zh) * | 2020-11-16 | 2021-02-26 | 苏州大学 | 实现实时操作系统在嵌入式架构下的驻留方法 |
CN113434600A (zh) * | 2021-06-30 | 2021-09-24 | 青岛海尔科技有限公司 | 一种数据同步方法及装置 |
CN113434600B (zh) * | 2021-06-30 | 2023-06-09 | 青岛海尔科技有限公司 | 一种数据同步方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
WO2021136127A1 (zh) | 2021-07-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111240828A (zh) | 一种嵌入式实时操作系统的同步通信系统和方法 | |
US4408323A (en) | Processor facilities for integrated packet and voice switching | |
US5815678A (en) | Method and apparatus for implementing an application programming interface for a communications bus | |
US6014710A (en) | System and method for message transmission between network nodes using remote wires | |
US5682553A (en) | Host computer and network interface using a two-dimensional per-application list of application level free buffers | |
EP0889622B1 (en) | Apparatus and method for remote buffer allocation and management for message passing between network nodes | |
EP0651329A2 (en) | Frame buffering of network packets | |
US9311044B2 (en) | System and method for supporting efficient buffer usage with a single external memory interface | |
US6449281B1 (en) | Interface control of communication between a control processor and a digital signal processor | |
US11010165B2 (en) | Buffer allocation with memory-based configuration | |
CN114730245B (zh) | 用于降低处理器中的功耗的闪存和ram分配的系统和方法 | |
EP0089440B1 (fr) | Procédé et dispositif d'échange d'information entre des terminaux et une unité de commande centrale | |
EP2846470A1 (en) | A method of mobile terminal internal communications | |
KR100478112B1 (ko) | 패킷 제어 시스템 및 통신 방법 | |
US7113516B1 (en) | Transmit buffer with dynamic size queues | |
CN106533976A (zh) | 一种数据包处理方法及装置 | |
US20050041510A1 (en) | Method and apparatus for providing interprocessor communications using shared memory | |
US8898353B1 (en) | System and method for supporting virtual host bus adaptor (VHBA) over infiniband (IB) using a single external memory interface | |
CN114490459A (zh) | 数据传输方法、装置、设备、接收机和存储介质 | |
CN111371799B (zh) | Mctp控制器收发数据的控制方法、装置及设备 | |
KR20150048028A (ko) | 데이터 전송 관리 방법 | |
AU624745B2 (en) | Packet/fast packet switch for voice and data | |
CN116743587B (zh) | 一种基于异构计算加速卡的虚拟网络接口实现方法及装置 | |
US11775360B2 (en) | Cache-based communication for trusted execution environments | |
US9104637B2 (en) | System and method for managing host bus adaptor (HBA) over infiniband (IB) using a single external memory interface |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20200605 |