基于arm的单片机应用及实践第2章cortex-m3处理器_第1页
基于arm的单片机应用及实践第2章cortex-m3处理器_第2页
基于arm的单片机应用及实践第2章cortex-m3处理器_第3页
基于arm的单片机应用及实践第2章cortex-m3处理器_第4页
基于arm的单片机应用及实践第2章cortex-m3处理器_第5页
已阅读5页,还剩69页未读 继续免费阅读

下载本文档

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

文档简介

1、第二章 Cortex-M3处理器 Cortex-M3处理器基本结构 Cortex-M3中央内核基于哈佛架构,指令和数据各使用一条总线(图 2-1)。与Cortex-M3不同,ARM7系列处理器使用冯诺依曼架构,指令和数据共用信号总线以及存储器。由于指令和数据可以从存储器中同时读取,所以Cortex-M3处理器对多个操作并行执行,加快了应用程序的执行速度。图 2-1 Cortex-M3处理器架构Cortex-M3 处理器集成了内核和高级系统外设的分级处理器 Cortex-M3 内核哈佛体系结构拥有分支预测功能的三级流水线 Thumb-2 指令集和传统的 Thumb指令集带有 硬件除法和 单信号周

2、期乘法的ALUCortex-M3 处理器Cortex-M3 内核可配置的中断控制器 总线矩阵先进的调试组件 可选择的 MPU & ETMCortex-M3的应用,主要包括:价格敏感的设备通用MCU、智能玩具、个人电子设备小的核可以降低硅片面积紧密结合系统外设可缩小面积、降低开发成本Thumb-2代码可减小指令存储器达30%SWD允许使用较小的引脚数和封装在ISR、Boot代码中无需汇编代码单周期的Read/Modify/Write,更紧凑的数据打包确定的中断处理系统更新时的修补能力(ROM到Flash、SRAM)低功耗设备Zigbee、PAN(BlueTooth)、医疗电子设备低功耗内核:0.

3、047mW/MHz(0.13um,ARM Metro Lab,50MHz)高级时钟选通技术降低功耗集成的睡眠模式系统部件的功耗控制高效率允许较低的时钟源快速完成任务、增加睡眠时间,降低总的功耗高性能设备超低价格手机、汽车应用、大容量存储设备;性能可达1.25 DMIPS/MHz执行Thumb指令时,比ARM7处理器性能高70%执行ARM指令时,比ARM7处理器性能高35%硬件除法更好的算法实现快速中断处理可选的MPU针对特定应用调试与跟踪能力Cortex M3处理器结构框透视图 嵌套向量中断控制器(NVIC) NVIC为低延迟实现异常处理提供了方便。主要有以下特征:可配置1240个外部中断。可

4、配置优先级位数38位。支持电平和脉冲(边沿)中断。可以动态重新分配中断优先级。优先级分组。支持尾链(tail-chaining)中断。进入中断时,处理器状态自动保存,退出中断时状态自动恢复,无额外指令开销 总线矩阵Cortex-M3处理器集成了一个AMBA AHB-Lite总线来连接系统外设,并降低系统集成的复杂性。总线矩阵支持不对齐的数据访问,使不同的数据类型可以在存储器中紧密衔接可显著降低SRAM的需求和系统成本。总线矩阵将处理器、调试接口连接到外部总线。 总线矩阵连接到以下外部总线:ICode总线。这是一条32位的AHB-Lite总线,主要用于从指令空间中取指和取向量。DCode总线。这

5、是一条32位的AHB-Lite总线,主要用于从指令空间的数据读写和调试访问。系统总线。这是一条32位的AHB-Lite总线,主要用于从系统空间中取指、取向量、读写数据和调试访问。PPB。这是一条32位的APB (v2.0)总线,主要用于从PPB空间读写数据和调试访问。 调试接口硬件调试解决方案,通过一个传统的JTAG口或一个适合小封装器件的2线串行调试口(SWD),可以获得很高的处理器系统可视度。对于系统跟踪,处理器在数据观察点基础上集成了一个可选的ETM(嵌入式跟踪宏单元),它可以被配置为特定的系统事件触发。为了简化这些系统事件的处理,一个串行观测器(Serial Wire Viewer,S

6、WV)可以通过一个引脚输出标准的ASCII数据流。Flash修补技术,使器件和系统开发者在调试或运行过程中,可以修补从ROM到SRAM或Flash的代码错误,可避免昂贵的重定制 上图向我们展示了设计的 RTL 层次。其中的两条外设总线:一条72MHZ,一条36MHZ由于 ETM、TPIU、SW/JTAG-DP 和 ROM 表4个组件是可选的,或者它们的实现和使用具有灵活性,因此这 4 个组件位于Cortex-M3 处理器的外面。设计实现可能与图中显示的有所不同。可能的系统实现的选项见下面的 3 个部分:TPIU的实现选项: 如果您的系统中有 ETM,则会含有 TPIU格式程序,否则就不包含该格

7、式程序。 一个多内核的实现可使用单个或多个 TPIU来跟踪。 ARM TPIU模块可以用兼容 TPIU的指定合作伙伴的 CoreSight 取代。 在生产设备中,TPIU可以移除。 注:如果将 TPIU移除,则 Cortex-M3 不具有跟踪功能。 SW/JTAG-DP的实现选项: 设计实现可以含有 SW-DP 或 JTAG-DP中的任一个或两者都有。 ARM SW-DP 可以被兼容 SW-DP的指定合作伙伴的 CoreSight 取代。ARM JTAG-DP可以被兼容 JTAG-DP 的指定合作伙伴的 CoreSight 取代。 SW-DP 或 JTAG-DP可以包含指定合作伙伴的测试接口。

8、 ROM 表 如果系统中添加了附加的调试元件,则 ROM 存储器表中的描述需进行修改。寄存器Cortex-M3寄存器:13个通用寄存器(R0-R12)分组的堆栈指针SP链接寄存器R14程序计数器R15特殊用途程序状态寄存器xPSR1、通用寄存器 通用目的寄存器R0-R12都是32位通用寄存器,用于数据操作。注意:绝大多数16位Thumb指令只能访问R0-R7,而32位Thumb-2指令可以访问所有寄存器。 复位后的初始值是不可预料的堆栈指针R13:Cortex-M3拥有两个堆栈指针,然而它们是banked,因此任一时刻只能使用其中的一个。 主堆栈指针(MSP):复位后缺省使用的堆栈指针,用于操

9、作系统内核以及异常处理例程(包括中断服务例程) 进程堆栈指针(PSP):由用户的应用程序代码使用。 堆栈是一种存储器的使用模型。它由一块连续的内存和一个栈顶指针组成,用于实现“后进先出”的缓冲区。其最典型的应用,就是在数据处理前先保存寄存器的值,再在处理任务完成后从中恢复先前保护的这些值。 堆栈指针用于访问堆栈,并且PUSH指令和POP指令默认使用SP。 在执行PUSH和POP操作时,通常被称为SP的地址寄存器,会由硬件自动调整它的值,以避免后续操作破坏先前的数据。连接寄存器R14:当呼叫一个子程序时,由R14存储返回地址 程序计数寄存器R15:指向当前的程序地址。如果修改它的值,就能改变程序

10、的执行流2、特殊功能寄存器 Cortex-M3还在内核水平上搭载了若干特殊功能寄存器,包括: 程序状态字寄存器组(PSRs) 中断屏蔽寄存器组(PRIMASK, FAULTMASK, BASEPRI) 控制寄存器(CONTROL) 特殊寄存器及其功能 通过MRS/MSR指令,这3个PSRs即可以单独访问,也可以组合访问(2个组合,3个组合都可以)。当使用三合一的方式访问时,应使用名字“xPSR”或者“PSR”。应用PSR应用 PSR(APSR)包含条件代码标志。在进入异常之前,Cortex-M3 处理器将条件代码标志保存在堆栈内。您可以使用 MSR(2)和 MRS(2)指令来访问 APSR。

11、APSR 的位分配如图所示。应用程序状态寄存器的位分配其中:中断 PSR 中断 PSR(IPSR)包含当前激活的异常的 ISR 编号。 IPSR 的位分配如图所示。 中断程序状态寄存器的位分配执行 PSR 执行 PSR(EPSR)包含两个重叠的区域: 可中断-可继续(interruptible-continuable)指令(ICI)区,用于被打断的多寄存器加载和存储指令。用于 If-Then(IT)指令的执行状态区,以及 T位(Thumb 状态位) 。可中断-可继续指令(ICI)区 多寄存器加载(LDM)和存储(STM)操作是可中断的。EPSR 的 ICI区用来保存从产生中断的点继续执行多寄存

12、器加载和存储操作时所必需的信息。 If-then状态区 EPSR 的 IT 区包含了 If-Then 指令的执行状态位。注:ICI 区和 IT 区是重叠的,因此,If-Then 模块内的多寄存器加载或存储操作不具有可中断-可继续功能。 EPSR 的位分配如图所示。不能直接访问 EPSR,若想修改 EPSR 必须发生以下两个事件之一: 在执行 LDM或 STM 指令时产生一次中断 执行 If-Then指令 下表描述了 EPSR 的位分配。 控制寄存器(CONTROL) 控制寄存器有两个用途:一用于定义特权级别,二用于选择当前使用哪个堆栈指针。由两个比特来行使这两个职能。 Cortex-M3的CO

13、NTROL寄存器CONTROL1 在Cortex-M3的 handler模式中,CONTROL1总是 0。在线程模式中则可以为 0或1。 因此,仅当处于特权级的线程模式下,此位才可写,其它场合下禁止写此位。改变处理器的模式也有其它的方式:在异常返回时,通过修改 LR 的位 2,也能实现模式切换。这是 LR 在异常返回时的特殊用法,颠覆了对 LR 的传统使用方式,将后面章节展开论述。 CONTROL0 仅当在特权级下操作时才允许写该位。一旦进入了用户级,唯一返回特权级的途径,就是触发一个(软)中断,再由服务例程改写该位存储格式Cortex-M3 处理器将存储器看作从 0开始向上编号的字节的线性集

14、合。例如: 字节 0-3 存放第一个被保存的字 字节 4-7 存放第二个被保存的字Cortex-M3 处理器能够以小端格式或大端格式访问存储器中的数据字,而访问代码时始终使用小端格式。注意: 小端格式是 ARM 处理器默认的存储器格式。 在小端格式中,一个字中最低地址的字节为该字的最低有效字节,最高地址的字节为最高有效字节。存储器系统地址 0 的字节与数据线 7-0 相连。 在大端格式中,一个字中最低地址的字节为该字的最高有效字节,而最高地址的字节为最低有效字节。存储器系统地址 0的字节与数据线 31-24 相连。Cortex-M3 处理器有一个配置管脚 BIGEND,您能够使用它来选择小端格

15、式或 BE-8 大端格式。该管脚在复位时被采样,结束复位后存储器格式不能修改。 注意: 对系统控制空间(SCS)的访问始终采用小端格式。 在非复位的状态下试图改变存储器格式的操作将被忽略。 PPB 空间只能为小端格式,BIGEND 的设置无效。小端数据格式大端数据格式指令集Cortex-M3 处理器不支持 ARM 指令。 Cortex-M3 处理器支持所有的 ARMv6 Thumb 指令,下表 2-4 中列出的除外。 Cortex-M3 支持的 Thumb-2 指令续上表(1)续上表(2)续上表(2)存储器映射Cortex-M3 处理器只有一个单一固定的存储器映射。这一点极大地方便了软件在各种

16、CM3单片机间的移植。如各款CM3单片机的NVIC和MPU都在相同的位置布设寄存器,使得它们变得与具体器件无关。虽然CM3定出的条条框框是粗线条的,但它依然允许芯片制造商灵活细腻地分配存储器空间,以制造出各具特色的单片机产品。 存储器组织存储空间的一些位置用于调试组件等私有外设,这个地址段被称为“私有外设区”。私有外设区的组件包括:闪存地址重载及断点单元(FPB) 数据观察点单元(DWT) 仪器化跟踪宏单元(ITM) 嵌入式跟踪宏单元(ETM) 跟踪端口接口单元(TPIU) lROM表 CM3的地址空间是4GB, 程序可以在代码区,内部SRAM区以及外部RAM区中执行。但是因为指令总线与数据总

17、线是分开的,最理想的是把程序放到代码区,从而使取指和数据访问各自使用自总线 具体4GB的粗线条划分如下图:内部SRAM区的大小是512MB,用于让芯片制造商连接片上的SRAM,这个区通过系统总线来访问。在这个区的下部,有一个1MB的区间,被称为“位带区”。该位带区还有一个对应的32MB的 “位带别名(alias)区”,容纳了8M个“位变量”(对比8051的只有128个位变量)。位带区对应的是最低的1MB地址范围,而位带别名区里面的每个字对应位带区的一个比特。位带操作只适用于数据访问,不适用于取指。通过位带的功能,可以把多个布尔型数据打包在单一的字中,却依然可以从位带别名区中,像访问普通内存一样

18、地使用它们。位带别名区中的访问操作是原子的,消灭了传统的“读改写”三步曲。位带操作的细节待会还要讲到。 地址空间的另一个512MB范围由片上外设(的寄存器)使用。这个区中也有一条32MB的位带别名,以便于快捷地访问外设寄存器,用法与内部SRAM区中的位带相同。如可以方便地访问各种控制位和状态位。要注意的是,外设区内不允许执行指令。 还有两个1GB的范围,分别用于连接外部RAM和外部设备,它们之中没有位带。两者的区别在于外部RAM区允许执行指令,而外部设备区则不允许。 最后还剩下0.5GB的隐秘地带,CM3内核的闺房就在这里面,包括了系统级组件,内部私有外设总线s,外部私有外设总线s,以及由提供

19、者定义的系统外设。私有外设总线有两条: AHB私有外设总线,只用于CM3内部的AHB外设,它们是:NVIC, FPB, DWT和ITM。APB私有外设总线,既用于CM3内部的APB设备,也用于外部设备( “外部”是对内核而言)。CM3允许器件制造商再添加一些片上APB外设到APB私有总线上,它们通过APB接口来访问。 NVIC所处的区域叫做“系统控制空间(SCS)”,在SCS里的除了NVIC外,还有SysTick、MPU以及代码调试控制所用的寄存器,如图所示:位段支持了位段操作后,可以使用普通的加载/存储指令来对单一的比特进行读写。在CM3中,有两个区中实现了位段。一是SRAM区的最低1MB范

20、围,二则是片内外设区的最低1MB范围。这两个位段中的地址除了可以像普通的RAM一样使用外,它们还都有自己的“位带别名区”,位带别名区把每个比特膨胀成一个32位的字。当通过位带别名区访问这些字时,就可以达到访问原始比特的目的。映射公式显示如何将别名区中的字与 bit-band 区中的对应位或目标位关联。映射公式如下:bit_word_offset=(byte_offset32)+(bit_number4)bit_word_addr=bit_band_base+bit_word_offset这里:Bit_word_offset 为bit-band 存储区中的目标位的位置。Bit_word_addr

21、 为别名存储区中映射为目标位的字的地址。Bit_band_base 是别名区的开始地址。Bit_offset 为bit-band 区中包含目标位的字节的编号。Bit_number 为目标位的位位置(0-7) 上式中,“*4”表示一个字为4个字节,“*32”表示一个字节中有32个比特。位段区与位段别名区的膨胀关系A图位段区与位段别名区的膨胀关系B图上图图显示了SRAM bit-band 别名区和SRAMbit-band 区之间的bit-band 映射的例子:地址 0 x23FFFFE0 的别名字映射为0 x200FFFFC 的bit-band 字节的位0:0 x23FFFFE0=0 x22000

22、000+(0 xFFFFF*32)+0*4地址0 x23FFFFEC 的别名字映射为0 x200FFFFC 的bit-band 字节的位7:0 x23FFFFEC=0 x22000000+(0 xFFFFF*32)+7*4地址0 x22000000 的别名字映射为0 x20000000 的bit-band 字节的位0:0 x22000000=0 x22000000+(0*32)+0*4地址0 x220001C 的别名字映射为0 x20000000 的bit-band 字节的位0:0 x2200001C=0 x22000000+(0*32)+7*4例:欲设置地址0 x2000_0000中的比特2

23、,则使用位带操作的设置过程如下图所示:写数据到位段别名区 从位段别名区中读取比特存储器访问属性CM3在定义了存储器映射之外,还为存储器的访问规定了4种属性,分别是: 可否缓冲(Bufferable) 可否缓存(Cacheable) 可否执行(Executable) 可否共享(Sharable) 2.6异常异常是指由于执行指令时的一个错误条件而产生的故障。出现故障后可以同步或不同步地向引起故障的指令报告,但通常还是会同步报告。不精确的总线故障是ARMv7-M 性能分析(performance profiling)支持的一种不同步故障。同步故障总是和引起该故障的指令一同被报告。不同步故障不能保证与

24、引起该故障的指令相关的方式报告。异常模型Cortex-M3 处理器和嵌套向量中断控制器(NVIC)对所有异常按优先级进行排序并处理。所有异常都在处理模式中操作。出现异常时,自动将处理器状态保存到堆栈中,并在中断服务程序(ISR)结束时自动从堆栈中恢复。在状态保存的同时取出向量快速地进入中断。处理器支持末尾连锁(tail-chaining)中断技术,它能够在没有多余的状态保存和恢复指令的情况下执行背对背中断(back-to-back interrupt)。异常类型异常处理占先:新的异常比当前的异常或线程的优先级更高并打断当前的流程,这是对挂起中断的响应。如果挂起中断的优先级比当前的ISR 或线程

25、的优先级更高,则进入挂起中断的ISR。如果一个ISR 抢占了另一个ISR,则产生了中断嵌套。在进入异常时,处理器自动保存其状态,将状态压栈。与此同时,取出相应的中断向量。当处理器状态被保存并且ISR 的第一条指令进入处理器流水线的执行阶段时,开始执行ISR 的第一条指令。状态保存在系统总线上执行。取向量操作根据向量表所在位置可以在系统总线或DCode 总线上执行。末尾连锁末尾连锁(Tail-chain)是处理器用来加速中断响应的一种机制。在结束ISR 时,如果存在一个挂起中断,其优先级高于正在返回的ISR 或线程,那么就会跳过出栈操作,转而将控制权让给新的ISR。返回在没有挂起(pending

26、)异常或没有比被压栈的ISR 优先级更高的挂起异常时,处理器执行出栈操作,并返回到被压栈的ISR 或线程模式。在响应 ISR 之后,处理器通过出栈操作自动将处理器状态恢复为进入ISR 之前的状态。如果在状态恢复过程中出现一个新的中断,并且该中断的优先级比正在返回的ISR 或线程更高,则处理器放弃状态恢复操作并将新的中断作为tail-chain 来处理。迟来迟来是处理器用来加速占先的一种机制。如果在保存前一个占先的状态时出现一个优先级更高的中断,则处理器转去处理优先级更高的中断,开始该中断的取向量操作。状态保存不会受到迟来的影响。因为被保存的状态对于两个中断都是一样的,状态保存继续执行不会被打断。处理器对迟来中断进行管理,直到ISR 的

温馨提示

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

评论

0/150

提交评论