1911_野火FreeRTOS教程阅读笔记_请求任务切换

1911_野火FreeRTOS教程阅读笔记_请求任务切换

全部学习汇总: g_FreeRTOS: FreeRTOS学习笔记 (gitee.com)

还有一部分任务切换请求的代码没有分析。

实现上是一个宏定义,实现的工作主要的核心点还是请求PendSV的exception。当这个调用的时候,下面的接口会被执行。

先不看代码,先考虑一个OS进行任务切换的时候会做什么?肯定是先把当前的任务的相关状态存一下,做一下现场保护。之后呢,寻找更高优先级的任务,让更高优先级的任务执行。而任务执行的过程判断,之前已经看过了,这个与在SVC的Handler中的执行的类似。因此,在当前的PendSV阶段,我们需要做好任务优先级判断的处理,确认接下来需要执行哪一个任务。

再看之前的SVC的Handler的设计。究竟执行哪一个任务,决定的因素其实是pxCurrentTCB指向的内容。因此,我们的PendSV的Handler中需要完成这个信息的更新。完成之后,自然得把前面做过的工作反着来一遍,也就是现场回复。

等这部分工作完成,接下来的处理工作其实就是切换到新的任务执行了。

这样,我们对这部分代码拆分再读一下。这里先根据PSP做了现成的堆栈信息的更新,也就是保护现场。接着,r3、r14两个寄存器压栈。为什么会直接用sp而不是跟上面一起继续压栈呢?

这里顺便复习之前看过的信息,因为Handler 模式下,一直使用MSP。因此,这里其实是MSP。所以,这里的处理前后两部分是不同的。

在这部分,完成任务切换并且恢复现场保护。而这里的中断处理涉及到FreeRTOS的中断模型,其实也类似于AUTOSAR OS中的一类中断和二类中断。

这部分的处理,与SVC的处理其实是类似的。

再看一下这俩exception的用法。超级调用(SVC)是由SVC指令触发的异常。在操作系统环境中,应用程序可以使用SVC指令访问操作系统内核函数和设备驱动程序。PendSV是系统级服务的中断驱动请求。在操作系统环境中,当没有其他异常活动时,使用PendSV进行上下文切换。

从这部分文档的描述看,其实这个PendSV的作用是非常固定的。

至于这部分的处理,其实是没啥可以看的。这里只是一个任务交换而已。

关于野火的FreeRTOS教程,我觉得基本看到这里就可以是一个分界点了。其他的都是关于逻辑的方法的,其实直接拿成熟的代码直接看或许更好一些。

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

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

相关文章

基于Spring Boot的图书个性化推荐系统 ,计算机毕业设计(带源码+论文)

源码获取地址: 码呢-一个专注于技术分享的博客平台一个专注于技术分享的博客平台,大家以共同学习,乐于分享,拥抱开源的价值观进行学习交流http://www.xmbiao.cn/resource-details/1765769136268455938

消息队列的原理与基本使用

文章目录 消息队列定义优点 与 缺点优点缺点常见的消息队列 消息队列的配置消息队列的简单使用生产者消费者运行 消息队列 定义 消息队列(message queue)是一种用于在软件系统中传输、存储和处理消息的机制。它通常用于异步通信,允许不同的组…

机器学习:探索计算机的自我进化之路

当我们谈论机器学习时,我们在谈论什么呢?机器学习是一门跨学科的学科,它使用计算机模拟或实现人类学习行为,通过不断地获取新的知识和技能,重新组织已有的知识结构,从而提高自身的性能。简单来说&#xff0…

导数与微分错题本

《1800》 1 缺乏构造函数的技巧 2 3 等价无穷小构造函数 4 这个构造有点难。补充几个数字构造导数定义 5 6 通过举例子排除真的好 7 8 我不想输 9 注意自变量为x的平方 10 导数对应的x为y的变量 11 代入定义式 12 13 14 15 16 17 18 19 20

php调用guzzlehttp库时出现Segmentation fault的解决方案

先说结论,这个问题的原因是因为php7.4与openssl3不兼容产生的,解决方案如下: 输入openssl version -a查看openssl版本,如果是3以上的版本与php7.4不兼容,7.4以下的没测试过,估计也有问题。我最终是安装上了…

日韩媒体宣传案例分析:CloudNEO 为您提供海外媒体宣传最佳途径

近年来,随着互联网的迅速发展和全球化的加速推进,海外市场对于企业的重要性日益凸显。尤其是在亚洲地区,日本和韩国作为亚洲最具活力和潜力的市场之一,成为众多企业争相开拓的目标。在这个过程中,媒体宣传不仅是企业推…

【机器学习】详解正则化思想

我们的生活当中真正有意义或者有价值的部分可以概括为两句话:一句话是:弄清楚某个东西是怎么一回事,另一句话是,弄清楚某个东西是怎么一回事。头一句话,我们弄清楚的那个东西对于我们而言是未知的,但是已经…

算法49:动态规划专练(力扣1139题:最大正方形面积)

题目: 给你一个由若干 0 和 1 组成的二维网格 grid,请你找出边界全部由 1 组成的最大 正方形 子网格,并返回该子网格中的元素数量。如果不存在,则返回 0。 示例 1: 输入:grid [[1,1,1],[1,0,1],[1,1,1]…

【如何成为一名好的系统架构设计师】

曾梦想执剑走天涯,我是程序猿【AK】 目录 简述概要知识图谱1.如何成为一名好的系统架构设计师1.1 如何衡量一名优秀架构设计师1) 作为技术领导者2) 作为开发人员3) 聚焦系统4) 具备企业家思维5) 权衡策略思维与战术思维6) 良好的沟通 1.2 从工程师到系统架构设计师的…

sql server使用逗号,分隔保存多个id的一些查询保存

方案一,前后不附加逗号: 方案二,前后附加逗号: 其他保存方案: (这里是我做一个程序的商家日期规则搞得,后面再补具体操作): 1,2,3 | 1,2,3 | 1,2,3; 1,2,3 &#xff1…

如何恢复未保存的 Excel 文件

本周我们将 Office 恢复系列扩展到 Excel 恢复,并提出了最常见的问题:如何恢复 Excel 文件? 与 Office Word 不同,Excel 完全是关于表格和计算的。在处理Excel文件时,您可能会遇到更多问题。与往常一样,我们…

STM32CubeMX学习笔记15---CAN总线

1、CAN简介 CAN总线网络的结构有闭环和开环两种形式 闭环结构的CAN总线网络,总线两端各连接一个1202的电阻。这种CAN总线网络由ISO11898标准定义,是高速、短距离的CAN网络,通信速率为125kbit/s到1Mbit/s。在1Mbit/s通信速率时&#x…

【嵌入式——QT】Model/View

【嵌入式——QT】Model/View 基本原理数据模型视图组件代理Model/View结构的一些概念QFileSystemModelQStringListModelQStandardItemModel自定义代理 基本原理 GUI应用程序的一个很重要的功能是由用户在界面上编辑和修改数据,典型的如数据库应用程序,数…

wsl 安装 ubuntu

文章目录 打开Windows PowerShell查看可安装的ubuntu安装相对应的ubuntu将用户添加到sudoers文件中,并赋予了该用户sudo权限。 打开Windows PowerShell 以管理员的身份运行 查看可安装的ubuntu wsl.exe --list --online安装相对应的ubuntu wsl --install 版本…

计算机网络面经-HTTPS加密过程

前言 在上篇文章HTTPS详解一中,我已经为大家介绍了 HTTPS 的详细原理和通信流程,但总感觉少了点什么,应该是少了对安全层的针对性介绍,那么这篇文章就算是对HTTPS 详解一的补充吧。还记得这张图吧。 HTTPS 和 HTTP的区别 显然&am…

安装zabbix

部署Zabbix监控平台 部署一台Zabbix监控服务器,一台被监控主机,为进一步执行具体的监控任务做准备: 安装LNMP环境源码安装Zabbix安装监控端主机,修改基本配置初始化Zabbix监控Web页面修改PHP配置文件,满足Zabbix需求…

2024 GoLand激活,分享几个GoLand激活的方案

文章目录 GoLand公司简介我这边使用GoLand的理由GoLand 最新变化GoLand 2023.3 最新变化AI Assistant 正式版GoLand 中的 AI Assistant:_Rename_(重命名)GoLand 中的 AI Assistant:_Write documentation_(编写文档&…

VScode+Zotero+Latex文献引用联动

一、VScodeLatex联动 1、VScode的安装 2、texlive.iso安装 可以参考以下,也可以忽略所有直接一步一步默认安装 https://zhuanlan.zhihu.com/p/442308176 3、Vscode的插件安装:【latex workshop】 4、打开设置,搜索json,然后点击…

最新基于R语言lavaan结构方程模型(SEM)技术应用

结构方程模型(Sructural Equation Modeling,SEM)是分析系统内变量间的相互关系的利器,可通过图形化方式清晰展示系统中多变量因果关系网,具有强大的数据分析功能和广泛的适用性,是近年来生态、进化、环境、…

JVM运行时数据区——对象的实例化内存布局与访问定位

文章目录 1、对象的实例化1.1、创建对象的方式1.2、创建对象的步骤 2、对象的内存布局3、对象的访问定位3.1、对象访问的定位方式3.2、使用句柄访问3.3、使用指针访问 4、小结 平时大家经常使用new关键字来创建对象,那么我们创建对象的时候,怎么去和运行…