soc的核间通信机制-->mailbox

news/2024/5/1 2:30:43/文章来源:https://blog.csdn.net/weixin_45264425/article/details/127168151

对于mailbox,这个东西其实看到了很多次,但是一直不知道是啥。这里大概看了一下,知道了为甚有这个玩意儿,以及这个玩意相关的有啥,至于具体怎么使用,以及详细的工作原因等着以后再说吧。

正文

目前很多芯片都会有几个core核,有的是Cortex M0+、M4、M7、A53、A73等等,有的有着2核、3核、4核甚至6核8核,不同的核的主频支持度不一样,适用的具体应用场景也不同,因此需要IPC(Inter-processor communication)来核间通信,进行数据的交互。

核间通信(IPC)的主要目标是:充分利用硬件提供的机制,实现高效的CORE间通信;给需要CORE间通信的应用程序提供简洁高效的编程接口。

根据所使用的硬件特性,核间通信的实现机制有:

  • ·Mailbox中断

  • ·基于共享内存的消息队列

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

封装-VRING-解析的过程: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。

Hardware Mailbox

硬件邮箱主要用于提供具有小的 32 位有效负载的中断事件通知。

VRING 使用硬件邮箱在目标 CPU 上触发中断。每个邮箱包含 16 个单向 HW 队列,最多可连接 4 个通信用户或 CPU。

J721E SoC 有 12 个硬件邮箱实例。即 12x 16 个硬件邮箱队列。

(硬件邮箱的逻辑框图)

Mailbox and VRING

邮箱本质上充当一个非常小的硬件队列,其中包含 VRING ID。

VRING 是共享内存中的 SW 队列,保存两个 CPU 之间传递的实际消息。当收到中断时,邮箱消息会告知从哪个 VRING 出列消息。

VRING ID=0 tells to look at the VRING from sender to receiverVRING ID=1 tells to look at the VRING from receiver to sender

在这里插入图片描述

散文

mailbox其实是多核处理器soc上,核与核之间互相发中断的机制,由于核与核之间可能存在不同的业务,故硬件上设计分配一两个中断已经无法满足业务的需求,软件拓展起来很困难,所以mailbox可以理解为软件可自由定义的中断模块。

用于在片上处理器之间通信的一种mailbox队列中断机制,mailbox队列中断机制允许软件通过一组寄存器关联的中断设置和得到信息在二个处理之间建立通信渠道。

核间通信的主要目标是:充分利用硬件提供的机制,实现高效的CORE间通信;给需要CORE间通信的应用程序提供简洁高效的编程接口。

根据所使用的硬件特性,核间通信可能的实现机制有:

  1.    Mailbox中断;
    
  2.    基于共享内存的消息队列;
    
  3.    POW + Group;
    
  4.    FAU;支持原子的读,写,fetch and add操作。
    

每个core有一个相应的32bit的mailbox寄存器,每一位可被单独地设置或清零。这对于core间的中断非常有用,任意core可直接通过其它core 的mailbox对其它core发出中断。当mailbox被置位时,相应core的中断寄存器也同时被置位,软件可实现其中断处理。

Bootloader支持Octeon_phy_mem_named_block_alloc( ),分配以名字命名的物理内存空间,不管是Service Executive应用程序还是linux kernel都可以通过Octeon_phy_mem_named_block_find( )找到这部分内存,实现core之间的共享数据。

Linux kernel也提供了共享内存的机制。主要有mmap(),系统V,Posix共享内存模型等。系统调用mmap()通过映射一个普通文件实现共享内存。普通文件被映射到进程地址空间后,进程可以向访问普通内存一样对文件进行访问。系统V共享内存指的是把所有共享数据放在共享内存区域(IPC shared memory region),任何想要访问该数据的进程都必须在本进程的地址空间新增一块内存区域,用来映射存放共享数据的物理内存页面。posix共享内存区首先指定一个名字参数调用shm_open,以创建一个新的共享内存区对象或打开一个以存在的共享内存区对象。然后调用mmap把这个共享内存区映射到调用进程的地址空间。传递给shm_open的名字参数随后由希望共享该内存区的任何其他进程使用。

核间通信方案

如下图所示ARM核和DSP核进行mailbox通信,ARM要发送数据给DSP:

  • 1 ARM核先往某个指定的共享内存空间buffer写入数据,然后MAILBOX触发中断和写入关于共享内存空间的地址信息给DSP。

  • 2 DSP通过得到mailbox中断的信息读取共享内存空间ARM核发送的buffer数据。

  • 3 DSP核读取完数据后将触发mailbox中断给ARM作为回应,告诉ARM核你发送的数据我已经接受完成了。 a

在这里插入图片描述

参考资料:

https://zhuanlan.zhihu.com/p/530307453
https://blog.csdn.net/tfnew21/article/details/4187148
https://blog.csdn.net/weixin_44316996/article/details/124363855

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

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

微信小程序开发实战(SM周期及WXS脚本)

作者 : SYFStrive 博客首页 : HomePage 📜: 微信小程序 📌:个人社区(欢迎大佬们加入) 👉:社区链接🔗 📌:觉得文章不错可以点点关注 &#x1f4…

webshell 提权

在我们使用cve或者其他方式获取shell 后 python -c import pty;pty.spawn("/bin/bash") 获取一个交互式的bash shell 使用id 命令可以查看当前的用户权限 查看当前的linux 系统版本 利用kali自带的漏洞检索库检索漏洞 searchsploit privilege | grep -i linux |…

【MySQL】数据库介绍以及MySQL数据库

目录 数据库介绍 数据库概述 数据表 MySql数据库 MySql安装 登录MySQL数据库 ​​​​​​​SQLyog(MySQL图形化开发工具) 数据库介绍 数据库概述 什么是数据库(DB:DataBase) 数据库就是存储数据的仓库,其本质是一个文件系统&#…

实训任务1:Linux基本操作

文章目录一、实训目的二、实训要求三、实训任务1、创建并配置三个虚拟机2、创建SSH连接3、实现IP地址与主机名的映射4、关闭和禁用防火墙5、创建目录结构6、压缩打包7、安装软件包8、创建脚本文件9、直接运行脚本10、虚拟机相互免密登录11、远程拷贝文件一、实训目的 通过实训…

代谢组学和宏基因组学研究不同添加剂对青贮品质的影响

​ 发表期刊:Bioresource Technology 影响因子:9.642 百趣生物提供服务:代谢组学宏基因组 研究背景 人口增长促进了全球肉类和牛奶消费量增加,养殖所需饲料用量也逐年上升,发酵后的饲料是进行农副产品处理更好的选…

大数据技术Spark3.0详解

一、Spark3.0 简介 Spark3.0版本包含了3400多个补丁程序,是开源社区做出巨大贡献的最高峰,带来了Python和SQL功能的重大进步,并着眼于探索和生产的易用性。 1、Spark3.0新功能 (1)通过自适应查询执行,动…

基于物联网的智能厨房安全监测系统-上位机程序

CSDN话题挑战赛第2期 参赛话题:学习笔记 博客写作背景----项目中解决的问题 最近遇到一个基于TCP/IP网络的远程智能物联网系统,采用Arduino Uno控制器作为下位机,采用LabVIEW作为远程监控软件,两者通过网络实现通信。初步定为使…

2022/10/4——基于stm32mp157a的M4核的中断实验

本次实验采用STM32CubeMX软件进行元器件的初始化 本次实验采用的中断源为三个按键和光电开关、火焰传感器、人体红外。其实验接口分别为: key1------>PF9 key2------>PF7 key3------>PF8(检测方式:下降沿) 光电开…

详解欧拉计划第107题:最小网络

下面这个无向网络包含有7个顶点和12条边,其总重量为243。 这个网络也可以用矩阵的形式表示如下。 ABCDEFGA-161221---B16--1720--C12--28-31-D211728-181923E-20-18--11F--3119--27G---231127-然而,我们其实可以优化这个网络,移除其中的一些边&#

windows幻灯片壁纸

幻灯片设置10秒设置为10秒 win+r输入regedit 查找路径 HKEY_CURRENT_USER\Control Panel\Personalization\Desktop Slideshow 修改interval文件没有就创建一个 修改10进制文件 60000(毫秒为60秒)改为10000(毫秒为10秒)即可 修改后点击幻灯片放映他自己设置为10分钟不用管他已经…

深入分析vhost-user网卡实现原理 —— VirtIO Features协商

文章目录前言数据结构设备模型deviceVirtIONetPCIVirtIONetNICStateNetClientStatenetdevNetVhostUserStatevhost_netvhost_devchardevchardevChardevClassSocketChardevFeaturesVirtIONetVirtIODevicevhost_devNetVhostUserStatefeature_bitsBackend流程详解启动过程网络连接网…

【Docker Desktop】Neo4j

1、下载neo4j并启动 docker run --rm --name testneo4j -p 7474:7474 -p 7687:7687 -d -v C:/Users/ASUS/Desktop/neo4j/data:/data -v C:/Users/ASUS/Desktop/neo4j/logs:/logs -v C:/Users/ASUS/Desktop/neo4j/import:/var/lib/neo4j/import -v C:/Users/ASUS/Desktop/neo4j…

Mysql出现问题:慢查询日志失效解决方案

❤️作者主页:小虚竹 ❤️作者简介:大家好,我是小虚竹。Java领域优质创作者🏆,CSDN博客专家🏆,华为云享专家🏆,掘金年度人气作者🏆,阿里云专家博主&#x1f3…

【C++入门】学习使用二维数组基本知识及用法详解

🧛‍♂️iecne个人主页::iecne的学习日志 💡每天关注iecne的作品,一起进步 💪一起学习,必看iecne 🐳希望大家多多支持🥰一起进步呀! 文章目录一.定义方式1.1…

深度学习进阶-自然语言处理-04-基于计数的方法(上)

语料库:大量的文本数据 语料库通常采用树的结构,我们这里的与料理假定没有添加任何标签,在实际项目中,一般都会给文本数据添加标签(如,词性) 1 语料库的预处理 步骤一:创建单词列表 #样本文章…

JavaScript学习笔记:Navigator

<!DOCTYPE html> <html><head><meta charset"utf-8"><title></title><script>// BOM// 浏览器对象模型// BOM可以使我们通过js来操作浏览器// 在BOM中为我们提供了一组对象&#xff0c;用来完成对浏览器的操作// BOM对象/…

基本控件案例集锦(下)

基本控件案例集锦&#xff08;下&#xff09; DatePicker&#xff0c;TimePicker&#xff0c;AlertDialoig 1.DatePicker 1.1简介 1.简介&#xff1a; Android为用户提供显示日期与时间的控件DatePicker和TimePicker。 日期选择控件(DatePicker)主要功能是向用户提供包含年…

JS面向对象之构造函数和原型(2)

文章目录1.构造函数1-1.使用构造函数面向对象1-2.构造函数里面的原型prototype1-3.对象原型__proto__1-4.constractor构造函数1-5.构造函数、实例、原型对象三者之间的关系1.构造函数 1-1.使用构造函数面向对象 ES6之前对象的公共部分&#xff0c;不是使用类解决的&#xff0…

沉睡者IT - [短视频运营] 抖音短视频成SEO新风口

下面会从以下5个企业关心的问题来聊聊&#xff0c;如果有什么不明白的地方可以评论交流。 一、什么是SEO? 二、为什么要做抖音SEO? ​三、哪些企业适合做抖音SEO? 四、抖音SEO怎么做? 五、影响抖音排名的因素有哪些? 一、什么是SEO? SEO是“搜索引擎优化”英文单词首字母…

C++ 函数学习笔记

前言&#xff1a;主要是自己学习过程的积累笔记&#xff0c;所以跳跃性比较强&#xff0c;建议先自学后拿来作为复习用。 文章目录1 函数基础2 参数传递2.1 const 形参和实参2.2 引用形参2.3 数组形参2.4 数组引用形参2.5 多维数组形参2.6 可变形参3 返回类型和 return 语句3.1…