嵌入式开发第42天(ARM的体系结构)

ARM 190浏览

一、ARM的工作状态

CPU执行的是汇编编译后的机器码。ARM处理器支持两套汇编指令,一套是ARM汇编指令,另外一套THUMB汇编指令。

ARM汇编 ----> 32bits(默认)

THUMB汇编 --->16bits    汇编指令相同的,使用的编译器不同。

 

1ARM状态:(32bitsARM状态)

ARM处理器执行ARM汇编指令的时候,工作ARM状态。

2Thumb状态:

ARM处理执行THUMB汇编指令的时候,工作THUMB状态

 

Thumb-2状态:(ARMTHUMB混合)。

 

=========================================================

二、基本数据类型

1、字节  char ---->8bits

2、半字  short ---->16bits

3、字    int   ---->32bits

4、长字  long  ---->CPU的字长是一致的:64bits32bits

 

 

三、存储格式

1、大端格式--->大字节序-->大尾格式--->big
endian

2、小端格式--->小字节序-->小尾格式--->littile
endian
(默认使用)

 

 

如何由可执行程序得到反汇编文件:

$ arm-linux-objdump -D main.elf > main.dis

 

 

一个反汇编的文件:

 

 

 

四、ARM的工作模式

ARM处理器在处理不同的内容的时候,处理器就会处于不同的工作模式。工作模式有7种。

不同的内容:

1FIQ模式(fiq):FIQ中断(fast
Interrupt request

2IRQ模式(irq):IRQ中断(Interrupt
request
)  ,FIQIRQ是中断的两种不同类型

3、管理模式(svc):处理器的配置权限比较高的模式。配置cacheMMU,配置内核。当ARM处理器复位,处理器是处于管理模式。

4、用户模式(usr):一般运行用户的应用程序

5、系统模式(sys):运行操作系统的任务

6、未定义模式(und):当处理器在运行指令的时候,发现有一个条指令不认识。处理器就会报错,就进入未定义模式。

7、中止模式:数据访问中止--->向一个地址下写数据,但是这个地址不存在或者这个地址是只读。 指令预取中止
--->当处理器从某个地址下读取指令的时候,这个地址不存在或者这个地址禁止访问。

 

 

 

五、ARM的流水线

ARM处理器将一条指令的执行过程分成了几个步骤,在不同的时钟周期来处理不同的步骤,这样看起来在同一时刻处理器在处理多条指令,提高处理器的执行效率。

 


ARM7:三级流水线---->
取指、译码、执行

ARM9:五级流水线---->
取指、译码、执行、寄存器访问、存储器回写

 

=========================================================

六、ARM内核中的寄存器

ARM处理器中的寄存器可以分成两类:

内核的寄存器:只能用汇编访问

               R0~R15CPSRSPSR --->通用寄存器
+ 状态寄存器

 

外围模块的寄存器:可以使用C来访问

               SFR ---- > GPJ2CONGPD0_CONGPH2DAT

               SFR的访问时通过地址来访问。

 

 

 

ARM中寄存器的主要作用:

1、R0~R3:在C和汇编混合编程的时候,用来传递参数或返回值。ATPCS规则

           第一个参数通过R0传递,第二参数通过R1传递,超过4个的参数就通过stack
    

           来传递。

2、R4~R12:一般使用存放局部变量。C语言register关键字。

3、R13SP---Stack Pointer栈的指针寄存器。指向stack的地址。

4、R14LR ---Link Register链接寄存器:用来保存程序的返回地址。


5、R15PC---Program counter,取值那条指令的地址。

注意:

以上寄存器都是32bits

这些寄存器只能使用汇编语言来访问。

一般在嵌入式平台最开始执行的那段程序(bootloader-->u-boot)是使用汇编语言编写。

 

6、CPSR---Current Program Status Register
当前程序状态寄存器,反应
ARM当前的状态。

 

1)ARM工作模式位

 

 

2)状态位

查看ARM的工作状态:0-->ARM状态

                      1--> THUMB状态

3)中断的使能位--F/I

1 --->IRQ或FIQ是关闭的

0 --->IRQ或IRQ是打开的

 

4)条件标志位

算术运行的逻辑结果。NZCV

 

 

7、SPSR ---- Saved Program Status Register备份程序状态寄存器

ARM的工作模式切换的时候,用来保存CPSR