




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、嵌入式系统设计与应用嵌入式系统设计与应用1第四讲第四讲 ARM ARM 微处理器的微处理器的 编程模型编程模型(一一) 2022-6-16嵌入式系统设计与应用嵌入式系统设计与应用2022-6-162主要内容主要内容n3.1 引言引言n3.2 嵌入式处理器的特点嵌入式处理器的特点n3.3 嵌入式处理器的分类嵌入式处理器的分类n3.4 嵌入式处理器的发展趋势嵌入式处理器的发展趋势n3.5 嵌入式处理器的选择原则嵌入式处理器的选择原则n3.6 ARM微处理器概述微处理器概述n3.7 ARM微处理器的编程模型微处理器的编程模型n3.8 ARM微处理器的指令系统微处理器的指令系统嵌入式系统设计与应用嵌入
2、式系统设计与应用2022-6-1633.7 ARM微处理器的编程模型微处理器的编程模型n3.7.1 ARM微处理器的工作模式微处理器的工作模式n3.7.2 ARM微处理器的工作状态微处理器的工作状态n3.7.3 ARM体系结构的寄存器组织体系结构的寄存器组织n3.7.4 ARM微处理器的数据类型微处理器的数据类型n3.7.5 ARM微处理器的异常状态微处理器的异常状态嵌入式系统设计与应用嵌入式系统设计与应用2022-6-1643.7.1 ARM微处理器的工作模式微处理器的工作模式nARM微处理器支持微处理器支持7种工作模式种工作模式User-用户模式(用户模式(usr) ARM处理器正常的程序
3、执行状态处理器正常的程序执行状态System-系统模式(系统模式(sys) 运行具有特权的操作系统任务运行具有特权的操作系统任务IRQ-外部中断模式(外部中断模式(irq) 用于通用的中断处理用于通用的中断处理FIQ-快速中断模式(快速中断模式(fiq) 用于高速数据传输或通道处理(用于高速数据传输或通道处理(USB3.0、以太网)、以太网)嵌入式系统设计与应用嵌入式系统设计与应用2022-6-1653.7.1 ARM微处理器的工作模式(续)微处理器的工作模式(续)nARM微处理器支持微处理器支持7种工作模式种工作模式Supervisor-管理模式(管理模式(svc) 操作系统使用的保护模式操
4、作系统使用的保护模式 复位、软中断调用(复位、软中断调用(SWI)Abort-中止模式中止模式(abt) 当数据或指令预取中止时进入该模式当数据或指令预取中止时进入该模式(程序跑飞程序跑飞)Undefined-未定义指令模式(未定义指令模式(und) 当未定义的指令执行时进入该模式当未定义的指令执行时进入该模式 可用于支持硬件协处理器的可用于支持硬件协处理器的软件仿真(扩充指令集)软件仿真(扩充指令集)嵌入式系统设计与应用嵌入式系统设计与应用2022-6-1663.7.1 ARM微处理器的工作模式(续)微处理器的工作模式(续)n特权模式特权模式除除用户模式用户模式以外,其余以外,其余6种模式称
5、之为种模式称之为特权模式特权模式(Privileged Modes)当处理器运行在用户模式下时,某些被保护的系统资当处理器运行在用户模式下时,某些被保护的系统资源是不能被访问的源是不能被访问的n异常模式异常模式除去除去用户模式和系统模式用户模式和系统模式以外的以外的5种又称为种又称为异常模式异常模式(Exception Modes)常用于常用于处理中断或异常,以及需要访问受保护的系统处理中断或异常,以及需要访问受保护的系统资源资源等情况等情况嵌入式系统设计与应用嵌入式系统设计与应用2022-6-1673.7.1 ARM微处理器的工作模式(续)微处理器的工作模式(续)n工作模式的改变工作模式的改
6、变通过通过软件软件改变改变 系统调用系统调用通过通过外部中断或异常处理外部中断或异常处理改变改变 外部中断:外部中断:IRQ、FIQ 来自中断控制器来自中断控制器 异常处理异常处理 来自来自CPU内部内部嵌入式系统设计与应用嵌入式系统设计与应用2022-6-1683.7.1 ARM微处理器的工作模式(续)微处理器的工作模式(续)n工作模式的改变举例工作模式的改变举例SWI软件中断指令软件中断指令 SWI 0 x0 ; 调用调用0号软中断号软中断 SWI 0 x12 ; 调用调用12号软中断号软中断IRQ外部中断外部中断 _irq void HandlerTIMER5(void) timeval
7、+;/ 当前时刻递增当前时刻递增 pIC-I_ISPC = INT_TIMER5; / 清除中断请求位清除中断请求位 嵌入式系统设计与应用嵌入式系统设计与应用2022-6-1693.7.2 ARM微处理器的工作状态微处理器的工作状态nARM微处理器的工作状态一般有两种微处理器的工作状态一般有两种第一种为第一种为ARM状态状态 处理器执行处理器执行32位的位的ARM指令指令 ARM指令要求指令要求字对齐字对齐第二种为第二种为Thumb状态状态 处理器执行处理器执行16位的位的Thumb指令指令 Thumb指令要求指令要求半字对齐半字对齐方式方式半字对齐半字对齐字对齐字对齐地址地址0 x00000
8、000 x00000000 00 x00000000 x00000002 20 x00000000 x00000004 40 x00000000 x00000000 00 x00000000 x00000004 40 x00000000 x00000008 8特征特征Bit0=0Bit0=0Bit1=0,Bit0=0Bit1=0,Bit0=0嵌入式系统设计与应用嵌入式系统设计与应用2022-6-1610n实例实例 nHI无符号数大于,无符号数大于,LS无符号数小于等于无符号数小于等于C代码:代码:if (ab) a+; else b+;Thumb代码:代码: CMPR0, R1BHIA_ADD
9、ADDR1, R1, #1 BOVER A_ADDADDR0, R0, #1 OVERARM代码:代码:CMPR0, R1ADDHIR0, R0, #1ADDLSR1, R1, #1 3.7.2 ARM微处理器的工作状态微处理器的工作状态嵌入式系统设计与应用嵌入式系统设计与应用2022-6-16113.7.2 ARM微处理器的工作状态(续)微处理器的工作状态(续)n工作状态切换(子程序调用)工作状态切换(子程序调用)在程序的执行过程中,在程序的执行过程中,处理器可以随时在两种工作状处理器可以随时在两种工作状态之间切换态之间切换处理器工作状态的转变并不影响处理器工作状态的转变并不影响处理器的工作
10、模式和处理器的工作模式和相应寄存器中的内容相应寄存器中的内容ARM微处理器在开始执行代码时总是处于微处理器在开始执行代码时总是处于ARM状态状态 也就是复位后进入也就是复位后进入ARM状态状态嵌入式系统设计与应用嵌入式系统设计与应用2022-6-16123.7.2 ARM微处理器的工作状态(续)微处理器的工作状态(续)n工作状态切换方法工作状态切换方法进入进入Thumb状态状态 执行执行BX指令(指令(Branch) BX:带状态切换的跳转指令:带状态切换的跳转指令 当操作数寄存器的当操作数寄存器的最低位最低位0为为1时,可以使微处时,可以使微处理器从理器从ARM状态切换到状态切换到Thumb
11、状态状态 BX R0 ;R0的最低位的最低位0为为1 处理器工作在处理器工作在Thumb状态,如果发生异常并进入异状态,如果发生异常并进入异常处理子程序,则常处理子程序,则异常处理完毕异常处理完毕返回时返回时,自动自动从从ARM状态切换到状态切换到Thumb状态状态嵌入式系统设计与应用嵌入式系统设计与应用2022-6-16133.7.2 ARM微处理器的工作状态(续)微处理器的工作状态(续)n工作状态切换方法工作状态切换方法进入进入ARM状态状态 执行执行BX指令指令 BX:带状态切换的跳转指令:带状态切换的跳转指令 当操作数寄存器的当操作数寄存器的最低位最低位0为为0时,可以使微处时,可以使
12、微处理器从理器从Thumb状态切换到状态切换到ARM 状态状态 BX R0 ;R0的最低位的最低位0为为0 处理器工作在处理器工作在Thumb状态,如果发生异常并状态,如果发生异常并进入进入异异常处理子程序,则常处理子程序,则进入时进入时处理器处理器自动自动从从Thumb状态状态切换到切换到ARM状态状态 嵌入式系统设计与应用嵌入式系统设计与应用2022-6-16143.7.2 ARM微处理器的工作状态(续)微处理器的工作状态(续)n工作状态切换举例工作状态切换举例1) B Label (类似于子程序调用)(类似于子程序调用)2) CMP R1, #0 BEQ Label3) ADRL R0,
13、 ThumbFun+1 BXR04)BLX LabelBLX:下一条指令地址送往下一条指令地址送往LR寄存器;寄存器;Label送往送往PC,并完成状态切换,并完成状态切换嵌入式系统设计与应用嵌入式系统设计与应用2022-6-16153.7.3 ARM体系结构的寄存器组织体系结构的寄存器组织nARM处理器的寄存器处理器的寄存器37个个32位寄存器位寄存器 31个通用寄存器个通用寄存器 6个状态寄存器个状态寄存器这些寄存器这些寄存器不能被同时访问不能被同时访问 取决于处理器的取决于处理器的 工作状态工作状态 工作模式工作模式嵌入式系统设计与应用嵌入式系统设计与应用2022-6-16163.7.3
14、 ARM体系结构的寄存器组织体系结构的寄存器组织n1 ARM状态下的寄存器组织状态下的寄存器组织n2 Thumb状态下的寄存器组织状态下的寄存器组织n3 程序状态寄存器程序状态寄存器嵌入式系统设计与应用嵌入式系统设计与应用2022-6-16171 ARM状态下的寄存器组织状态下的寄存器组织n通用寄存器通用寄存器通用寄存器包括通用寄存器包括R0R15可以分为三类可以分为三类 未分组寄存器未分组寄存器R0R7 分组寄存器分组寄存器R8R14 程序计数器程序计数器R15 (PC)嵌入式系统设计与应用嵌入式系统设计与应用2022-6-16181 ARM状态下的寄存器组织(续)状态下的寄存器组织(续)n
15、未分组寄存器未分组寄存器R0R7在所有的工作模式下,每个未分组寄存器都指向对应在所有的工作模式下,每个未分组寄存器都指向对应的的一个一个物理寄存器(传数据物理寄存器(传数据全局变量)全局变量)在中断或异常处理进行工作模式转换时,由于在中断或异常处理进行工作模式转换时,由于不同的不同的处理器工作模式均使用相同的物理寄存器处理器工作模式均使用相同的物理寄存器,可能会造,可能会造成寄存器中数据的破坏成寄存器中数据的破坏嵌入式系统设计与应用嵌入式系统设计与应用2022-6-16191 ARM状态下的寄存器组织(续)状态下的寄存器组织(续)n分组寄存器分组寄存器R8R14R8R12 每个寄存器对应每个寄
16、存器对应2个个不同的物理寄存器不同的物理寄存器 当使用当使用FIQ模式时,访问模式时,访问R8_fiqR12_fiq (5个,个,不用现场保护)不用现场保护) 当使用其他模式时,访问当使用其他模式时,访问R8_usrR12_usrR13、R14 每个寄存器对应每个寄存器对应6个个不同的物理寄存器不同的物理寄存器 其中一个寄存器是其中一个寄存器是用户模式与系统模式共用用户模式与系统模式共用 另外另外5个物理寄存器对应于其他个物理寄存器对应于其他5种不同的工作模式种不同的工作模式 嵌入式系统设计与应用嵌入式系统设计与应用2022-6-16201 ARM状态下的寄存器组织(续)状态下的寄存器组织(续
17、)n不同物理寄存器的区分不同物理寄存器的区分R13_R14_mode为:为:usr、fiq、irq、svc、abt、und例如:例如: R13_usr、R13_fiq、R13_irq R14_svc、R14_abt、R14_und嵌入式系统设计与应用嵌入式系统设计与应用2022-6-16211 ARM状态下的寄存器组织(续)状态下的寄存器组织(续)nR13寄存器寄存器常用作堆栈指针常用作堆栈指针SP(Stack Pointer),一种习惯用法),一种习惯用法在在Thumb指令集中,某些指令强制使用指令集中,某些指令强制使用R13作为堆栈作为堆栈指针指针在应用程序初始化时,在应用程序初始化时,一
18、般都要初始化每种模式下的一般都要初始化每种模式下的R13,使其指向该工作模式的栈空间,使其指向该工作模式的栈空间嵌入式系统设计与应用嵌入式系统设计与应用2022-6-16221 ARM状态下的寄存器组织(续)状态下的寄存器组织(续)nR14寄存器寄存器也称链接寄存器也称链接寄存器LR (Link Register) 当执行当执行BL子程序调用指令时,子程序调用指令时,R14中得到中得到R15(程(程序计数器序计数器PC)的备份)的备份 BL Label;下一条指令地址;下一条指令地址LR, LabelPC当发生中断或异常时,对应的分组寄存器当发生中断或异常时,对应的分组寄存器R14_svc、R
19、14_irq、R14_fiq、R14_abt和和R14_und用来保存用来保存R15的返回值(的返回值(R14中保存的值等于异常发生时中保存的值等于异常发生时PC,因此因此在各种异常模式下可以根据在各种异常模式下可以根据R14的值返回到异常发生前的值返回到异常发生前的相应位置继续执行的相应位置继续执行)嵌入式系统设计与应用嵌入式系统设计与应用2022-6-16231 ARM状态下的寄存器组织(续)状态下的寄存器组织(续)nR14寄存器常用情形寄存器常用情形1、常用用法(、常用用法(子程序返回子程序返回) (1)MOV PC, LR (2)BX LR2、在子程序入口处使用以下指令将、在子程序入口
20、处使用以下指令将R14存入堆栈(现场存入堆栈(现场 保护)保护) STMFDSP!, , LR(LR最先进栈)最先进栈) 使用以下指令可以完成使用以下指令可以完成子程序返回(现场恢复和跳转)子程序返回(现场恢复和跳转) LDMFDSP!, , PC嵌入式系统设计与应用嵌入式系统设计与应用2022-6-16241 ARM状态下的寄存器组织(续)状态下的寄存器组织(续)nR15寄存器寄存器R15寄存器用作程序计数器(寄存器用作程序计数器(PC)在在ARM状态下,位状态下,位1:0为为0,位,位31:2用于保存用于保存PC在在Thumb状态下,位状态下,位0为为0,位,位31:1用于保存用于保存PC
21、当当ARM体系结构采用了三级流水结构,对于体系结构采用了三级流水结构,对于ARM指令集而言,指令集而言,PC总是指向总是指向当前执行指令当前执行指令的下两条的下两条指令的地址指令的地址,即,即PC的值为当前执行指令的地址值的值为当前执行指令的地址值加加8个字节个字节 (即(即PC指向下一条要取的指令地址)指向下一条要取的指令地址)嵌入式系统设计与应用嵌入式系统设计与应用2022-6-16251 ARM状态下的寄存器组织(续)状态下的寄存器组织(续)nCPSR寄存器寄存器用作用作CPSR(Current Program Status Register)CPSR可在任何工作模式下被访问,它包括可在
22、任何工作模式下被访问,它包括条件标志位条件标志位、中断禁止位中断禁止位、当前处理器模式标志位当前处理器模式标志位,以及其他一些,以及其他一些相关的相关的控制和状态位控制和状态位异常模式下有异常模式下有一个专用的物理状态寄存器一个专用的物理状态寄存器,称为,称为SPSR(Saved Program Status Register) 当异常发生时,当异常发生时,SPSR用于保存用于保存CPSR的当前值,从的当前值,从异常退出时则可由异常退出时则可由SPSR来恢复来恢复CPSR 用户模式和系统模式用户模式和系统模式不属于异常模式,没有不属于异常模式,没有SPSR嵌入式系统设计与应用嵌入式系统设计与应
23、用2022-6-1626嵌入式系统设计与应用嵌入式系统设计与应用2022-6-16272 Thumb状态下的寄存器组织状态下的寄存器组织nThumb状态下的寄存器集是状态下的寄存器集是ARM状态下寄存器集状态下寄存器集的的一个子集一个子集程序可以直接访问程序可以直接访问 8个通用寄存器(个通用寄存器(R7R0) 程序计数器(程序计数器(PC) 堆栈指针(堆栈指针(SP) 连接寄存器(连接寄存器(LR) CPSR在在每一种异常模式每一种异常模式下都有一组下都有一组SP、LR和和SPSR嵌入式系统设计与应用嵌入式系统设计与应用2022-6-1628嵌入式系统设计与应用嵌入式系统设计与应用2022-
24、6-1629两种工两种工作状态作状态下寄存下寄存器比较器比较嵌入式系统设计与应用嵌入式系统设计与应用2022-6-16303 程序状态寄存器程序状态寄存器 n程序状态寄存器的程序状态寄存器的构成构成一个当前程序状态寄存器(一个当前程序状态寄存器(CPSR)五个备份程序状态寄存器(五个备份程序状态寄存器(SPSR) 备份的程序状态寄存器用来进行异常处理备份的程序状态寄存器用来进行异常处理n程序状态寄存器的程序状态寄存器的功能功能保存保存ALU中的当前操作信息中的当前操作信息控制允许和禁止中断控制允许和禁止中断设置处理器的工作模式设置处理器的工作模式 嵌入式系统设计与应用嵌入式系统设计与应用202
25、2-6-16313 程序状态寄存器(续)程序状态寄存器(续)嵌入式系统设计与应用嵌入式系统设计与应用2022-6-16323 程序状态寄存器(续)程序状态寄存器(续)n条件码标志(条件码标志(Condition Code Flags)N、Z、C、V均为条件码标志位均为条件码标志位 它们的内容可被它们的内容可被算术或逻辑运算的结果算术或逻辑运算的结果所改变,并所改变,并且可以决定某条指令是否被执行且可以决定某条指令是否被执行在在ARM状态下,状态下,绝大多数的指令绝大多数的指令都是有条件执行都是有条件执行的的在在Thumb状态下,仅有状态下,仅有分支指令分支指令B是有条件执行是有条件执行的的(X
26、86JMP)嵌入式系统设计与应用嵌入式系统设计与应用2022-6-16333 程序状态寄存器(续)程序状态寄存器(续)n实例实例 nHI无符号数大于,无符号数大于,LS无符号数小于等于无符号数小于等于C代码:代码:if (ab) a+; else b+;Thumb代码:代码: CMPR0, R1BHIA_ADDADDR1, R1, #1 BOVER A_ADDADDR0, R0, #1 OVERARM代码:代码:CMPR0, R1ADDHIR0, R0, #1ADDLSR1, R1, #1 嵌入式系统设计与应用嵌入式系统设计与应用2022-6-16343 程序状态寄存器(续)程序状态寄存器(续
27、)n标志位标志位NN=1 表示运算结果为表示运算结果为负数负数N=0 表示运算结果为表示运算结果为正数或零正数或零n标志位标志位ZZ=1 表示运算结果表示运算结果为零为零;Z=0 表示运算结果为表示运算结果为非零非零n标志位标志位VV=1表示表示符号位溢出符号位溢出嵌入式系统设计与应用嵌入式系统设计与应用2022-6-16353 程序状态寄存器(续)程序状态寄存器(续)n标志位标志位C加法运算加法运算 当运算结果产生了当运算结果产生了进位进位时(无符号数溢出),时(无符号数溢出),C=1,否则否则C=0减法运算减法运算 当运算时产生了当运算时产生了借位借位(无符号数溢出),(无符号数溢出),C=1,否,否则则C=0嵌入式系统设计与应用嵌入式系统设计与应用2022-6-16363 程序状态寄存器(续
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 急性腹膜炎病人的护理
- 2025年锥虫焦虫病防治药合作协议书
- 尿路感染的治疗与护理
- 护理学新生儿黄疸
- 2025年电网系统电力电缆项目合作计划书
- 2025年中小学生安全教育日活动方案
- 陕西航空职业技术学院《生涯辅导》2023-2024学年第二学期期末试卷
- 陕西铁路工程职业技术学院《安全工程专业英语》2023-2024学年第二学期期末试卷
- 随州市广水市2025届五年级数学第二学期期末调研模拟试题含答案
- 2025年交联电力电缆项目合作计划书
- 车辆交通安全培训全面指南
- 手术室护士子宫切除手术护理配合常规
- 科技大篷车进校园方案
- DB61T 5097-2024 强夯法处理湿陷性黄土地基技术规程
- 12zg003多层和高层混凝土房屋结构抗震构造图集
- 浙江省杭州地区七校联考2025届高二数学第一学期期末复习检测试题含解析
- 甲状腺手术甲状旁腺保护
- 2023年江苏常州中考满分作文《方寸之间天地大》4
- 个人所得税赡养老人书面分摊协议2024年
- 2024版《保密法》培训课件
- CJJT257-2017 住宅专项维修资金管理基础信息数据标准
评论
0/150
提交评论