基于arm的单片机应用及实践幻灯片-第二章

上传人:F****n 文档编号:88142078 上传时间:2019-04-19 格式:PPT 页数:74 大小:2.18MB
返回 下载 相关 举报
基于arm的单片机应用及实践幻灯片-第二章_第1页
第1页 / 共74页
基于arm的单片机应用及实践幻灯片-第二章_第2页
第2页 / 共74页
基于arm的单片机应用及实践幻灯片-第二章_第3页
第3页 / 共74页
基于arm的单片机应用及实践幻灯片-第二章_第4页
第4页 / 共74页
基于arm的单片机应用及实践幻灯片-第二章_第5页
第5页 / 共74页
点击查看更多>>
资源描述

《基于arm的单片机应用及实践幻灯片-第二章》由会员分享,可在线阅读,更多相关《基于arm的单片机应用及实践幻灯片-第二章(74页珍藏版)》请在金锄头文库上搜索。

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

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

4、为低延迟实现异常处理提供了方便。主要有以下特征: 可配置1240个外部中断。 可配置优先级位数38位。 支持电平和脉冲(边沿)中断。 可以动态重新分配中断优先级。 优先级分组。 支持尾链(tail-chaining)中断。 进入中断时,处理器状态自动保存,退出中断时状态自动恢复,无额外指令开销,总线矩阵 Cortex-M3处理器集成了一个AMBA AHB-Lite总线来连接系统外设,并降低系统集成的复杂性。 总线矩阵支持不对齐的数据访问,使不同的数据类型可以在存储器中紧密衔接可显著降低SRAM的需求和系统成本。 总线矩阵将处理器、调试接口连接到外部总线。,总线矩阵连接到以下外部总线: ICod

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

6、置为特定的系统事件触发。 为了简化这些系统事件的处理,一个串行观测器(Serial Wire Viewer,SWV)可以通过一个引脚输出标准的ASCII数据流。 Flash修补技术,使器件和系统开发者在调试或运行过程中,可以修补从ROM到SRAM或Flash的代码错误,可避免昂贵的重定制,上图向我们展示了设计的 RTL 层次。 其中的两条外设总线:一条72MHZ,一条36MHZ 由于 ETM、TPIU、SW/JTAG-DP 和 ROM 表4个组件是可选的,或者它们的实现和使用具有灵活性,因此这 4 个组件位于Cortex-M3 处理器的外面。 设计实现可能与图中显示的有所不同。可能的系统实现的

7、选项见下面的 3 个部分:,TPIU的实现选项: 如果您的系统中有 ETM,则会含有 TPIU格式程序,否则就不包含该格式程序。 一个多内核的实现可使用单个或多个 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可以被兼容 J

8、TAG-DP 的指定合作伙伴的 CoreSight 取代。 SW-DP 或 JTAG-DP可以包含指定合作伙伴的测试接口。 ROM 表 如果系统中添加了附加的调试元件,则 ROM 存储器表中的描述需进行修改。,寄存器,Cortex-M3寄存器: 13个通用寄存器(R0-R12) 分组的堆栈指针SP 链接寄存器R14 程序计数器R15 特殊用途程序状态寄存器xPSR,1、通用寄存器 通用目的寄存器 R0-R12都是32位通用寄存器,用于数据操作。 注意:绝大多数16位Thumb指令只能访问R0-R7,而32位Thumb-2指令可以访问所有寄存器。 复位后的初始值是不可预料的,堆栈指针R13: C

9、ortex-M3拥有两个堆栈指针,然而它们是banked,因此任一时刻只能使用其中的一个。 主堆栈指针(MSP):复位后缺省使用的堆栈指针,用于操作系统内核以及异常处理例程(包括中断服务例程) 进程堆栈指针(PSP):由用户的应用程序代码使用。,堆栈是一种存储器的使用模型。它由一块连续的内存和一个栈顶指针组成,用于实现“后进先出”的缓冲区。 其最典型的应用,就是在数据处理前先保存寄存器的值,再在处理任务完成后从中恢复先前保护的这些值。 堆栈指针用于访问堆栈,并且PUSH指令和POP指令默认使用SP。,在执行PUSH和POP操作时,通常被称为SP的地址寄存器,会由硬件自动调整它的值,以避免后续操

10、作破坏先前的数据。,连接寄存器R14: 当呼叫一个子程序时,由R14存储返回地址 程序计数寄存器R15: 指向当前的程序地址。如果修改它的值,就能改变程序的执行流,2、特殊功能寄存器 Cortex-M3还在内核水平上搭载了若干特殊功能寄存器,包括: 程序状态字寄存器组(PSRs) 中断屏蔽寄存器组(PRIMASK, FAULTMASK, BASEPRI) 控制寄存器(CONTROL),特殊寄存器及其功能,通过MRS/MSR指令,这3个PSRs即可以单独访问,也可以组合访问(2个组合,3个组合都可以)。当使用三合一的方式访问时,应使用名字“xPSR”或者“PSR”。 应用PSR 应用 PSR(A

11、PSR)包含条件代码标志。在进入异常之前,Cortex-M3 处理器将条件代码标志保存在堆栈内。您可以使用 MSR(2)和 MRS(2)指令来访问 APSR。 APSR 的位分配如图所示。,应用程序状态寄存器的位分配,其中:,中断 PSR 中断 PSR(IPSR)包含当前激活的异常的 ISR 编号。 IPSR 的位分配如图所示。,中断程序状态寄存器的位分配,执行 PSR 执行 PSR(EPSR)包含两个重叠的区域: 可中断-可继续(interruptible-continuable)指令(ICI)区,用于被打断的多寄存器加载和存储指令。 用于 If-Then(IT)指令的执行状态区,以及 T位

12、(Thumb 状态位) 。,可中断-可继续指令(ICI)区 多寄存器加载(LDM)和存储(STM)操作是可中断的。EPSR 的 ICI区用来保存从产生中断的点继续执行多寄存器加载和存储操作时所必需的信息。 If-then状态区 EPSR 的 IT 区包含了 If-Then 指令的执行状态位。,注:,ICI 区和 IT 区是重叠的,因此,If-Then 模块内的多寄存器加载或存储操作不具有可中断-可继续功能。 EPSR 的位分配如图所示。 不能直接访问 EPSR,若想修改 EPSR 必须发生以下两个事件之一: 在执行 LDM或 STM 指令时产生一次中断 执行 If-Then指令,下表描述了 E

13、PSR 的位分配。,控制寄存器(CONTROL) 控制寄存器有两个用途: 一用于定义特权级别, 二用于选择当前使用哪个堆栈指针。 由两个比特来行使这两个职能。,Cortex-M3的CONTROL寄存器,CONTROL1 在Cortex-M3的 handler模式中,CONTROL1总是 0。在线程模式中则可以为 0或1。 因此,仅当处于特权级的线程模式下,此位才可写,其它场合下禁止写此位。 改变处理器的模式也有其它的方式:在异常返回时,通过修改 LR 的位 2,也能实现模式切换。这是 LR 在异常返回时的特殊用法,颠覆了对 LR 的传统使用方式,将后面章节展开论述。 CONTROL0 仅当在特

14、权级下操作时才允许写该位。一旦进入了用户级,唯一返回特权级的途径,就是触发一个(软)中断,再由服务例程改写该位,存储格式,Cortex-M3 处理器将存储器看作从 0开始向上编号的字节的线性集合。例如: 字节 0-3 存放第一个被保存的字 字节 4-7 存放第二个被保存的字 Cortex-M3 处理器能够以小端格式或大端格式访问存储器中的数据字,而访问代码时始终使用小端格式。,注意: 小端格式是 ARM 处理器默认的存储器格式。 在小端格式中,一个字中最低地址的字节为该字的最低有效字节,最高地址的字节为最高有效字节。存储器系统地址 0 的字节与数据线 7-0 相连。 在大端格式中,一个字中最低

15、地址的字节为该字的最高有效字节,而最高地址的字节为最低有效字节。存储器系统地址 0的字节与数据线 31-24 相连。,Cortex-M3 处理器有一个配置管脚 BIGEND,您能够使用它来选择小端格式或 BE-8 大端格式。该管脚在复位时被采样,结束复位后存储器格式不能修改。 注意: 对系统控制空间(SCS)的访问始终采用小端格式。 在非复位的状态下试图改变存储器格式的操作将被忽略。 PPB 空间只能为小端格式,BIGEND 的设置无效。,小端数据格式,大端数据格式,指令集,Cortex-M3 处理器不支持 ARM 指令。 Cortex-M3 处理器支持所有的 ARMv6 Thumb 指令,下

16、表 2-4 中列出的除外。,Cortex-M3 支持的 Thumb-2 指令,续上表(1),续上表(2),续上表(2),存储器映射,Cortex-M3 处理器只有一个单一固定的存储器映射。这一点极大地方便了软件在各种CM3单片机间的移植。 如各款CM3单片机的NVIC和MPU都在相同的位置布设寄存器,使得它们变得与具体器件无关。 虽然CM3定出的条条框框是粗线条的,但它依然允许芯片制造商灵活细腻地分配存储器空间,以制造出各具特色的单片机产品。,存储器组织,存储空间的一些位置用于调试组件等私有外设,这个地址段被称为“私有外设区”。私有外设区的组件包括: 闪存地址重载及断点单元(FPB) 数据观察点单元(DWT) 仪器化跟踪宏单元(ITM) 嵌入式跟踪宏单元(ETM) 跟踪端口接口单元(TPIU) lROM表,CM3的地址空间是4GB, 程序可以在代码区,内部SRAM区以及外部RAM区中执行。 但是因为指令总线与数据总线是分开的,最理想的是把程序放到代码区,从而使取指和数据访问各自使用自总线 具体4GB的粗线条划分如下图:,内部SRAM区的大小是51

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > PPT模板库 > PPT素材/模板

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号