一、arm处理器7种工作模式(特权模式 特权模式异常模式)
用户模式(usr):正常程序执行模式,不能直接切换到其他模式
系统模式(sys):运行操作系统的特权任务,与用户模式类似,但具有可以直接切换到其他模式等特权
快中断模式(fiq):支持高速数据传输及通道处理,fiq异常响应时进入此模式
中断模式(irq):用于通用中断处理,irq异常响应时进入此模式
管理模式(svc):操作系统保护模式,系统复位和软件中断响应时进入此模式(由系统调用执行软中断swi命令触发)
中止模式(abt):用于支持虚拟内存和/或存储器保护,在arm7tdmi没有大用处
未定义模式(und):支持硬件协处理器的软件仿真,未定义指令异常响应时进入此模式
除用户模式外,其余6种工作模式都属于特权模式
特权模式中除了系统模式以外的其余5种模式称为异常模式
大多数程序运行于用户模式
进入特权模式是为了处理中断、异常、或者访问被保护的系统资源
硬件权限级别:系统模式 > 异常模式 > 用户模式
快中断与慢中断区别:快中断处理时禁止中断
二、异常的优先级
三、存储器格式
大端格式:高字节在低地址,低字节在高地址
小端格式:高字节在高地址,低字节在低地址
四、arm体系的cpu有两种工作状态
arm状态
thumb状态
五、linux操作系统与arm工作模式
首先,arm开发板在刚上电或复位后都会首先进入svc即管理模式,此时、程序计数器r15-pc值会被赋为0x0000 0000;bootloader就是在此模式下,位于0x0000 0000的nor flash或sram中装载的,因此、开机或重启后bootloader会被首先执行。
接着,bootloader引导linux内核,此时、linux内核一样运行在arm的svc即管理模式下;当内核启动完毕、准备进入用户态init进程时,内核将arm的当前程序状态cpsr寄存器m[4:0]设置为10000、进而用户态程序只能运行在arm的用户模式。
由于arm用户模式下对资源的访问受限,因此、可以达到保护linux操作系统内核的目的。
需要强调的是:linux内核态是从arm的svc即管理模式下启动的,但在某些情况下、如:硬件中断、程序异常(被动)等情况下进入arm的其他特权模式,这时仍然可以进入内核态(因为就是可以操作内核了);同样,linux用户态是从arm用户模式启动的,但当进入arm系统模式时、仍然可以操作linux用户态程序(进入用户态,如init进程的启动过程)。
即:linux内核从arm的svc模式下启动,但内核态不仅仅指arm的svc模式(还包括可以访问内核空间的所有arm模式);linux用户程序从arm的用户模式启动,但用户态不仅仅指arm的用户模式。
『本文转载自网络,u球体育app下载的版权归原作者所有,如有侵权请联系删除』