历史上的今天
返回首页

历史上的今天

今天是:2025年01月20日(星期一)

正在发生

2020年01月20日 | ARMv7用户层发生指令异常的处理流程

2020-01-20 来源:eefocus

1、用户层发生指令异常的处理流程?


用户层程序正在执行时,遇到未定义的指令(ARM不是别的指令)或者SWI软件中断指令(产生系统调用),就会产生异常,这里以未定义指令异常为例进行说明:


一旦出现未定义指令异常,CPU会自动做如下操作:


(1)未定义模式(ARM其中运行模式的一种)下对应的lr(即R14)寄存器保存当前发生异常的指令下一条指令的地址。例如,在用户态有A B C 三条指令,指令A发生未定义指令异常,则指令B的地址就会由CPU保存到未定义模式下的lr寄存器中,用于异常返回。


(2)CPU修改CPSR寄存器,进入未定义模式:


CPSR[4:0]=0b11011   /*将CPSR的低五位置位11011,正好对应未定义指令模式*/


(3)因为ARM异常只能在ARM状态处理,所以要将状态修改为ARM指令集状态:


CPSR[5]=0


(4)CPU根据发生的异常是未定义指令异常,将PC置为0x0000 0004:


PC=0x00000004


以上是CPU在做,剩下的都是操作系统完成,我这里只说个大概,具体细节见我写的另一个文档:


该地址对应的正是一条跳转指令:b        vector_und + stubs_offset。该指令会跳转到相应的异常处理函数去执行,函数执行结束后会调用ret_to_usr函数,从SVC模式返回到USR模式,在这个函数中最后一条指令是:MOVS PC,LR。该指令将当前状态的LR寄存器赋值给PC,并且将当前模式寄存器SPSR拷贝到CPSR中(指令中MOV后的S位)


(5)LR保存的就是上面指令B的地址,至此未定义指令异常处理完毕。


2、是否每个进程都有一个APSR的副本?


不是的,一个模式对应一个APSR,该模式下的所有进程共享一个APSR。原因如下:


(1)APSR是CPSR的一个别名,即它们其实是一个东西,只是对于APSR,应用程序只能访问N(负数或小于)、Z(零)、C(进位或借位或扩展)、V(溢出)、Q(累计饱和位)和GE[3:0](大于等于标志位),应用程序通过这种机制间接访问CPSR,以上这些位在任何模式都能读写。(This is an application-level alias for the  Current Program Status Register ( CPSR),ARMARM 手册B1-1145)


各个进程有自己的状态寄存器(CPSR),但是同一时刻只有一个进程在执行,当进程切换时,与该进程相关的CPSR会由操作系统保存起来,等到切换回来时再恢复。


推荐阅读

史海拾趣

DRI Relays Inc公司的发展小趣事

品质是企业的生命线。为了提升产品质量和客户满意度,DRI Relays Inc公司不断加强品质管理。公司建立了严格的质量检测体系,对原材料、生产过程和成品进行全面检测。同时,公司还注重员工素质的提升,定期开展培训和技能竞赛等活动,提高员工的技能水平和质量意识。这些措施有效地保证了公司产品的稳定性和可靠性,赢得了客户的信任和好评。

Gespac Inc公司的发展小趣事

随着全球环保意识的提高,DRI Relays Inc公司积极响应环保号召,践行绿色环保理念。公司采用环保材料和节能技术,减少生产过程中的能源消耗和废弃物排放。同时,公司还注重产品的回收和再利用,为客户提供环保解决方案。这些举措不仅提升了公司的社会形象,还为公司带来了更多的商业机会和发展空间。

Herotek Inc公司的发展小趣事

在电子元件的制造过程中,粘接技术是关键环节之一。Henkel凭借其深厚的技术积累和创新能力,在电子元件粘接领域取得了显著成就。其研发的粘合剂产品具有优异的粘接强度、耐温性能和耐化学腐蚀性能,能够满足各种复杂工况下的使用需求。例如,在汽车电子领域,Henkel的粘合剂产品被广泛应用于传感器、控制器等关键部件的粘接固定中,确保了汽车电子系统的稳定性和可靠性。

Easy Magnet Corp公司的发展小趣事

随着环保意识的提高,Easy Magnet Corp公司开始关注产品的环保性能。公司采用环保材料和生产工艺,减少了对环境的污染。同时,公司还积极参与环保公益活动,倡导绿色消费理念。这些举措不仅提升了公司的社会形象,也吸引了更多注重环保的消费者。

台湾远翔(Feeling Technology)公司的发展小趣事

随着全球对绿色低碳发展的重视,乔光电子积极响应国家号召,于2021年底开始筹划绿色工厂创建项目。公司引入了产品全生命周期理念,持续开展节能低碳、环境保护工作,建立了质量管理体系、职业健康安全管理体系、环境管理体系和能源管理体系等。通过实施一系列绿色低碳、节能技改措施,如废气粉尘收集与处理系统、造粒珠磨机电机变频改造等,乔光电子实现了万元产值能耗和碳排放强度的逐步改善,为企业的可持续发展奠定了坚实基础。

BNS Solutions公司的发展小趣事

在电子行业的早期阶段,BNS Solutions公司凭借其敏锐的市场洞察力和技术创新能力,迅速崭露头角。公司团队针对当时市场上电子产品性能不足、用户体验不佳的问题,研发出了一系列高效能、易操作的电子设备。这些产品不仅满足了消费者对电子设备的基本需求,还通过独特的设计和功能赢得了市场的广泛认可。随着产品的热销,BNS Solutions公司的知名度逐渐提升,为后续的发展奠定了坚实的基础。

问答坊 | AI 解惑

动态电路分析方法

比较全的动态电路分析方法…

查看全部问答>

F2812与LCM1602的连接

小弟最近刚开始学F2812,电气特性好像是写I/O输入不得超过Vddio 自己做了一块练习板,做好后发现LCM1602的RS脚上有5V的电压(还未和DSP连接),其它像RW、E、DB*上都有一些电压,怕会把DSP烧坏 请问F2812可以直接和LCM连接吗?还是要经过一些 ...…

查看全部问答>

时钟奇数分频的用途

时钟奇数分频有啥用途?…

查看全部问答>

数字视频监控硬件设计经验谈

数字视频监控系统主要包括DVR、DVS、IP-Camera等,涉及到嵌入式系统技术、视频编解码技术、音频编解码技术、联网及域名处理技术等。硬件对于系统而言,相当于建筑的地基,地基牢,建筑才可靠,才能够经历风风雨雨的考验。     概述 & ...…

查看全部问答>

LED结构、发光原理、光源特点及应用

replyreload += \',\' + 384127;Timson,如果您要查看本帖隐藏内容请回复…

查看全部问答>

vhdl, 怎么实现让输出维持一段时间后撤销

vhdl, 怎么实现让输出维持一段时间后撤销~~~~~ 请大侠,帮忙~…

查看全部问答>

問,斷電保護中的備用電池一般是什麼電池?有5V的電池嗎?

查了下,好像是镍镉電池,有3.6V的,不知有沒有5V的??…

查看全部问答>

用JLINK在SWD方式下只接SWDIO,SWCLK,GND?

                                 这三根线就可以调试么?…

查看全部问答>

stm32sd卡咨询

                                 各位大侠请问,stm32有没有通过spi读取sd卡的例程,或者哪位大哥自己做过这一块可以指点一下小弟,我刚开始做这一 ...…

查看全部问答>

有关2812的资料其寄存器都没有地址,谁那有?

有关2812的资料其寄存器都没有地址,所见的都是C语言的头文件,用了结构体和共用体,找不出起物理地址了,想用一段汇编,找不到外设和寄存器的地址,没法编那.谁有这方面的资料?或给指点一下…

查看全部问答>