打印
[ARM入门]

用户级 特权级 AND 线程模式 Handler模式

[复制链接]
886|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
千岁寒|  楼主 | 2018-8-13 11:15 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
在特权级模式下,用户可以访问和配置系统控制寄存器,比如NVIC中断控制器。然而,如果是在非特权级模式下,系统控制寄存器是不允许访问的,一旦访问将导致硬件异常。
Unprivileged:
    非特权级,起到保护用户任务的作用,防止用户可以在任意任务中访问和修改系统寄存器,操作不当会造成系统崩溃。
Privileged:
    特权级,这种模式下用户可以在任意任务中对系统控制寄存器的访问和修改。

对于Cortex-M3或者M4内核来说,所有的核心外设寄存器都是只能在特权级下才可以访问。
核心外设主要是MPU,NVIC,SCB和STK四个单元。除了核心外设寄存器以外,M3/M4内核的特殊功能寄存器也是不能在非特权级下访问的,特殊功能寄存器主要包括以下寄存器:
1.  程序状态寄存器组(PSRs或曰xPSR)
2.  中断屏蔽寄存器组(PRIMASK, FAULTMASK,以及BASEPRI)
3.  控制寄存器(CONTROL)

对于参考手册上面所说的SPI,USART,USB等所有外设寄存器都是可以在非特权级下进行访问的。
在用户级下,不能访问系统控制空间(SCS,包含配置寄存器及调试组件的寄存器),且禁止使用MSR访问特殊功能寄存器(APSR除外),如果访问,则产生fault。

主要有以下两种方法访问核心外设:
1.  使用SVC(Supervisor Call)软中断。
2.  在初始化和开启多任务操作系统前做核心外设的初始化。


相关帖子

发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

72

主题

244

帖子

4

粉丝