补充材料-ARMm0架构.ppt

上传人:小飞机 文档编号:6487722 上传时间:2023-11-05 格式:PPT 页数:39 大小:840.50KB
返回 下载 相关 举报
补充材料-ARMm0架构.ppt_第1页
第1页 / 共39页
补充材料-ARMm0架构.ppt_第2页
第2页 / 共39页
补充材料-ARMm0架构.ppt_第3页
第3页 / 共39页
补充材料-ARMm0架构.ppt_第4页
第4页 / 共39页
补充材料-ARMm0架构.ppt_第5页
第5页 / 共39页
点击查看更多>>
资源描述

《补充材料-ARMm0架构.ppt》由会员分享,可在线阅读,更多相关《补充材料-ARMm0架构.ppt(39页珍藏版)》请在三一办公上搜索。

1、ARM Cortex-M0 处理器体系结构第一部分,单元大纲,ARM 体系和处理器什么是ARM架构ARM处理器系列ARM Cortex-M 架构系列Cortex-M0 处理器ARM 处理器 Vs.ARM 体系ARM Cortex-M0 处理器Cortex-M0 处理器概述Cortex-M0 框图Cortex-M0 寄存器Cortex-M0 内存映射Cortex-M0 异常处理,ARM 体系和 ARM 处理器,什么是ARM架构,ARM 架构是一种基于RISC技术的处理器架构因其低功耗而出名;因此广泛应用在移动设备中,诸如手机和平板中都有由ARM公司设计并授权一个很大的生态圈来生产ARM控股设计基

2、于ARM的处理器的公司;并不生产,但是授权其他半导体合作厂商使用其设计来制造和销售产品给他们的客户;同时还提供其他设计,比如物理IP、图形核和开发工具。,ARM 处理器系列,Cortex-A 系列(应用)用于开放操作系统的高性能处理器;应用产品包括手机、数字电视、电子书和家庭网关等。Cortex-R 系列(实时)对于实时应用有杰出的性能;应用产品包括汽车刹车系统、动力传动系统等。Cortex-M 系列(单片机)用于特定的单片机应用的顾忌成本的解决方案;应用产品包括单片机、混合信号设备、智能传感器、车体电路和气囊等。SecurCore系列高安全性的应用。早期的经典处理器包括ARM7、ARM9、A

3、RM11系列,Cortex-A,Cortex-A57Cortex-A53Cortex-A15Cortex-A9Cortex-A8Cortex-A7Cortex-A5Cortex-R7Cortex-R5Cortex-R4Cortex-M4Cortex-M3Cortex-M1Cortex-M0+Cortex-M0SC000SC100SC300ARM11ARM9ARM7,Cortex-R,Cortex-M,SecurCore,Classic,As of Sept 2013,设计一个基于ARM的SoC,从ARM或其他第三方IP厂家获得一组IP核;把这些IP核集成进单个芯片的设计中;把设计交给半导体厂家

4、来做芯片生产。,ROM,ARM处理器,RAM,系统总线,外围部件,外部接口,SoC,SoC 设计,芯片制造,可授权的IP,IP 库,Cortex-A9,Cortex-R5,Cortex-M0,ARM7,ARM9,ARM11,AXI 总线,AHB 总线,APB 总线,GPIO,I/O 块,定时器,DRAM 控制,FLASH 控制,SRAM 控制,ARM Cortex-M 架构系列,Cortex-M 系列:Cortex-M0,M0+,M1,M3,M4.低功耗更低的能耗、更长的电池寿命更小的代码更低的硅片成本易于使用更快的软件开发和重用嵌入式应用智能仪表、人机接口设备、汽车和工业控制系统、白色商品、

5、消费产品和医疗仪器,As of Sept 2013,ARM Cortex-M 架构系列,Cortex-M0 处理器,最小的ARM处理器极小的硅片面积极少的门数量(最低配置大约1.2万个门)代码密度高以16位Thumb指令为基础加上一些强大的32位指令低功耗16W/MHz(90LP 工艺、最小配置)简单性只有56条指令对C语言友好更确定的响应时间使用ARMv6-M架构,ARM 处理器Vs.ARM 架构,ARM 架构定义了指令集的细节、程序的模型、异常模型和内存映射;相关文档在Architecture Reference Manual(架构参考手册)中;ARM 处理器是用一种ARM架构开发出来的;

6、更多的实现细节,比如时序数据以及和实现相关的数据;相关文档在处理器的Technical Reference Manual(技术参考手册)中。,ARMv4/V4t 架构,ARMv5/v4E 架构,ARMv6 架构,ARMv7架构,ARM v6-M如.Cortex-M0,M1,如 ARM7TDMI,如 ARM9926EJ-S,如 ARM1136,ARMv8 架构,ARMv7-A如 Cortex-A9,ARMv7-R如 Cortex-R4,ARMv7-M如 Cortex-M3,ARMv8-A如 Cortex-A53Cortex-A57,ARMv8-R,2013年9月的数据,ARM 处理器Vs.ARM

7、 架构,Cortex-M0:v6-MARMv6 架构的Thumb指令集;ARMv7-M架构的内存映射,异常模型和Thumb-2系统;低功耗优化的设计。,ARM v6-M架构,ARM v6架构,ARM v7-M架构,Thumb 指令集,内存映射异常模型Thumb-2系统,低功耗优化的设计,ARM Cortex-M0 处理器概述,Cortex-M0 概述,32位精简指令集计算(RISC)处理器冯诺伊曼架构数据和指令共享单个总线接口;指令集56条指令,是Thumb-1(16位)和Thumb-2(16/32位)的子集;支持的中断1个不可屏蔽中断(NMI)+1 到 32 个物理中断支持睡眠模式,Cort

8、ex-M0 框图,内部总线系统,AHB LITE总线接口,唤醒中断控制器(WIC),处理器核心,嵌套向量化中断控制器(NVIC),调试子系统,中断请求和NMI,ARM Cortex-M0 微处理器,内存与外围部件,JTAG/串行线调试接口-Wire,电源管理接口,Cortex-M0 框图,处理器核心包括内部寄存器、ALU、数据通路和一些控制逻辑;三级流水线:取指、译码和执行;寄存器包括16个32位寄存器,都可以用做通用和特殊用途。嵌套向量化中断控制器(NVIC)最多32个中断请求信号和一个不可屏蔽中断(NMI);自动处理嵌套的中断,比如比较中断请求和当前正在处理的中断的优先级;,取指,译码,执

9、行,取指,译码,执行,取指,译码,执行,指令1,指令2,指令3,取指,译码,执行,指令4,Time,Cortex-M0 框图,总线系统包括内部总线系统,处理器核心中的数据通路和AHB LITE接口单元;全部都是32位宽度;AHB LITE是许多ARM处理器所采用的片上总线协议,在IC设计业内得到广泛使用。调试子系统处理调试控制、程序断点和数据观察点(watchpoint);当调试事件发生的时候,它可以把处理器核心置于停止状态,让开发人员可以分析处理器此刻的状态,比如查看寄存器和标志的值。唤醒中断控制器(WIC)(可选)对于低功耗应用,单片机可以关闭大多数部件进入睡眠模式。当检测到一个中断请求的

10、时候,WIC可以通知电源管理单元来给系统供电。,ARM Cortex-M0 处理器的寄存器,Cortex-M0 寄存器,处理器寄存器内部的寄存器是用来存储和处理处理器核心内的临时数据的;所有的寄存器都在处理器核心内,因此能更快地被读写;load-store架构要处理内存中的数据,就必须把数据从内存装载到寄存器中,在处理器中处理,需要的话,再写回到内存中。Cortex-M0 寄存器寄存器组(bank)16个32位寄存器(13个是通用的);特殊寄存器。,Cortex-M0 寄存器,R0,R1,R2,R3,R4,R5,R6,R7,R8,R9,R10,R11,R12,R13(分组),R14,R15,x

11、 PSR,堆栈指针(SP),链接寄存器(LR),程序计数器(PC),PRIMASK,CONTROL,Program Status Registers(PSR),Interrupt mask register,Stack definition,特殊寄存器,寄存器组,MSP,PSP,主堆栈指针,进程堆栈指针,APSR,EPSR,IPSR,应用程序PSR,执行PSR,终端PSR,低段寄存器,高段寄存器,通用寄存器,Cortex-M0 寄存器,R0 R12:通用寄存器低段寄存器(R0 R7)可以由任何指令读写;高段寄存器(R8 R12)有时候不能被某些Thumb指令读写。R13:堆栈指针(SP)记录堆

12、栈当前的地址;在任务之间切换的时候,用来保存程序的上下文;Cortex-M0有两个 SP:一个是主SP(MSP),用在需要特权访问的程序中,比如OS内核及异常处理程序;另一个是进程SP(PSP),用在普通的应用程序中(不跑异常处理程序的时候)。程序计数器(PC)记录当前指令代码的地址;每个取值操作自动递增4(对于32位指令码而言),除非是遇到了跳转指令;像函数调用这样的跳转指令,会把PC变到一个特定的地址,同时把当前的PC保存在链接寄存器(LR)中。,数据,数据,PC,SP,地址,低,高,压栈,退栈,堆栈,代码,堆,Cortex-M0 寄存器,R14:链接寄存器(LR)LR用来保存子程序或函数

13、调用时的返回地址;函数结束的时候,程序计数器(PC)装入LR中的值。,PC,LR,主程序代码,子程序,当前PC,把LR里的地址装入PC,从而返回到主程序中,当前LR,从子程序返回主程序,PC,LR,主程序代码,子程序,当前PC,1.把当前的PC保存到LR中,2.把子程序的起始地址装入PC,调用子程序,代码区,代码区,Cortex-M0 寄存器,xPSR,混合的程序状态寄存器提供程序运行的信息及ALU标志:应用PSR(APSR)中断PSR(IPSR)执行PSR(EPSR),N,Z,C,V,ISR 编号,保留,保留,保留,T,保留,T,N,Z,C,V,ISR 编号,APSR,IPSR,EPSR,x

14、PSR,第0位,第8位,第16位,第24位,第31位,Cortex-M0 寄存器,APSRN:负标志如果ALU的结果是负数就置为1;Z:零标志如果ALU的结果是0就置为1;C:进位标志如果无符号数发生了溢出就置为1;V:溢出标志如果有符号数发生了溢出就置为1。IPSRISR 编号当前正在执行的中断服务程序的编号EPSRT:Thumb 状态因为Cortex-M0只支持Thumb状态,所以始终为1,Cortex-M0 Registers,PRIMASK:中断屏蔽特殊寄存器1位的PRIMASK置该位为1就阻塞了不可屏蔽中断(NMI)和硬失效异常以外的所有中断。CONTROL:特殊寄存器1位的堆栈定义

15、置为1:使用进程堆栈指针(PSP);清为0:使用主堆栈指针(MSP)。,保留,保留,PRIMASK,PRIMASK,CONTROL,bit8,bit16,bit24,bit31,堆栈定义,ARM Cortex-M0 处理器内存映射,Cortex-M0 内存映射,Cortex-M0处理器有4GB的内存地址空间这4GB的内存空间从架构上被定义成了几块区域每块区域有建议的用途;这样便于软件程序员在不同的芯片之间移植软件不过,尽管有默认的内存映射,内存的实际使用是可以由用户灵活定义的,例外的是一些固定的内存地址,如内部私有外设总线。,Cortex-M0 内存映射,私有外设,如NVIC、SCS,主要用作

16、外部外设,如SD card,主要用做外部存储器,如外部DDR、FLASH、LCD,主要用做片上外设,如AHB、APB外围部件,主要用做数据存储器,如片上的SRAM、SDRAM,主要用做程序代码,如片上FLASH,保留,外部器件,外部RAM,外围部件,SRAM,代码,0 xFFFFFFFF,0 xE0000000,私有外设总线,0 xDFFFFFFF,0 xA0000000,0 x9FFFFFFF,0 x60000000,0 x5FFFFFFF,0 x40000000,0 x3FFFFFFF,0 x1FFFFFFF,0 x20000000,0 x00000000,512MB,512MB,512M

17、B,1GB,1GB,512MB,0 xE00FFFFF,0 xE0100000,保留做其他用途,ROM 表,保留,系统控制区(SCS),保留,断点单元,数据观察指针单元,保留,调试控制,嵌套的向量中断控制器(NVIC),保留,SysTick 定时器,保留,系统控制块(SCB),Cortex-M0 内存映射,代码区主要用于存储程序代码;也可以用来做数据存储;片上的存储器,比如片上的FLASH。SRAM区主要用来存储数据,比如堆和堆栈;也可以用来存储程序代码;片上存储器,尽管名字可能叫做“SRAM”,实际的器件可能是SRAM、SDRAM或其他类型的存储器。外设区主要用做外设,比如先进高性能总线(A

18、HB)或先进外设总线(APB)上的外围部件;片上外设。,Cortex-M0 内存映射,外部RAM 区主要用于保存大的数据块,或用作内存cache;片外存储器,比片上SRAM区慢。外部器件区主要用来映射外部器件;片外器件,如SD卡。内部私有外设总线(PPB)在处理器中用于处理器的内部控制;在PPB中,有一块特殊的内存空间是定义做系统控制空间(System Control Space、SCS)的;嵌套的向量化中断控制器(NVIC)是SCS的一部分。,Cortex-M0 内存映射的例子,AHB bus,外部SRAM,FLASH,外部LCD,SD 卡,Cortex-M0,PPB,SCS,NVIC,De

19、bug Ctrl,片上FLASH(代码区),片上SRAM(SRAM区),外设区,外部存储器接口(外部RAM 区),外部器件接口(外部器件区),定时器,UART,GPIO,芯片硅片,Cortex-M0 程序映像,Cortex-M0里的程序映像包括向量表包括异常的起始地址(向量)和主堆栈指针(MSP)的值;C的启动代码;程序代码应用程序代码和数据;C的库代码C库函数的程序代码。,0 x00000000,初始的MSP值,代码区,启动代码和程序代码和C库代码,向量表,程序映像,Reset(启动)向量,NMI向量,硬失效向量,保留,SVC向量,保留,PendSV向量,SysTick向量,中断向量,0 x

20、00000000,0 x00000004,0 x00000008,0 x0000000C,0 x0000002C,0 x00000038,0 x00000040,0 x0000003C,Cortex-M0 程序映像,在启动后:首先读入初始MSP值;然后读入第一个启动向量;跳转到程序执行的初始地址(启动处理程序);依次执行程序指令。,Cortex-M0 大小端,大小端指的是内存中字节存储的顺序小端(低位在前):一个字的数据中最低的字节保存在位0到位7大端(高位在前):一个字的数据中最低的字节保存在位24到31Cortex-M0既支持小端也支持大端不过,大小端只是硬件层面上的事情,ARM Cort

21、ex-M0 处理器异常,Cortex-M0 异常处理,异常是一种事件,它导致程序流退出当前的程序线程,转而执行与这个事件相关的一段代码事件可以是内部的也可以是外部的外部的事件也叫做中断(IRQ).,线程模式,异常模式,内部或外部事件,执行异常处理程序,执行正常代码序列,完成处理,现场保护,现场恢复,Cortex-M0 异常处理,异常处理程序一小段执行在异常模式的软件代码;如果一个中断请求(IRQ)导致了这个异常,那么也可以被叫做中断处理程序,或中断服务程序(ISR)。上下文切换上下文保存(现场保护):在进入异常模式之前,当前程序的上下文,比如寄存器当前的值要推入堆栈;上下文恢复(现场恢复):在

22、处理程序完成后,之前保存的上下文要从堆栈中弹出到寄存器里去,线程模式,异常模式,内部或外部事件,执行异常处理程序,执行正常代码序列,完成处理,现场保护,现场恢复,Cortex-M0 异常处理,异常优先级异常(或中断)一般要划分成几个层次或优先级;更高优先级的异常可以在较低优先级异常处理期间触发并得到服务;常被称作是嵌套的异常;异常可以由软件开启或禁止。Cortex-M0 中断控制器支持多达32个IRQ输入,和一个不可屏蔽中断(NMI)输入;NMI和IRQ类似,但是不能被禁止,而且具有最高的优先级,在诸如工业控制或汽车这样的安全性很关键的系统中很有用。,ARMv7-M的向量表,第一项是初始主SP

23、其他所有的都是异常处理程序的地址最低位必须=1(因为是Thumb)这个表最多可以有496个外部中断有具体实现来决定表的大小最大可以2048个字节这个表可以被重定位使用Vector Table Offset(向量表偏移)寄存器启动的时候仍然需要在0 x0的地方有起码的表项每个异常有一个向量编号在中断控制和状态(Interrupt Control and State)寄存器中用来标识当前的或是挂起的异常的类型该表可以用C代码产生后面有例子,保留(x4),用途失效,内存管理失效,硬失效,NMI,启动,初始的主SP,0 x1C to 0 x28,0 x18,0 x14,0 x10,0 x0C,0 x0

24、8,0 x04,0 x00,SVC,调试监视器,保留,PendSV,SysTick,外部0,总线失效,外部N,地址,向量#,汇编语言中的向量表,中断向量表可以用C或汇编语言来定义,汇编的例子如下:,RESERVE8 THUMB IMPORT|Image$ARM_LIB_STACK$ZI$Limit|AREA RESET,DATA,READONLY EXPORT _Vectors_Vectors DCD|Image$ARM_LIB_STACK$ZI$Limit|;Top of Stack DCD Reset_Handler;Reset Handler DCD NMI_Handler;NMI Ha

25、ndler DCD HardFault_Handler;Hard Fault Handler DCD MemManage_Handler;MemManage Fault Handler DCD BusFault_Handler;Bus Fault Handler DCD UsageFault_Handler;Usage Fault Handler DCD 0,0,0,0,;Reserved x4 DCD SVC_Handler,;SVCall Handler DCD Debug_Monitor;Debug Monitor Handler DCD 0;Reserved DCD PendSV_Handler;PendSV Handler DCD SysTick_Handler;SysTick Handler;External vectors start here,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号