FreeRTOS多任务调度器基础

2023-11-20

  • Cortex-M4中SysTick调度器核心
  • Cortex-M4中的中断管理
  • Cortex-M4中影子栈指针
  • Cortex-M4中SVC和PendSV异常

1:Cortex-M4中SysTick调度器核心

-----systick每一次中断都会触发内核的调度-----
-->内核从就绪列表中去寻找优先级最高的任务------
--->从内核态恢复到任务态(上下文切换(栈的操作))

2:Cortex-M4中中断的管理
-----M4有256个中断(16个内核中断和240个外部中断):

  每一个中断都能被使能或禁止,并且可以设置成挂起或清楚状态

-----在中断异常向量表中操作系统会用到的中断:

  SVCall:用于启动,便于上下文的切换
  PendSV:上下文切换
  SysTick:功能如上

对于中断的管理,主要使用了两个寄存器:

1----PRIMSK中断屏蔽特殊寄存器(主要由FreeRTOS接管)
2----CONTROL控制寄存器:
	[PRIV]位为0时处理器处于线程模式的特权级,为1为非特权
	[SPSEL]位为0时,线程模式使用MSP,为1时使用PSP
	MSP为系统主栈,PSP为进程栈(影子栈)

临界段:

内核在操作时,不能被中途打断,需要屏蔽一些优先级高的中断
进入临界段,赋值寄存器,屏蔽一些中断
退出临界段,相应所有中断

3:Cortex-M4中影子栈指针
模式切换:

	系统启动默认使用MSP
	异常请求使用MSP,异常返回可以选择使用MSP或者PSP

在这里插入图片描述
在这里插入图片描述
4:Cortex-M4中SVC和PendSV异常
SVC异常:

1:非特权的用户任务,想要调用硬件接口,发出请求
2:使用操作系统给的API接口进行请求
3:系统收到请求后把驱动调过来响应请求
特性:响应快,中断不可内嵌

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

操作系统实时响应用户外部请求,不能被PendSV和SysTick打断
SVC异常产生后,把PendSV和SysTick优先级调到最低
因为SVC响应快,可以给用户提供快速响应,PendSV和SysTick优先级如果
还是很高,就会一直占用CPU,导致SVC请求被搁置

Cortex-M4中的上下文切换

进入PendSV
上:就是保留上一个任务的信息(压栈和入栈)
下:恢复下一个任务的信息(出栈)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

FreeRTOS多任务调度器基础 的相关文章

  • 抢「.AI」域名,成了 3000 万美元的大生意

    作者 汤一涛编辑 靖宇 1848 年 一个木匠在加利福尼亚州科罗马地区的一条河中偶然发现了金箔 尽管他曾试图保守这个秘密 但是金子不会说谎 一场席卷全美的淘金热就此开始 许多人怀揣着一夜暴富的梦想涌入加利福尼亚 1847 到 1870 年间

随机推荐

  • tensorflow-GPU版本安装,RTX3060

    首先需要安装好pycharm和anaconda 开始安装tensorflow GPU版 一 查看版本 1 首先检查自己电脑的cudn版本 开始 gt 设置 gt 应用 gt 安装的应用 搜cuda 我的是cuda 11 6 2 查看显卡型号
  • qt线程

    qt4 7 之前的线程操作 代码 需要重写一个类 继承QTread class mythread public QThread Q OBJECT 必须加 否则出现一些奇怪问题 public mytherad protected void r
  • 自动化办公-3.python自动化之word操作

    一 课前准备 python 处理 Word 需要用到 python docx 库 终端执行如下安装命令 pip3 install python docx 备注 可能word用的少 这块并没认真 但是后面的邀请函这块可以作为有用参考 没准会用
  • 什么是SSL协议?

    转自 微点阅读 https www weidianyuedu com 什么是SSL协议 SSL协议是一种安全传输协议 SSL是SecureSocketLayer的缩写 即安全套接层协议 该协议最初由Netscape企业发展而来 目前已经成为
  • 在本地部署自己的漏洞文章武器库(详细步骤说明)

    在本地部署自己的漏洞文章武器库 在平时我们进行web渗透的过程中 有些poc CVE详细情况需要进行查询之后才能进行利用 对于初级渗透人员来说 对漏洞情况和利用方式掌握不足的情况下 打造属于自己的漏洞武器库就至关重要了 可以提高平时工作和h
  • 调试osgEarth(十五)分页瓦片加载器在更新遍历时对请求处理过程(1)

    感谢 hankern 学习链接https blog csdn net hankern article details 84195754 继续调试 我感觉有两点 1 处理能处理的请求 2 摒弃处理过的请求和超时的请求 从上图可以看到 每帧可以
  • Mybatis进阶--批量新增数据

    一 传统JDBC进行批处理操作 package jdbc import java io InputStream import java sql import java util Properties public class jdbcUti
  • maven更换阿里云镜像

    1 setting文件增加maven节点
  • numpy索引与切片

    一 整数索引 作用 要获取数组的单个元素 指定元素的索引即可 例子 x np array 1 2 3 4 5 6 7 8 print x 2 3 x np array 11 12 13 14 15 16 17 18 19 20 21 22
  • listview item设置点击跳转_Flutter之路由及页面跳转与返回

    1 路由跳转到页面思路 设计三个按钮 然后三个点击事件 利用Navigator of context push MaterialPageRoute builder context gt page 进行跳转新页面2 页面折回到路由在跳转的页面
  • 小程序v-for与key值使用

    小程序中的v for和key与Vue中的用法基本相同 v for用于循环渲染列表 key用于给每个循环项分配一个唯一的标识 使用v for时 通常建议使用wx for代替 例如
  • SQL Server 中给字段设置默认值的方式

    1 在创建表的时候创建默认值 if object id T U is not null drop table T GO create table T ID int Name varchar 20 LoginTime datetime def
  • RecyclerView应用 —— 好友列表实现

    实现的效果类似于QQ好友列表 点击可展开 再次点击收起 两个Item的布局都很简单 这里就不给布局代码了 值得一提的是 RecyclerView本身并没有ListView那样的点击效果 想要类似效果可以为Item的根布局写个Selector
  • JS混淆加密的代码如何解密

    科普简介 混淆是指将 JavaScript 代码变得难以理解的过程 这可以通过更改变量名 函数名和类名 以及将代码压缩到一行来实现 混淆的主要目的是使代码难以被盗用 并保护代码的知识产权 功能作用与常用的解决方案 混淆后的代码很难阅读 但是
  • Maven进阶-配置仓库

    1 1maven介绍 Maven是一个项目管理和综合工具 Maven提供了开发人员构建一个完整的生命周期框架 开发团队可以自动完成项目的基础工具建设 Maven使用标准的目录结构和默认构建生命周期 主要服务于基于Java平台的项目构建 依赖
  • Linux系统如何看目录属于哪个磁盘分区

    Linux是先有目录 再有磁盘分区 df h 目录 例如 没有挂载磁盘的目录 显示在系统盘 root iZ2ze57v3n0zma46zqiq8nZ sh 1 5 5 df h alidata Filesystem Size Used Av
  • Unity使用spine动画

    Unity使用spine动画 在 Unity 中 常常使用 Spine 来制作一些动画 引擎本身并不能直接播放 Spine 动画 需要额外导入一个 RunTime 插件库才能支持 官网插件导入 当然 也可以到 Spine 官网关于 Unit
  • 机器学习原理(1)集成学习基本方法

    一 什么是集成学习 集成学习 ensemble learning 通过将多个学习器进行组合来完成学习任务 下图显示集成学习的一般结构 取自周志华老师的西瓜书 个体学习器通常由一种现有的学习算法从训练数据产生 例如决策树 C4 5 CART
  • C语言之——自定义数据类型

    目录 前言 什么是自定义数据类型 一 自定义数据类型之 数据类型命名 1 深入应用typedef 二 自定义数据类型之 结构体类型命名 1 深入理解struct结构体 三 自定义数据类型之 联合体类型命名 1 union与struct的区别
  • FreeRTOS多任务调度器基础

    Cortex M4中SysTick调度器核心 Cortex M4中的中断管理 Cortex M4中影子栈指针 Cortex M4中SVC和PendSV异常 1 Cortex M4中SysTick调度器核心 systick每一次中断都会触发内