arm处理器工作模式

ARM有8个基本工作模式

1. User   :  用户模式      

非特权模式,大部分任务执行在这种模式,运行在操作系统的用户态,没有权限去操作其他硬件资源,只能执行处理用户自己的数据,也不能切换到其他模式,要访问硬件资源或切换到其他模式,只能通过软中断或者产生异常。

 

2. FIQ   :  快速中断     

当一个高优先级(fast) 中断产生时将会进入这种模式,用于高速数据处理及通道处理。

3. IRQ    : 中断               

当一个低优先级(normal) 中断产生时将会进入这种模式,硬件产生中断信号之后就自动  都进入这种模式。

4. Supervisor:  svc管理模式      

当复位【reset重启】或软中断【swi】指令执行时将会进入这种模式。

5. Abort  :  终止模式      

当存取异常时将会进入这种模式比如:segment fault,用于支持虚拟内存或者存储器保护,当用户访问非法地址的时候就进入这个模式。

 

6. Undef:  未定义模式   

当执行未定义指令时会进入这种模式,用于支持硬件协处理器的软件仿真,cpu在指令译码阶段不能识别的指令操作时,进入未定义模式。

 

7. System :    系统模式      

使用和User模式相同寄存器集的特权模式

 

8. Cortex-A特有模式:

Monitor :   监测模式      

是为了安全而扩展出的用于执行安全监控代码的模式;

 

说明1:除了User模式其他模式都是特权模式,在特权模式下所有硬件资源都可以访问。

 

说明2:

linux:

用户模式,----------  cpu  处于 user模式

内核模式   ----------- 特权模式

 

用户要进入内核模式,可以通过系统调用或者进入异常模式

1. 系统调用比如调用open、read 、write等系统函数,进入到内核模式,此时cpu处于svc Supervisor

2. 异常,除了user的其他工作模式


猜你喜欢

转载自blog.csdn.net/weixin_42048417/article/details/80573356