搜索
bottom↓
回复: 4

cortex-m3/m4,特权处理模式和非特权处理模式有哪些区别呢?

[复制链接]

出0入0汤圆

发表于 2023-4-13 17:16:54 | 显示全部楼层 |阅读模式


针对freertos工程
1、os还没运行时:nPRIV=0 SPSEL=0 即处理器处于特权线程模式,线程模式使用MSP
2、os开始运行时:nPRIV=0 SPSEL=1 即处理器处于特权线程模式,线程模式使用PSP
备注:异常处理处于特权处理模式,始终使用MSP

问题1:
特权处理模式和非特权处理模式有哪些区别呢?
问题2:
os开始运行时使用nPRIV=1 SPSEL=1存在哪些问题?

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入18汤圆

发表于 2023-4-13 17:26:46 来自手机 | 显示全部楼层
非特权模式还有一些寄存器无法读写

出0入0汤圆

发表于 2023-4-13 17:32:26 | 显示全部楼层
个人知识比较浅,试着回答一下,不对请斧正
M3  M4  M0+ 这种级别的处理器,只是堆栈指针的区别。
所谓的特权模式,就是中断,使用的是MSP,其他的任务栈在执行时使用PSP指针
当然,像freeos 这样,在任务切换时,其实是触发了PendSV中断,在中断里执行内核相关的操作。双堆指针保证了内核的堆栈不被污染[个人觉得这样也不安全]。

更高级的处理器,像A系列,M7,有内存管理单元,任务空间和系统空间可以划分,应用程序只可以访问自己空间里的内存

出0入8汤圆

发表于 2023-4-14 09:14:12 | 显示全部楼层
本帖最后由 security 于 2023-4-14 09:15 编辑

1、主要的区别就是特权拥有全部的访问权限,非特权是受限的,访问权限可以通过 MPU 设置存储器的访问权限。
另外可能有一些寄存器,本身就要求一定要特权模式才能访问。

2、OS 开始运行时,使用非特权模式的话,那么访问受限制的资源,就要从非特权模式切换到特权模式,这需要借助特殊的机制,需要额外的开销,
对于简单的 RTOS 应用而言,还不如直接在特权模式来得省事。

出0入0汤圆

 楼主| 发表于 2023-4-14 09:21:17 | 显示全部楼层
security 发表于 2023-4-14 09:14
1、主要的区别就是特权拥有全部的访问权限,非特权是受限的,访问权限可以通过 MPU 设置存储器的访问权限。 ...
(引用自4楼)


感谢阁下不吝赐教!
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-4-30 21:22

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表