CN115840650B - 基于kvisor隔离实时域实现三端系统通信的方法 - Google Patents
基于kvisor隔离实时域实现三端系统通信的方法 Download PDFInfo
- Publication number
- CN115840650B CN115840650B CN202310132171.9A CN202310132171A CN115840650B CN 115840650 B CN115840650 B CN 115840650B CN 202310132171 A CN202310132171 A CN 202310132171A CN 115840650 B CN115840650 B CN 115840650B
- Authority
- CN
- China
- Prior art keywords
- rtos
- communication
- linux
- linux system
- cpu
- 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.)
- Active
Links
Images
Classifications
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Communication Control (AREA)
Abstract
基于kvisor隔离实时域实现三端系统通信的方法,包括如下步骤:启动Linux系统运行kvisor驱动,隔离两个CPU处理器及RTOS系统运行资源,启动两个RTOS系统;Linux系统启动KYOSP框架初始化进程,在独立内存池创建模拟IO层,注册系统CPU间中断号和中断回调函数,在模拟IO层上创建两个通信端点,初始化两个通信端点的地址,通知RTOS系统实现KYOSP框架初始化;RTOS系统在各自的独立内存池上创建模拟IO层,初始化CPU中断号,创建通信端点,初始化通信端点的地址,触发CPU中断并发送应答消息给Linux系统。本发明为解决一颗芯片运行三端系统通信提供了一种高效、稳定的通信方法。
Description
技术领域
本发明涉及单芯片多系统兼容技术领域,具体涉及基于kvisor隔离实时域实现三端系统通信的方法。
背景技术
在嵌入式领域,为了获取Linux系统丰富的开源生态资源并兼得RTOS强实时场景需求;为了降低产品的芯片成本,一直在探索一颗芯片可以运行三端系统并可解决三端系统的通信难点。本发明它采用麒麟软件自研kvisor技术将多核芯片隔离出两个单独的CPU分别运行两个RTOS系统,基于独立内存池上模拟IO层,解决一颗多核芯片上运行多端系统提供一种高效、可靠、稳定通信方法。
现在有很多技术普通采用的方式将Linux系统与RTOS系统分别运行在两种芯片上,采用两个芯片硬件接口例如SPI/I2C/UART等通信方式,建立两个系统之间的连接,这种通信方式通信效率受制于硬件接口,通信速率一般,芯片及相关物料成本较高。另一种方案是异构芯片中集成不同类型的CPU,这种方案是适用于双系统,对于需要三个系统场景还无法满足需求。目前查询到一颗多核芯片上运行三端系统通信的专利中还不涉及此领域的需求。
发明内容
为解决已有技术存在的不足,本发明提供了一种基于kvisor隔离实时域实现三端系统通信的方法,包括如下步骤:
步骤S1:启动Linux系统运行kvisor驱动,隔离两个CPU处理器及RTOS系统运行资源,分别在所隔离的两个CPU处理器上启动两个RTOS系统,所述RTOS系统运行资源包括kvisor实时域;
步骤S2:Linux系统启动KYOSP框架初始化进程,在独立内存池创建模拟IO层,注册系统CPU间中断号和中断回调函数,在模拟IO层上创建两个通信端点,分别用于实现与两个RTOS系统的通信,并初始化两个通信端点的地址,并分别向两个RTOS系统发起CPU中断消息通知两个RTOS系统实现KYOSP框架初始化;
步骤S3:两个RTOS系统各自的kvisor实时域接收到Linux系统发起的CPU中断消息,读取系统资源表,在各自的独立内存池上创建模拟IO层,并初始化各自的CPU中断号,创建各自的通信端点,用于实现与Linux系统的通信,同时初始化各自的通信端点地址,触发各自的CPU中断并发送应答消息给Linux系统;
步骤S4:Linux系统的CPU中断接收到两个RTOS系统初始化KYOSP框架成功的消息,并获取两个RTOS系统的通信端口号和通信端点地址中的目标地址,据此建立起Linux系统与两个RTOS系统之间的通信,若在预定时间内未收到其中任一个RTOS系统初始化KYOSP框架成功的消息,则重新向相应的RTOS系统发起CPU中断消息通知相应的RTOS系统实现KYOSP框架初始化。
其中,Linux系统及两个RTOS系统实现KYOSP框架初始化后,通过如下步骤实现Linux系统向相应的RTOS系统的通信:
步骤S5:Linux系统向相应的RTOS系统发送数据,基于KYMSG消息协议生成消息帧,检查相应的RTOS系统的通信端点写互斥锁;
步骤S6:若写互斥锁已释放,则获取写互斥锁,向相应的RTOS系统的通信端点中的RX_BUF写入消息帧,等待写数据完成并释放写互斥锁,同时触发Linux系统端的CPU中断;
步骤S7:相应的RTOS系统通过其系统内的kvisor实时域监测到Linux系统触发的CPU中断,读取相应的RTOS系统的通信端点中的RX_BUF数据并设置RX_ACK为成功,并触发相应的RTOS系统的CPU中断;
步骤S8:Linux系统监测到相应的RTOS系统的CPU中断,读取相应的RTOS系统的通信端点中的RX_ACK标志,确认数据传输成功。
其中,Linux系统及两个RTOS系统实现KYOSP框架初始化后,通过如下步骤实现相应的RTOS系统向Linux系统的通信:
步骤Sa:相应的RTOS系统向Linux系统发送数据,基于KYMSG消息协议生成消息帧,检查Linux系统中与相应的RTOS系统通信的通信端点写互斥锁;
步骤Sb:若写互斥锁已释放,则获取写互斥锁,向Linux系统中与相应的RTOS系统通信的通信端点中的RX_BUF写入消息帧,等待写数据完成并释放写互斥锁,同时触发相应的RTOS系统端的CPU中断;
步骤Sc:Linux系统监测到应的RTOS系统触发的CPU中断,读取Linux系统中与相应的RTOS系统通信的通信端点中的RX_BUF数据并设置RX_ACK为成功,并触发相应的Linux系统的CPU中断;
步骤Sd:相应的RTOS系统过其系统内的kvisor实时域监测到Linux系统的CPU中断,读取Linux系统中与相应的RTOS系统通信的通信端点中的RX_ACK标志,确认数据传输成功。
本发明提供的基于kvisor隔离实时域实现三端系统通信的方法,为解决一颗芯片运行三端系统通信提供了一种高效、稳定的通信方法。
附图说明
图1:基于本发明的三端系统通信方法所构建的KYOSP逻辑框架图。
图2:本发明的基于kvisor隔离实时域实现三端系统通信的方法实现流程图。
具体实施方式
为了对本发明的技术方案及有益效果有更进一步的了解,下面结合附图详细说明本发明的技术方案及其产生的有益效果。
本发明涉及到的术语解释如下:
三端系统:指的Linux系统、两个RTOS系统,其中RTOS系统可以部署RT-thread、freertos、Vxworks实时系统。
kvisor:指的是可以将多核芯片隔离出某个CPU技术。
模拟io层:指的是模拟数据传输输入口,模拟数据传输输出口。
独立内存池:指的Linux系统预留出内存空间,用于三端系统通信内存空间。
KYOSP:指的是用于三端系统通信方法的框架层。
KYMSG:指的是用于三端系统通信方法的消息协议层。
本发明主要为解决一颗多核芯片上运行多端系统提供一种高效、可靠、稳定通信方法。它采用麒麟软件自研kvisor技术将多核芯片隔离出两个单独的CPU分别运行两个RTOS系统,为解决多端系统之间的相互高效通信问题而探索出一种基于模拟IO层上实现KYMSG通信方法。
多端系统KYOSP通信流程,首先构建如图1所示的KYOSP逻辑框架:
1、启动Linux系统运行kvisor驱动,隔离两个CPU处理器(即图1中的CPU2和CPU3)及RTOS系统运行资源(包括下文所涉及到的实时域kvisor A及kvisor B),分别在两个CPU上启动两个RTOS系统(即图1中的RTOS1和RTOS2)。
2、Linux端系统启动KYOSP框架初始化进程,在独立内存池创建模拟IO层,注册系统CPU间中断号和中断回调函数。在模拟IO层上创建L1、L2通信端点(即图2中的“端点L1”和“端点L2”),初始化L1、L2端点地址(即图2中的“源地址”和“目标地址”,下同),并发起CPU0中断消息通知RTOS1和RTOS2系统中KYOSP框架初始化。
3、kvisor A接收到Linux端中断信息,唤起RTOS1系统读取系统资源表(系统资源表中涉及到kvisor驱动分配给两个RTOS系统的cpu、内存及中断等信息),在独立内存池上创建模拟IO层,初始CPU2中断号,创建R1通信端点(即图2中的“端点R1”)和初始化端点地址,触发CPU2中断并发送应答消息给Linux端。
4、kvisor B接收到Linux端中断信息,唤起RTOS2系统读取系统资源表,在独立内存池上创建模拟IO层,初始CPU3中断号,创建R2通信端点(即图2中的“端点R2”)和初始化端点地址,触发CPU3中断并发送应答消息给Linux端。
5、Linux系统CPU中断接收到两端RTOS系统初始化KYOSP成功,并获取R1、R2端口号和目标地址。若在预定的时间内未接收到RTOS系统初始化成功应答消息,则重新发送KYOSP初始化信息。
KYOSP初始化框架构建成功后,也即多端通信系统建立起来后,采用自定义KYMSG通信协议,它使用二进制消息帧,具备数据量小,传输速度快。它由消息帧(msg_type)、源地址(msg_src_addr)、目标地址(msg_dst_addr)、数据长度(msg_len)、消息体(data[])组成,如下表:
请参阅图2所示,为本发明的基于kvisor隔离实时域实现三端系统通信的方法实现流程图,显示图1中的Linux端及RTOS系统的KYMSG通信协议层之间KYMSG通信流程的实现框架,本发明基于所构建的KYOSP框架,通信阶段通信流程如下:
6、Linux系统向RTOS1系统发送数据,基于KYMSG消息协议(即通信协议)生成消息帧,检查端点R1写互斥锁(即图2中的“write_lock”,下同)。若写互斥锁已释放,则获取写互斥锁,由端点L1中TX_BUF向端点R1中RX_BUF写入消息帧,等待写数据完成设置TX_ACK为成功并释放写互斥锁,同时触发CPU0中断,RTOS1系统通过kvisor A监测到CPU0中断,读取端点R1中RX_BUF数据并设置RX_ACK为成功,同时触发CPU2中断。Linux端监测到CPU2中断,读取端点R1中RX_ACK标志,确认数据传输成功。
7、RTOS1系统向Linux端发送数据,基于KYMSG消息协议生成消息帧,检查端点L1写互斥锁。若写互斥锁已释放,则获取写互斥锁,由端点R1中TX_BUF向端点L1中RX_BUF写入消息帧,等待写数据完成设置TX_ACK为成功并释放写互斥锁,同时触发CPU2中断,Linux系统监测到CPU2中断,读取端点L1中RX_BUF数据并设置RX_ACK为成功,同时触发CPU0中断。RTOS1系统通过kvisor A监测到CPU0中断,读取端点L1中RX_ACK标志,确认数据传输成功。
8、Linux系统向RTOS2系统发送数据,基于KYMSG消息协议生成消息帧,检查端点R2写互斥锁。若写互斥锁已释放,则获取写互斥锁,由端点L2中TX_BUF向端点R2中RX_BUF写入消息帧,等待写数据完成设置TX_ACK为成功并释放写互斥锁,同时触发CPU0中断,RTOS2系统通过kvisor B监测到CPU0中断,读取端点R2中RX_BUF数据并设置RX_ACK为成功,同时触发CPU3中断。Linux端监测到CPU3中断,读取端点R2中RX_ACK标志,确认数据传输成功。
9、RTOS2系统向Linux端发送数据,基于KYMSG消息协议生成消息帧,检查端点L2写互斥锁。若写互斥锁已释放,则获取写互斥锁,由端点R2中TX_BUF向端点L2中RX_BUF写入消息帧,等待写数据完成设置TX_ACK为成功并释放写互斥锁,同时触发CPU3中断,Linux系统监测到CPU3中断,读取端点L2中RX_BUF数据并设置RX_ACK为成功,同时触发CPU0中断。RTOS2系统通过kvisor B监测到CPU0中断,读取端点L2中RX_ACK标志,确认数据传输成功。
本发明中,所谓的“TX_BUF”为存放发送二进制消息帧的缓存池;“TX_ACK”是发送数据帧应答信息,表示通信数据发送成功或者失败的状态;“RX_BUF”为存放接收二进制消息帧的缓存池;“RX_ACK”是接收数据帧应答信息,表示通信数据接收成功或者失败的状态。
本发明的技术效果如下:
1、为解决一颗芯片运行三端系统通信提供了一种高效、稳定的通信方法。
2、该通信方法使用二进制消息帧,具备数据量小,传输速度快。
3、该方法采用独立端点通信方式,系统间通信耦合低,抗干扰强。
虽然本发明已利用上述较佳实施例进行说明,然其并非用以限定本发明的保护范围,任何本领域技术人员在不脱离本发明的精神和范围之内,相对上述实施例进行各种变动与修改仍属本发明所保护的范围,因此本发明的保护范围以权利要求书所界定的为准。
Claims (3)
1.一种基于kvisor隔离实时域实现三端系统通信的方法,其特征在于,包括如下步骤:
步骤S1:启动Linux系统运行kvisor驱动,隔离两个CPU处理器及RTOS系统运行资源,分别在所隔离的两个CPU处理器上启动两个RTOS系统,所述RTOS系统运行资源包括kvisor实时域;
步骤S2:Linux系统启动KYOSP框架初始化进程,在独立内存池创建模拟IO层,注册系统CPU间中断号和中断回调函数,在模拟IO层上创建两个通信端点,分别用于实现与两个RTOS系统的通信,并初始化两个通信端点的地址,并分别向两个RTOS系统发起CPU中断消息通知两个RTOS系统实现KYOSP框架初始化,其中,独立内存池为Linux系统预留出的用于三端系统通信的内存空间;
步骤S3:两个RTOS系统各自的kvisor实时域接收到Linux系统发起的CPU中断消息,读取系统资源表,在各自的独立内存池上创建模拟IO层,并初始化各自的CPU中断号,创建各自的通信端点,用于实现与Linux系统的通信,同时初始化各自的通信端点地址,触发各自的CPU中断并发送应答消息给Linux系统;
步骤S4:Linux系统的CPU中断接收到两个RTOS系统初始化KYOSP框架成功的消息,并获取两个RTOS系统的通信端口号和通信端点地址中的目标地址,据此建立起Linux系统与两个RTOS系统之间的通信,若在预定时间内未收到其中任一个RTOS系统初始化KYOSP框架成功的消息,则重新向相应的RTOS系统发起CPU中断消息通知相应的RTOS系统实现KYOSP框架初始化。
2.如权利要求1所述的基于kvisor隔离实时域实现三端系统通信的方法,其特征在于,Linux系统及两个RTOS系统实现KYOSP框架初始化后,通过如下步骤实现Linux系统向相应的RTOS系统的通信:
步骤S5:Linux系统向相应的RTOS系统发送数据,基于KYMSG消息协议生成消息帧,检查相应的RTOS系统的通信端点写互斥锁;
步骤S6:若写互斥锁已释放,则获取写互斥锁,向相应的RTOS系统的通信端点中的RX_BUF写入消息帧,等待写数据完成并释放写互斥锁,同时触发Linux系统端的CPU中断;
步骤S7:相应的RTOS系统通过其系统内的kvisor实时域监测到Linux系统触发的CPU中断,读取相应的RTOS系统的通信端点中的RX_BUF数据并设置RX_ACK为成功,并触发相应的RTOS系统的CPU中断;
步骤S8:Linux系统监测到相应的RTOS系统的CPU中断,读取相应的RTOS系统的通信端点中的RX_ACK标志,确认数据传输成功。
3.如权利要求1所述的基于kvisor隔离实时域实现三端系统通信的方法,其特征在于,Linux系统及两个RTOS系统实现KYOSP框架初始化后,通过如下步骤实现相应的RTOS系统向Linux系统的通信:
步骤Sa:相应的RTOS系统向Linux系统发送数据,基于KYMSG消息协议生成消息帧,检查Linux系统中与相应的RTOS系统通信的通信端点写互斥锁;
步骤Sb:若写互斥锁已释放,则获取写互斥锁,向Linux系统中与相应的RTOS系统通信的通信端点中的RX_BUF写入消息帧,等待写数据完成并释放写互斥锁,同时触发相应的RTOS系统端的CPU中断;
步骤Sc:Linux系统监测到应的RTOS系统触发的CPU中断,读取Linux系统中与相应的RTOS系统通信的通信端点中的RX_BUF数据并设置RX_ACK为成功,并触发相应的Linux系统的CPU中断;
步骤Sd:相应的RTOS系统通过其系统内的kvisor实时域监测到Linux系统的CPU中断,读取Linux系统中与相应的RTOS系统通信的通信端点中的RX_ACK标志,确认数据传输成功。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310132171.9A CN115840650B (zh) | 2023-02-20 | 2023-02-20 | 基于kvisor隔离实时域实现三端系统通信的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310132171.9A CN115840650B (zh) | 2023-02-20 | 2023-02-20 | 基于kvisor隔离实时域实现三端系统通信的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN115840650A CN115840650A (zh) | 2023-03-24 |
CN115840650B true CN115840650B (zh) | 2023-06-02 |
Family
ID=85579853
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310132171.9A Active CN115840650B (zh) | 2023-02-20 | 2023-02-20 | 基于kvisor隔离实时域实现三端系统通信的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115840650B (zh) |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103942178A (zh) * | 2014-03-03 | 2014-07-23 | 浙江大学 | 多核处理器上实时操作系统与非实时操作系统之间的通信方法 |
CN114416387A (zh) * | 2021-12-06 | 2022-04-29 | 合肥杰发科技有限公司 | 基于同构多核的多操作系统及通信方法、芯片 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112328533A (zh) * | 2020-11-09 | 2021-02-05 | 哲库科技(上海)有限公司 | 多核处理系统及其核间通信方法、存储介质 |
CN115080277B (zh) * | 2022-07-21 | 2022-12-06 | 佛山智能装备技术研究院 | 一种多核系统的核间通信系统 |
CN115203142A (zh) * | 2022-07-27 | 2022-10-18 | 重庆大学 | 一种多核核间实时通信系统及方法 |
CN115599502B (zh) * | 2022-10-17 | 2023-03-21 | 麒麟软件有限公司 | 基于虚拟机监控器的rtos网络共享方法 |
-
2023
- 2023-02-20 CN CN202310132171.9A patent/CN115840650B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103942178A (zh) * | 2014-03-03 | 2014-07-23 | 浙江大学 | 多核处理器上实时操作系统与非实时操作系统之间的通信方法 |
CN114416387A (zh) * | 2021-12-06 | 2022-04-29 | 合肥杰发科技有限公司 | 基于同构多核的多操作系统及通信方法、芯片 |
Also Published As
Publication number | Publication date |
---|---|
CN115840650A (zh) | 2023-03-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
WO2023284699A1 (zh) | 基于Linux系统的协议栈数据传输方法、计算机设备和存储介质 | |
US5758157A (en) | Method and system for providing service processor capability in a data processing by transmitting service processor requests between processing complexes | |
CN112667420B (zh) | 实现异构系统内部通信的方法、装置、设备及存储介质 | |
CN103942178A (zh) | 多核处理器上实时操作系统与非实时操作系统之间的通信方法 | |
KR20070116102A (ko) | Dma 컨트롤러, 노드, 데이터 전송 제어 방법 및 프로그램을 기록한 컴퓨터 판독가능한 기록 매체 | |
US6715099B1 (en) | High-availability architecture using high-speed pipes | |
CN108710597B (zh) | 一种利用gpio优化mcu通信的方法及系统 | |
JP2001117892A (ja) | 内部バスを介して通信するマルチプロセッサ・コンピュータシステムとその通信方法 | |
CN113626365A (zh) | 一种基于spi总线的通信方法 | |
WO2017117396A1 (en) | Modular communication framework | |
CN107453845B (zh) | 应答确认方法及设备 | |
CN103186458A (zh) | 基于嵌入式操作系统的仿真调试系统及方法 | |
CN113821309B (zh) | 一种微内核虚拟机间的通信方法、装置、设备及存储介质 | |
CN115840650B (zh) | 基于kvisor隔离实时域实现三端系统通信的方法 | |
CN112929418B (zh) | 一种基于发布订阅的RapidIO高速通信方法及系统 | |
US4977499A (en) | Method and apparatus for commanding operations on a computer network | |
EP3361711A1 (en) | Method for synchronizing a service between a service provider and a service consumer and system | |
CN111190840A (zh) | 基于现场可编程门阵列控制的多方中央处理器通信架构 | |
CN110971621A (zh) | 基于sdio接口的嵌入式多cpu互联电路、互联方法及驱动方法 | |
KR20050080704A (ko) | 프로세서간 데이터 전송 장치 및 방법 | |
US8301817B1 (en) | Ring bus for sharing resources among multiple engines | |
CN111427814B (zh) | 一种基于amp系统的核间通讯方法、终端及存储介质 | |
US7139832B2 (en) | Data transfer and intermission between parent and child process | |
CN113886297A (zh) | 一种基于dma的spi并发通讯se装置及方法 | |
CN111045974A (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |