1827_ChibiOS中OSLIB的邮箱机制

news2024/11/26 20:27:08

         全部学习汇总: GreyZhang/g_ChibiOS: I found a new RTOS called ChibiOS and it seems interesting! (github.com)

1. 邮箱其实是一个环形队列;

2. 使用场景上,邮箱主要是用来实现异步单向的一些消息或者数据处理的。在处理机制上,支持多对多的机制。

3. 与同步信号消息相比,传递消息的范围没有限制,不再是0,-1与-2这三个,可以支持更多。

1. 邮箱会结合buffer来用,而buffer也是环形的buffer,如果空间用满了之后继续请求使用会导致线程的等待。

2. 使用的过程中,由于又像是单向的,一般会有两个线程分别等待彼此的邮箱读写操作。

3. 如果邮箱进行了reset,那么在进行resume之前,任何操作都会失败,返回已经复位的消息提示。

这里的API分为发和收两部分。

         接下来的这个例子,我不在进行文档标注,直接来通过代码来做一个标注分析。

         最初的这一部分定义,我把叫做buffer的变量加了一个mailbox后缀,这样后面看代码的时候能够更好理解这些信息代表的含义。

         这部分是例程中的一个中断,中断负责的主要工作其实还是获取通信的数据以及状态。在这里的设计示范说明中,如果通过ISR发现了错误,那么会对填充邮箱进行复位。如果是收到了消息,那么会先把消息填充到对应的buffer中,这个buffer就是软件自己控制的不分了。之后,把这部分buffer的信息绑定到释放buffer信息的邮箱之中。绑定的方式就是发送一个邮箱消息。

         这是一个通过邮箱消息获取信号处理网络信息的一个设计模板。在这里面,先从填充邮箱中获取信息,如果检查到了邮箱RESET,那么需要进行错误处理。如果检查到有正常的信号,那么处理接收到的数据。处理完之后,说明现在的邮箱对应的buffer释放了一个。因此,给free buffer邮箱发送一个消息用以表征有新的资源可用了。

         这一部分,主要还是邮箱对象以及线程的初始化或者创建。比较常规的一些操作。

         以上就是邮箱的基本机制以及使用情况,看起来比较适合实现由小数据组合起来的长数据报文。后续的设计中,也可以尝试使用一下看看。

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

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

相关文章

C语言 预处理 + 条件编译宏 + 井号运算符

预处理阶段任务 预处理指令 条件编译宏 条件编译宏的作用在于根据编译时的条件进行代码的选择性编译,从而实现不同环境、不同配置或不同功能的编译版本。 这可以用于实现调试模式和发布模式的切换,平台适配,以及选择性地编译不同的功能模块等…

【Spring 基础】00 入门指南

【Spring 基础】00 入门指南 文章目录 【Spring 基础】00 入门指南1.简介2.概念1)控制反转(IoC)2)依赖注入(DI) 3.核心模块1)Spring Core2)Spring AOP3)Spring MVC4&…

组件之间传值

目录 1:组件中的关系 2:父向子传值 3:子组件向父组件共享数据 4:兄弟组件数据共享 1:组件中的关系 在项目中使用到的组件关系最常用两种是,父子关系,兄弟关系 例如A组件使用B组件或者C组件…

大师学SwiftUI第18章Part2 - 存储图片和自定义相机

存储图片 在前面的示例中,我们在屏幕上展示了图片,但也可以将其存储到文件或数据库中。另外有时使用相机将照片存储到设备的相册薄里会很有用,这样可供其它应用访问。UIKit框架提供了如下两个保存图片和视频的函数。 UIImageWriteToSavedPh…

CCF刷题记录 -- 202305-2:矩阵运算 --python解法

2023.12.7 主要算法 矩阵置换矩阵相乘 满分注意点 运算顺序,利用了矩阵运算法则中的(A*B)*c A*(B*C) # 矩阵置换 def zhihuan(a):b[]for i in range(d):c []for j in range(n):c.append(a[j][i])b.append(c)return b# 矩阵相乘 def ju_zh…

C# WPF上位机开发(通讯协议的编写)

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing 163.com】 作为上位机,它很重要的一个部分就是需要和外面的设备进行数据沟通的。很多时候,也就是在这个沟通的过程当中,上…

SuperMap iObject.NET三维场景拖拽框选实现详解及完整源代码(一)——环境准备及项目配置

作者:超图研究院技术支持中心-于丁1 SuperMap iObject.NET三维场景拖拽框选实现详解及完整源代码(一)——环境准备及项目配置   三维场景框选是一种在三维空间中进行选择和操作的功能,它可以让使用者通过鼠标拖动来创建一个矩形…

stu06-VSCode里的常用快捷键

Alt Z:文字自动换行。当一行的文字太长时,可以使用。或者查看→自动换行Alt Shift ↓ :快速复制当前行到下一行Alt Shift ↑ :快速复制当前行到上一行Alt B:在默认浏览器中打开当前.html文件Ctrl Enter&#xf…

前端 Web Workers 简介

简介 以前我们总说,JS 是单线程没有多线程,当 JS 在页面中运行长耗时同步任务的时候就会导致页面假死影响用户体验,从而需要设置把任务放在任务队列中;执行任务队列中的任务也并非多线程进行的,然而现在 HTML5 提供了…

如何一个例子玩明白GIT

一个例子玩明白GIT GIT的介绍和教程五花八门,但实际需要用的就是建仓、推送、拉取等操作,这儿咱可以通过一个例子熟悉这些操作,一次性搞定GIT的使用方法学习。下面这个例子的内容是内容是建立初始版本库,然后将数据复制到 "远…

05-详解Nacos配置管理中心,配置拉取的方式,热更新,配置共享(优先级)的步骤

Nacos配置管理 新建配置文件 当微服务部署的实例越来越多时,如果需要修改微服务的配置就需要逐个修改配置文件并且还要重启关联的微服务十分繁琐还易出错 项目中的配置文件分为每个项目特有的配置,项目所公用的配置 每个项目特有的配置: 有些项目中需要但有些项目中又不需要…

初学者如何入门 Generative AI 之 Stable Diffusion 与 CLIP :看两篇综述,玩几个应用感受一下先!超多高清大图,沉浸式体验

文章大纲 4种 图片生成 的算法扩散模型的起源Stable DiffusionCLIP参考文献与学习路径A synthography of an astronaut riding a horse created in NightCafe Studio with Stable Diffusion XL (SDXL). Prompt is a photograph of an astronaut riding a horse with weight of …

lenovo联想拯救者Legion R7000P 2020H(82GR)笔记本原厂Windows10系统包

拯救者笔记本电脑原装出厂WIN10系统ISO镜像 链接:https://pan.baidu.com/s/1iPNXELRipKaAIR-yaq5HNg?pwdm27n 提取码:m27n 自带有所有驱动、出厂主题壁纸、系统属性专属LOGO标志、Office办公软件、联想电脑管家等预装程序 所需要工具:1…

【网络奇缘系列】计算机网络|数据通信方式|数据传输方式

🌈个人主页: Aileen_0v0🔥系列专栏: 一见倾心,再见倾城 --- 计算机网络~💫个人格言:"没有罗马,那就自己创造罗马~" 这篇文章是关于计算机网络中数据通信的基础知识点, 从模型,术语再到数据通信方式&#…

Jmeter 请求签名api接口-BeanShell

Jmeter 请求签名api接口-BeanShell 项目签名说明编译扩展jar包jmeter 使用 BeanShell 调用jar包中的签名方法 项目签名说明 有签名算法的api接口本地不好测试,使用BeanShell 扩展jar 包对参数进行签名,接口签名算法使用 sha512Hex 算法。签名的说明如下…

java实现网络聊天

网络聊天实现步骤(从功能谈论方法): 客户端: 1.登录面板:注册提醒用户注册格式,登录账号密码不为空,点击登录的时候需要连接服务器端,启动聊天面板。(监听用户点击登录…

详细介绍开源固件-TF-A

什么是TF-A? TF-A(Trusted Firmware-A)是一种用于嵌入式系统的开源固件,而不是Linux的一部分。TF-A主要用于ARM架构的处理器和设备,它提供了一组安全和可信任的软件组件,用于引导和初始化系统。 如下是其…

学习通【劳动通论】2023章节练习题

社会主义核心价值观24个字是:富强、民主、文明、和谐,自由、平等、公正、法治,爱国、敬业、诚信、友善。 1、“富强、民主、文明、和谐”,是我国社会主义现代化国家的建设目标,也是从价值目标层面对社会主义核心价值观…

基于Java Swing泡泡龙游戏(Java毕业设计)

大家好,我是DeBug,很高兴你能来阅读!作为一名热爱编程的程序员,我希望通过这些教学笔记与大家分享我的编程经验和知识。在这里,我将会结合实际项目经验,分享编程技巧、最佳实践以及解决问题的方法。无论你是…

uniapp iOS离线打包——运行项目到模拟器报错?

运行项目、打包时报错问题 记录个人在开发过程中遇到的相关问题,后续有时间会不定时更新 文章目录 运行项目、打包时报错问题运行到模拟器报错解决方案 打包报错解决方案 运行到模拟器报错 解决方案 选中项目工程 —> Build Settings 滑动底部 —> User-Defi…