多核异构核间通信Mailbox vs rpmsg

news2024/11/26 2:38:24

目录

一、关键术语解释

二、Mailbox与rpmsg对比 

三、rpmsg传输流程


异构核间数据通过共享内存实现数据传递,通过中断来触发发送、接收。

一、关键术语解释

IPC
Inter-Processor Communication

MailBox
IP which provides queued interrupt mechanism for communication channel

VRing
Ring Buffer in shared memory

Rpmsg
Remote Processor Messaging,queue on local memory

二、Mailbox与rpmsg对比 

Mailbox

  • 支持数据长度:4Bytes * 15reg = 60Bytes (不同SoC可能不同)
  • 传输方式:直接使用mbox寄存器
  • 应用场景:简单控制命令,比如相机启流停流

rpmsg

  • 支持数据长度:512Bytes(496Bytes数据有效载荷,前16Bytes称为rpmsg标头,由传输层内部使用,其中包含源地址、目标地址和数据大小。)
  • 传输方式:使用mbox作为中断传递,在mbox中传递vqid(Virtual Queue ID,标识虚拟消息队列的id),实际的IPC数据存在rpmsg-buf区的VRing中。
  • 应用场景:较长控制命令

注意,上述数据长度芯片厂商都是可以修改,甚至rpmsg的实现方式。

另有共享内存方案,也是基于Mailbox,会比rpmsg传输内容更多,没有被广泛采用,在此不做深入探讨。有兴趣看下面博客:

https://betheme.net/qianduan/5063.html?action=onClickhttps://betheme.net/qianduan/5063.html?action=onClick

三、rpmsg传输流程

在这里插入图片描述

rpmsg的步骤顺序描述如下:

1、应用程序向给定目的地(CPU、端点)发送消息
2、消息首先从应用程序复制到两个CPU之间使用的VRING。 此后,IPC 驱动程序在硬件邮箱中发布 VRING ID。
3、这会触发目标 CPU 上的中断。 在目标 CPU 的 ISR 中,它提取 VRING ID,然后根据 VRING ID 检查该 VRING 中的任何消息
4、如果收到消息,它从VRING中提取消息并将其放入目标RPMSG端点队列中。 然后触发在此 RPMSG 端点上阻止的应用程序
5、然后应用程序处理接收到的消息,并使用相同的RPMSG 和VRING 机制在相反方向回复发送方CPU。

Core1
application调用rpmsg_send接口,把数据copy到本地queue
virtio-ring把data从localqueu搬运到共享内存中的vring中
同时写mailbox寄存器进行kick操作

Core2
触发IPC中断
中断处理函数中把数据从vring中搬运到localqueue
中断处理函数callback,receivecount ++
上层APP调用rpmsg_recv,把数据copy到应用中去

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/922615.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

压力传感器模拟信号(频率)转数字信号的问题

压力传感器模拟信号(频率)转数字信号的问题 三河凡科科技飞讯教学篇:压力传感器模拟信号(频率)转数字信号是现代控制系统中十分重要的一个问题。在许多工业应用中,压力传感器模拟信号需要被准确地转换成数…

MyBatis进阶:告别SQL注入!MyBatis分页与特殊字符的正确使用方式

目录 引言 一、使用正确的方式实现分页 1.1.什么是分页 1.2.MyBatis中的分页实现方式 1.3.避免SQL注入的技巧 二、特殊字符的正确使用方式 2.1.什么是特殊字符 2.2.特殊字符在SQL查询中的作用 2.3.如何避免特殊字符引起的问题 2.3.1.使用CDATA区段 2.3.2.使用实体引…

微服务中间件--MQ服务异步通信

MQ服务异步通信 MQ服务异步通信a.消息可靠性1) 生产者消息确认2) 消息持久化3) 消费者消息确认4) 消费者失败重试4.a) 本地重试4.b) 失败策略 b.死信交换机1) 初识死信交换机2) TTL3) 延迟队列a) 安装延迟队列插件b) SpringAMQP使用延迟队列插件 c.惰性队列1) 消息堆积问题2) 惰…

redis实战-缓存三剑客穿透击穿雪崩解决方案

缓存穿透 定义 缓存穿透 :缓存穿透是指客户端请求的数据在缓存中和数据库中都不存在,这样缓存永远不会生效,这些请求都会打到数据库,造成数据库压力,也让缓存没有发挥出应有的作用 解决方案 缓存空对象 当我们客户端…

《Go 语言第一课》课程学习笔记(十一)

控制结构 if 的“快乐路径”原则 针对程序的分支结构,Go 提供了 if 和 switch-case 两种语句形式;而针对循环结构,Go 只保留了 for 这一种循环语句形式。 if 语句 if 语句是 Go 语言中提供的一种分支控制结构,它也是 Go 中最常…

人机对抗智能-部分可观测异步智能体协同(POAC)

环境链接:数据中心-人机对抗智能 (ia.ac.cn)http://turingai.ia.ac.cn/data_center/show/10 1.环境配置 Ubuntu 20.04 Anaconda python版本3.6 1.1 安装torch0.4.1失败 参考文章: 安装torch0.4.1的神坑_torch0.4.1_DEMO_Tian的博客-CSDN博客 co…

外卖点餐系统开发定制:数字化餐饮体验的新里程

在现代社会,外卖已经成为了人们日常生活的一部分。为了更好地满足消费者的需求,外卖点餐系统开发定制成为了餐饮业的一个重要方向。通过数字化技术,商家能够为消费者提供更加个性化、便捷的订餐体验。本文将深入探讨外卖点餐系统开发定制&…

《中国区块链发展报告(2023)》发布 和数集团推动区块链发展

北京区块链技术应用协会与社会科学文献出版社日前在京共同发布《区块链蓝皮书:中国区块链发展报告(2023)》。蓝皮书归纳梳理了2022年区块链产业发展现状及趋势,并结合行业热点Web3.0、AIGC,探讨我国区块链发展的热点话…

Vue脚手架安装(全网最详细)

目录 1、环境准备 1.1 安装node 1.1.2 判断你是否安装成功 1.1.3 在命令提示符中查看node版本 1.2 安装webpack 1.3 安装vue-cli3.x以上 2、创建工程 2.1 创建 2.2 选择 2.2.1 选择自定义设置: 2.2.2 选择Vue版本: 2.2.3 是否使用历史模式选择…

应用在红外遥控领域中的心率传感信号接收芯片

远程遥控技术又称为遥控技术,是指实现对被控目标的遥远控制,在工业控制、航空航天、家电领域应用广泛。红外遥控是一种无线、非接触控制技术,具有抗干扰能力强,信息传输可靠,功耗低,成本低,易实…

力扣HOT100.4,两个正序数组的中位数,拓展寻找第K小

题目:给定两个大小分别为 m 和 n 的正序(从小到大)数组 nums1 和 nums2。请你找出并返回这两个正序数组的 中位数 。 输入:nums1 [1,3], nums2 [2] 输出:2.00000 解释:合并数组 [1,2,3] ,中位…

不会编写正则表达式?试试“biu正则”,体验点一下就给你想要的正则表达式!

biu正则介绍 “biu正则”是一款非常实用的正则表达式生成工具。它的主要功能是帮助用户快速生成各种正则表达式,从而减少编写正则表达式的时间。比如,如果您需要编写一个匹配邮箱的正则表达式,只需要输入一个邮箱地址,点击“Clik…

横扫“盲区”、“看透”缺陷,维视智造推出短波红外相机

在可见光领域,工业相机的视觉应用已经十分成熟,但在日常的客户咨询中,我们也经常接到一些“超纲需求”——客户想要检测“白底上的白色缺陷”、“不透明包装内的透明物体有无”等,均属于可见光无法实现的检测,而市面上…

gPRC与SpringBoot整合教程

🌷🍁 博主猫头虎 带您 Go to New World.✨🍁 🦄 博客首页——猫头虎的博客🎐 🐳《面试题大全专栏》 文章图文并茂🦕生动形象🦖简单易学!欢迎大家来踩踩~🌺 &a…

基于静态编译构建微服务应用

作者:饶子昊(铖朴) Java 的局限性 传统的一个 Java 应用从代码编写到启动运行大致可以分为如下步骤: 首先,编写 .java 源代码程序。然后,借助 javac 工具将 .java 文件翻译为 .class 的字节码&#xff0…

【Python】强化学习:原理与Python实战

搞懂大模型的智能基因,RLHF系统设计关键问答 RLHF(Reinforcement Learning with Human Feedback,人类反馈强化学习)虽是热门概念,并非包治百病的万用仙丹。本问答探讨RLHF的适用范围、优缺点和可能遇到的问题&#xff…

再学http-为什么文件上传要转成Base64?

1 前言 最近在开发中遇到文件上传采用Base64的方式上传,记得以前刚开始学http上传文件的时候,都是通过content-type为multipart/form-data方式直接上传二进制文件,我们知道都通过网络传输最终只能传输二进制流,所以毫无疑问他们本…

pycharm的【陷阱】,你中过招吗?

一直以来,也有不少初学 python 的小伙伴,一不小心就跳进了虚拟环境和系统环境的【陷阱】中。 本文就基于此问题,来说说在 pycharm 当中如何使用系统环境、虚拟环境。 pycharm 当中,每一个项目在运行时,都需要指定一个…

GIS、CAD数据为基础进行城市排水系统水力建模,水力模拟在排水防涝、海绵城市设计等应用方法,城市内涝一维二维耦合水力计算原理,利用软件工具实现城市内涝模拟

目录 专题一 数据准备 专题二 建立模型 专题三 模拟计算 专题四 海绵城市关键控制指标计算 专题五 其他功能 更多应用 随着计算机的广泛应用和各类模型软件的发展,将排水系统模型作为城市洪灾评价与防治的技术手段已经成为防洪防灾的重要技术途径。本次将聚焦…

事件捕获和事件冒泡

事件捕获和事件冒泡与事件流有关系。 以下代码&#xff0c;点击 aa &#xff0c;控制台会打印什么呢&#xff1f; <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8" /><meta name"viewport" content&q…