第3章 Cortex-M体系结构_第1页
第3章 Cortex-M体系结构_第2页
第3章 Cortex-M体系结构_第3页
第3章 Cortex-M体系结构_第4页
第3章 Cortex-M体系结构_第5页
已阅读5页,还剩70页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

.,嵌入式系统原理,许童羽沈阳农业大学信息与电气工程学院电子信息教研室yatongmu,.,第三章Cortex-M体系结构,3.1ARM体系结构概述3.2Cortex-M3编程模型3.3基本寻址方式3.4Thumb-2指令集3.5存储器映射3.6中断和异常,.,3.1ARM体系结构概述,3.1.1RISC技术和流水线技术(1)计算机体系结构冯诺依曼体系结构哈佛体系结构,处理器,存储器,指令,数据,地址总线,数据总线,处理器,存储器,指令,地址总线,数据总线,存储器,数据,地址总线,数据总线,.,3.1ARM体系结构概述,(2)RISC技术CISC复杂指令集计算机。偏重由硬件执行指令,不断增强指令集的复杂度。RISC精简指令集计算机。简化指令实现的硬件设计,复杂指令由简单指令合成。特点:大量通用寄存器组;Load/Store存储器访问;简单寻址模式;固定长度指令格式;采用流水线技术。,编译器,处理器(复杂),CISC,处理器,编译器(复杂),RISC,.,3.1ARM体系结构概述,(3)流水线技术处理器在执行指令的同时读取其他指令。三级流水线:读指令、指令译码、执行指令。,ADD,SUB,CMP,ADD,SUB,ADD,周期1,周期2,周期3,ADDR0,R1,R2SUBR3,R4,#2CMPR5,R1,五级流水线:,.,3.1ARM体系结构概述,3.1.2ARM体系结构简介(1)ARM公司AdvancedRISCMachines,1990年成立IP(IntellectualProperty)供应商设计公司提供ARM核,合作伙伴生产芯片ARM核基于ARM体系结构ARM处理器基于ARM核,.,3.1ARM体系结构概述,(2)ARM体系结构特点RISC型处理器结构:Load/Store,硬接线Thumb指令集:16位指令集,提高代码密度多处理器状态模式:多种特权模式,提高效率嵌入式在线仿真模式:ICE、ETM灵活和方便的接口:AMBA,便于扩充处理器、I/O低电压低功耗设计:时钟频率、电源电压、翻转次数采用流水线技术:三级、五级、八级,.,3.1ARM体系结构概述,3.1.3ARM处理器核(1)ARM体系结构演变19912011:7个版本体系结构V1V7&CortexV1V3:非商业授权;V4T:商业授权,.,3.1ARM体系结构概述,(2)主要的ARM处理器核ARM7系列V4T结构,ARM7TDMI、ARM720T;ARM9系列V4T结构,ARM920TDMI、ARM922T;Xscale系列V5结构,Intel,PXA270;ARM11系列V6结构,ARM1156T2-S;Cortex系列V7结构Cortex-A,高端Cortex-M,低端Cortex-R,实时,.,3.1ARM体系结构概述,(3)ARM7TDMIV4T结构;3级流水线;,.,3.1ARM体系结构概述,(4)ARM920TARM9TDMI+cach+MMUV4T结构;5级流水线;,.,3.1ARM体系结构概述,(5)Cortex-M3包括ARMv7-M内核,嵌套向量中断控制器、可裁剪的存储器保护单元、总线接口、调试单元。与ARM7比较p61,.,3.1ARM体系结构概述,(3)内核特点功耗低:0.19mW/MHZ;内核门数少,成本低:33K,1美元;中断延迟短:12个时钟周期;调试成本低:JTAG;嵌套向量中断控制器:1-240个外部中断,128级嵌套;ARMv7-M架构:Thumb-2ISA子集;可裁剪的存储器保护单元:总线接口:,.,3.2Cortex-M3编程模型,3.2.1Thumb-2指令集体系结构ARM指令集32位;Thumb指令集16位;Thumb-2指令集16位+32位;可做更复杂操作;省去了Thumb与ARM状态切换;与ARM指令不兼容;v7架构显著特色:硬件除法、非对齐数据访问,Thumb-2,Cortex-M3,Thumb,.,3.2Cortex-M3编程模型,3.2.2寄存器(1)通用寄存器R0-R12;低寄存器、高寄存器堆栈指针R13;主SP、进程SP链接寄存器R14;LR程序计数器R15;PC,.,3.2Cortex-M3编程模型,(2)特殊功能寄存器程序状态寄存器组、中断屏蔽寄存器组、控制寄存器,APSRIPSREPSR,教材P72,.,3.2Cortex-M3编程模型,3.2.3工作模式和特权级别(1)工作模式-区别普通应用程序代码和异常服务程序代码处理模式:线程模式:(2)特权级别-提供一种存储器访问的保护机制特权级:程序可以访问所有存储器空间,执行所有命令。用户级:资源访问受限,.,3.2Cortex-M3编程模型,3.2.4堆栈2个堆栈指针,同时只能使用1个SP主堆栈指针(MSP):处理模式、线程模式线程堆栈指针(PSP):线程模式复位后,缺省使用MSP;堆栈指针是分组寄存器,在MSP和PSP之间切换,任何时候只有一个是可见的。3.2.5数据类型字、半字、字节,.,3.2Cortex-M3编程模型,3.2.6存储器和存储器映射I/O(1)地址空间232个8位字节的单一、线性地址空间,0232-1每个字地址为字对齐:A、A+1、A+2、A+3每个半字地址为半字对齐:A、A+1每条指令执行之后,下一条指令地址=当前指令地址+4,.,3.2Cortex-M3编程模型,(2)存储器格式小端格式:一个字中最低地址的字节为该字的最低有效字节,最高地址的字节为该字的最高有效字节。大端格式:一个字中最低地址的字节为该字的最高有效字节,最高地址的字节为该字的最低有效字节。,地址3字节3,地址2字节2,地址1字节1,地址0字节0,地址7字节3,地址6字节2,地址5字节1,地址4字节0,地址B字节3,地址A字节2,地址9字节1,地址8字节0,地址3字节0,地址2字节1,地址1字节2,地址0字节3,地址7字节0,地址6字节1,地址5字节2,地址4字节3,地址B字节0,地址A字节1,地址9字节2,地址8字节3,地址0的字,地址1的字,地址2的字,CortexM3默认格式,.,3.2Cortex-M3编程模型,(3)存储器映射I/O完成I/O功能的标准方法存储器映射I/O;使用特定的存储器地址,当从这些地址加载或向这些地址存储时,提供I/O功能。输入:从存储器映射I/O地址加载;输出:向存储器映射I/O地址存储;,.,3.3Cortex-M3基本寻址方式,指令的构成寻址方式的含义9种寻址方式:1.寄存器寻址2.立即寻址3.寄存器移位寻址4.寄存器间接寻址5.变址寻址6.多寄存器寻址7.堆栈寻址8.块拷贝寻址9.相对寻址,.,3.3Cortex-M3基本寻址方式,1.寄存器寻址操作数在寄存器中ADDR0,R1,R2MOVR1,R22.立即寻址操作数由指令直接给出ADDR3,R3,#1ANDR8,R7,#0XFFMOVR0,#0XFF00,.,3.3Cortex-M3基本寻址方式,3.寄存器移位寻址ARM特有操作之前先移位MOVR0,R2,LSL#3支持的移位操作LSL:逻辑左移LSR:逻辑右移ASR:算术右移ROR:循环右移RRX:带进位循环右移,.,3.3Cortex-M3基本寻址方式,4.寄存器间接寻址操作数存放在存储单元中;存储单元地址存放在寄存器中;寄存器是数据指针;LDRR0,R2STRR0,R1,.,3.3Cortex-M3基本寻址方式,5.变址寻址基址寄存器内容+位移量操作数地址访问基址附近存储单元;基址+偏移基址+变址LDRR0,R1,#4LDRR0,R1,R2LDRR0,R1,#4!LDRR0,R1,#4LDRR2,R3,#0X0C,.,3.3Cortex-M3基本寻址方式,6.多寄存器寻址一次传送多个寄存器的值LDMIAR1,R0,R2,R5LDMIAR1!,R2-R4,R6,.,3.3Cortex-M3基本寻址方式,7.堆栈寻址堆栈是一种按特定顺序进行存取的存储区。LIFO。四种类型:满递增(FA):空递增(EA):满递减(FD):空递减(ED):,向上生长,向下生长,指向栈顶,指向栈上,.,3.3Cortex-M3基本寻址方式,.,3.3Cortex-M3基本寻址方式,.,3.3Cortex-M3基本寻址方式,8.块拷贝寻址把一块数据从存储器的某一位置拷贝到另一位置。,LDMIAR0!,R2-R9STMIAR1,R2-R9,课后作业:解读p81图3-27,.,3.3Cortex-M3基本寻址方式,9.相对寻址特殊的变址寻址,基址为PCBLSUBRSUBRMOVPC,R14,.,3.4Thumb-2指令集说明,Thumb-2指令集允许32位指令与16位指令交融,代码密度和处理性能得到了改善:消除了状态切换的额外开销,节省指令执行时间和指令空间;源代码不需要分别编译,减轻软件开发管理负担;不需要测试与分析何时何地切换到何种状态最有效,软件开发容易。,.,3.4Thumb-2指令集说明,3.4.1条件执行cond条件码,几乎所有指令均可包含,根据条件码标志是否满足决定指令是否执行;“s”条件码标志更新后缀,几乎所有数据处理指令均可包含,更新条件码标志;CMP等指令不需要后缀”s”,始终更新条件码标志。条件码标志表P83,表3-7,.,3.4Thumb-2指令集说明,3.4.2指令分类说明4个大类:存储器访问指令:控制存储器和寄存器之间数据传送数据处理指令:处理器内部数据处理转移指令:控制程序流程、指令优先级等协处理器指令:控制外部协处理器opoperationcodecondconditionSsign,.,3.4Thumb-2指令集说明,存储器访问指令(1)LDR/STR(零、立即数、前变址立即数偏移)零偏移:opcondRd,Rn立即数偏移:opcondRd,Rn,offset前变址立即数偏移:opcondRd,Rn,offset!,.,3.4Thumb-2指令集说明,(2)LDR/STR(后变址立即数偏移)后变址立即数偏移:opcondRd,Rn,offset(3)LDR/STR(寄存器、前变址寄存器偏移)寄存器偏移:opcondRd,Rn,+/-Rm,shift前变址寄存器偏移:opcondRd,Rn,+/-Rm,shift!,.,3.4Thumb-2指令集说明,(4)LDR/STR(后变址寄存器偏移)后变址寄存器偏移:opcondRd,Rn,+/-Rm,shift(5)LDR(PC相对偏移):加载寄存器,地址是相对PC偏移量(+/-4K)(6)LDM/STM(多寄存器):opcondRn!,reglistIA、IB、DA、DB、FD、ED、FA、EA,.,3.4Thumb-2指令集说明,(7)PUSH和POP:PUSHcondreglistPOPcondreglist,.,3.4Thumb-2指令集说明,2.数据处理指令(1)灵活的第二操作数Operand2Flexiblesecondoperand#constant:Rm,shift:(2)ADD、SUB、RSB、ADC、SBC、RSCOpcondsRd,Rn,Operand,.,3.4Thumb-2指令集说明,(3)AND、ORR、EOR、BIC、ORNOpcondsRd,Rn,Operand2与、或、异或、位清零、或非(4)BFC、BFI位域清零、位域插入BFCcondRd,#lsb,#widthBFIcondRd,Rn,#lsb,#width,.,3.4Thumb-2指令集说明,(5)CLZ前导零计数OpcondRd,Rm对Rm中的前导零计数,结果存放到Rd中。(6)CMP、CMN比较、比较负值CMPcondRn,Operand2CMNcondRn,Operand2,.,3.4Thumb-2指令集说明,(7)MOV、MVN传送、传送非MOVscondRn,Operand2MVNscondRn,Operand2(8)TST、TEQ测试位、测试相等TSTcondRn,Operand2TEQcondRn,Operand2,.,3.4Thumb-2指令集说明,(9)MUL、MLA、MLS乘法、乘加、乘减MULscondRd,Rm,RsMLAscondRd,Rm,Rs,RnMLScondRd,Rm,Rs,Rn(10)UMULL、UMLAL、SMULL、SMLAL无符号、有符号长整数乘法和乘加opscondRdLo,RdHi,Rm,Rs,.,3.4Thumb-2指令集说明,3.转移指令(1)B、BL转移、带链接转移opcondlabelopcondRm(2)CBZ、CBNZ比较并为零转移、比较并非零转移CBZRn,labelCBNZRn,label,.,3.4Thumb-2指令集说明,4.杂项指令(1)BKPT断点(2)SWI软件中断(3)MRS、MSRPSR与通用寄存器间数据传递(4)NOP空操作,.,3.4Thumb-2指令集说明,3.4.3Thumb-2指令集特点改善了ARM代码密度和性能,将ARM解决方案延伸到了低功耗、高性能系统中。作业:阅读P103-105,理解其特点,用自己的语言阐述之。,.,3.5存储器映射,3.5.1存储系统简介(CortexM3简称CM3)支持4GB存储空间;存储器映射是预定义的;支持“位绑定”(bit-band)操作特殊区域;支持非对齐和互斥访问;支持小端配置和大端配置;,.,3.5存储器映射,3.5.2存储器映射空间代码区:片上RAM区:片上外设区:片外RAM区:片外外设区:私有区:,.,3.5存储器映射,3.5.3位绑定操作支持位绑定操作,可以使用普通的LDR/STR指令来对单一的比特进行读写。在CM3中,有两个区中实现了位绑定。其中一个是SRAM区的最低1MB范围,第二个则是片内外设区的最低1MB范围。这两个区中的地址除了可以像普通的RAM一样使用外,它们还都有自己的“位绑定别名区”,位绑定别名区把每个比特膨胀成一个32位的字。当通过位绑定别名区访问这些字时,就可以达到访问原始比特的目的。,.,3.5存储器映射,位绑定区与位绑定别名区对应关系,粗略图,详图,.,3.5存储器映射,位绑定区写操作举例:欲设置地址0 x2000_0000中的比特2,则使用位带操作的设置过程如下图所示:,.,3.5存储器映射,对应的汇编代码如图所示:,.,3.5存储器映射,位绑定区读操作举例:,.,3.5存储器映射,支持位绑定操作的两个内存区的范围是:0 x2000_0000-0 x200F_FFFF(SRAM区中的最低1MB)0 x4000_0000-0 x400F_FFFF(片上外设区中的最低1MB)对于SRAM位绑定区的某个比特,记它所在字节地址为A,位序号为n(0=n=7),则该比特在别名区的地址为:AliasAddr0 x22000000+(A-0 x20000000)*8+n)*4=0 x22000000+(A-0 x20000000)*32+n*4对于片上外设位绑定区的某个比特,记它所在字节的地址为A,位序号为n(0=n=7),则该比特在别名区的地址为:AliasAddr0 x42000000+(A-0 x40000000)*8+n)*4=0 x42000000+(A-0 x40000000)*32+n*4,.,3.6中断和异常,采用全新的异常模型支持240个外部中断+11个系统异常;进入异常服务程序时,R0-R3、R12、LR、PSR、PC自动入栈,返回时自动弹出;NVIC(嵌套中断控制器)支持中断优先级设置,至少8级;优化中断响应方法;多周期指令可以被中断后继续执行;NMI第一时间响应。,.,3.6中断和异常,3.6.1异常类型系统异常(1-15)、外部中断(16-255),.,3.6中断和异常,3.6.2优先级的定义在CM3中,优先级对于异常来说很关键的,它会决定一个异常是否能被掩蔽,以及在未掩蔽的情况下何时可以响应。优先级的数值越小,则优先级越高。CM3支持中断嵌套,使得高优先级异常会抢占(preempt)低优先级异常。有3个系统异常:复位,NMI以及硬fault,它们有固定的优先级,并且它们的优先级号是负数,从而高于所有其它异常。所有其它异常的优先级则都是可编程的。原则上,CM3支持3个固定的高优先级和多达256级的可编程优先级,并且支持128级抢占。但是,绝大多数CM3芯片都会精简设计,以致实际上支持的优先级数会更少,如8级,16级,32级等。它们在设计时会裁掉表达优先级的几个低端有效位,以减少优先级的级数。,.,3.6中断和异常,举例来说,如果只使用了3个位来表达优先级,则优先级配置寄存器的结构会如图所示:在图中,4:0没有被实现,所以读它们总是返回零,写它们则忽略写入的值。因此,对于3个位的情况,我们能够使用的8个优先级为:0 x00(最高),0 x20,0 x40,0 x60,0 x80,0 xA0,0 xC0以及0 xE0。,.,3.6中断和异常,如果使用更多的位来表达优先级,则可以使用的值也更多,同时需要的门也更多带来更多的成本和功耗。CM3允许的最少使用位数为3个位,亦即至少要支持8级优先级。下图给出使用3个位表达优先级vs.使用4个位表达优先级的图景:,.,3.6中断和异常,抢占优先级与子优先级:优先级可分为两个位域,MSB所在的位域对应抢占优先级,LSB所在的位域对应子(次)优先级,.,3.6中断和异常,举例:如果只使用3个位来表达优先级(7:5),并且优先级组的值是5(从比特5处分组),则得到4级抢占优先级,且在每个抢占优先级的内部有2个子优先级,如图所示。,.,3.6中断和异常,3.6.3向量表当发生了异常并且要响应它时,CM3需要定位其服务例程的入口地址。这些入口地址存储在“(异常)向量表”中。缺省情况下,CM3认为该表位于零地址处,且各向量占用4字节。因此每个表项占用4字节,如表所示。,.,3.6中断和异常,CM3允许向量表重定位:代码区orRAM区利用向量表偏移量寄存器修改入口地址。,.,3.6中断和异常,3.6.4中断输入及挂起行为(1)中断挂起,.,3.6中断和异常,3.6.4中断输入及挂起行为中断清除,.,3.6中断和异常,3.6.4中断输入及挂起行为中断活跃,.,3.6中断和异常,3.6.4中断输入及挂起行为中断保持,.,3.6中断和异常,3.6.5NVIC与中断控制1.NVIC概览嵌套向量中断控制器,简称NVIC,是Cortex-M3不可分离的一部分,它与CM3内核的逻辑紧密耦合。NVIC的寄存器以存储器映射的方式来访问,除了包含控制寄存器和中断处理的控制逻辑之外,NVIC还包含了MPU、SysTick定时器以及调试控制相关的寄存器。NVIC共支持1至240个外部中断输入(通常外部中断写作IRQs)。具体的数值由芯片厂商在设计芯片时决定。此外,NVIC还支持一个“永垂不朽”的不可屏蔽中断(NMI)输入。NMI的实际功能亦由芯片制造商决定。在某些情况下,NMI无法由外部中断源控制。,.,3.6中断和异常,NVIC的访问地址是0 xE000_E000。所有NVIC的中断控制/状态寄存器都只能在特权级下访问。不过有一个例外软件触发中断寄存器可以在用户级下访问以产生软件中断。所有的中断控制状态寄存器均可按字半字字节的方式访问。还有几个中断掩蔽寄存器也与中断控制密切相关,它们是前面讲到的“特殊功能寄存器”,只能通过MRS/MSR及CPS来访问。,.,3.6中断和异常,2.中断配置基础每个外部中断都在NVIC的下列寄存器中“挂号”:使能与除能寄

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论