历史上的今天
返回首页

历史上的今天

今天是:2025年04月05日(星期六)

2020年04月05日 | ARM体系结构(1)- 工作模式与工作状态

2020-04-05 来源:eefocus

1. ARM的工作模式

用户模式(usr):属于正常的用户模式,ARM处理器正常的程序执行状态。

快速中断模式(fiq):用于处理快速中断,对高速数据传输或通道处理。

外部中断模式(irq):对一般情况下的中断进行处理。

管理模式(svc):属于操作系统使用的保护模式,处理软件中断swi reset。

数据访问终止模式(abt):当数据或指令预取终止时进入该模式,可用于处理存储器故障、实现虚拟存储器和存储器保护。

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

未定义指令中止模式(und):处理未定义的指令陷阱,当未定义的指令执行时进入该模式,可用于支持硬件协处理器的软件仿真。


模式的改变可由软件控制,或者由外部中断或进入异常引起。大部分应用程序都将在用户模式执行。 被称为特权模式的非用户模式,都将进入到中断服务或异常中去,或者访问受保护的资源


用户模式和特权模式


除了用户模式之外的其他6种处理器模式称为特权模式


特权模式下,程序可以访问所有的系统资源,也可以任意地进行处理器模式的切换。


特权模式中,除系统模式外,其他5种模式又称为异常模式。


大多数的用户程序运行在用户模式下,此时,应用程序不能够访问一些受操作系统保护的系统资源,应用程序也不能直接进行处理器模式的切换。


用户模式下,当需要进行处理器模式切换时,应用程序可以产生异常处理,在异常处理中进行处理器模式的切换。


缺页异常、中断和系统调用同属arm异常处理


1.1 异常跳转过程

异常向量表

所有的CPU都有异常向量表,这是CPU设计时就设定好的,是硬件决定的。 当异常发生时,CPU会自动动作(PC跳转到异常向量处处理异常,有时伴有一些辅助动作) 异常向量表是硬件向软件提供的处理异常的支持。


异常产生时


做好保护现场的工作:


(1)把cpsr保存到spsr中,设置适当的cpsr(改变处理器的ARM状态、改变处理器进入相应的异常模式、(视情况)改变中断禁止位禁止相应中断)


(2)保存返回地址到lr


(3)设置pc为相应的异常向量实现跳转。


异常返回时


做好恢复现场工作:


(1)从spsr恢复cpsr


(2)从lr恢复pc


注意:这些操作必须在ARM状态执行

因为:当处理器进行异常处理时,则从异常向量地址开始执行,将自动进入ARM状态。


TIPS:


(1)异常向量表中除了FIQ中断都是4个字节,所以只够存放一段异常处理程序的代码的首地址


(2)FIQ中断为快速中断,其中一个特殊的地方就体现在他的异常向量表(Vector Table)地址在最后一个,所以它可以存放不止4个字节,这样的话FIQ中断可以不用只存放地址,而是把整个异常处理程序放进去,这样就少跳转了一次,加快了中断相应速度。


ARM模式与thumb工作状态下各工作模式的寄存器访问地址

在这里插入图片描述

在这里插入图片描述

对应关系


1.2 为什么需要不同的工作模式

不同的工作模式来响应不同的异常,起到管理异常的作用。同时配合操作系统,比如说linux内核可以在不同的模式下,而用户程序不可以,起到权限管理、保护的作用,能够保证系统的正确运行。


2. ARM的工作状态

在ARM的体系结构中,可以工作在三种不同的状态,一是ARM状态,二是Thumb状态及Thumb-2状态,三是调试状态。


ARM状态和Thumb状态可以直接通过某些指令直接切换,都是在运行程序,只不过指令长度不一样而已


2.1 ARM状态

arm处理器工作于32位指令的状态,所有指令均为32位


2.2 thumb状态

arm执行16位指令的状态,即16位状态


2.3 thumb-2状态

这个状态是ARM7版本的ARM处理器所具有的新的状态,新的thumb-2内核技术兼有16位及32位指令,实现了更高的性能,更有效的功耗及更少地占用内存。总的来说,感觉这个状态除了兼有arm和thumb的优点外,还在这两种状态上有所提升,优化。


2.4 调试状态

处理器停机时进入调试状态,使用jtag调试的时候使用。


2.5 arm与thumb间的切换

1、由arm状态切换到thumb

状态将寄存器的最低位设置为1


BX指令:R0[0]=1,则执行BX

R0指令将进入thumb状态


2、由thumb状态切换到ARM状态

寄存器最低位设置为0


BX指令:R0[0]=0,则执行BX

R0指令将进入arm状态


3、ARM处理器复位后开始执行代码时总是只处于ARM状态

Cortex-M3只有Thumb-2状态和调试状态;

由于Thumb-2具有16位/32位指令功能,因此有了thumb-2就无需Thumb了。

另外,具有Thumb-2技术的ARM处理器也无需再ARM状态和Thumb-2状态间进行切换了,因为thumb-2具有32位指令功能。


2.6 为什么需要thumb状态

与ARM指令集相比较,Thumb指令集中的数据处理指令的操作数仍然是32位,指令地址也为32位,但Thumb指令集为实现16位的指令长度,舍弃了ARM指令集的一些特性,如大多数的Thumb指令是无条件执行的,而几乎所有的ARM指令都是有条件执行的;大多数的Thumb数据处理指令的目的寄存器与其中一个源寄存器相同。


由于Thumb指令的长度为16位,即只用ARM指令一半的位数来实现同样的功能,所以,要实现特定的程序功能,所需的Thumb指令的条数较ARM指令多。在一般的情况下,Thumb指令与ARM指令的时间效率和空间效率关系为:

— Thumb代码所需的存储空间约为ARM代码的60%~70%

— Thumb代码使用的指令数比ARM代码多约30%~40%

— 若使用32位的存储器,ARM代码比Thumb代码快约40%

— 若使用16位的存储器,Thumb代码比ARM代码快约40%~50%

— 与ARM代码相比较,使用Thumb代码,存储器的功耗会降低约30%


显然,ARM指令集和Thumb指令集各有其优点,若对系统的性能有较高要求,应使用32位的存储系统和ARM指令集,若对系统的成本及功耗有较高要求,则应使用16位的存储系统和Thumb指令集。当然,若两者结合使用,充分发挥其各自的优点,会取得更好的效果。

推荐阅读

史海拾趣

无锡友达公司的发展小趣事

无锡友达深知技术创新的重要性,因此不断加大对研发团队的投入。公司拥有一支经验丰富、技术实力雄厚的研发团队,以及一流的成套设计工具和测试设备。这些团队和工具为公司开发具有自主知识产权的产品提供了有力保障。在数模混合信号处理领域,无锡友达拥有自己的系统设计体系和核心技术,产品研发技术和量产能力处于国内前列。

CoolerMaster公司的发展小趣事

Cooler Master一直致力于技术创新,不断推出具有颠覆性的产品。例如,其推出的MasterLiquid 360 Ion高性能散热器,配备了壮观的2.1英寸LCD屏幕,可实现无与伦比的定制显示内容。这一产品不仅展现了Cooler Master在散热技术上的领先地位,更体现了其对于用户体验的深刻洞察。此外,公司还借助Atmos系列迈向可持续散热的未来,为行业的发展注入了新的活力。

Electrolube公司的发展小趣事

在电子行业的激烈竞争中,Electrolube公司始终坚持以客户需求为导向,不断创新和拓展产品线。除了UVCL涂层外,公司还推出了一系列树脂、涂料和热管理解决方案的产品组合,为EV电池提供全面保护。

这些产品不仅具有优异的性能表现,而且能够满足不同客户的需求。例如,某些产品具有优异的耐高温性能,适用于高温环境下的电子设备;而另一些产品则具有出色的耐化学腐蚀性能,能够在恶劣的工作环境中保持稳定的性能。

Electrolube公司通过不断的技术创新和产品优化,成功拓展了市场份额,并在电子行业中树立了良好的品牌形象。同时,公司还积极与各大汽车制造商合作,共同推动电动汽车产业的发展。

Bellin公司的发展小趣事

在电子行业的激烈竞争中,Electrolube公司始终坚持以客户需求为导向,不断创新和拓展产品线。除了UVCL涂层外,公司还推出了一系列树脂、涂料和热管理解决方案的产品组合,为EV电池提供全面保护。

这些产品不仅具有优异的性能表现,而且能够满足不同客户的需求。例如,某些产品具有优异的耐高温性能,适用于高温环境下的电子设备;而另一些产品则具有出色的耐化学腐蚀性能,能够在恶劣的工作环境中保持稳定的性能。

Electrolube公司通过不断的技术创新和产品优化,成功拓展了市场份额,并在电子行业中树立了良好的品牌形象。同时,公司还积极与各大汽车制造商合作,共同推动电动汽车产业的发展。

3M公司的发展小趣事

在电子行业的激烈竞争中,Electrolube公司始终坚持以客户需求为导向,不断创新和拓展产品线。除了UVCL涂层外,公司还推出了一系列树脂、涂料和热管理解决方案的产品组合,为EV电池提供全面保护。

这些产品不仅具有优异的性能表现,而且能够满足不同客户的需求。例如,某些产品具有优异的耐高温性能,适用于高温环境下的电子设备;而另一些产品则具有出色的耐化学腐蚀性能,能够在恶劣的工作环境中保持稳定的性能。

Electrolube公司通过不断的技术创新和产品优化,成功拓展了市场份额,并在电子行业中树立了良好的品牌形象。同时,公司还积极与各大汽车制造商合作,共同推动电动汽车产业的发展。

AK-Nord_GmbH公司的发展小趣事

随着技术的成熟,AK-Nord_GmbH开始积极拓展市场。公司首先在欧洲地区建立了稳固的销售网络,并逐步向亚洲和北美市场扩张。在市场拓展的过程中,AK-Nord_GmbH积极与各大电子厂商建立合作伙伴关系,共同推出了一系列创新产品。这些合作伙伴关系不仅帮助公司打开了新的市场,还提升了其品牌影响力和市场份额。

问答坊 | AI 解惑

2009电子大赛最新研讨会资料

本帖最后由 paulhyde 于 2014-9-15 09:33 编辑 2009电子大赛最新研讨会资料 欢迎补充! 关于收费问题的几点意见:鄙视一切不劳而获!我本人非常讨厌,要想得到好的和精华的资料,自己就要行动起来,多发帖,多传自己的好资料!为搞活此版不懈努 ...…

查看全部问答>

开帖讨论WINCE 在24位色下的运行情况!!

小弟在做一个项目,芯片是用TCC7901的,WINCE5.0,64M内存,梦想中的24位色...系统起来后颜色很靓,就是那个内存哦,心痛啊,运行一个程序之后就内存100%了,关掉程序后还是不会释放,请问各位大虾又是如何清理内存的,在处理24位色时需要注意那些情况. ...…

查看全部问答>

局域网配置问题

我的两天电脑使用路由连接很好,可以用局域网工具(飞秋)来传输文件,结果我改了一下IP和mac地址,不能连通了,现在我都改了过来,为什么还不能连通?请兄弟们帮帮忙,回答一下,谢谢…

查看全部问答>

WINCE中的钩子函数能捕捉到关机键按下的消息吗?

写了一个钩子函数,上下左右键的截获和执行自定义程序都可成功。但是只有关机键按下的消息始终无法拦截。不知有无前辈实现了这个功能? 关键代码如下: …… DLL中处理函数: LRESULT CALLBACK LowLevelKeyboardProc(int nCode, WPARAM wParam, ...…

查看全部问答>

实用电动窗帘遥控装置

    本人曾购买过一种遥控电动窗帘,原控制部分采用红外线遥控,其遥控范围有限,使用不方便。为此对其进行改造,采用无线遥控替代原控制部分,经使用效果很,下面介绍该电动窗帘的电路原理,供读者参考。   工作原理   该装 ...…

查看全部问答>

FPGA容量

有个疑问?如果说FPGA的容量有300万门,FPGA里面还包含大量的存储器,那这个存储器也是由门搭成的吧!所以我在想,这300万门的容量里面包括存储器中的门吗?另外一个就是,FPGA的容量有300万门与FPGA的容量有300万设计门有区别吗?…

查看全部问答>

为什么 无法改变占空比呢?

 功能:定时器A P1.2  P1.3 输出PWM波形,定时器B定时1s,每隔1秒,就改变一次定时器A的占空比。 问题:但是,示波器显示,定时器A输出的PWM的占空比一直是不变的。 我的分析:不知道是没有进入定时器B的中断,  还是进入了中断, ...…

查看全部问答>

TI的元器件命名规则

TI的元器件命名规则 …

查看全部问答>

求群里的大神帮忙设计个电路板!

我要设计一个电路板,是一个单面的铝基灯板贴片3528 LED 和510电阻,一组灯板拼起来是一套发光字,是一个字的造型。群里谁会99SE的帮忙搞个pcb文件出来,感激不尽呀! 附件是我吗的CAD图纸和效果图片!…

查看全部问答>

语音录放系统实验

做语音录放系统实验,录音的数字量存在flash中,如何将它们播放出去呢?我是用定时器输出PWM来实现播放语音的,那PWM的频率如何确定?PWM的占空比如何确定? [ 本帖最后由 zzbaizhi 于 2013-7-5 11:34 编辑 ]…

查看全部问答>