ARMCortexM体系结构.ppt

  1. 1、本文档共42页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
ARMCortexM体系结构.ppt

2.1 ARM Cortex-M3编程模型 2.2 ARM Cortex-M3寄存器组织 2.3 ARM Cortex-M3存储器 2.4 ARM Cortex-M3异常处理 2.5 NVIC与中断控制 处理器的“体系结构”指从程序员的角度观察到的处理器组织方式,所以又称为处理器的编程模型。其主要内容为处理器内的寄存器组织、对存储器的寻址方式、指令系统等。 ARM Cortex-M3处理器内核是ARMv7-M架构,建立在一个高性能哈佛结构的三级流水线基础上,可满足事件驱动的应用需求。 通过广泛采用时钟选通等技术,改进了每个时钟周期的性能,包括单周期的32x32乘法和硬件除法,获得了优异的能效比。 通过一个基于堆栈的异常模式的实现,显著地缩小了内核的物理尺寸。 Cortex-M3内核实现了Thumb-2指令集——传统Thumb指令集的一个超集,既获得了传统32位代码的性能,又具有16位的高代码密度。 ① Thumb状态: 处理器执行16位的、半字对齐的Thumb指令或者32位的、整字对齐的Thumb-2指令。Thumb状态是Cortex-M3处理器正常的执行状态。 ② 调试状态:处理器停机调试时进入该状态。 与ARM7处理器不同,Cortex-M3处理器不支持ARM指令的执行,也即没有ARM状态。 Cortex-M3处理器工作模式 Cortex-M3支持两种工作模式:线程模式(thread mode)和处理模式(handler mode)。 线程模式:在复位时,Cortex-M3处理器进入线程模式,异常返回时也会进入该模式,特权和用户(非特权)代码能够在线程模式下运行,大部分任务执行在这种模式 正常程序执行的模式 处理模式:出现异常时,Cortex-M3处理器进入处理模式,在处理模式中,所有代码都是特权访问的。 知识扩展:前后台系统 早期的嵌入式系统中没有操作系统的概念,通常把嵌入式程序分成两部分,即前台程序和后台程序。 应用程序是一个无限的循环,循环中调用相应的函数完成相应的操作,这部分可以看成后台行为。 前台程序通过中断来处理事件。 后台程序也叫任务级程序,前台程序也叫事件处理级程序。对于实时性要求特别严格的操作通常由中断来完成。 由于这类系统结构简单,几乎不需要RAM/ROM的额外开销,因而在简单的嵌入式应用被广泛使用。 Cortex-M3的线程模式和处理模式在前后台系统中,后台程序运行在线程模式下,前台程序运行在处理模式下。 Cortex-M3处理器特权访问 Cortex-M3的代码执行进行了特权分级,可以分为特权执行或非特权执行。非特权执行时对有些资源的访问受到限制或不允许访问。特权执行可以访问所有资源。 特权分级可以提供一种存储器访问的保护机制,避免普通的用户程序代码因意外而进行对存储器关键区域的操作。 处理模式始终特权访问,线程模式可以是特权或非特权访问。 系统复位之后,处理器默认进入线程模式,特权级别为特权访问,此时的程序可以访问所有范围的存储器,并且可以执行所有指令。应用程序可通过MSR指令清零CONTROL寄存器的第0位,配置为用户(非特权)访问。 当线程模式的程序从特权访问变为用户访问后,本身便不能回到特权访问。只有通过执行一条系统调用指令SVC,触发SVC异常才能使用户访问的线程模式程序重新进入特权访问。 Cortex-M3处理器拥有16个32位的通用寄存器R0-R15以及一些特殊功能寄存器。 绝大多数的16位指令只能使用R0-R7(低组寄存器),而32位的Thumb-2指令则可以访问所有通用寄存器。 特殊功能寄存器有预定义的功能,包括状态字寄存器xPSR、控制寄存器CONTROL、中断屏蔽寄存器PRIMASK、FAULTMASK、BASEPRI等,它们必须通过专用的指令来访问。 堆栈指针SP (r13) 寄存器R13用作堆栈指针(SP)。它自动与字即4字节边界对齐。 在Cortex-M3处理器内核中共有两个堆栈指针,于是也就支持两个堆栈。当引用R13(或写作SP)时,引用到的是当前正在使用的那一个,另一个必须用特殊的指令来访问。这两个堆栈指针分别是: 主堆栈指针(MSP),或写作SP_main。这是缺省的堆栈指针,它由操作系统内核、异常服务例程以及所有需要特权访问的应用程序代码来使用。 进程堆栈指针(PSP),或写作SP_process。用于常规的应用程序代码(不处于异常服用例程中时)。 处理模式始终使用SP_main,而线程模式可配置为SP_main 或SP_process。R13是堆栈指针。 要注意的是,并不是每个程序都要用齐两个堆栈指针。简单的应用程序只使用MSP就可以了。堆栈指针用于访问堆栈,并且PUSH指令和POP指令默认使用SP。 链接

文档评论(0)

000 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档