北工大-嵌入式系统复习.ppt
《北工大-嵌入式系统复习.ppt》由会员分享,可在线阅读,更多相关《北工大-嵌入式系统复习.ppt(142页珍藏版)》请在三一办公上搜索。
1、1,体系结构,体系结构:CISC RISC CISC指令集 Intel 及其兼容的处理器用最少的机器语言指令来完成所需的计算任务 RISC:Reduced Instructions Set Computing嵌入式系统:RISC 处理器速度比内存快寄存器,流水线 思想:针对流水线化的处理器优化,2,RISC和CISC之间的区别,3,Samsung S3C44B0X,Samsung S3C44B0X微处理器是三星公司专为手持设备和一般应用提供的高性价比和高性能的微控制器解决方案,它使用ARM7TDMI核,工作在66MHZ。为了降低系统总成本和减少外围器件,这款芯片中还集成了下列部件:,4,体系结
2、构变化,THUMB指令集(T)THUMB 指令集:32位ARM指令集的子集,按16位指令重新编码代码尺寸小(up to 40%compression)简化设计,5,ARM体系结构版本,ARM/Thumb体系版本命名格式ARMv4xM ARMv字符串 体系结构版本号 18表示变种的字符:M D T E J I S 内核的命名:ARM7 T D M I-S,6,ARM编程模型,1.ARM流水线技术2.存储模式I/O空间3.工作模式和寄存器组4.异常和异常向量表5.AMBA总线6.JTAG调试接口,7,指令流水线(Pipeline),指令流水线是RISC结构的共同点ARM7 3级ARM9 5级ARM
3、10 6级ARM Cortex A8 13级,8,按照冯诺依曼型计算机执行程序的原理,指令必须是按顺序方式逐条串行执行的。比如加法指令可以分成取指令、指令译码、取操作数、ALU运算、写结果五个步骤,如果有程序中有连续两条这样的指令,在传统的计算机里必须等第一条指令完全结束才能开始执行流水线的好处是:第一条指令开始译码的时候,第二条就可以开始取指令了。,9,指令流水线(Pipeline),允许多个操作同时处理,比逐条指令执行快PC指向正被取指的指令,而非正在执行的指令,寄存器读(从寄存器Bank)移位及ALU操作寄存器写(到寄存器Bank),Fetch,Decode,Execute,从存储器中读
4、取指令,解码指令,PC PC,PC-4 PC-2,PC-8 PC-4,ARM Thumb,10,三级流水线:,Fetch,Decode,Execute,Fetch,Decode,Execute,Fetch,Decode,Execute,11,指令流水线(Pipeline),更多级的Pipeline,ARM10采用了6级流水线,但是处于兼容考虑,直接读取PC值依然等于“当前指令地址+8”。,12,13,多周期指令:时间片 1 2 3 4 5 6 7 81.取ADD 译码 执行2.取STR 译码 算地址 存数 3.取ADD 译码 执行4.取ADD 译码 执行5.取ADD 译码.,冯 诺依曼结构:不
5、能同时访问指令和数据存储器,14,ARM9 5级流水线:哈佛结构数据和指令分别进行独立编址步骤:取指、译码、执行、缓冲、写回取指:从程序存储器中取指令流水线译码:读取寄存器操作数执行:如果是LDRSTR,则计算地址缓冲:LDRSTR访问数据存储器,否则缓冲写回:结果写到寄存器中,15,16,指令流水线(Pipeline),流水线的效率也可能低下,两个原因:1.相关性问题:一是如果第一条指令的结果是第二条指令执行所需要的,那么就出现了相关性问题。这就导致流水线必须停下来等前面的运算结束才能够继续后面的指令。解决这个问题的办法有乱序执行技术。,17,指令流水线(Pipeline),2.程序转移问题
6、:由于无法事先判断转移指令会走那一边,所以必须等待结果出现。由于这样的指令在程序中数量众多,通常会导致流水线的停顿状况非常严重。解决的方法:一般是通过风险的预测执行或强行并行执行来解决。,18,ARM编程模型,1.ARM流水线技术2.存储模式I/O空间3.工作模式和寄存器组4.异常和异常向量表5.AMBA总线6.JTAG调试接口,19,处理器的工作状态,ARM7TDMI 处理器有两种工作状态:ARM-32-bit,按字排列的ARM指令集Thumb-16-bit,按半字排列的Thumb指令集ARM7TDMI 核的操作状态可能通过BX指令(分支和交换指令)在ARM状态和Thumb状态之间切换,20
7、,例:从ARM状态切换到Thumb状态:LDR R0,=Label+1 BX R0从Thumb状态切换到ARM状态:LDR R0,=Label BX R0,21,存储器模式,1.I/O存储空间ARM 32位架构,I/O空间采用统一编址方式地址从0 x00000000开始以字节为单位的线性组合地址空间:232,(4GB)0232-1 230个32位的字单元 231个16位的半字单元地址:32位无符号数,可加减运算结果232取模,22,数据和指令类型ARM 32位地址线/数据线,支持如下数据类型:Byte:8 bitsHalfword:16 bits(2 byte),必须对齐2字节边界Word:3
8、2 bits(4 byte),必须对齐4字节边界有符号数,无符号数 共6种数据类型,23,存储器模式,2.ARM存储器工作模式(ENDIAN管脚)(1)Big Endian 大端模式字数据的高位字节存储在低地址中字数据的低字节则存放在高地址中,24,存储器模式,(2)Little Endian 小端模式(默认)低地址中存放字数据的低字节高地址中存放字数据的高字节,25,存储器模式举例,26,ARM编程模型,1.ARM流水线技术2.存储模式I/O空间3.工作模式和寄存器组4.异常和异常向量表5.AMBA总线6.JTAG调试接口,27,工作模式和寄存器,ARM有7个基本工作模式USR FIQ IR
9、Q SVC ABT UND SYS 1、User:用户模式,一般的非特权任务运行的模式正常程序执行的模式2、FIQ快中断模式:当一个高优先级(fast)中断产生时将会进入这种模式高速数据传输和通道处理3、IRQ中断模式:当一个低优先级(normal)中断产生时将会进入这种模式通常的中断处理,28,工作模式和寄存器,4、Supervisor管理员(特权)模式(SVC):当复位或软中断指令执行时将会进入这种模式供操作系统使用的一种保护模式5、Abort中止模式:当存取异常时将会进入这种模式虚拟存储及存储保护6、Undef未定义模式:当执行未定义指令时会进入这种模式软件仿真硬件协处理器7、Syste
10、m系统模式:使用和User模式相同寄存器集,权限比用户模式高系统级的操作系统任务,29,工作模式,工作模式的类型用户模式:程序不能访问受操作系统保护的资源,也不能改变模式特权模式:除User之外的其他6种,处理异常和监控调用,可自由访问系统资源和改变模式异常模式:除系统模式外其他5中特权模式,处理异常和中断系统模式:不能通过异常进入,操作系统的任务可以访问所需系统和用户资源,不能访问异常寄存器组。确保异常不会破坏任务状态。,30,工作模式,工作模式的切换:软件切换 外部中断或异常OS控制系统整个资源,31,寄存器,ARM处理器共有37个寄存器(32位)31个通用寄存器6个状态寄存器每种工作模式
11、对应一组寄存器:15个通用寄存器 R0R14 一个或两个状态寄存器 一个程序计数器R15(PC),32,通用寄存器,R0 到 R15 可以直接访问R0 到 R14 是通用寄存器R13:堆栈指针(sp)(通常)每种处理器模式都有单独的堆栈R14:链接寄存器(LR)R15 包含程序计数器(PC),33,程序状态寄存器,CPSR 当前程序状态寄存器,包括代码标志状态和当前模式位5个SPSRs-(程序状态保存寄存器)当异常发生时保存CPSR状态,34,程序状态寄存器,ARM7TDMI 包含当前程序状态寄存器(CPSR),加上5个程序状态保存寄存器SPSR,当异常发生时,用于保存CPSR的状态 这些寄存
12、器的功能是:保存ALU当前操作信息控制允许和禁止中断设置处理器操作模式,35,程序状态寄存器,CPSR格式:,36,1.条件标志位Negative Zero Carry oVerflowN=1 结果为负,0-结果为正或0Z=1 结果为0,0 结果不为0C=1-有进位无借位,否则 0V=1-结果溢出,0结果没溢出,程序状态寄存器,37,2.Q位:bit(27)仅ARM 5TE/J架构支持指示增强型DSP指令是否溢出J位:bit(24)仅ARM 5TE/J架构支持J=1:处理器处于Jazelle状态,程序状态寄存器,38,控制位 中断禁止位:I=1:禁止 IRQ.F=1:禁止 FIQ.T Bit仅
13、ARM xT架构支持T=0:处理器处于 ARM 状态T=1:处理器处于 Thumb 状态,程序状态寄存器,39,M控制位 处理器模式0b10000User0b10001FIQ0b10010IRQ0b10011Supervisor0b10111Abort0b11011Undefined0b11111System,程序状态寄存器,40,ARM编程模型,1.ARM流水线技术2.存储模式I/O空间3.工作模式和寄存器组4.异常和异常向量表5.AMBA总线6.JTAG调试接口,41,异常和异常向量表,1.异常(Exceptions)内部或外部中断源产生并引起处理器处理一个事件,如外部中断或试图执行未定义
14、指令都会引起异常。程序流程控制的3种方式:(1).顺序执行(2).跳转指令(3).异常中断,处理异常之前必须保留处理器的状态,42,异常和异常向量表,2.异常的产生直接异常:软件中断,未定义指令(包括所要求的协处理器不存在时的协处理器命令)和预取指令间接异常:数据中止(在Load和Store数据访问时的存储器故障)外部异常:复位,IRQ和FIQ,43,异常和异常向量表,3.异常类型:7种RESET 复位UND 未定义的指令SWI 软件中断PABT 指令预取中止DABT 数据访问中止IRQ 外部中断请求FIQ 快速中断请求,44,异常和异常向量表,5.异常的优先级异常同时发生时,处理顺序(1)R
15、eset(highest priority)(2)Data abort(3)FIQ(4)IRQ(5)Prefetch abort(6)未定义指令,Software interrupt(最低优先级),45,异常和异常向量表,6.异常向量表指定各异常中断及其处理程序的对应关系,RESET可以从0 x00000000开始或0 xffff0000开始,因此异常向量表可以放在上述地址,46,本章内容,ARM指令分类与格式,3.1,寻址方式,3.2,ARM 指令集介绍,3.3,4,47,1.ARM指令分类与格式,Load/Store 结构:在通用寄存器中操作 Load/Store从存储器中读取数据,操作后
16、再放回存储器 把寄存器和存储器分开,48,1.ARM指令分类与格式,指令分类(6类)数据处理指令 使用和改变寄存器的值数据传送指令 把存储器的值拷贝到寄存器中(load)or 把寄存器中的值拷贝到存储器中(store)CPSR与通用寄存器间的传送指令跳转指令异常中断指令协处理器指令,49,1.ARM指令分类与格式,指令格式:3 地址指令格式 在ARM状态中使用2 地址指令格式 在 ARM和 THUMB 状态下使用,50,1.ARM指令分类与格式,ARM指令的一般编码格式:,31 28 27 25 24 21 20 19 16 15 12 11 8 7 0,S,例:ANDENS R0,R1,#0
17、X0F,51,条件码域,ARM指令根据CPSR中的条件位自动判断是否执行指令,在条件满足时,指令执行,否则指令被忽略。在ARM的指令编码表中,统一占用编码的最高四位31:28来表示“条件码”(即“cond”)。,52,条件码域-1(P117),53,条件码域-2,54,ARM指令中的操作符号,1.立即数符号:“#”2.二进制符号:“2_”or“%”3.十六进制符号:“0 x”#0 xFF#%10010101,55,移位操作,移位:作为指令的选项 1.逻辑左移:LSL 低位补零2.算数左移:ASL 低位补零 MOV R0,R1,LSL#2 MOV R0,R1,ASL#23.逻辑右移:LSR 高位
18、补零4.算数右移:ASR 高位用31位值填充5.循环右移:ROR 左端用右端移出数据补5.扩展循环右移:RRX 循环包括C位,56,57,本章内容,ARM指令分类与格式,1,寻址方式,2,ARM 指令集介绍,3,4,58,ARM寻址方式,处理器根据指令中的地址信息寻找物理地址的方式寻址方式种类:1 立即寻址2 寄存器寻址3 寄存器间接寻址4 基址加偏址寻址 5 堆栈寻址 6 块拷贝寻址 7 相对寻址,59,ARM寻址方式,立即寻址操作数直接通过指令给出,数据包含在32位编码中ADD R0,R0,#1AND R8,R7,#OxFF立即数:由一个8位常数循环右移偶数位得到,60,ARM寻址方式,寄
19、存器寻址操作数为寄存器中的数值,指令中地址码为寄存器编号ADD R0,R1,R2ADD R3,R2,R1,LSR#2ADD R3,R2,R1,LSR R4,61,ARM寻址方式,寄存器间接寻址寄存器的值作为存储器地址 LDR R0,R1 STR R0,R1,62,ARM寻址方式,基址加偏址寻址基址寄存器内容与偏移量相加前变址模式LDR R0,R1,#4;R0=R1+4自动变址模式LDR R0,R1,#4!;R0=R1+4;R1=R1+4 后变址模式LDR R0,R1,#4;R0=R1;R1=R1+4,63,ARM寻址方式,基址加偏址寻址寄存器用作偏移地址LDR R0,R1,R2LDR R0,R
20、1,R2,LSL#2传送数据类型LDRB R0,R1LDRH R1,R0,#20,64,ARM寻址方式,堆栈寻址,堆栈是一种数据结构,按先进后出(First In Last Out,FILO)的方式工作,65,ARM寻址方式,四种类型的堆栈工作方式:满递增堆栈:堆栈指针指向最后压入的数据,且由低地址向高地址生成。满递减堆栈:堆栈指针指向最后压入的数据,且由高地址向低地址生成。空递增堆栈:堆栈指针指向下一个将要放入数据的空位置,且由低地址向高地址生成。空递减堆栈:堆栈指针指向下一个将要放入数据的空位置,且由高地址向低地址生成。,66,ARM寻址方式,堆栈寻址ARM指令中,通过Load/Store
21、指令来实现STMFD SP!R1-R7,LRLDMFD SP!R1-R7,LRThumb指令中,通过Push/Pop指令来实现PUSH R1-R7,LRPOP R1-R7,PC,67,ARM寻址方式,块拷贝寻址多寄存器传送指令LDM/STM的寻址方式LDMIA R0!,R2-R9;将数据加载到R2-R9,R0为基址STMIA R1!,R2-R9;将数据存入到存储器,R1为基址,68,ARM寻址方式,相对寻址 以PC当前值为基址,以指令中的地址标号为偏移量BL SUBA SUBA MOV PC,R14,69,本章内容,ARM指令分类与格式,1,寻址方式,2,ARM 指令集介绍,3,4,70,3.
22、ARM指令集介绍,指令分类(6类)数据处理指令 Load/Store指令状态寄存器访问指令跳转指令异常中断指令协处理器指令,71,3.1数据处理指令,数据处理指令的类别(1)算术操作(2)按位逻辑操作(3)寄存器数据传送操作(4)比较操作,72,3.1数据处理指令,操作数:32-bits;3种指定操作数方式(寻址)来自寄存器第二操作数可以是常数(立即数)移位寄存器操作数结果:32-bits 宽,放在寄存器中长乘法产生64位结果,73,3.1数据处理指令,算术操作,74,3.1数据处理指令,按位逻辑操作,75,3.1数据处理指令,寄存器数据传送,比较操作,76,3.2 Load/Store指令,
23、示例:LDMFD R13!,R0,R4-R12,PC将堆栈中的内存恢复到寄存器,用于函数返回LDMIA R13!,R0,R4-R12,PC读取数据到寄存器同时,进行SPSR到CPSR的数据传输,77,3.2 Load/Store指令,单寄存器交换指令(SWP SWPB)在寄存器和外部存储器之间交换字节或字格式:SWP,RnSWP R0,R1,R2 将R2指向的存储器的字送给R0,同时将R1中的字数据传送到R2指向的存储器中SWP R0,R0,R2,78,SWPB R1,R2,R0将R0指向的内存字节读到R1低8位,其余24为置0;将R2低8为数据传送到R0,79,3.ARM指令集介绍,指令分类
24、(6类)数据处理指令 Load/Store指令状态寄存器访问指令跳转指令异常中断指令协处理器指令,80,3.3 状态寄存器访问指令,程序状态寄存器访问指令(MRS,MSR)MRS 程序状态寄存器到通用寄存器的数据传送指令MRS R0,CPSRMSR 通用寄存器到程序状态寄存器的数据传送指令MSR CPSR,R0,81,3.4 跳转指令,流程的转移ARM中有两种方式实现流程的跳转:1.直接向PC寄存器写入目标地址(4GB)2.跳转指令(前后32MB),82,3.4 跳转指令,根据完成的功能它可以分为以下4种:B 转移指令 BL 带链接的转移指令 BX 带状态切换的转移指令 BLX 带链接和状态切
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 北工大 嵌入式 系统 复习
链接地址:https://www.31ppt.com/p-6102841.html