历史上的今天
今天是:2024年11月03日(星期日)
2021年11月03日 | ARM内核架构(二)——ARM处理器7种工作模式
2021-11-03 来源:eefocus
一、ARM处理器7种工作模式(特权模式 特权模式异常模式)
用户模式(USR):正常程序执行模式,不能直接切换到其他模式
系统模式(SYS):运行操作系统的特权任务,与用户模式类似,但具有可以直接切换到其他模式等特权
快中断模式(FIQ):支持高速数据传输及通道处理,FIQ异常响应时进入此模式
中断模式(IRQ):用于通用中断处理,IRQ异常响应时进入此模式
管理模式(SVC):操作系统保护模式,系统复位和软件中断响应时进入此模式(由系统调用执行软中断SWI命令触发)
中止模式(ABT):用于支持虚拟内存和/或存储器保护,在ARM7TDMI没有大用处
未定义模式(UND):支持硬件协处理器的软件仿真,未定义指令异常响应时进入此模式

除用户模式外,其余6种工作模式都属于特权模式
特权模式中除了系统模式以外的其余5种模式称为异常模式
大多数程序运行于用户模式
进入特权模式是为了处理中断、异常、或者访问被保护的系统资源
硬件权限级别:系统模式 > 异常模式 > 用户模式
快中断与慢中断区别:快中断处理时禁止中断
CPU的模式可以简单的理解为当前CPU的工作状态,比如:当前操作系统正在执行用户程序,那么当前CPU工作在用户模式,这时网卡上有数据到达,产生中断信号,CPU自动切换到一般中断模式下处理网卡数据(普通应用程序没有权限直接访问硬件),处理完网卡数据,返回到用户模式下继续执行用户程序
特权模式
除用户模式外,其它模式均为特权模式(Privileged Modes)。ARM内部寄存器和一些片内外设在硬件设计上只允许(或者可选为只允许)特权模式下访问。此外,特权模式可以自由的切换处理器模式,而用户模式不能直接切换到别的模式
异常模式
特权模式中除系统(system)模式之外的其他5种模式又统称为异常模式。它们除了可以通过在特权下的程序切换进入外,也可以由特定的异常进入。比如硬件产生中断信号进入中断异常模式,读取没有权限数据进入中止异常模式,执行未定义指令时进入未定义指令中止异常模式。其中管理模式也称为超级用户模式,是为操作系统提供软中断的特有模式,正是由于有了软中断,用户程序才可以通过系统调用切换到管理模式
Linux操作系统使用了其中USR和SVC模式、出现异常时还可能通过进入其他模式转为Linux内核态
MMU种有存储访问权限控制功能,访问没有权限的地址时,会产生Permission fault中断
二、异常的优先级

三、存储器格式
大端格式:高字节在低地址,低字节在高地址
小端格式:高字节在高地址,低字节在低地址
四、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的用户模式。
上一篇:ARM——体系架构
下一篇:ARM WFI和WFE指令
史海拾趣
|
我对verilog非常感兴趣!现在也在努力学习,可是不知道怎么才能学好!就像我在学c语言时,看了好多的程序,可是一上机就不知道该怎么做了!就连一个小程序写起来都很费劲!现在我就怕把verilog学到后期也成这样子了!那就不好了。 &n ...… 查看全部问答> |
|
wince5.0,三星2440板子,设置定时器0,每625ms中断一次,在调试状态每次中断都是625ms左右,精确度很高,可是一把程序放到板子上跑,中断间隔很不准,每次时间如下: DrvDispatchThread::time = 1018 DrvDispatchThread::time = 1085 DrvDispat ...… 查看全部问答> |
|
大家好: 最近在做 Grub 网络引导的研究.在这个过程中发现了很多问题,希望能有朋友能帮助解答一些: (1) root (nd) 在grub源文件 的stage2 中,我加入了自己的网卡驱动,并按照netboot.READM ...… 查看全部问答> |
|
联网下载程序问题:用usb线连接pda,下载程序总提示“无法与服务器建立连接”,请指点,谢谢。 我在evc下这么用的这个数据下载程序,用usb线连接的pda,但是总提示我无法与服务器建立连接,请问各位高手,这怎么回事,是我哪里没有设对,还是程序或设备本身有问题或者欠缺,非常感谢。 用这句进行下载,用按钮进行实现: InternetDownload(\ ...… 查看全部问答> |
|
各位高手,什么都不会的小白,要学习单片机,从什么开始学起?有C 语言基础该买什么样的编程器,都用什么软件环境进行仿真? [ 本帖最后由 micoyoung 于 2010-8-25 16:48 编辑 ]… 查看全部问答> |
|
Input impedance matching with fully differential amplifiers 本帖最后由 dontium 于 2015-1-23 13:39 编辑 IntroductionImpedance matching is widelyused in the transmission ofsignals in many end applicationsacross the industrial,munications, video, medical,test, measurement, andmilitary market ...… 查看全部问答> |
|
呵呵。。标题了一把,,说白了就是个8*8点阵的贪吃蛇。。。。 相信这种 蛇 坛子里已经有很多很多了。。。不过抱着“一千个程序员手中,有一千咱贪吃蛇”的想法,把我的拙劣程序发上来大家看一眼吧 欢 ...… 查看全部问答> |
|
日前,德州仪器 (TI) 宣布推出最新 Sitara™ AM335x ARM® Cortex™-A8 入门套件,其通过采用板载加速计支持旋转与倾斜功能的 4.3 英寸 LCD 显示屏,可为智能电器、工业,网络应用以及其它需要触摸屏界面的设备提供一款低成本平台。 ...… 查看全部问答> |




