Cortex-M4原理与实践:第一章 绪论_第1页
Cortex-M4原理与实践:第一章 绪论_第2页
Cortex-M4原理与实践:第一章 绪论_第3页
Cortex-M4原理与实践:第一章 绪论_第4页
Cortex-M4原理与实践:第一章 绪论_第5页
已阅读5页,还剩44页未读 继续免费阅读

下载本文档

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

文档简介

2022年10月20日1Cortex-M4原理与实践第一章绪论2022年10月20日Cortex-M4原理与实践2主要内容提纲1.1ARM体系概述1.2ARMCortex-M4微处理器1.3TM4C1294处理器2022年10月20日3第一章绪论1.1ARM体系概述2022年10月20日41.1.1ARM简介ARM(AdvancedRISCMachines)既是一个公司的名字,也是对一类微处理器的通称,还可以认为是一种技术的名字。

一个生产高级RISC(精简指令集)处理器的公司。

一种高级RISC的技术。

一类采用高级RISC的处理器。Cortex-M4原理与实践2022年10月20日5ARM公司概述ARM公司1991年成立于英国剑桥,主要出售芯片设计技术的授权。目前,采用ARM技术知识产权(IP)核的微处理器(即我们通常所说的ARM微处理器),已遍及工业控制、消费类电子产品、通信系统、无线系统等各类产品市场。基于ARM技术的微处理器,其应用占据了32位RISC处理器75%以上的市场份额。ARM技术正在逐步渗透到我们生活的各个方面。Cortex-M4原理与实践2022年10月20日6消费电子产品展示Cortex-M4原理与实践2022年10月20日7RISC(精简指令集)RISC的英文全称是ReducedInstructionSetComputing,即精简指令集。RISC与CISC(ComplexInstructionSetComputing,复杂指令集)相对应,它们是指令系统两个截然不同的优化方向。精简指令集的基本思想为:尽量简化指令功能,只保留那些功能简单、能在一个节拍内执行完成的指令,而把较复杂的功能用一段子程序来实现。Cortex-M4原理与实践2022年10月20日8ARM处理器1991年,ARM公司推出第一款嵌入式RISC核心,即ARM6解决方案。1993年,ARM公司推出基于ARMv4T架构的ARM7核心。2004年,ARM公司发布基于ARMv7架构的Cortex处理器系列,同时发布该系列架构中首款ARMCortex-M3处理器。2010年,ARM公司推出了ARMCortex-M4处理器。Cortex-M4原理与实践2022年10月20日91.1.2ARM架构的发展Cortex-M4原理与实践2022年10月20日101.1.3Cortex内核分类Cortex系列内核的命名采用Cortex加后缀的方式。后缀用字母加数字的方式表示其产品特性,如M3。Cortex分为三个系列:A系列R系列M系列Cortex-M4原理与实践2022年10月20日11Cortex内核分类——A系列A系列在MMU(内存管理单元)、用于多媒体应用程序的可选NEON(加速多媒体和信号处理算法)处理单元以及支持半精度和精度运算的高级硬件浮点单元的基础上实现了虚拟内存系统架构。该系列适用于高端消费电子设备、网络设备、移动Internet设备和企业市场。例如,该系列中较新的Cortex-A9内核和之前的Cortex-A8内核被广泛应用于高档智能手机和平板电脑中。Cortex-M4原理与实践2022年10月20日12R系列在MPU(内存保护单元)的基础上实现了受保护的内存系统架构。该系列适用于高性能实时控制系统(包括汽车和大容量存储设备)。例如,Cortex-R4内核被用于硬盘驱动器和汽车系统的电子控制单元中。Cortex内核分类——R系列Cortex-M4原理与实践2022年10月20日13汽车控制系统解析马达控制器车灯Cortex-M4原理与实践2022年10月20日14该系列可快速进行中断处理,适用于需要高度确定的行为和门数最少的成本敏感型设备。M系列主要面向嵌入式以及工业控制行业,用来取代“旧时代”单片机。其中,Cortex-M系列又有4款产品,分别对应不同应用和需求,如下表所示。Cortex内核分类——M系列名称Cortex-M0Cortex-M1Cortex-M3Cortex-M4架构ARMv6MARMv6MARMv7-MARMv7E-M应用范围8/16位应用FPGA应用16/32位应用32位/DSC应用特点成本低,具有简单性第一个为FPGA设计的ARM处理器高性能和高效率有效的数字信号控制Cortex-M4原理与实践2022年10月20日15第一章绪论1.2ARMCortex-M4内核2022年10月20日16ARMCortex-M4处理器是由ARM专门开发的最新嵌入式处理器,用以满足需要有效且易于使用的控制和信号处理功能混合的数字信号控制市场。高效的信号处理功能与Cortex-M处理器系列的低功耗、低成本和易于使用的优点的组合,旨在满足专门面向电动机控制、汽车、电源管理、嵌入式音频和工业自动化市场的新兴类别的灵活解决方案。1.2.1ARMCortex-M4微处理器特点Cortex-M4原理与实践2022年10月20日17RISC处理器内核:高性能32位CPU、具有确定性的运算、低延迟3阶段管道,可达1.25DMIPS/MHz;Thumb-2指令集:16/32位指令的最佳混合、小于8位设备3倍的代码大小、对性能没有负面影响。提供最佳的代码密度;低功耗模式:集成的睡眠状态支持、多电源域、基于架构的软件控制;嵌套矢量中断控制器(NVIC):低延迟、低抖动中断响应、不需要汇编编程、以纯C语言编写的中断服务例程。能完成出色的中断处理;工具和RTOS支持:广泛的第三方工具支持、Cortex微控制器软件接口标准(CMSIS)、最大限度地增加软件成果重用;CoreSight调试和跟踪:JTAG或2针串行线调试(SWD)连接、支持多处理器、支持实时跟踪。高能效数字信号控制Cortex-M4原理与实践2022年10月20日18Cortex-M4通过一系列出色的软件工具和Cortex微控制器软件接口标准(CMSIS)使信号处理算法开发变得十分容易。CMSIS是Cortex-M处理器系列的与供应商无关的硬件抽象层。使用CMSIS,可以为接口外设、实时操作系统和中间件实现一致且简单的处理器软件接口,从而简化软件的重用。ARM目前正在对CMSIS进行扩展,将加入支持Cortex-M4扩展指令集的C编译器;同时,ARM也在开发一个优化库,方便MCU用户开发信号处理程序。该优化库将包含数字滤波算法和其他基本功能,例如数学计算、三角计算和控制功能。数字滤波算法也将可以与滤波器设计工具和设计工具包(例如MATLAB和LabVIEW)配套使用。易于使用的技术Cortex-M4原理与实践2022年10月20日191.2.2Cortex-M4微处理器结构Cortex-M4原理与实践2022年10月20日20MPU全称MemoryProtectionUnit,即为存储保护单元,是一个Cortex-M4中用于内存保护的可选组件。MPU支持标准的ARMv7保护存储系统结构PMSA模型。MPU将存储器分为若干区域,定义各区域的位置、大小、访问权限、存储属性等。MPU可为每一个区以及重叠区单独设置存储属性,还可将存储属性导出至系统。MPUCortex-M4原理与实践2022年10月20日21NVIC全称NestedVectoredInterruptController,即为嵌套向量中断控制器,它的作用是实现低延迟中断处理。NVIC对所有的异常和中断进行优先级划分和处理,包括一个不可屏蔽中断(NonMaskableInterrupt,NMI),可以提供256个中断优先级。NVIC与处理器内核紧密集成,能够快速响应中断,使得中断延迟很低。中断发生时处理器状态被自动存储到堆栈,中断服务程序结束时又自动被恢复。向量的读取与状态保存并行,使处理器高效率进入中断。称为尾链(tail-chain)的优化功能使得相邻的中断响应不需要重复的状态保存和恢复,减少了相邻中断之间的切换时间。通过软件可设置7个异常(系统处理)和96个中断的8级优先级别。NVICCortex-M4原理与实践2022年10月20日22可配置1至240的外部中断;可配置3至8级的优先级;动态优先级中断;优先级分组,这使得可以选择优先中断级和非优先中断级;确定而快速的中断处理:只需12个周期或6个周期(相邻中断切换时);外部非屏蔽中断信号(NMI)可用于安全的紧急应用;通过硬件实现寄存器操作,可处理特殊的中断。NVIC操作特点Cortex-M4原理与实践2022年10月20日23系统控制模块SCB是编程模型与处理器之间的接口,提供系统实现的信息和系统控制,包括系统异常的配置、控制和报告等。SCBCortex-M4原理与实践2022年10月20日24系统定时器SysTick是一个24位减数(递减到零再重装)计数器,可用作实时操作系统RTOS(RealTimeOperatingSystem)的节拍定时器或者一般的计数器。SysTickCortex-M4原理与实践2022年10月20日25FPU全称FloatingPointUnit,即为单精度浮点运算单元,专门用来进行浮点运算。具体特点如下:具有32位单精度浮点运算指令;集成了乘法和累加指令集,用于提高运算精度;对于数据转换、加法、减法、乘法运算和可选的累加、除法和开方运算都有硬件支持;通过硬件支持非正规的以及所有IEEE的舍入模式;具有32个专用的32位单精度寄存器,同时也可当作16个64位双精度的寄存器使用;采用解耦三级流水线结构。FPU(Cortex-M4F)Cortex-M4原理与实践2022年10月20日26包括AHB-Lite和APB总线,AHB-Lite总线的访问性能比APB高。三条AHB-Lite总线分别为ICode总线、DCode总线和系统总线(Systembus),ICode总线和DCode总线分别用于从代码空间取指令和数据,系统总线则用于访问SRAM和其它外设。总线接口Cortex-M4原理与实践2022年10月20日27Cortex-M4微处理器的编程模型是指处理器的运行模式。处理器模式包括两种:主模式(Threadmode):是用于执行应用软件的基本模式,复位后处理器进入该模式。中断模式(Handlermode):是用于处理异常的模式,所有异常在该模式下执行,执行完成后返回主模式。在处理器模式下,软件执行有两种模式,即特权或者非特权模式。特权模式可以执行所有指令并访问所有资源,而非特权模式将不能或有限执行某些指令(如MSR,MRS,CPS)及访问某些资源(如系统时钟、NVIC、SCB、某些存储器及外设等)。主模式可以执行特权或者非特权模式,中断模式则总是执行特权模式。1.2.3Cortex-M4微处理器的编程模式Cortex-M4原理与实践2022年10月20日28CM4使用的是“向下生长”的堆栈模型,即堆栈指针SP指向最后一个被压入堆栈的32位数值,在下一次压栈时,SP先自动减4,再存入新的数值。初始化堆栈时,堆栈指针SP指向的第一个地址,叫做栈顶地址。在CM4中,堆栈分为两个:主堆栈(MSP)和进程堆栈(PSP)。两个堆栈分别存放在内存中,是两个不同的栈顶地址,但在同一时刻只能使用其中一个,不能同时使用。两个堆栈的选择是通过控制寄存器(CONTROL)的比特1,即CONTROL[1]来决定的。1.2.4Cortex-M4微处理器的堆栈Cortex-M4原理与实践2022年10月20日291.2.5Cortex-M4微处理器的内核寄存器Cortex-M4原理与实践2022年10月20日301.2.6Cortex-M4微处理器的存储器映射Cortex-M4原理与实践2022年10月20日31由于历史原因,从ARM7TDMI开始,ARM处理器一直支持两种形式上相对独立的指令集,它们分别是:32位的ARM指令集16位的Thumb指令集1.3.7Cortex-M4指令集Cortex-M4原理与实践2022年10月20日32Cortex-M4采用Thumb-2指令集,支持32位字、16位半字和8位字节数据类型,支持32位和16位指令,同时还支持64位数据传输指令。Cortex-M4的指令集除了包括常规的数据传输、存储器读/写、堆栈操作、算术运算、算术逻辑、条件转移、单周期硬件乘除等指令外,还包括浮点运算、32位数乘以32位数的长乘法指令等。此外还有一些特殊用途指令。1.2.7Cortex-M4指令集Cortex-M4原理与实践2022年10月20日33Thumb指令集是ARM体系结构中的一种16位指令集。Thumb指令集可以看做是ARM指令压缩形式的子集,它是为了提高代码密度而提出的,理论上代码密度比32位的ARM指令集提高了一倍。Thumb指令集并不完整,只支持通用功能,必要时仍需要使用ARM指令(比如异常和中断都需要在ARM状态下处理)。另外,在Thumb模式下,较小的指令码其功能也较少。例如,只有分支可以是条件式的,且许多指令码无法存取所有的CPU的暂存器。Thumb指令集Cortex-M4原理与实践2022年10月20日34Thumb-2技术是以ARMCortex体系为基础的指令集,它提升了众多嵌入式应用的性能、能效和代码密度。Thumb-2技术以Thumb为基础进行构建,以增强ARM微处理器的内核功能,从而使开发人员能够开发出低成本且高性能的系统。Thumb-2技术使用少于31%的内存以降低系统成本,同时提供比现在高密度代码高出38%的性能,因此可用于延长电池寿命,或丰富产品功能集。Thumb-2指令集是16位指令集的一个超集。在Thumb-2中,16位指令与32位指令并存,兼顾了代码密度与处理性能。Thumb-2指令集Cortex-M4原理与实践2022年10月20日35CM4只支持Thumb和Thumb-2指令集,这样便不需要在不同的状态下切换,避免了不必要的切换带来的额外开销。同时不需要分开编译,所以降低了编译难度。这意味着CM4内核不再完全兼容之前的ARM汇编程序,使用ARM指令集编写的汇编语言程序不能直接进行移植。不过,CM4支持绝大多数传统的Thumb指令,因此用Thumb指令编写的汇编程序可以相对容易地进行移植。注意Cortex-M4原理与实践2022年10月20日36Cortex-M4处理器及NVIC在中断模式下处理所有异常。当出现异常时,将产生中断,处理器的状态将被自动存储到堆栈中,并在中断服务程序ISR(InterruptServiceRoutine)结束时自动从堆栈中恢复。NVIC取出中断向量和保存状态是同时进行的,因此提高了进入中断的效率。另外处理器还具有中断末尾连锁功能(tail-chaining),即当有两个相邻的中断发生时,前一个中断处理结束后,后一个中断无需保存和恢复状态便可执行连续的中断,减少了中断响应时间。1.2.8Cortex-M4的异常处理Cortex-M4原理与实践2022年10月20日37异常类型Cortex-M4原理与实践异常类型向量号优先级向量地址或偏移描述

0

0x0000.0000复位时,栈顶从向量表的第一个入口加载复位1-3(最高)0x0000.0004在上电和热复位时产生,被当作特殊异常处理。不可屏蔽中断NMI2-20x0000.0008不可屏蔽中断可由外部NMI信号触发或通过软件设置中断控制和状态寄存器INTCTRL触发。NMI不可被屏蔽,即总是被使能;除复位以外,也不可被其它异常或者抢占优先级别的异常终止。硬故障3-10x0000.000C当异常处理过程发生错误,或者异常无法处理时将产生硬故障。硬故障优先级比任何可编程的优先级高。存储器管理故障4可编程0x0000.0010存储器保护故障,包括访问侵权和不匹配。总线故障5可编程0x0000.0014当与存储器相关的指令或数据提取发生故障时,例如预取指故障或存储器访问故障,将产生总线故障异常,该异常可以被使能或禁止。使用故障6可编程0x0000.0018当发生指令执行相关的故障时,例如未定义的指令、异常返回错误等,将产生使用故障异常。2022年10月20日38异常类型Cortex-M4原理与实践

7-10

保留监管调用SVCall11可编程0x0000.002C由SVC指令产生。在操作系统环境中,应用程序可利用SVC指令访问操作系统内核以及设备驱动。调试监控器12可编程0x0000.0030调试监控器异常需要使能才能使用,如果它的优先级比当前已激活的调试监控器异常的优先级更低,则不能被激活。

13

保留PendSV14可编程0x0000.0038PendSV是系统级服务的悬挂中断驱动请求,通过设置中断控制和状态寄存器INTCTRL触发。在操作系统环境中,当没有其它异常被激活时,可利用PendSV进行上下文切换。SysTick15可编程0x0000.003C当系统定时器计数到0时产生(当中断被使能时)。也可以通过设置中断控制和状态寄存器INTCTRL触发。中断IRQ0-IRQ13116-147(中间有部分保留)可编程0x0000.0040-0x0000.0254外设或软件产生的中断请求。2022年10月20日39除复位、NMI和硬故障有固定优先级外,软件可以针对其余7种异常和96种中断(如附录所示)设置8种优先级。异常的优先级通过NVIC的系统处理寄存器SYSPRIn设置,中断的优先级通过NVIC的中断优先级寄存器PRIn设置。中断使能通过NVIC的中断使能设置寄存器ENn设置。可以通过将优先级分成抢占优先级和子优先级来进行分组。异常优先级如表1-2所示,优先级号码越小,级别越高,最高优先级为-3。可编程优先级的默认优先级可由软件设定为0-7,其默认优先级为优先级0,也是用户可编程优先级的最高级别,仅次于复位、NMI以及硬件故障。当有多个优先级相同的异常处于悬挂状态时,异常向量号较小的优先处理。当有更高优先级别的异常发生时,正在处理的异常将被其抢占。异常优先级Cortex-M4原理与实践2022年10月20日40待用:即没发生异常;悬挂:一个异常正在等待处理器处理。外设或者软件的中断请求可使中断进入悬挂状态;激活:一个异常请求正在被处理器处理,但还没有完成;激活并悬挂:一个异常请求正在被处理器处理,但是又有一个同样的异常被悬挂。异常状态Cortex-M4原理与实践2022年10月20日41中断服务程序ISR:所有中断通过ISR处理;故障处理器:硬故障、存储器管理故障、总线故障和使用故障由故障处理器处理;系统处理器:10种异常,包括四种故障异常,都属于系统异常,都由系统处理器处理。异常处理器Cortex-M4原理与实践2022年10月20日42第一章绪论1.3TM4C1294处理器2022年10月20日43德州仪器公司生产的基于ARM®Cortex-M的TM4C1294系列微处理器是基于Cortex-M内核的32位微处理器,具有高效的信号处理及浮点运算功能。针对性能和灵活性,TivaTMC系列体系结构提供了一个120MHz的Cortex-MFPU,以及多个可编程GPIO接口。同时集成了精密的模拟信号处理功能,与Cortex-M处理器的低功耗、低成本和易于使用的优点相结合,旨在满足汽车控制、医疗仪器、工业自动化、楼宇自动化、安防设备、嵌入式音频和娱乐设备等应用市场的需求。1.3.1TM4C1294处理器微处理器概述Cortex-M4原理与实践2022年10月20日44TM4C1294系列微处理器采用Thumb-2指令集,Thumb-2技术结合了16位和32位的指令集以提供在代码密度和性能上的平衡;另外,Thumb-2技术具有非常快的响应速度,同时还支持多种高性能的信号处理指令。TM4C1294系列微处理器为成本敏感型嵌入式微处理器应用提供了高性能的32位计算,以8位或是16位芯片的价格为用户提供了封装小巧的32位高性能处理器。1.3.1TM4C1294处理器微处理器概述Cortex-M4原理与实践2022年10月20日45TI公司基于Cortex-M4的

TivaTMTM4C1294开发板Cortex-M4原理与实践2022年10月20日461.3.2TM4C1294处理器微处理器结构Cortex-M4原理与实践2022年10月20日471.3.3TM4C1294处理器微处理器性能特点Cortex-M4原理与实践性能内核ARMCortex-M4F内核性能120-MHz运行速度;150DMIPS性能

温馨提示

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

评论

0/150

提交评论