Cortex-M3支持两种操作模式,还支持两种特权级别;

两种模式为handler模式和线程(thread)模式,这两种模式是为了区别正在执行代码的类型;handler模式为异常处理例程的代码;线程模式为普通应用程序的代码;

两种特权级别包括特权级和用户级,两种特权级别是对存储器访问提供的一种保护机制;在特权级下,程序可以访问所有范围的存储器(如果有MPU,还要在MPU的禁地之外),并且能够执行所有指令;在用户级下,不能访问系统控制空间(SCS,包含配置寄存器及调试组件的寄存器),且禁止使用MSR访问特殊功能寄存器(APSR除外),如果访问,则产生fault;

在线程模式,可以是特权级,也可以是用户级;handler模式总是特权级的;在复位后,处理器处于线程模式+特权级; 
 
在特权级下的代码可以通过置位CONTROL[0]来进入用户级。而不管是任何原因产生了任何异常,处理器都将以特权级来运行其服务例程,异常返回后将回到产生异常之前的特权级。用户级下的代码不能再试图修改CONTROL[0]来回到特权级。它必须通过一个异常handler,由那个异常handler 来修改CONTROL[0],才能在返回到线程模式后拿到特权级。

Cortex-M3操作模式和特权级别相关推荐

  1. Cortex-M3 操作模式和特权级别

    Cortex-M3支持两种操作模式,还支持两种特权级别: 两种模式为handler模式和线程(thread)模式,这两种模式是为了区别正在 执行代码的类型:handler模式为异常处理例程的代码:线程 ...

  2. Cortex-M3的工作模式和特权级别

    文章目录 1 Cortex-M3的工作模式和特权级别 1.1 工作模式和权限级别分类 1.2 特权级别的切换 1 Cortex-M3的工作模式和特权级别 1.1 工作模式和权限级别分类 处理器的工作模 ...

  3. 初步探索CPU特权级别

    0 引言 本文是在linux系统编程中所沉淀.主要从代码层面出发,直觉感受CPU特权级别的作用,然后初步讲解CPU特权级别的概念. 1 反汇编代码 本部分从两个代码示例出发. 反汇编代码访问RAX寄存 ...

  4. cortex m3的操作模式和状态

    1.操作状态(operation state): debug state:处理器在调试器发起halt或匹配到断点时,会进入debug state并停止执行指令. thumb state:处理器正在运行 ...

  5. 命令行界面命令模式及相互切换、交换机命令行操作模式及模式间的切换过程、命令行界面基本功能、命令的快捷键功能、交换机基本配置命令、交换机特权模式下基本命令、交换机全局配置模式下基本命令、

    1.命令行界面命令模式及相互切换   锐捷交换机命令行管理界面分成若干不同的模式,用户当前所处的命令模式决定了可以使用的命令,不可跨模式执行命令.以下给出三种基本模式.   用户模式(User EXE ...

  6. Cortex‐M3和Cortex‐M0是否都能位带操作

    最近在进行stm32l011f4的编程,想到stm32有位带操作,便想试一试,但是事与愿违,先贴下位带操作代码 Cortex‐M0的位带操作代码 //IO输出方向设置 #define SDA_IN() ...

  7. cortex-m3 操作模式 寄存器组 异常类型 堆栈 中断

    cortex-m3 操作模式 寄存器组 异常类型 堆栈 中断 参考 操作模式 处理器的操作模式:为了区别正在执行代码的类型.复位后,处理器进入线程模式.特权级. 处理者模式(handler mode) ...

  8. Cortex-M4操作模式

    Cortex-M4操作模式 Cortex-M4支持 2 个模式和两个权限等级. 两种运行模式:hander模式和线程模式 操作权限:特权级和用户级 为了提供一种存储器访问的保护机制,使得普通的用户程序 ...

  9. Cortex M3寄存器组

    寄存器组 宗旨:技术的学习是有限的,分享的精神是无限的. 1.通用目的寄存器R0~R7 R0-R7 也被称为低组寄存器.所有指令都能访问它们.它们的字长全是 32 位,复位后的初始值是不可预料的. 2 ...

最新文章

  1. 霍夫变换MATLAB怎么实现,做过Matlab关于霍夫变换检测圆的高手请进
  2. Android与Js进行交互
  3. Spring 框架 AOP 的总结
  4. notepad++ python指定anaconda环境以及代码补全设置
  5. VS2008下编译C++程序,找不到 stdint.h,原因及解决方案
  6. 核心金融场景分布式事务
  7. a标签提交form表单_Web前端开发基础知识,HTML中表单元素的理解
  8. 【数学建模】基于matlab重庆三号线地铁运行仿真【含Matlab源码 042期】
  9. 低延时极简RTMP播放器
  10. SQLite3下载与安装
  11. 服务器cpu开启虚拟化的好处,开启硬件虚拟化有什么好处和坏处?
  12. 你一生要知道的74幅世界名画…
  13. 安装打印机驱动时报错 -536870329 或 1FFFFDB9
  14. 手机支付宝面临的风险和应对(III)---手机支付宝能照搬PC的思路吗?
  15. java爬取查询四六级成绩_GitHub - Frank17/cet-grade: 英语四六级成绩查询工具
  16. 动态电压恢复器(DVR)模型 Matlab/simulink
  17. adobe acrobat 无效批注对象
  18. 硬币面值组合问题(完全背包问题)
  19. Mixin Messenger 的分布式 D3M-PIN 码介绍
  20. sklearn 读取csv_气象数据再分析数据的读取方式(GRIB格式为例)

热门文章

  1. Qt学习笔记-Qt5程序开机自启动(windows)
  2. java爬取网页并保存_第九讲:Python爬取网页图片并保存到本地
  3. mysql large_【转】mysql对large page的支持
  4. php隐藏做上传图片,php做图片上传功能
  5. mysql导入数据库注释乱码_source命令 导入.sql文件时,中文乱码 或者是注释乱码...
  6. rocket mq 监听端口_MQ消息最终一致性解决方案
  7. 人工神经网络与生物神经网络
  8. 56 - I. 数组中数字出现的次数
  9. Qt中对main.cpp的代码解释
  10. twisted系列教程十九–cancel deferred