把代码按特权级和用户级分开对待,有利于架构更加安全和健壮。例如,当某个用户代码出问题,不会让它成为害群之马,因为用户级的代码是禁止写特殊功能寄存器和NVIC中寄存器。另外,如果还配有MPU,保护力度就更大,甚至可以阻止用户代码访问不属于它的内存区域。
为了避免系统堆栈因应用程序的错误使用而毁坏,你可以给应用程序专门配一个堆栈,不让它共享操作系统内核的堆栈。在这个管理制度下,运行在线程模式的用户代码使用PSP,而异常服务例程则使用MSP。这两个堆栈指针的切换是全自动的,就在出入异常服务例程时由硬件处理。
未经允许不得转载:TacuLee » 为什么要区分特权级与用户级