cortex M3/M4内核 特权级与用户级详解

一 、程序运行为什么要有用户级与特权级区分

用户级和特权级的实现是为了给存储器提供一种保护机制,让用户代码不能访问特定的存储区域。
只有特权级级代码才能有权限访问特定的存储区域。防止用户代码或者应用代码意外或恶意访问操作系统的数据存储区域。一般情况下特权级模式会配合MPU一起使用,通过MPU设定只有特权级才能访问的存储空间。

二、特权级与用户级作用的范围

中断应用程序必须是特权级的,主程序可以是特权级的也可以是用户级的。处理器复位后在特权级模式下运行。在特权级模式下可以通过修改CONTROL 寄存器进入用户级代码。用户级代码只能通过SVC中断,出发SVC异常才能重新进入特权级。
在这里插入图片描述

三、特权级作用范围及可操作的指令

MRS MSR 指令只可以在特权级模式下使用。需要通过MRS MSR访问的特殊功能寄存器,除了APSR可以在用户级访问:
在这里插入图片描述
在这里插入图片描述

NVIC的中断控制/状态寄存器都只能在特权级下访问。不过有一个例外——软件触发中断寄存器可以在用户级下访问以产生软件中断。软件触发中断寄存器允许设置的前提,是设置中断控制寄存器STIR。

三、特权级与用户级使用的栈指针

特权级可以使用MSP 和PSP指针
用户级可以使用PSP,能不能使用MSP不太清楚。
在异常处理函数中只能使用MSP

  • 10
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值