历史上的今天
今天是:2024年10月13日(星期日)
2021年10月13日 | S3C2440裸机------异常与中断__CPU的工作模式和状态以及寄存器
2021-10-13 来源:eefocus
1.CPU工作模式(Mode)
ARM CPU有七种模式,各种模式如下图所示。注意用户模式下不可进入其他模式,用户模式是在有操作系统的时候给应用程序使用的,写应用程序的人水平千差万别,不能保证写的程序是好是坏,所以让应用程序运行在用户模式,限制应用程序的权限,防止破坏整个系统,

2.状态(State)
ARM架构的CPU有ARM state和Thumb state,
ARM State:用的是ARM指令集,每个指令占据4 byte,
Thumb State:用的是Thumb指令集,每个指令2 byte.
比如对于同样的一条指令,MOV R0,R1 对于ARM指令集就要占据四个字节,对于Thumb指令集占据两个字节,这里的占据几个字节是指这条汇编指令会编译成机器码之后占据几个字节。我们引入Thumb指令集是为了减少存储程序的空间,这对单片机特别有效,单片机的flash空间比较小,所以我们要减少程序存储的空间,但是在我们的嵌入式linux中,我们的norflash足够大,不需要节省空间,所以我们一直使用的是ARM指令集。
Thumb是ARM体系结构中一种16位的指令集。Thumb指令集可以看作是ARM指令压缩形式的子集,它是为减小代码量而提出,具有16bit的代码密度。Thumb指令体系并不完整,只支持通用功能,必要时仍需要使用ARM指令,如进入异常时。其指令的格式与使用方式与ARM指令集类似,而且使用并不频繁,Thumb指令集作一般了解。
3.寄存器
每种异常模式主要差别就在于寄存器的差别,
我们可以看到在所有的7种模式下我们都可以使用r0-r15.但是有些寄存器画有灰色三角形,这表明在该模式下面访问到这些寄存器的时候,访问到的是这个模式下专属的寄存器,比如在FIQ模式下,我们访问R8的时候,访问的是FIQ模式下它专属R8寄存器,这时候访问到的R8和用户模式下访问到的R8寄存器不是同一个物理寄存器,我们可以看到在后面的5种模式下,R13,R14都是专用寄存器,其中R13用作栈,R14用作LR返回地址,也就是每种异常模式下我们可以分别设置它的栈,然后LR用来保存发生异常时的指令地址。

下面我们看一下程序状态寄存器,CPSR当前程序状态寄存器,SPSR(saved)保存的程序状态寄存器,用来保存被中断模式的CPSR,低位的M4-M0表示当前CPU处于哪种模式,然后T表示CPU工作与ARM State还是Thumb state,F表示FIQ disable,当该位为1时,所有的FIQ是禁止的。bit28-31是状态位,比如当我们执行cmp R0,R1 beq xx.如果R0=R1,那么状态位的Zero位就是1,然后beq指令会来判断Zero位是否为1,为1则跳转。

我们来看一下异常的处理流程,上图是进入异常时的步骤,上图是硬件部分实现的,
发生异常时我们的CPU首先把被中断的下一条指令的地址保存到LR寄存器里面,有可能是PC+4,有可能是PC+8,到底是哪个值取决于不同的情况。
然后把CPSR保存到SPSR中
然后修改CPSR的模式位,让CPU进入某种异常模式,
然后跳到向量表,
然后看一下离开异常时要做什么
首先让LR寄存器减去某个offset,至于减去什么值看上面的表格,
然后把CPSR的值恢复。
然后是清除中断。
史海拾趣
|
rt 2410的串口0是完备串口,我们想用它做别的用途 但是它默认是超级终端的调试串口, 我能不能通过修改bootloader来改变它,就是把串口0释放出来,使用串口1作为超级终端的调试串口啊? 多谢… 查看全部问答> |
|
看了一个多星期的驱动程序开发 然后从网上下了不少资料,看了不少 现在对虚拟串口大概有个了解 但也不是很清楚,希望做过的能给个思路!~~ 注册表和驱动程序之间的联系... 是通过添加注册表实现虚拟串口,还是直接 通过驱动程序虚拟一个串口使用?… 查看全部问答> |
|
一个DATA FLASH的读写程序找人开发,就是通过COM口吧数据写到板子的闪存(DATAFLASH)上,,要有开发经验 详情:http://www.xinet.com.cn/123/index.html 联系13870920010张先生,QQ:123013020… 查看全部问答> |
|
ATmega169V驱动段码液晶片,电压5V,取1/3Bias,60Hz, 在静态有部分显示,1/2duty、1/3duty、1/4duty都没有显示,可能是什么原因? 初始化如下: LCDCRB=0x30; LCDFRR=0x66; LCDCCR=0x0F; 。。。。。 LCDCRA=0x80;… 查看全部问答> |
|
如图,求高手帮分析一下箭头所指的右边电路的工作方式,电容C2是高频信号的正向通路还是反馈网络的一部分?如果是反馈网络,那C2的作用是什么呢? R1,C1是滤波器是肯定的。… 查看全部问答> |
|
我已经拿到LPC810的板子了 可是在下载程序的时候遇到了一些问题; 我用的是一个232的ISP下载串口板; 软件用的是Flash Magic 读取芯片ID正常; 擦除Flash正常; 但是不能往里写入程序; 总是卡在这里,不能往下进行; 有哪个大虾遇到过这 ...… 查看全部问答> |
|
得到一个写着MSP-FET430UIF的烧写器,连接到电脑显示驱动安装好了。但是我的ccs中device connection中没有显示这个,只有USB。请问如何安装使用?… 查看全部问答> |
|
我想问下论坛的大神,我现在在把GPS的经纬度可以定位发送到GSM模块中,在手机显示是经纬度。。我想的是,可以显示当前的所在地址或者是地图的连接。。打算用GSM模块的GPRS,但感觉好像不行,因为还是要电脑操作。。请问大神们,怎么可以发送信息的 ...… 查看全部问答> |








