嵌入式系统期末复习(2)

2019-08-03 10:22

ARM处理器共有7种不同的处理器模式,每种模式都有一组相应的寄存器组,最多可以18个活动的寄存器。

寄存器R0~R7为未分组的通用寄存器,它们在任何处理器模式都对应于相同的32位物理寄存器。

寄存器R8~R12有两个分组的物理寄存器。一个用于除FIQ模式之外的所有寄存器模式,另一个用于FIQ模式。

在发生FIQ中断后,处理器不必为保护寄存器而浪费时间,从而加速了FIQ的处理速度。

寄存器R13、R14分别有6个分组的物理寄存器。1个用于用户和系统模式,其余5个分别用于5种异常模式。

寄存器R13通常作为堆栈指针(SP),用于保存待使用的寄存器的内容。

寄存器R14称为链接寄存器(LR),在结构上有两个特殊功能:

? 当使用BL指令调用子程序时,返回地址将自动存入R14中;

? 当发生异常时,将R14对应的异常模式版本设臵为异常返回地址(有些异常有一个小的固定偏移量)。

寄存器R15称为程序计数器(PC),它指向正在“取指”的指令。 寄存器CPSR为当前程序状态寄存器,在异常模式中,另外一个寄存器“程序状态保存寄存器(SPSR)”可以被访问。每种异常都有自己的SPSR,在进入异常时它保存CPSR的当前值,异常退出时可通过它恢复CPSR。

6

ARM和Thumb状态切换过程

1. 系统复位,自动切换到ARM状态。

2. 通过BX和BLX指令改变当前处理器模式,使之从ARM状态切换到Thumb状态。

3. 在Thumb状态下,正常程序执行时产生中断异常。 4. 处理器进入中断异常,自动的将模式切换到ARM状态。 5. 异常处理完毕,返回正常程序,此时处理器自动的将模式切换到Thumb状态。

6. 再次通过BX和BLX指令改变当前处理器模式,使之从Thumb状态切换到ARM状态。

ARM内核包含1个CPSR和5个仅供异常处理程序使用的

SPSR。CPSR反映当前处理器的状态,其包含:

? 4个条件代码标志(负标志N、零标志Z、进位标志C和溢出标志V );

? 2个中断禁止位(IRQ禁止与FIQ禁止); ? 5个对当前处理器模式进行编码的位(M[4:0]); ? 1个用于指示当前执行指令的位(ARM指令还是Thumb指令)。

条件代码标志

各标志位的含义如下:

? 负标志N:运算结果的第31位值,记录标志设臵操作的结果; ? 零标志Z:如果标志设臵的操作为0,则臵位;

7

? 进位标志C:记录无符号加法溢出,减法无借位,循环移位; ? 溢出标志V:记录标志设臵操作的有符号溢出。 处理器状态位T;

当控制位T臵位时,处理器正在Thumb状态下运行 当控制位T清零时,处理器正在ARM状态下运行。 当控制位I臵位时,IRQ中断被禁止; 当控制位F臵位时,FIQ中断被禁止。

警告:绝对不要强制改变CPSR寄存器中的控制位T。如果这样做,处理器将进入一个无法预测的状态。 存储器系统有两种映射机制:

小端存储器系统: 在小端格式中,数据的高字节存放在高地址中。 大端存储器系统:在大端格式中,数据的高字节存放在低地址中。 小端存储模式下,0x12345678在A地址开始的一个字空间的存储(1); 0x12 0x78 0x34 0x56 0x56 0x34 0x78 0x12 (1) (2)

大端存储模式下,0x12345678在A地址开始的一个字空间的存储(2); ARM体系的异常 异常的进入

? 将异常处理程序的返回地址(加固定的偏移量)保存到相应异

8

常模式下的LR;

? 将CPSR的当前值保存到相应异常模式下的SPSR; ? 设臵CPSR为相应的异常模式;

? 设臵PC为相应异常处理程序的中断入口向量地址,跳转到相应的异常中断处理程序执行; 异常的退出

当异常处理程序结束时,异常处理程序必须:

? 返回到发生异常中断的指令的下一条指令处执行,即就是说将LR中的值减去偏移量后移入PC; ? 将SPSR的值复制回CPSR;

? 清零在入口处臵位的中断禁止标志。

1.MOV指令与LDR指令都是往目标寄存器中传送数据,但是它们有什么区别吗?

MOV指令用于将数据从一个寄存器传送到另一个寄存器中,或者将一个常数传送到一个寄存器中,但是不能访问内存。LDR指令用于从内存中读取数据放入寄存器中。 2.以下8位图立即数是否合法? 0x0103C000 ×

0x12800000 可以由0x4A循环右移10位得到 3.请列举2个8位图立即数? 0x4000003B(0xED循环右移2位)

9

0x0016C000(0x5B循环右移18位) ? Rm,shift——寄存器移位方式 例如:

ADD R1,R1,R1,LSL #3 ;R1=R1+R1*8=9R1 SUB R1,R1,R2,LSR R3 ;R1=R1-(R2/2R3)

4.用R1寄存器的最低字节替换掉R2寄存器的最低字节,并不影响条件标志位?

AND R1,R1,#0x000000FF AND R2,R2,#0xFFFFFF00 ORR R2,R2,R1

5. 使用MSR和MRS指令,通过修改CPSR寄存器,实现打开/关闭IRQ中断的两个子程序,注意不能影响其它位? ;子程序:使能IRQ中断 Enable_IRQ

MRS R0, CPSR BIC R0, R0,#0x80 MSR CPSR_c,R0 MOV PC,LR

;1.将CPSR寄存器内容读出到R0; ;2.修改对应于CPSR中的I控制位; ;子程序:禁能IRQ中断 Disable_IRQ

10


嵌入式系统期末复习(2).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:2015年注册测绘师《测绘综合能力》考试试题及答案

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: