历史上的今天
返回首页

历史上的今天

今天是:2024年11月02日(星期六)

2021年11月02日 | ARM处理器工作状态和模式

2021-11-02 来源:eefocus

两种工作状态

1、ARM状态:处理器执行32位对齐的ARM指令;

2、Thumb状态:处理器执行16位对齐的ARM指令。


它们之间的区别在于:Thumb指令集不是完整的指令集,它是ARM指令集的子集。但是Thumb指令具有更高的代码密度,即占用存储空间小,仅为ARM代码规格的65%,但其性能却下降的很少。所以,Thumb指令集使ARM处理器能应用到有限的存储带宽,并且,代码密度要求很高的嵌入式系统中去。Thumb指令集没有协处理器指令、信号量指令以及访问CPSR或SPSR的指令,没有乘加指令及64位乘法指令等,且指令的第二操作数受到限制;除了跳转指令B有条件执行功能外,其他指令均为无条件执行;大多数Thumb数据处理指令采用2地址格式。


七种工作模式

1、用户模式(Usr):用于正常执行程序;

2、快速中断模式(FIQ):用于高速数据传输;

3、外部中断模式(IRQ):用于通常的中断处理;

4、管理模式(svc):操作系统使用的保护模式;

5、数据访问终止模式(abt):当数据或指令预取终止时进入该模式,可用于虚拟存储以及存储保护;

6、系统模式(sys):运行具有特权的操作系统任务;

7、未定义指令中止模式(und):当未定义的指令执行时进入该模式,可用于支持硬件。

除用户模式以外,其余6种模式都属于特权模式。用户模式不能够直接和其他6种模式进行切换,需要借助中断、异常,系统调用等。用户模式主要为了设置应用程序的权限,防止对系统造成破坏,起到保护作用。而其他6种模式直接可以直接进行切换。详情可以看下图:

在这里插入图片描述

两种寄存器

1、CPSR(current program status register):当前程序状态寄存器。

CPSR和其他寄存器不一样,其他寄存器是用来存放数据的,都是整个寄存器具有一个含义.而CPSR寄存器是按位起作用的,也就是说,它的每一位都有专门的含义,记录特定的信息.(CPSR寄存器为32位)

在这里插入图片描述

CPSR的低8位(包括I、F、T和M[4:0])称为控制位,程序无法修改,除非CPU运行于特权模式下,程序才能修改控制位!

N、Z、C、V均为条件码标志位。它们的内容可被算术或逻辑运算的结果所改变,并且可以决定某条指令是否被执行!意义重大!

在这里插入图片描述

从对应表中可以看出M[4:0]各种状态表示的含义。


2、SPSR(Saved Program Status Register):程序状态保存寄存器

当切换进入某一个特权模式时,SPSR保存前一个工作模式的CPSR值,这样,当返回前一个工作模式时,可以将SPSR的值恢复到CPSR中;

总结如下:1.保存ALU中的当前操作信息;

2.控制允许和禁止中断;

3.设置处理器的运行模式。


ARM中有两条指令用于在状态寄存器和通用寄存器之间传送数据。即MRS、MSR。在对CPSR,SPSR寄存器进行操作不能使用mov,ldr等通用指令,只能使用特权指令MRS和MSR。


在ARM处理器中,只有MRS(Move to Register from State register)指令可以对状态寄存器CPSR和SPSR进行读操作。通过读CPSR可以获得当前处理器的工作状态。读SPSR寄存器可以获得进入异常前的处理器状态(因为只有异常模式下有SPSR寄存器)。

比如:


MRS    R1,CPSR   ; 将CPSR状态寄存器读取,保存到R1中

MRS    R2,SPSR    ; 将SPSR状态寄存器读取,保存到R2中


MSR    CPSR_c,R0 ; 将修改后的值写回 CPSR寄存器的对应控制域


linux操作系统与ARM工作模式

首先,ARM开发板在刚上电或者复位后,都会首先进入SVC即管理模式,此时、程序计数器R15-PC会被自动赋值为0x0000 0000,bootloader就是在该模式下,位于0x0000 0000 的NOR FLASH或SRAM中装载的,因此,开机或重启后bootloader会被首先执行。

接着,bootloader引导linux内核,此时,linux内核仍然运行在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的用户模式。

推荐阅读

史海拾趣

Advanced Technology Corp公司的发展小趣事

ATC公司深知质量管理对于企业发展的重要性。因此,公司建立了严格的质量管理体系,从原材料的采购到产品的生产、检测、包装等环节都进行严格控制。此外,ATC公司还注重员工的培训和教育,提升员工的质量意识和技能水平。这些措施确保了ATC公司产品的稳定性和可靠性,赢得了客户的信任和好评。

E-Z-HOOK公司的发展小趣事

E-Z-HOOK公司非常重视与客户的关系建立与维护。他们始终坚持以客户为中心的经营理念,努力为客户提供高质量的产品和优质的服务。为了更好地了解客户需求和反馈,公司建立了完善的客户服务体系,包括售前咨询、售后服务和技术支持等。此外,公司还定期组织客户交流会和技术研讨会等活动,加强与客户的沟通与互动。这些努力使得E-Z-HOOK公司赢得了广大客户的信任和支持。

EWC Controls公司的发展小趣事

EWC Controls公司自成立以来,一直专注于工业自动化控制技术的研发与应用。在早期,公司凭借其独特的PID控制算法,成功开发了一系列高性能的控制器产品,赢得了市场的初步认可。随着技术的不断进步,EWC Controls公司不断投入研发资源,推出了基于物联网和大数据的智能控制系统,实现了从单一控制到智能化管理的跨越。这一创新技术不仅提升了公司的核心竞争力,也为工业自动化控制领域带来了革命性的变化。

Dolphin Interconnect Solutions Asa公司的发展小趣事

Dolphin Interconnect Solutions ASA自创立之初,便以技术革新为核心驱动力。公司不断投入研发资源,开发出了基于PCI Express的I/O和clustering产品,这些产品在市场上取得了显著的成功。随着技术的不断进步,Dolphin又成功地将产品扩展到更广泛的领域,如云计算、大数据处理等,进一步巩固了其在电子行业的地位。

常州能动(ENDRIVE)公司的发展小趣事

随着环保意识的日益增强,常州能动积极响应国家政策,加大环保投入。公司引进了先进的环保设备和技术,对生产过程中的废弃物进行无害化处理。同时,公司还注重节能减排和资源循环利用,推动公司向绿色、低碳、可持续发展的方向迈进。这些努力不仅提升了公司的社会形象,也为公司的长远发展打下了坚实基础。

台湾稳态公司的发展小趣事

在电子行业中,品质是企业生存和发展的关键。台湾稳态公司深知这一点,因此从创业之初就坚持品质至上的原则。公司不仅严格把控原材料采购和生产流程,还建立了完善的品质管理体系和售后服务体系。通过不断提升产品品质和服务水平,稳态公司赢得了客户的信赖和口碑,为公司的长远发展奠定了坚实的基础。

问答坊 | AI 解惑

uclinux核心手册-中文

uclinux核心手册-中文…

查看全部问答>

PCB元件封装知识!

器件封装,就是指把硅片上的电路管脚,用导线接引到外部接头处,以便与其它器件连接。封装形式是指安装半导体集成电路芯片用的外壳。它不仅起着安装、固定、密封、保护芯片及增强电热性能等方面的作用,而且还通过芯片上的接点用导线连接到封装外壳的 ...…

查看全部问答>

5月13日 示波器下一阶段的安排

这些天我把所有器件的封装打上,准备画PCB。网友、参加活动的朋友可以帮我找找有没有疏忽的地方。特别是STM32的ARM,这100脚封装的第一次用,不知道有没有丢的东西。还有什么建议也可以提。 另外接受软件开发报名(报名可以在下面跟贴),将在PCB出 ...…

查看全部问答>

单片机MCS-51系列指令快速记忆法

本帖最后由 paulhyde 于 2014-9-15 09:22 编辑 汇编大家最好了解一部分,以后肯定是会用的到的,在网上找了一篇文章,帮助大家学习51,希望对大家有帮助 随着微电子技术和超大规模集成电路技术的发展,单片微型计算机以其体积小、性价比高、 ...…

查看全部问答>

请教Flash MDD PDD架构的使用

Flash MDD组件在PB里面可以选上,编译后即可生成对应的flashpart.dll和flashmdd.dll, 虽然在BSP中可以看到flashpdd相关的源代码,但pdd相关的dll却不知道该怎么生成? 请各位指教。…

查看全部问答>

JSP中站点中的WEB-INF下的web.xml文件有什么用?

JSP中站点中的WEB-INF下的web.xml文件有什么用呢?一般写什么内容的?…

查看全部问答>

arm9 (timer counter) 外接buzzer 怎样选择 时钟频率

接入一个外设buzzer。 i/o接入。应该设置timer counter. 看datasheet 现在有5个Timer Counter Clock TIMER_CLOCK1 MCK/2 TIMER_CLOCK2 MCK/8 TIMER_CLOCK3 MCK/32 TIMER_CLOCK4 MCK/128 TIMER_CLOCK5 SLCK 我应该选择那个。我用的是arm9 AT91 ...…

查看全部问答>

LC测量小工具----- 三,LM311测试

在家翻个底朝天,找到一个LM311,开始动手,照着原理图来做,因为没有频率计,也没有示波器。所以拿一个小喇叭做试验。 当LC振荡电容增大时,小喇叭输出的频率变小,电路经试验没有问题,下一步开始写程序。 …

查看全部问答>

The New Ipad发布,更名为New Ipad(牛排)

又出乎大家的意料,新一代的ipad更名为New Ipad(牛排)。 显示屏达到了2048x1536的分辨率,CPU更新为A5X,GPU变成了4个。 但是不知道GPU跟以前的是不是一样的,GPU 的增强跟屏幕也是相关的。 支持1080P视频录制,其他指标见下图。、 …

查看全部问答>

室内空气净化器控制系统设计

该课题主要设计空气净化器,通过检测室内空气污染物的含量以及室内人员的活动程度,经单片机分析处理后,再控制空气净化器进行杀菌消毒。需要微型计算机一台进行控制系统软硬件设计。 设计内容: 1)根据室内空气需要净化的需求,分析控制系统中 ...…

查看全部问答>