我是靠谱客的博主 激动大山,最近开发中收集的这篇文章主要介绍STM32/ARM术语:处理者模式/线程模式、特权级/用户级,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

http://blog.sina.com.cn/s/blog_98ee3a930100ymvd.html

上面这篇文章讲的是双堆栈指针的问题,提到:

模式分为两种:处理者模式(handler)和线程模式(thread);

权限级别也分为两种:特权级别、用户级别。

转载:https://blog.csdn.net/lushoumin/article/details/78640850

最关键的两点就是下面标红的句子:

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

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

两种特权级别包括特权级和用户级,两种特权级别是对存储器访问提供的一种保护机制;在特权级下,程序可以访问所有范围的存储器(如果有MPU,还要在MPU的禁地之外),并且能够执行所有指令;在用户级下,某些寄存器不允许访问,如果访问,则产生fault,具体地说就是MPU,NVIC,SCB和STK四个单元不能访问,相关资料自行搜索:任务运行在特权级或非特权级模式 

在线程模式,可以是特权级,也可以是用户级;handler模式总是特权级的;在复位后,处理器处于线程模式+特权级;

 

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

上面这一段也就是linux中,内核态与用户态的切换原理,所谓内核态就是ARM的线程模式的特权级,而用户态就是ARM线程模式的用户级。

最后

以上就是激动大山为你收集整理的STM32/ARM术语:处理者模式/线程模式、特权级/用户级的全部内容,希望文章能够帮你解决STM32/ARM术语:处理者模式/线程模式、特权级/用户级所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(80)

评论列表共有 0 条评论

立即
投稿
返回
顶部