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

STM32-知识

一、Cortex-M系列双指针

Cortex-M系列的MSP与PSP有一些重要的区别,双指针是为了保证OS的安全性和稳健性。本质上,区别于用户程序使用PSP,操作系统和异常事件单独使用一个MSP指针的目的,是为了保证栈数据不会被用户程序意外访问或栈空间被用户程序占用:
MSP(主堆栈指针)通常用于操作系统和异常事件(中断或其他fault)。在复位后,Cortex-M默认进入线程模式、特权级、使用MSP堆栈³。裸机操作时,使用的就是MSP指针。
PSP(进程堆栈指针)通常用于用户程序(线程)。在OS初始化时,对PSP进行初始化。

二、SVC和PendSV异常

SVC(系统服务调用,亦简称系统调用)和PendSV(可悬起系统调用),它们多用于在操作系统之上的软件开发中。
SVC:系统服务调用,用于产生系统函数的调用请求。操作系统不让用户程序直接访问硬件,而是通过提供一些系统服务函数,用户程序使用SVC 发出对系统服务函数的呼叫请求,以这种方法调用它们来间接访问硬件。
优点如下:
①.SVC使用户程序从控制硬件的繁文缛节中解脱出来,而是由操作系统负责控制具体的硬件;
②.操作系统的代码可以经过充分的测试,从而能使系统更加健壮和可靠;
③.SVC使用户程序无需在特权级下执行,用户程序无需承担因误操作而瘫痪整个系统的风险;
④.通过SVC 的机制,还让用户程序变得与硬件无关,因此在开发应用程序时无需了解硬件的操作细节,从而简化了开发的难度和繁琐度,并且使应用程序跨硬件平台移植成为可能。
PendSV(可悬挂起系统调用),可以像普通的中断一样被抢占挂起的。操作系统可以利用它“缓期执行”一个异常——直到其它重要的任务完成后才执行动作。


http://www.kler.cn/a/540980.html

相关文章:

  • 韶音科技:消费电子行业售后服务实现数字化转型,重塑客户服务体系
  • 算法之 博弈问题
  • stm32小白成长为高手的学习步骤和方法
  • 【python】matplotlib(animation)
  • STM32 HAL库 ADC程序(C语言)
  • 【报错解决】MySQL报错:sql_mode=only_full_group_by
  • C语言中隐式类型转换 截断和整型提升
  • Spring Security 学习大纲
  • CSDN 博客之星 2024:肖哥弹架构的社区耕耘总结
  • 在微服务中,如何使用feign在各个微服务中进行远程调用
  • 通过 SQLAlchemy 实现多表映射
  • 【VR开发】【Unity】【游戏开发】如何控制对象的速度
  • 原生鸿蒙版小艺APP接入DeepSeek-R1,为HarmonyOS应用开发注入新活力
  • 使用sunshine和moonlight串流时的音频输出问题
  • rebase和merge
  • 【含开题报告+文档+PPT+源码】学术研究合作与科研项目管理应用的J2EE实施
  • 用Kibana实现Elasticsearch索引的增删改查:实战指南
  • Linux系统引导与服务管理
  • Android双屏异显Presentation接口使用说明
  • celery + redis - 入门
  • 【C++语言】C++入门
  • 【生产变更】- Oracle RAC添加配置ipv6地址
  • 最简单方法本地部署deepseek及其他大模型(如Llama、千问等),有手就行
  • 【非 root 用户下全局使用静态编译的 FFmpeg】
  • 蓝桥杯---数青蛙(leetcode第1419题)
  • Ruby 日期 时间处理指南