历史上的今天
返回首页

历史上的今天

今天是:2024年09月18日(星期三)

正在发生

2020年09月18日 | 浅谈ARM体系CPU的7种工作模式

2020-09-18 来源:elecfans

  ARM有37个寄存器,其中31个通用寄存器,6个状态寄存器。本文主要讨论的是ARM体系的CPU的7种工作模式。


  一、存储器格式(字对齐)

  Arm体系结构将存储器看做是从零地址开始的字节的线性组合。从零字节到三字节放置第一个存储的字(32位)数据,从第四个字节到第七个字节放置第二个存储的字数据,一次排列。作为32位的微处理器,arm体系结构所支持的最大寻址空间为4GB。


  存储器格式

  1、大端格式:高字节在低地址,低字节在高地址;

  2、小端格式:高字节在高地址,低字节在低地址。

  指令长度

  Arm微处理器的指令长度是32位的,也可以为16位(thumb状态下)。Arm微处理器中支持字节(8位),半字(16位),字(32位)三种数据类型,其中,字需要4字节对齐,半字需要2字节对齐。


  注:所谓的指令长度是一条完整的指令的长度,而不是单纯的mov这3个字母长度。

浅谈ARM体系CPU的7种工作模式

  二、ARM体系的CPU有两种工作状态

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

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

  在程序运行的过程中,可以在两种状态之间进行相应的转换。处理器工作状态的转变并不影响处理器的工作模式和相应寄存器中的内容。

  CPU上电处于ARM状态。


  三、ARM体系的CPU有以下7种工作模式

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

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

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

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

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

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

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


  CPU的模式可以简单的理解为当前CPU的工作状态,比如:当前操作系统正在执行用户程序,那么当前CPU工作在用户模式,这时网卡上有数据到达,产生中断信号,CPU自动切换到一般中断模式下处理网卡数据(普通应用程序没有权限直接访问硬件),处理完网卡数据,返回到用户模式下继续执行用户程序。


  特权模式

  除用户模式外,其它模式均为特权模式(Privileged Modes)。ARM内部寄存器和一些片内外设在硬件设计上只允许(或者可选为只允许)特权模式下访问。此外,特权模式可以自由的切换处理器模式,而用户模式不能直接切换到别的模式。


  异常模式

  特权模式中除系统(system)模式之外的其他5种模式又统称为异常模式。它们除了可以通过在特权下的程序切换进入外,也可以由特定的异常进入。比如硬件产生中断信号进入中断异常模式,读取没有权限数据进入中止异常模式,执行未定义指令时进入未定义指令中止异常模式。其中管理模式也称为超级用户模式,是为操作系统提供软中断的特有模式,正是由于有了软中断,用户程序才可以通过系统调用切换到管理模式 。


  (1)用户模式

  用户模式是用户程序的工作模式,它运行在操作系统的用户态,它没有权限去操作其它硬件资源,只能执行处理自己的数据,也不能切换到其它模式下,要想访问硬件资源或切换到其它模式只能通过软中断或产生异常。

  (2)系统模式

  系统模式是特权模式,不受用户模式的限制。用户模式和系统模式共用一套寄存器,操作系统在该模式下可以方便的访问用户模式的寄存器,而且操作系统的一些特权任务可以使用这个模式访问一些受控的资源。

  (3)一般中断模式

  一般中断模式也叫普通中断模式,用于处理一般的中断请求,通常在硬件产生中断信号之后自动进入该模式,该模式为特权模式,可以自由访问系统硬件资源。

  (4)快速中断模式

  快速中断模式是相对一般中断模式而言的,它是用来处理对时间要求比较紧急的中断请求,主要用于高速数据传输及通道处理中。

  (5)管理模式

  管理模式是CPU上电后默认模式,因此在该模式下主要用来做系统的初始化,软中断处理也在该模式下,当用户模式下的用户程序请求使用硬件资源时通过软件中断进入该模式。

  (6)终止模式

  中止模式用于支持虚拟内存或存储器保护,当用户程序访问非法地址,没有权限读取的内存地址时,会进入该模式,Linux下编程时经常出现的segment fault通常都是在该模式下抛出返回的。

  (7)

  未定义模式

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

推荐阅读

史海拾趣

Block USA Inc.公司的发展小趣事

在支付与金融服务领域取得成功后,Block USA Inc.还尝试了跨界合作,推出了音乐软件TIDAL。这一举措旨在通过提供高品质的音乐体验,吸引更多年轻用户群体,并进一步扩大Block的品牌影响力。虽然音乐市场竞争激烈,但TIDAL凭借其独特的音乐资源和用户体验,逐渐在市场中占据了一席之地。

Fujitsu America公司的发展小趣事

在物联网(IoT)和智能制造领域,Fujitsu America也展现出了卓越的创新能力和市场洞察力。公司通过与PTC等合作伙伴的紧密合作,将物联网技术和智能制造技术相结合,推出了一系列面向制造业的智慧工厂解决方案。这些解决方案不仅提高了生产效率和产品质量,还降低了生产成本和能源消耗,为制造业的数字化转型和可持续发展提供了有力支持。Fujitsu America的智慧工厂解决方案在北美市场得到了广泛应用和认可,为公司赢得了良好的市场口碑和品牌形象。

远东福斯特公司的发展小趣事

随着云计算技术的兴起,Fujitsu America紧跟时代潮流,积极推动云计算服务的全球化布局。公司凭借其强大的技术实力和丰富的行业经验,为北美乃至全球的企业客户提供了一站式的云计算解决方案和服务。Fujitsu America的云计算服务不仅涵盖了基础设施即服务(IaaS)、平台即服务(PaaS)和软件即服务(SaaS)等多个层面,还注重与客户的深度合作,根据客户的实际需求提供定制化的解决方案,帮助客户实现数字化转型和业务升级。

Bel Fuse公司的发展小趣事

在发展过程中,Bel Fuse注重与合作伙伴建立长期稳定的合作关系。公司积极寻求与全球知名企业的合作机会,通过技术合作、资源共享等方式,共同推动电子行业的发展。这些合作伙伴关系的建立不仅为公司带来了更多的业务机会,还提升了公司的技术水平和市场竞争力。

淩志比高公司的发展小趣事

随着市场的不断变化和客户需求的日益多样化,淩志比高公司意识到技术创新的重要性。公司投入大量研发资源,不断推陈出新,成功研发出一系列具有竞争力的新产品。这些产品的推出不仅提升了公司的市场份额,也进一步巩固了公司在电子行业中的地位。

格科微电子(GALAXYCORE)公司的发展小趣事

在电子行业的浪潮中,淩志比高公司由几位充满激情的创业者创立。创业初期,公司面临着资金短缺、市场竞争激烈等挑战。然而,凭借对技术的深刻理解和敏锐的市场洞察力,淩志比高成功开发出一款具有创新性的电子产品,迅速在市场上获得了一席之地。

问答坊 | AI 解惑

用CH36x通过Boot-ROM扩展BIOS的方案

用CH36x通过Boot-ROM扩展BIOS的方案…

查看全部问答>

C51按键程序设计

按键程序设计,可以处理加速键、一键多功能等情况 后面有P1口行列式键盘程序实例 设计按键程序的思路 1、一般都不在键盘程序中延时,而是通过隔一段时间调用(比如10毫秒)来扫描按键,以尽量释放CPU资源; 2、所有键盘程序基本上都是一个模 ...…

查看全部问答>

工业MP3焊接历程1-焊接遇到一个小问题

我在焊接的时候发现u2的30和31脚是在一根线上,是不是焊接时候焊接连线了呢?经过问soso,soso又问了古道热肠,原来是一根线上的。但是呢在原图纸中并不是在一根线上,是图纸错还是别的原因呢?图纸我已近标出,现附上。还有视频$(\'swf_ITY\').inn ...…

查看全部问答>

在Linux下些驱动程序,求助!

小弟现在C语言写的还可以吧,IBM-PC8086汇编语言也学习了,当年也学习得很认真,也还算可以。准备转向Linux下驱动程序开发上去 现在工具:s3c2410arm开发板 三星的 书籍:嵌入式LInux应用开发完全是手册(韦东山 编著)      &n ...…

查看全部问答>

windows CE下如果想实现收短信的功能,应该用什么API啊?

我用的是EVC,如何读取SIM卡中的短信呢?工作方式是定时扫描还是有短信到来会触发什么事件呢?哪位有经验指点一二…

查看全部问答>

问一个EVC开发环境的问题

我有两个机器,都是XP的。 两个机器装EVC+SP4都可以,使用EVC默认模拟器都可以运行。 后来为了运行中文程序,下载了eeworld上sunrain_hjb上传的CHSEmulator_SDK.msi。 (这里感谢一下sunrain_hjb) 两个机器安装以后,一个可以正常使用这个中文 ...…

查看全部问答>

CSpinButtonCtrl使用问题

设置spin的范围为 0-1000,显示为0.0-100 处理方法如下: 在OnVScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar)         strValue.Format(L\"%3.1f\",   (double)nPos/10.0);    ...…

查看全部问答>

2008,新年快乐!

                                 希望新的一年,我们能够取得更大的进步,交到更多的朋友!…

查看全部问答>

【设计工具】 XILINX ISE 设计视频 与Modelsim 6.5仿真

$(\'swf_S7W\').innerHTML=AC_FL_RunContent(\'width\', \'550\', \'height\', \'400\', \'allowNetworking\', \'internal\', \'allowScriptAccess\', \'never\', \'src\', encodeURI(\'http://player.youku.com/player.php/sid/XMjc5NzM0NTY4/v.sw ...…

查看全部问答>

【Altera SoC体验之旅】+菜鸟的感悟

         最近今天看了看ALTREA内存卡里的用乎手册,对SOC有个模糊的认识。在这里说一些本人的感悟,如有错误的地方还望各位大神指出。          个人感觉未来电子系统控制的主要问 ...…

查看全部问答>