在特权级模式下,用户可以访问和配置系统控制寄存器,比如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. 在初始化和开启多任务操作系统前做核心外设的初始化。
|