您的位置 首页 FPGA

ARM体系结构知识点

一、ARM存储器1.数据类型:字节、半字、字2.地址空间:最大可寻址空间位4GB(2的32次方字节)3.大小端格式:大端格式是字数据的高…

一、ARM存储器

1. 数据类型:字节、半字、字
2. 地址空间:最大可寻址空间位4GB(2的32次方字节)
3. 巨细端格局:
大端格局是字数据的高字节存储在低地址中,低字节存在高地址中
小端格局是低地址中寸的是子数据的低字节,高地址寄存的是子数据的高字节

二、处理器形式

ARM处理器共有7种作业形式,除用户(user)形式之外的其他6种处理形式统称为特权形式(Privileged Modes)。在这些形式下,程序能够拜访一切的系统资源,也能够恣意切换处理器形式。特权形式中除系统(system)形式之外的其他5种形式又统称为反常形式。

处理器形式能够经过软件操控进行切换,也能够经过外部间断或内部反常处理进程进行切换。运转在用户形式下的程序不能拜访一些受操作系统维护的系统资源,也不能直接进行处理器形式切换,假如要想进行形式切换,能够发生反常处理,在反常处理进程中进行处理器形式的切换,这种系统架构能够使操作系统操控整个系统资源。

每一种反常形式中都有一组寄存器供反常处理程序运用,这样能够确保在进入反常形式时,用户形式下的寄存器不被损坏。

系统形式不是经过反常进程进入的,它和用户形式具有完全相同的寄存器。系统形式归于特权形式,能够拜访一切系统资源,也能够直接进行处理器形式切换,首要供操作系统内核进程运用;一般操作系统内核进程需求拜访一切的系统资源,一起该进程依然运用用户形式下的寄存器组,而不是反常形式下的寄存器组,这样能够确保当反常发生时内核进程状况不被损坏。

ARM处理器的7种作业形式如下表所示:

处理器作业形式

阐明

用户(user,usr)形式

正常程序运转形式

快速间断(FIQ,fiq)形式

反常

形式

特权形式

privileged modes

快速间断处理

外部间断(IRQ,irq)形式

一般间断处理

超级用户(supervisor,svc)形式

供给操作系统运用的一种维护形式,swi指令状况

数据拜访间断(abort,abt)形式

用于虚拟存储和存储维护

未界说指令间断(undefined,und)形式

用于支撑经过软件仿真硬件的协处理

系统(system,sys)形式

用于运转特权级的操作系统使命

对应于以上7种形式,ARM处理器有7组通用寄存器,如下表所示:

usr形式

sys形式

svc形式

abt形式

und形式

irq形式

fiq形式

R0

R0

R0

R0

R0

R0

R0

R1

R1

R1

R1

R1

R1

R1

R2

R2

R2

R2

R2

R2

R2

R3

R3

R3

R3

R3

R3

R3

R4

R4

R4

R4

R4

R4

R4

R5

R5

R5

R5

R5

R5

R5

R6

R6

R6

R6

R6

R6

R6

R7

R7

R7

R7

R7

R7

R7

R8

R8

R8

R8

R8

R8

R8_fiq

R9

R9

R9

R9

R9

R9

R9_fiq

R10

R10

R10

R10

R10

R10

R10_fiq

R11

R11

R11

R11

R11

R11

R11_fiq

R12

R12

R12

R12

R12

R12

R12_fiq

R13

R13

R13_svc

R13_abt

R13_und

R13_irq

R13_fiq

R14

R14

R14_svc

R14_abt

R14_und

R14_irq

R14_fiq

PC

PC

PC

PC

PC

PC

PC

CPSR

CPSR

CPSR

CPSR

CPSR

CPSR

CPSR

SPSR_svc

SPSR_abt

SPSR_und

SPSR_irq

SPSR_fiq

阐明:
  1. ARM处理器共有37个寄存器,被分为若干个组(BANK),这些寄存器包含31个通用寄存器和6个状况寄存器,其间通用寄存器包含程序计数器(PC指针)及一切寄存器(均为32位)。
  2. ARM处理器中有用户形式、系统形式、特权形式、数据拜访间断形式、未界说指令间断形式、IRQ间断形式、FIQ间断形式7种作业形式,每种作业形式都有R0~R15及CPSR共17个通用寄存器,而在5种反常间断(exception)形式中又各自具有一个独立的SPSR寄存器用于寄存当时状况寄存器的值。这些通用寄存器关于各种作业形式或部分作业形式有些是共用的,如表7-2所示。
  3. R8~R12关于快速间断FIQ形式之外的其他形式都是共用的,而FIQ形式别的有一套自己寄存器R8_fiq~R12_fiq,这样是为了在处理FIQ间断时不用维护R8~R12寄存器,然后进步响应速度。
  4. R13和R14除了用户形式和系统形式共用外,其他每种反常形式都有一套自己独立的寄存器:R13_svc、R14_svc/R13_abt、R14_abt/R13_und、R14_und/R13_irq、R14_irq/R13_fiq、R14_fiq,即R13和R14有6套物理寄存器完结。
  5. R13/sp寄存器在ARM中除了可用作通用寄存器外还用作仓库指针sp,并且每一种反常(exception)形式都有自己独立的R13物理寄存器完结。在子程序中R13只能用作sp,sp在进入子程序的值和退出子程序的值有必要持平。
  6. R14/lr寄存器在ARM中除了能够用作通用寄存器外,还可用作衔接寄存器lr,用来保存子程序的回来地址,假如子程序保存了回来地址,R14也能够用作其他用处。每一种反常(exception)形式都有自己独立的R14/lr物理寄存器完结。
  7. R15寄存器在ARM顶用作程序计数器pc,尽管R15也能够用作通用寄存器,但要留意有一些特别约束,假如违反了这些约束,指令履行的成果将是不行意料的。
  8. 子程序经过寄存器R0~R3来传递参数,这时,R0~R3能够记作A1~A4。假如参数超越4个,能够将剩下的参数送到数据栈中,入栈的次序与参数的次序相反,即最终一个参数先入栈。
  9. 在子程序顶用R4~R11来保存局部变量,这时,R4~R11能够记作V1~V8;而在Thumb程序中,一般只能运用寄存器R4~R7。
  10. 寄存器R12用作子程序间的scratch寄存器,记作ip,在子程序间的衔接代码中常有这种运用规矩

三、反常

当正常的程序履行流程发生暂时的间断时,称之为反常,例如处理一个外部的间断请求。在处理反常之前,当时处理器的状况有必要保存,这样当反常处理完结之后,当时程序能够持续履行。处理器答应多个反常一起发生,它们将会按固定的优先级进行处理。

当一个反常呈现今后,ARM微处理器会履行以下几步操作

1.将下一条指令的地址存入相应衔接寄存器LR,以便程序在处理反常回来时能从正确的方位重新开始履行。

2.将CPSR复制到相应的SPSR中。

3.依据反常类型,强制设置CPSR的运转形式位。

4.强制PC从相关的反常向量地址取下一条指令履行,然后跳转到相应的反常处理程序处。

ARM系统结构所支撑的反常类型

1.复位:复位电平有用时,发生复位反常,程序跳转到复位处理程序处履行

2.未界说指令:遇到不能处理的指令,界说未界说指令反常

3.软件间断:履行SWI指令发生,用于用户形式下的程序调用特权指令

4.指令预取间断:处理器预取指令的地址不存在,或该地址不答应当时指令拜访

5.数据间断:处理器数据拜访指令的地址不存在,或该地址不答应当时指令拜访

6.IRQ:外部间断请求有用,且CPSR中的I位为0时,发生IRQ反常

7.FIQ:快速间断请求引脚有用,且CPSR的F位为0时,发生FIQ反常

ARM系统间断向量表

优先级

地址

反常原因

进入形式

1

0x0000,0000

复位

管理形式

6

0x0000,0004

未界说指令

未界说形式

6

0x0000,0008

软件间断

管理形式

5

0x0000,000C

间断(预取指令过错)

间断形式

2

0x0000,0010

间断(预取数据过错)

间断形式

0x0000,0014

保存

保存

4

0x0000,0018

IRQ(外部间断,且I答应)

IRQ

3

0x0000,001C

FIQ(外部间断,且F答应)

FIQ

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/fangan/fpga/274917.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部