学习笔记(1):自己动手从0到1写嵌入式操作系统-C2.02 任务切换的实现

2023-05-16

立即学习:https://edu.csdn.net/course/play/4605/82626?utm_source=blogtoedu

 

解决了栈冲突的问题:为每个任务独立分配栈

在发生异常的时候:

CPU会自动保存 xPSR,PC(R15),LR(R14),R12,R0~R3到栈中,该栈是独立的话就不会冲突

在退出异常的时候:

CPU会自动弹栈 xPSR,PC(R15),LR(R14),R12,R0~R3到栈中,该栈是独立的话就不会冲突

解决>>建立一个独立的栈就好了

我们如何切换栈呢?

修改R13就好了

解决内核寄存器的冲突:出现两个冲突,第一个是当前的任务寄存器的值,第二个是需要切换的任务寄存器的值

CPU只为我们保存了xPSR [R0,R1,R2,R3,R12,R14(LR),R15(PC)]

还有 [R4~R11,R13]没有被保存

R13为栈指针寄存:我们通过修改R13便可以更改当前的任务栈,所以不需要保存R13的值

那么只需要手动保存 [R4~R11]就好了

解决冲突1

保存当前的[R4-R11]

解决冲突2

恢复正要切换的任务的[R4-R11]

注意切换的时候要先把栈指针恢复再切换

  1.  
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

学习笔记(1):自己动手从0到1写嵌入式操作系统-C2.02 任务切换的实现 的相关文章

随机推荐

  • laravel在windows上安装与部署

    这篇适合第一次使用larver且有php基础的 首先电脑上安装了wamp或者其他类似的工具均可 使用composer安装 xff0c 如果电脑没安装composer xff0c 去官网进行下安装 xff0c 这个很简单的 1 xff1a 打
  • Cyber环境搭建(非docker环境下)

    1 替换阿里源 2 安装cmake3 12 1 卸载已经安装的旧版的CMAKE sudo apt get autoremove cmake 2 文件下载解压 wget https span class token operator span
  • 安卓利用tensorflow-lite使用yolov5训练的模型

    前言 作为使用yolov5后一次简单的尝试 准备工作 通过yolov5训练出自己所需要的模型查看模型训练教程将模型通过tensorflow的python版转换 xff0c 使用yolov5 6 1以上版本安卓端引入tensorflow远端依
  • lego-loam加入imu数据建图,使用自己的数据集建图

    配置lego loam教程 https blog csdn net qq 35102059 article details 122671432 spm 61 1001 2014 3001 5501 激光雷达与imu的外参标定教程 https
  • ROS消息sensor_msgs::Imu数据格式

    ubuntu下打开终端输入 rosmsg show sensor msgs Imu 查看sensor msgs Imu的数据格式 std msgs Header header uint32 seq time stamp 时间戳 string
  • slam优化eigen,ceres,g2o,gtsam,pcl

    eigen SLAM本质剖析 Eigen 古月居 ceres https guyuehome com 34633 g2o SLAM本质剖析 G2O 古月居 gtsam SLAM本质剖析 GTSAM 古月居 pcl https www guy
  • Android Cordova 正常安卓项目封装成插件的流程记录

    Android Cordova 正常安卓项目封装成插件的流程记录 背景 xff1a 混合式开发cordova使用Android原生插件 封装流程 xff1a 1 gradle的封装 xff1a a xff1a 需要在插件中先创建一个 gra
  • 错误提示 the operation is not applicable to the current selection.Select a field which is not declared a

    错误提示 the operation is not applicable to the current selection Select a field which is not declared as type variable or a
  • 无人机集群目标检测和追踪方法学习(一)MCDT方法

    论文 xff1a Deep neural network based cooperative visual tracking through multiple micro aerial vehicles 概要 xff1a 通过无人机集群 多
  • Docker ROS环境相关开发常用指令

    Docker ROS相关功能记录 1 主机网络代理配置1 1 Docker daemon Docker 守护进程 xff09 Http代理配置1 2 Container xff08 容器 xff09 Http代理配置1 3 Docker B
  • windows安装maven3.6.1教程

    目录 一 下载安装包 xff08 推荐第三种 xff09 二 安装maven 三 更改本地仓库地址 四 配置淘宝镜像 一 下载安装包 xff08 推荐第三种 xff09 1 官网下载 xff1a Maven Download Apache
  • 连载|决策树(下)

    决策树 xff08 下 xff09 在决策树 xff08 上 xff09 中我们了解了ID3和C4 5算法 xff0c 这两种算法都使用了较为复杂的熵来度量 xff0c 使用了复杂的多叉树 xff0c 并且只能处理分类问题 xff0c 针对
  • MAVEN添加SQL SERVER依赖

    maven添加SQL SERVER依赖 lt dependency gt lt groupId gt com microsoft sqlserver lt groupId gt lt artifactId gt mssql jdbc lt
  • 如何从0到1搭建一个个人网站

    前言 如何从0到1搭建一个可以外网访问的项目 xff1f 我就用自己的服务器给大家举例 xff0c 怎么从0到1搭建一个学生和新手可以用来面试的项目 xff0c 老手也可以回忆一下自己逝去的青春 服务器在激活的时候会让你选系统 xff0c
  • 如果再来一次,你还会选择互联网么?

    现在互联网的就业环境 xff0c 大家都在感受着一股寒意 也不知道从什么时候开始 xff0c 身边悲观的声音越来越多了 如果再给你一次机会 xff0c 你还会选择互联网吗 xff1f 回答这个问题之前 xff0c 我想跟大家聊聊一个我朋友的
  • 机器学习一决策树

    决策树 一 基本流程 xff1a 决策树 xff08 decision tree xff09 是一种常见的机器学习方法 xff0c 以二分类任务为例 xff0c 我们希望从给定的训练数据集学得一个模型用于对未知样本进行分类 xff0c xf
  • Jetson AGX xavier 搭建ORB_SLAM3(ubuntu18)

    Jetson AGX xavier 搭建ORB SLAM3 ubuntu18 ORB SLAM3 Github https github com UZ SLAMLab ORB SLAM3 1 安装依赖 sudo apt get instal
  • PX4 GPS笔记

    20180509 xff1a orb publish auto ORB ID vehicle gps position amp report gps pos pub amp report gps pos amp gps orb instan
  • 使用github构建自己的博客

    背景 xff1a 某天偶然下看到同事的博客 xff0c 顿时被吸引了 xff0c 突然很想有一个自己的酷炫的博客 xff0c 就是那种光是背景就能玩一天的博客 xff08 好吧 xff0c 就是觉得好看 xff09 刚好昨天项目上线了 xf
  • 学习笔记(1):自己动手从0到1写嵌入式操作系统-C2.02 任务切换的实现

    立即学习 https edu csdn net course play 4605 82626 utm source 61 blogtoedu 解决了栈冲突的问题 为每个任务独立分配栈 在发生异常的时候 xff1a CPU会自动保存 xPSR