CN115373875A - 实时操作系统下的基于消息队列的1553b通信接口的封装方法 - Google Patents
实时操作系统下的基于消息队列的1553b通信接口的封装方法 Download PDFInfo
- Publication number
- CN115373875A CN115373875A CN202211021145.0A CN202211021145A CN115373875A CN 115373875 A CN115373875 A CN 115373875A CN 202211021145 A CN202211021145 A CN 202211021145A CN 115373875 A CN115373875 A CN 115373875A
- Authority
- CN
- China
- Prior art keywords
- message
- queue
- task
- error
- receiving
- 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/54—Interprogram communication
- G06F9/545—Interprogram communication where tasks reside in different layers, e.g. user- and kernel-space
-
- 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/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
-
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/54—Indexing scheme relating to G06F9/54
- G06F2209/548—Queue
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Communication Control (AREA)
Abstract
本发明涉及一种实时操作系统下的基于消息队列的1553B通信接口的封装方法,属于实时软件的开发技术领域。本发明以实时操作系统的任务的组织形式,将上层应用与具体的1553B通信解耦,使上层任务仅关注与通信内容和通信时间相关的部分,不必关心1553B通信过程中如何与硬件交互以及基于矢量字的通信协议过程,极大地提高了1553B通信软件的可移植性,也使得上层的调用变得更加方便好用。同时,利用实时操作系统优先级任务的功能,将上层任务的优先级设置得高于1553B任务,保证1553B任务在与硬件通信以及等待对端RT反应造成的延时,不会干扰上层任务的实时性,进而兼顾了高实时性的要求。
Description
技术领域
本发明属于实时软件的开发技术领域,具体涉及一种实时操作系统下的基于消息队列的1553B通信接口的封装方法。
背景技术
1553B通信是一种在恶劣环境下常用的高可靠性的通信方式。在1553B通信技术规格下,基于矢量字的1553B通信协议是一种常用的通信协议。在该通信协议中,总线控制器(简称为BC)向远程终端(简称RT)发送数据时,放到RT相应的子地址空间即可;当需要从RT获取数据时,先通过有数据字的模式命令,从RT获取一个16位的数据字,这个数据字称为矢量字。
矢量字会根据需求,约定来代表该RT一共30个子地址的数据准备情况,标记哪些子地址的数据已经准备完成。BC通过矢量字,获取了RT准备好数据的子地址列表,再根据列表从RT获取对应子地址中的数据。
这种通信协议能够有效地协调BC与RT的通信,避免二者在临界数据空间中产生读写冲突。但是该通信协议步骤较多,且由于常规1553B总线的通信带宽并不大,因此完整地完成上述步骤需要较长的时间。而1553B通信经常在高实时性要求的需求中使用。没有合理地使用基于矢量字的1553B通信协议,会极大地影响整个系统的实时性。
发明内容
(一)要解决的技术问题
本发明要解决的技术问题是:如何设计一种在实时操作系统下的1553B通信接口封装方法,作为1553B通信中的总线控制器BC的功能,以实现在保证实时性的前提下,完成基于矢量字的1553B通信协议。
(二)技术方案
为了解决上述技术问题,本发明提供了一种实时操作系统下的基于消息队列的1553B通信接口的封装方法,该方法中,将基于矢量字的1553B通信协议功能放在一个1553B任务中,对上层需要调用1553B通信的任务,提供基于四个消息队列的软件接口,来实现在保证实时性的前提下,完成基于矢量字的1553B通信协议。
优选地,所述四个消息队列作为上层任务调用1553B通信的接口,四个消息队列的消息格式设计如下:
发送队列消息:消息ID,目标RT地址,二元组<子地址,数据数组>的数组和二元组个数;
接收命令队列消息:消息ID,目标RT地址,期望的矢量字,超时时间;
接收队列消息:消息ID,来源RT地址,二元组<子地址,数据数组>的数组和二元组个数;
错误队列消息:消息ID,错误内容;
其中,错误队列消息的消息ID,对应着发送队列消息和接收命令队列消息的消息ID,指示是哪个队列哪个消息发生了错误;接收队列消息的消息ID,对应着接收命令队列消息的消息ID,标记来自于哪个接收命令;错误队列的错误内容描述错误类型和一些错误细节。
优选地,任务的运行流程,该运行流程是一个周期性循环的流程,1553B任务首先从发送队列中获取上层任务下发的消息,根据消息内容,与1553B通信硬件沟通,完成1553B通信的发送,然后检测并记录是否发送成功,在发送失败时将对应的记录作为后面的错误内容的一部分;
完成发送相关的工作后,1553B任务尽可能地获取接收命令队列中的全部消息,将已经超时的接收命令队列消息的消息ID记录下来,然后抛弃这些超时的接收命令,如果抛弃后还有未超时的接收命令,那么根据这些接收命令的内容,1553B任务与硬件沟通,获取对应RT的矢量字;
接着1553B任务将对应的接收命令和矢量字一一比对,把不匹配的接收命令放回接收命令队列;若存在与获取的矢量字匹配的接收命令,1553B任务再根据这些矢量字所对应的子地址,从对应的RT中获取具体的数据;将获取来的数据编组成二元组<子地址,数据数组>数组的形式,连同接收命令的消息ID,汇总成接收队列消息的格式,写入接收队列;
最后,1553B任务汇总在发送、获取矢量字、接收过程中的错误消息,按照错误队列消息的格式,写入错误队列,等待一段时间,进行下一次循环。
优选地,该方法中,所述上层任务的优先级高于1553B任务,以保证1553B任务不会干扰到上层任务的实时性,在执行1553B发送工作时,上层任务在需要的时候,将需要发送的信息,以发送队列消息的格式,写入发送队列即可。
优选地,在执行1553B接收工作时,上层任务维护一段以接收命令队列消息的消息ID为索引的内存空间,用于存储接收来的数据。
优选地,所述上层任务在通过1553B接收数据的时候,根据目标RT地址、期望的矢量字、超时时间,以及与需求相关的消息ID,组织成接收命令队列消息,写入接收命令队列。
优选地,所述上层任务周期性地查询接收队列,若接收队列中有消息,则根据消息的消息ID,将内容存入上文提到的以消息ID为索引的内存空间中,以供使用。
优选地,所述上层任务在处理与1553B通信错误的问题时,周期性地查询错误队列,根据错误队列消息的消息ID和错误内容,做出相应的动作。
本发明还提供了一种用于实现所述方法的系统。
优选地,所述系统为1553B通信中的总线控制器。
(三)有益效果
本发明以实时操作系统的任务的组织形式,将上层应用与具体的1553B通信解耦,使上层任务仅关注与通信内容和通信时间相关的部分,不必关心1553B通信过程中如何与硬件交互以及基于矢量字的通信协议过程,极大地提高了1553B通信软件的可移植性,也使得上层的调用变得更加方便好用。同时,利用实时操作系统优先级任务的功能,将上层任务的优先级设置得高于1553B任务,保证1553B任务在与硬件通信以及等待对端RT反应造成的延时,不会干扰上层任务的实时性,进而兼顾了高实时性的要求。
附图说明
图1为本发明实施例提供的实现原理图;
图2为本发明实施例提供的1553B任务的运行流程图。
具体实施方式
为使本发明的目的、内容、和优点更加清楚,下面结合附图和实施例,对本发明的具体实施方式作进一步详细描述。
如图1所示,本发明设计了一种在实时操作系统下,基于消息队列的1553B通信接口封装方法,作为1553B通信中的总线控制器BC的功能,本发明将基于矢量字的1553B通信协议功能的主要部分放在了一个任务——1553B任务中,对上层需要调用1553B通信的任务,提供了基于四个消息队列的软件接口,来实现在保证实时性的前提下,完成基于矢量字的1553B通信协议。
本发明主要涉及以下几个部分:1、四个消息队列的消息格式;2、1553B任务的运行流程;3、上层任务的调用方法。
本发明需要用到四个消息队列作为上层任务调用1553B通信的接口,四个消息队列的消息格式设计如下:
发送队列消息:消息ID,目标RT地址,二元组<子地址,数据数组>的数组和二元组个数;
接收命令队列消息:消息ID,目标RT地址,期望的矢量字,超时时间;
接收队列消息:消息ID,来源RT地址,二元组<子地址,数据数组>的数组和二元组个数;
错误队列消息:消息ID,错误内容。
其中,错误队列消息的消息ID,对应着发送队列消息和接收命令队列消息的消息ID,指示是哪个队列哪个消息发生了错误;接收队列消息的消息ID,对应着接收命令队列消息的消息ID,标记来自于哪个接收命令;错误队列的错误内容描述错误类型和一些错误细节。
1553B任务的运行流程如图2所示,是一个周期性循环的流程。1553B任务首先从发送队列中获取上层任务下发的消息,根据消息内容,与1553B通信硬件沟通,完成1553B通信的发送,然后检测并记录是否发送成功,作为后面的错误内容(错误信息)的一部分。
完成发送相关的工作后,1553B任务尽可能地获取接收命令队列中的全部消息,将已经超时的接收命令队列消息的消息ID记录下来,然后抛弃这些超时的接收命令。如果抛弃后还有没有超时的接收命令,那么根据这些接收命令的内容,1553B任务与硬件沟通,获取对应RT的矢量字。
接着1553B任务将对应的接收命令和矢量字一一比对,把不匹配的接收命令放回接收命令队列;若存在与获取的矢量字匹配的接收命令,1553B任务再根据这些矢量字所对应的子地址,从对应的RT中获取具体的数据;将获取来的数据编组成二元组<子地址,数据数组>数组的形式,连同接收命令的消息ID,汇总成接收队列消息的格式,写入接收队列。
最后,1553B任务汇总在发送、获取矢量字、接收过程中的错误消息,按照错误队列消息的格式,写入错误队列,等待一段时间,进行下一次循环。
上层任务的优先级要高于1553B任务,以保证1553B任务不会干扰到上层任务的实时性。在执行1553B发送工作时,上层任务在需要的时候,将需要发送的信息,以发送队列消息的格式,写入发送队列即可。
在执行1553B接收工作时,上层任务需要维护一段以接收命令队列消息的消息ID为索引的内存空间,用以存储接收来的数据。上层任务在需要通过1553B接收数据的时候,根据目标RT地址、期望的矢量字、超时时间,以及与需求相关的消息ID,组织成接收命令队列消息,写入接收命令队列。上层任务要周期性地查询接收队列,若接收队列中有消息,根据消息的消息ID,将内容存入上文提到的以消息ID为索引的内存空间中,以供使用。
上层任务在处理与1553B通信错误的问题时,周期性地查询错误队列,根据错误队列消息的消息ID和错误内容,做出相应的动作。
可以看出,本发明以实时操作系统的任务的组织形式,将上层应用与具体的1553B通信解耦,使上层任务仅关注与通信内容和通信时间相关的部分,不必关心1553B通信过程中如何与硬件交互以及基于矢量字的通信协议过程,极大的提高了1553B通信软件的可移植性,也使得上层的调用变得更加方便好用。同时,利用实时操作系统优先级任务的功能,将上层任务的优先级设置得高于1553B任务,保证1553B任务在与硬件通信以及等待对端RT反应造成的延时,不会干扰上层任务的实时性,进而兼顾了高实时性的要求。。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明技术原理的前提下,还可以做出若干改进和变形,这些改进和变形也应视为本发明的保护范围。
Claims (10)
1.一种实时操作系统下的基于消息队列的1553B通信接口的封装方法,其特征在于,该方法中,将基于矢量字的1553B通信协议功能放在一个1553B任务中,对上层需要调用1553B通信的任务,提供基于四个消息队列的软件接口,来实现在保证实时性的前提下,完成基于矢量字的1553B通信协议。
2.如权利要求1所述的方法,其特征在于,所述四个消息队列作为上层任务调用1553B通信的接口,四个消息队列的消息格式设计如下:
发送队列消息:消息ID,目标RT地址,二元组<子地址,数据数组>的数组和二元组个数;
接收命令队列消息:消息ID,目标RT地址,期望的矢量字,超时时间;
接收队列消息:消息ID,来源RT地址,二元组<子地址,数据数组>的数组和二元组个数;
错误队列消息:消息ID,错误内容;
其中,错误队列消息的消息ID,对应着发送队列消息和接收命令队列消息的消息ID,指示是哪个队列哪个消息发生了错误;接收队列消息的消息ID,对应着接收命令队列消息的消息ID,标记来自于哪个接收命令;错误队列的错误内容描述错误类型和一些错误细节。
3.如权利要求2所述的方法,其特征在于,该方法中,实现1553B任务的运行流程,该运行流程是一个周期性循环的流程,1553B任务首先从发送队列中获取上层任务下发的消息,根据消息内容,与1553B通信硬件沟通,完成1553B通信的发送,然后检测并记录是否发送成功,在发送失败时将对应的记录作为后面的错误内容的一部分;
完成发送相关的工作后,1553B任务尽可能地获取接收命令队列中的全部消息,将已经超时的接收命令队列消息的消息ID记录下来,然后抛弃这些超时的接收命令,如果抛弃后还有未超时的接收命令,那么根据这些接收命令的内容,1553B任务与硬件沟通,获取对应RT的矢量字;
接着1553B任务将对应的接收命令和矢量字一一比对,把不匹配的接收命令放回接收命令队列;若存在与获取的矢量字匹配的接收命令,1553B任务再根据这些矢量字所对应的子地址,从对应的RT中获取具体的数据;将获取来的数据编组成二元组<子地址,数据数组>数组的形式,连同接收命令的消息ID,汇总成接收队列消息的格式,写入接收队列;
最后,1553B任务汇总在发送、获取矢量字、接收过程中的错误消息,按照错误队列消息的格式,写入错误队列,等待一段时间,进行下一次循环。
4.如权利要求3所述的方法,其特征在于,该方法中,所述上层任务的优先级高于1553B任务,以保证1553B任务不会干扰到上层任务的实时性,在执行1553B发送工作时,上层任务在需要的时候,将需要发送的信息,以发送队列消息的格式,写入发送队列即可。
5.如权利要求4所述的方法,其特征在于,在执行1553B接收工作时,上层任务维护一段以接收命令队列消息的消息ID为索引的内存空间,用于存储接收来的数据。
6.如权利要求5所述的方法,其特征在于,所述上层任务在通过1553B接收数据的时候,根据目标RT地址、期望的矢量字、超时时间,以及与需求相关的消息ID,组织成接收命令队列消息,写入接收命令队列。
7.如权利要求6所述的方法,其特征在于,所述上层任务周期性地查询接收队列,若接收队列中有消息,则根据消息的消息ID,将内容存入上文提到的以消息ID为索引的内存空间中,以供使用。
8.如权利要求7所述的方法,其特征在于,所述上层任务在处理与1553B通信错误的问题时,周期性地查询错误队列,根据错误队列消息的消息ID和错误内容,做出相应的动作。
9.一种用于实现如权利要求1至8中任一项所述方法的系统。
10.如权利要求9所述的系统,其特征在于,所述系统为1553B通信中的总线控制器。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211021145.0A CN115373875A (zh) | 2022-08-24 | 2022-08-24 | 实时操作系统下的基于消息队列的1553b通信接口的封装方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211021145.0A CN115373875A (zh) | 2022-08-24 | 2022-08-24 | 实时操作系统下的基于消息队列的1553b通信接口的封装方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115373875A true CN115373875A (zh) | 2022-11-22 |
Family
ID=84066715
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211021145.0A Pending CN115373875A (zh) | 2022-08-24 | 2022-08-24 | 实时操作系统下的基于消息队列的1553b通信接口的封装方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115373875A (zh) |
-
2022
- 2022-08-24 CN CN202211021145.0A patent/CN115373875A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102970202B (zh) | 基于抢占式策略的1553b总线通信方法 | |
US7640549B2 (en) | System and method for efficiently exchanging data among processes | |
JPS63234343A (ja) | 通信媒体に結合された複数のステーションからなるシステムのステーションとそれらステーション間の通信方法 | |
WO2013131440A1 (en) | Network communication method and system | |
US10929332B2 (en) | USB transmission device and transmission method | |
CN100458703C (zh) | 一种跨平台函数调用系统 | |
JPH06119299A (ja) | マルチプロセッサシステム及びデータダウンロード方法 | |
CN108737397B (zh) | 一种实现路由器中业务与协议栈之间数据交互的方法 | |
CN109062857B (zh) | 一种能高速实现多处理器间通信的新型消息控制器及其通信方法 | |
CN113824653A (zh) | 一种兼容多协议业务接入的方法和系统 | |
CN115373875A (zh) | 实时操作系统下的基于消息队列的1553b通信接口的封装方法 | |
US6539447B1 (en) | Interrupt control system | |
US20220156006A1 (en) | System and method for exchanging messages | |
CN114077562A (zh) | 一种1553b总线控制器协议处理ip核 | |
CN101471955A (zh) | 一种双控制器网络储存环境下的设备数据写入方法 | |
US20030154288A1 (en) | Server-client system and data transfer method used in the same system | |
CN102117261A (zh) | 一种芯片内部处理器之间的通信方法 | |
CN102147748B (zh) | 用户空间中断服务方法及系统 | |
CN114296809B (zh) | 一种基于操作系统的对象模型构建方法及其系统调用接口 | |
CN112199205B (zh) | 一种异构平台间的程序通信方法 | |
US11714608B2 (en) | Device and method for handling programming language function | |
WO2022126534A1 (zh) | 数据处理方法及相关设备 | |
CN214670582U (zh) | 一种基于1553b总线协议的处理器ip核 | |
KR100272027B1 (ko) | 이동통신교환기용운영체계에서의입/출력드라이버제어방법 | |
CN116594946A (zh) | 串行通信方法、计算机可读存储介质与芯片 |
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 |