CN115373875A - 实时操作系统下的基于消息队列的1553b通信接口的封装方法 - Google Patents

实时操作系统下的基于消息队列的1553b通信接口的封装方法 Download PDF

Info

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
Application number
CN202211021145.0A
Other languages
English (en)
Inventor
赵继伟
牛俊慧
许朋飞
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Tianjin Jinhang Computing Technology Research Institute
Original Assignee
Tianjin Jinhang Computing Technology Research Institute
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Tianjin Jinhang Computing Technology Research Institute filed Critical Tianjin Jinhang Computing Technology Research Institute
Priority to CN202211021145.0A priority Critical patent/CN115373875A/zh
Publication of CN115373875A publication Critical patent/CN115373875A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/545Interprogram communication where tasks reside in different layers, e.g. user- and kernel-space
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/546Message passing systems or structures, e.g. queues
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/54Indexing scheme relating to G06F9/54
    • G06F2209/548Queue

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通信技术规格下,基于矢量字的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通信中的总线控制器。
CN202211021145.0A 2022-08-24 2022-08-24 实时操作系统下的基于消息队列的1553b通信接口的封装方法 Pending CN115373875A (zh)

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)

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