




已阅读5页,还剩34页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
ARMCortex-M0处理器体系结构第一部分,单元大纲,ARM体系和处理器什么是ARM架构ARM处理器系列ARMCortex-M架构系列Cortex-M0处理器ARM处理器Vs.ARM体系ARMCortex-M0处理器Cortex-M0处理器概述Cortex-M0框图Cortex-M0寄存器Cortex-M0内存映射Cortex-M0异常处理,ARM体系和ARM处理器,什么是ARM架构,ARM架构是一种基于RISC技术的处理器架构因其低功耗而出名;因此广泛应用在移动设备中,诸如手机和平板中都有由ARM公司设计并授权一个很大的生态圈来生产ARM控股设计基于ARM的处理器的公司;并不生产,但是授权其他半导体合作厂商使用其设计来制造和销售产品给他们的客户;同时还提供其他设计,比如物理IP、图形核和开发工具。,ARM处理器系列,Cortex-A系列(应用)用于开放操作系统的高性能处理器;应用产品包括手机、数字电视、电子书和家庭网关等。Cortex-R系列(实时)对于实时应用有杰出的性能;应用产品包括汽车刹车系统、动力传动系统等。Cortex-M系列(单片机)用于特定的单片机应用的顾忌成本的解决方案;应用产品包括单片机、混合信号设备、智能传感器、车体电路和气囊等。SecurCore系列高安全性的应用。早期的经典处理器包括ARM7、ARM9、ARM11系列,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,AsofSept2013,设计一个基于ARM的SoC,从ARM或其他第三方IP厂家获得一组IP核;把这些IP核集成进单个芯片的设计中;把设计交给半导体厂家来做芯片生产。,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控制,ARMCortex-M架构系列,Cortex-M系列:Cortex-M0,M0+,M1,M3,M4.低功耗更低的能耗、更长的电池寿命更小的代码更低的硅片成本易于使用更快的软件开发和重用嵌入式应用智能仪表、人机接口设备、汽车和工业控制系统、白色商品、消费产品和医疗仪器,AsofSept2013,ARMCortex-M架构系列,Cortex-M0处理器,最小的ARM处理器极小的硅片面积极少的门数量(最低配置大约1.2万个门)代码密度高以16位Thumb指令为基础加上一些强大的32位指令低功耗16W/MHz(90LP工艺、最小配置)简单性只有56条指令对C语言友好更确定的响应时间使用ARMv6-M架构,ARM处理器Vs.ARM架构,ARM架构定义了指令集的细节、程序的模型、异常模型和内存映射;相关文档在ArchitectureReferenceManual(架构参考手册)中;ARM处理器是用一种ARM架构开发出来的;更多的实现细节,比如时序数据以及和实现相关的数据;相关文档在处理器的TechnicalReferenceManual(技术参考手册)中。,ARMv4/V4t架构,ARMv5/v4E架构,ARMv6架构,ARMv7架构,ARMv6-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架构,Cortex-M0:v6-MARMv6架构的Thumb指令集;ARMv7-M架构的内存映射,异常模型和Thumb-2系统;低功耗优化的设计。,ARMv6-M架构,ARMv6架构,ARMv7-M架构,Thumb指令集,内存映射异常模型Thumb-2系统,低功耗优化的设计,ARMCortex-M0处理器概述,Cortex-M0概述,32位精简指令集计算(RISC)处理器冯诺伊曼架构数据和指令共享单个总线接口;指令集56条指令,是Thumb-1(16位)和Thumb-2(16/32位)的子集;支持的中断1个不可屏蔽中断(NMI)+1到32个物理中断支持睡眠模式,Cortex-M0框图,内部总线系统,AHBLITE总线接口,唤醒中断控制器(WIC),处理器核心,嵌套向量化中断控制器(NVIC),调试子系统,中断请求和NMI,ARMCortex-M0微处理器,内存与外围部件,JTAG/串行线调试接口-Wire,电源管理接口,Cortex-M0框图,处理器核心包括内部寄存器、ALU、数据通路和一些控制逻辑;三级流水线:取指、译码和执行;寄存器包括16个32位寄存器,都可以用做通用和特殊用途。嵌套向量化中断控制器(NVIC)最多32个中断请求信号和一个不可屏蔽中断(NMI);自动处理嵌套的中断,比如比较中断请求和当前正在处理的中断的优先级;,取指,译码,执行,取指,译码,执行,取指,译码,执行,指令1,指令2,指令3,取指,译码,执行,指令4,Time,Cortex-M0框图,总线系统包括内部总线系统,处理器核心中的数据通路和AHBLITE接口单元;全部都是32位宽度;AHBLITE是许多ARM处理器所采用的片上总线协议,在IC设计业内得到广泛使用。调试子系统处理调试控制、程序断点和数据观察点(watchpoint);当调试事件发生的时候,它可以把处理器核心置于停止状态,让开发人员可以分析处理器此刻的状态,比如查看寄存器和标志的值。唤醒中断控制器(WIC)(可选)对于低功耗应用,单片机可以关闭大多数部件进入睡眠模式。当检测到一个中断请求的时候,WIC可以通知电源管理单元来给系统供电。,ARMCortex-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,xPSR,堆栈指针(SP),链接寄存器(LR),程序计数器(PC),PRIMASK,CONTROL,ProgramStatusRegisters(PSR),Interruptmaskregister,Stackdefinition,特殊寄存器,寄存器组,MSP,PSP,主堆栈指针,进程堆栈指针,APSR,EPSR,IPSR,应用程序PSR,执行PSR,终端PSR,低段寄存器,高段寄存器,通用寄存器,Cortex-M0寄存器,R0R12:通用寄存器低段寄存器(R0R7)可以由任何指令读写;高段寄存器(R8R12)有时候不能被某些Thumb指令读写。R13:堆栈指针(SP)记录堆栈当前的地址;在任务之间切换的时候,用来保存程序的上下文;Cortex-M0有两个SP:一个是主SP(MSP),用在需要特权访问的程序中,比如OS内核及异常处理程序;另一个是进程SP(PSP),用在普通的应用程序中(不跑异常处理程序的时候)。程序计数器(PC)记录当前指令代码的地址;每个取值操作自动递增4(对于32位指令码而言),除非是遇到了跳转指令;像函数调用这样的跳转指令,会把PC变到一个特定的地址,同时把当前的PC保存在链接寄存器(LR)中。,数据,数据,PC,SP,地址,低,高,压栈,退栈,堆栈,代码,堆,Cortex-M0寄存器,R14:链接寄存器(LR)LR用来保存子程序或函数调用时的返回地址;函数结束的时候,程序计数器(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,xPSR,第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-M0Registers,PRIMASK:中断屏蔽特殊寄存器1位的PRIMASK置该位为1就阻塞了不可屏蔽中断(NMI)和硬失效异常以外的所有中断。CONTROL:特殊寄存器1位的堆栈定义置为1:使用进程堆栈指针(PSP);清为0:使用主堆栈指针(MSP)。,保留,保留,PRIMASK,PRIMASK,CONTROL,bit8,bit16,bit24,bit31,堆栈定义,ARMCortex-M0处理器内存映射,Cortex-M0内存映射,Cortex-M0处理器有4GB的内存地址空间这4GB的内存空间从架构上被定义成了几块区域每块区域有建议的用途;这样便于软件程序员在不同的芯片之间移植软件不过,尽管有默认的内存映射,内存的实际使用是可以由用户灵活定义的,例外的是一些固定的内存地址,如内部私有外设总线。,Cortex-M0内存映射,私有外设,如NVIC、SCS,主要用作外部外设,如SDcard,主要用做外部存储器,如外部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,512MB,1GB,1GB,512MB,0 xE00FFFFF,0 xE0100000,保留做其他用途,ROM表,保留,系统控制区(SCS),保留,断点单元,数据观察指针单元,保留,调试控制,嵌套的向量中断控制器(NVIC),保留,SysTick定时器,保留,系统控制块(SCB),Cortex-M0内存映射,代码区主要用于存储程序代码;也可以用来做数据存储;片上的存储器,比如片上的FLASH。SRAM区主要用来存储数据,比如堆和堆栈;也可以用来存储程序代码;片上存储器,尽管名字可能叫做“SRAM”,实际的器件可能是SRAM、SDRAM或其他类型的存储器。外设区主要用做外设,比如先进高性能总线(AHB)或先进外设总线(APB)上的外围部件;片上外设。,Cortex-M0内存映射,外部RAM区主要用于保存大的数据块,或用作内存cache;片外存储器,比片上SRAM区慢。外部器件区主要用来映射外部器件;片外器件,如SD卡。内部私有外设总线(PPB)在处理器中用于处理器的内部控制;在PPB中,有一块特殊的内存空间是定义做系统控制空间(SystemControlSpace、SCS)的;嵌套的向量化中断控制器(NVIC)是SCS的一部分。,Cortex-M0内存映射的例子,AHBbus,外部SRAM,FLASH,外部LCD,SD卡,Cortex-M0,PPB,SCS,NVIC,DebugCtrl,片上FLASH(代码区),片上SRAM(SRAM区),外设区,外部存储器接口(外部RAM区),外部器件接口(外部器件区),定时器,UART,GPIO,芯片硅片,Cortex-M0程序映像,Cortex-M0里的程序映像包括向量表包括异常的起始地址(向量)和主堆栈指针(MSP)的值;C的启动代码;程序代码应用程序代码和数据;C的库代码C库函数的程序代码。,0 x00000000,初始的MSP值,代码区,启动代码和程序代码和C库代码,向量表,程序映像,Reset(启动)向量,NMI向量,硬失效向量,保留,SVC向量,保留,PendSV向量,SysTick向量,中断向量,0 x00000000,0 x00000004,0 x00000008,0 x0000000C,0 x0000002C,0 x00000038,0 x00000040,0 x0000003C,Cortex-M0程序映像,在启动后:首先读入初始MSP值;然后读入第一个启动向量;跳转到程序执行的初始地址(启动处理程序);依次执行程序指令。,Cortex-M0大小端,大小端指的是内存中字节存储的顺序小端(低位在前):一个字的数据中最低的字节保存在位0到位7大端(高位在前):一个字的数据中最低的字节保存在位24到31Cortex-M0既支持小端也支持大端不过,大小端只是硬件层面上的事情,ARMCortex-M0处理器异常,Cortex-M0异常处理,异常是一种事件,它导致程序流退出当前的程序线程,转而执行与这个事件相关的一段代码事件可以是内部的也可以是外部的外部的事件也叫做中断(IRQ).,线程模式,异常模式,内部或外部事件,执行异常处理程序,执行正常代码序列,完成处理,现场保护,现场恢复,Cortex-M0异常处理,异常处理程序一小段执行在异常模式的软件代码;如果一个中断请求(IRQ)导致了这个异常,那么也可以被叫做中断处理程序,或中断服务程序(ISR)。上下文切换上下文保存(现场保护):在进入异常模式之前,当前程序的上下文,比如寄存器当前的值要推入堆栈;上下文恢复(现场恢复):在处理程序完成后,之前保存的上下文要从堆栈中弹出到寄存器里去,线程模式,异常模式,内部或外部事件,执行异常处理程序,执行正常代码序列,完成处理,现场保护,现场恢复,Cortex-M0异常处理,异常优先级异常(或中断)一般要划分成几个层次或优先级;更高优先级的异常可以在较低优先级异常处理期间触发并得到服务;常被称作是嵌套的异常;异常可以由软件开启或禁止。Cortex-M0中断控制器支持多达32个IRQ输入,和一个不可屏蔽中断(NMI)输入;NMI和IRQ类似,但是不能被禁止,而且具有最高的优先级,在诸如工业控制或汽车这样的安全性很关键的系统中很有用。,ARMv7-M的向量表,第一项是初始主SP其他所有的都是异常处理程序的地址最低位必须=1(因为是Thumb)这个表最多可以有496个外部中断有具体实现来决定表的大小最大可以2048个字节这个表可以被重定位使用VectorTableOffset(向量表偏移)寄存器启动的时候仍然需要在0 x0的地方有起码的表项每个异常有一个向量编号在中断控制和状态(InterruptControlandState)寄存器中用来标识当前
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 美术特色引流课件设计框架
- 2025年事业单位工勤技能-湖南-湖南土建施工人员四级(中级工)历年参考题库典型考点含答案解析
- 2025年事业单位工勤技能-湖北-湖北药剂员四级(中级工)历年参考题库典型考点含答案解析
- 2025年教育培训机构品牌建设策略研究报告
- 2025年事业单位工勤技能-海南-海南环境监测工四级(中级工)历年参考题库含答案解析
- 2025年事业单位工勤技能-河南-河南水文勘测工五级(初级工)历年参考题库典型考点含答案解析
- 2024版个人私有汽车出租合同书
- 2024版并购法律服务合同
- 2025年事业单位工勤技能-河北-河北保健按摩师一级(高级技师)历年参考题库含答案解析
- 2025年事业单位工勤技能-江西-江西中式面点师五级(初级工)历年参考题库含答案解析(5套)
- 2024年重庆永川区招聘社区工作者后备人选笔试真题
- 医学技术专业讲解
- 2025年临床助理医师考试试题及答案
- 唯奋斗最青春+课件-2026届跨入高三第一课主题班会
- 2025民办中学教师劳务合同模板
- 2025年南康面试题目及答案
- 2025年事业单位考试贵州省毕节地区纳雍县《公共基础知识》考前冲刺试题含解析
- 高中喀斯特地貌说课课件
- 黄冈初一上数学试卷
- 2025年中国花盆人参行业市场发展前景及发展趋势与投资战略研究报告
- 广东省安装工程综合定额(2018)Excel版
评论
0/150
提交评论