1828_ChibiOS中的对象FIFO

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

1. 最初的这个理解,当看到后面之后就知道有点偏差了。其实,这个传输就是一个单纯的FIFO而不是两个FIFO之间的什么操作。

2. 特点:无动态分配、无拷贝操作、可以在ISR和线程的上下文进行处理。

3. 这个功能的组成由两部分组建:第一,一个有保护的内存池分配器;第二,一个FIFO结构的邮箱。

4. 几个基本的操作:获取、收、发以及返回。

         这一份资料的整理会是ChibiOS的大概功能的最后一份要整理的文档,从过去看的这些资料看,这个ChibiOS中的FIFO应用非常多。

1. 内存池和邮箱有相同的大小。

2. 由于有邮箱机制的保护,发送其实不会等待,会保证有响应的资源可用。

3. 传递的过程不会传递数据对象,而是处理数据指针。

4. 结合这一页的这个图可以整理下这个功能机制。如果需要往FIFO里面装填数据,首先得从存储池中分配获取可用存储。如果获取成功了,把相应的存储的指针信息传递出去。其实,这里的传递之前,应该会有数据的处理过程,不然传递一个没有内容绑定的信息应该是没有意义的。传递结束之后,这一个数据其实就已经加入了FIFO。之后,接收方获取数据然后通过邮箱的机制归还邮箱空间,其实也对应着有一个存储池空间的归还。

1. 这一页是涉及到这个功能的一系列API。

2. 从功能描述看,其实这个功能完全可以单独依赖于邮箱来实现。但是,通过邮箱实现,需要处理一个数据组合排序。

3. 如果从比较直接的使用上看这个功能与邮箱机制,那么还是有几个差异的:第一,邮箱对数据结构其实是没有约束的,但是这个FIFO对象则是有数据结构信息的;第二,邮箱传递整包数据,但是如果采用FIFO对象的机制则是可以做到单元素传输的。第三,邮箱多一个数据的组合过程,而这个组合过程则是通过了FIFO机制传递到了下端,由接收者自行做处理判断。

         这样,整个ChibiOS的大概的功能算是做了一个基本的了解了。接下来,可以选择一个MCU的平台做一个调试。

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

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

相关文章

去掉参数中第一个“,”

记录一下,前端传参中,传给我参数是“categoryIds: ,1731557494586241026,1731569816263311362,1731569855534579713,1731858335179223042,1731858366821052418” 但是后端,因为我的mybati是in查询,所以因为第一个是“,”。所以会导…

RabbitMQ安装在Linux系统详细教程

安装教程: 1.首先将下载好的文件上传到服务器,拉到opt文件夹中(可以用xftp) 2.输入命令: cd /opt 3.安装erlang rpm -ivh erlang-23.3.4.11-1.el7.x86_64.rpm rpm -ivh(复制配置文件的名字) 4.在Rab…

sap增强

四代增强 2种显示增强1种隐式增强 隐式增强 光标放在增强点或其中的代码点击修改即可修改代码 显示增强 1.ENHANCEMENT-POINT 在代码修改界面选择空行 光标所在位置 可以创建多个增强实施且激活后都会执行. 2.ENHANCEMENT-SECTION 1,选中程序中空行 2.编辑->创建选项 …

回顾2023 亚马逊云科技 re_Invent,创新AI,一路同行

作为全球云计算龙头企业的亚马逊云科技于2023年11月27日至12月1日在美国拉斯维加斯举办了2023 亚马逊云科技 re:Invent,从2012年开始举办的亚马逊云科技 re:Invent 全球大会,到现如今2023 亚马逊云科技 re:Invent,回顾历届re:Invent大会,亚马…

Spring 动态代理时是如何解决循环依赖的?为什么要使用三级缓存?

首先,我将简单介绍一下Spring框架中的动态代理和循环依赖问题。 动态代理与循环依赖 1. 动态代理 在Spring框架中,动态代理是一种常用的技术,用于实现AOP(面向切面编程)。动态代理允许Spring在运行时为目标对象创建…

C++『异常』

✨个人主页: 北 海 🎉所属专栏: C修行之路 🎃操作环境: Visual Studio 2022 版本 17.6.5 文章目录 🌇前言🏙️正文1.异常基本概念1.1.C语言异常处理方式1.2.C异常处理方式 2.异常的使用2.1.异常…

在线网页生成工具GrapesJS

项目地址 https://github.com/GrapesJS/grapesjshttps://github.com/GrapesJS/grapesjs 项目简述 这是一个基于node.js的在线网页生成项目,对简化开发有很大的帮助。 主要使用的语言如下: 编辑页面如下: 使用也很简洁 具体可以看下项目。…

使用c++编程语言,将字符串中的数字全部替换成字符串:number

给定一个字符串 s,它包含小写字母和数字字符,请编写一个函数,将字符串中的字母字符保持不变,而将每个数字字符替换为number。 样例输入:a1b2c3 样例输出:anumberbnumbercnumber 代码如下: #incl…

12. MySQL 锁机制

目录 概述 MylSAM引擎 InnoDB引擎 概述 锁是计算机协调多个进程或线程并发访问某一资源的机制(避免争抢)。在数据库中,除传统的计算资源(如CPU、RAM、I/O等)的争用以外,数据也是一种供许多用户共享的资如何保证数据…

Pytest中使用Fixture替换Unittest的Setupclass及Pytest使用装饰器应用参数化

1 类里使用Fixture Pytest中夹具(Fixture)有几种生命周期:function->model->class->session->packages,其中默认为function。 import pytest from Common.logger import Log from Common.Operator import * fro…

C#中的Attributes特性创建和结合反射应用举例

C#中的特性入门学习 Attributes官方介绍概述 Attributes provide a powerful method of associating metadata, or declarative information, with code (assemblies, types, methods, properties, and so forth). After an attribute is associated with a program entity, …

深入理解Vue.js中的this:解析this关键字及其使用场景

在Vue.js中,this 和 that 可能是指向不同对象的两个变量,或者是在代码中使用时的错误。 this: 在Vue组件中,this 指向当前组件的实例。可以通过 this 访问组件的属性和方法。 例如,在Vue组件的 data 属性中定义了一…

2023年第十届GIAC全球互联网架构大会-核心PPT资料下载

一、峰会简介 谈到一个应用,我们首先考虑的是运行这个应用所需要的系统资源。其次,是关于应用自身的架构模式。最后,还需要从软件工程的不同角度来考虑应用的设计、开发、部署、运维等。架构设计对应用有着深远的影响,它的好坏决…

Leetcode659. 分割数组为连续子序列

Every day a Leetcode 题目来源:659. 分割数组为连续子序列 解法1:哈希 贪心 定义两个哈希表: numsCount:统计数组 nums 中各元素出现次数。tailCount:存储以数字 i 结尾的且符合题意的连续子序列个数。 算法&a…

极兔单号查询,极兔快递物流查询,一键筛选出退回件

批量查询极兔快递单号的物流信息,一键筛选出其中的退回件。 所需工具: 一个【快递批量查询高手】软件 极兔快递单号若干 操作步骤: 步骤1:运行【快递批量查询高手】软件,并登录 步骤2:点击主界面左上角的…

【Bootloader学习理解----跳转优化异常】

笔者接着来介绍一下Bootloader的跳转代码以及优化 1、跳转代码理解 跳转代码可能要涉及到芯片架构的知识,要跳转到对应的位置,还要设置相关的SP 堆栈指针,具体可以参考笔者这篇文章BootLoader的理解与实现。 STM32的跳转代码如下所示: u32 …

ClickHouse为何如此之快

针对ClickHose为什么很快的问题,基于对ClickHouse的基础概念之上,一般会回答是因为是列式存储数据库,同时也会说是使用了向量化引擎,所以快。上面两方面的解释也都能够站得住脚,但是依然不能够解释真正核心的原因。因为…

AI:101-基于深度学习的航空影像中建筑物识别

🚀 本文选自专栏:人工智能领域200例教程专栏 从基础到实践,深入学习。无论你是初学者还是经验丰富的老手,对于本专栏案例和项目实践都有参考学习意义。 ✨✨✨ 每一个案例都附带有在本地跑过的核心代码,详细讲解供大家学习,希望可以帮到大家。欢迎订阅支持,正在不断更新…

2023_刷题_二叉树

文章目录 书leixingleixing 书 leixing leixing

基于以太坊的智能合约开发Solidity(基础篇)

参考教程:基于以太坊的智能合约开发教程【Solidity】_哔哩哔哩_bilibili 1、第一个程序——Helloworld: //声明版本号(程序中的版本号要和编译器版本号一致) pragma solidity ^0.5.17; //合约 contract HelloWorld {//合约属性变…