当前位置: 首页 > news >正文

FreeRTOS 启动过程中 SVC 和 PendSV 的工作流程​

在 FreeRTOS 的启动过程中,SVC(Supervisor Call)PendSV(Pendable Service Call) 是两个关键的系统异常,分别用于 首次任务启动任务上下文切换。它们的协作确保了从内核初始化到多任务调度的平滑过渡。以下是详细的工作流程分析(以 ARM Cortex-M 为例):


1. SVC 异常:启动第一个任务

作用
  • SVC 用于在特权模式下执行内核级操作,通常用于首次任务启动(通过 vTaskStartScheduler() 触发)。
  • 在 FreeRTOS 中,SVC 仅在启动时调用一次,后续切换由 PendSV 处理。
触发时机
  • xPortStartScheduler() 中,通过汇编指令 svc 0 手动触发 SVC 异常。
执行流程
  1. 触发 SVC

    void vTaskStartScheduler() {
         
        // ... 初始化 SysTick、空闲任务等
        xPortStartScheduler(); // 调用汇编函数触发 SVC
    }
    
    ; ARM Cortex-M 汇编示例(port.c)
    xPortStartScheduler:
        svc 0                   ; 手动触发 SVC 异常
        bx lr                   ; 返回(
http://www.dtcms.com/a/112743.html

相关文章:

  • 新能源汽车电子电气架构设计中的功能安全
  • DHCP Snooping理论笔记(超详细)
  • 云资源合规基线:确保云环境安全与合规的完整指南
  • 蓝桥杯嵌入式客观题二
  • 网络性能优化参数关系解读 | TCP Nagle / TCP_NODELAY / TCP_QUICKACK / TCP_CORK
  • Redis数据结构之Set
  • jp(1) command
  • FreeRTOS任务创建和删除(动态)
  • 如何在 Windows 10 上安装 PyGame
  • 将电脑控制手机编写为MCP server
  • UE5学习笔记 FPS游戏制作39 制作一个带有背景的预制面板 使用overlay和nameSlot
  • 解决上传PDF、视频、音频等格式文件到FTP站点时报错“将文件复制到FTP服务器时发生错误。请检查是否有权限将文件放到该服务器上”问题
  • Vue 3 的响应式原理
  • Qt UI框架和Duilib UI框架差别
  • 文档的预解析
  • JavaWeb 课堂笔记 —— 02 JavaScript
  • 机器视觉开发工程师常用C#运算符与使用方法大总结
  • 网络安全防御核心原则与实践指南
  • php7.4.3连接MSsql server方法
  • 方差分析_单因素、多因素、析因方差分析
  • 【首款ARMv9开源芯片“星睿“O6测评】在“周易”NPU上部署Yolov8l模型并实现实时目标检测
  • 场馆预定系统小程序PHP+uniapp
  • 讲述我的PLC自学之路 第六章
  • Harmony OS“一多” 详解:基于窗口变化的断点自适应实现
  • 类的基本概念
  • 深入剖析丝杆升降机工作原理,解锁工业传动奥秘
  • 【C++】C++11<包装器没写>
  • 动态规划1——斐波那契数列模型——第 N 个泰波那契数
  • 算法题(117):字符串的展开
  • 16.2Linux自带的LED灯驱动实验(详细编写)_csdn