Cortex-M3概览

简介

Cortex‐M3 是一个 32 位处理器内核。内部的数据路径是 32 位的,寄存器是 32 位的,存储器接口也是 32 位的。
CM3 采用了哈佛结构,拥有独立的指令总线和数据总线,可以让取指与数据访问并行不悖。
但是另一方面,指令总线和数据总线共享同一个存储器空间(一个统一的存储器系统)

寄存器组

Cortex‐M3 处理器拥有 R0‐R15 的寄存器组。其中 R13 作为堆栈指针 SP。SP 有两个,但在同一时刻只能有一个可以看到,这也就是所谓的“banked”寄存器。

R0-R12:通用寄存器

R0‐R12 都是 32 位通用寄存器,用于数据操作。但是注意:绝大多数 16 位 Thumb 指令只能访问 R0‐R7,而 32 位 Thumb‐2 指令可以访问所有寄存器。

Banked R13: 两个堆栈指针

Cortex‐M3 拥有两个堆栈指针,然而它们是 banked,因此任一时刻只能使用其中的一个。

  • 主堆栈指针(MSP):复位后缺省使用的堆栈指针,用于操作系统内核以及异常处理例程(包括中断服务例程)
  • 进程堆栈指针(PSP):由用户的应用程序代码使用。

堆栈指针的最低两位永远是 0,这意味着堆栈总是 4 字节对齐的。

R14:连接寄存器

当呼叫一个子程序时,由 R14 存储返回地址。
ARM 为了减少访问内存的次数,把返回地址直接存储在寄存器中。这样足以使很多只有 1 级子程序调用的代码无需访问内存(堆栈内存),从而提高了子程序调用的效率。如果多于 1 级,则需要把前一级的 R14 值压到堆栈里。

R15:程序计数寄存器

指向当前的程序地址。如果修改它的值,就能改变程序的执行流。

特殊功能寄存器

Cortex‐M3 还在内核水平上搭载了若干特殊功能寄存器,包括

  • 程序状态字寄存器组(PSRs)
  • 中断屏蔽寄存器组(PRIMASK, FAULTMASK, BASEPRI)
  • 控制寄存器(CONTROL)

操作模式和特权极别

Cortex‐M3支持两种操作模式:handler mode、线程模式。
用于区分普通应用程序代码和异常服务例程的带队吗(包括中断服务例程)
Cortex-M3的另一个侧面是特权的分级:特权级、用户级。提供一种存储器访问的保护机制。

在 CM3 运行主应用程序时(线程模式),既可以使用特权级,也可以使用用户级;但是异常服务例程必须在特权级下执行。复位后,处理器默认进入线程模式,特权极访问。在特权级下,程序可以访问所有范围的存储器(如果有 MPU,还要在 MPU 规定的禁地之外),并且可以执行所有指令。
在特权级下的程序可以为所欲为,可以切换到用户级。一旦进入用户级,再想回来就得走“法律程序”了——用户级的程序不能简简单单地试图改写 CONTROL 寄存器就回到特权级,它必须先“申诉”:执行一条系统调用指令(SVC)。这会触发 SVC 异常,然后由异常服务例程(通常是操作系统的一部分)接管,如果批准了进入,则异常服务例程修改 CONTROL 寄存器,才能在用户级的线程模式下重新进入特权级。

指令集

Cortex‐M3 只使用 Thumb‐2 指令集。这是个了不起的突破,因为它允许 32 位指令和 16 位指令水乳交融,代码密度与处理性能两手抓,两手都硬。而且虽然它很强大,却依然易于使用。

调试支持

Cortex‐M3 在内核水平上搭载了若干种调试相关的特性。最主要的就是程序执行控制,包括停机(halting)、单步执行(stepping)、指令断点、数据观察点、寄存器和存储器访问、性能速写(profiling)以及各种跟踪机制。

Cortex-M3概览相关推荐

  1. Cortex M3 NVIC与中断控制

    Cortex M3 NVIC与中断控制 宗旨:技术的学习是有限的,分享的精神是无限的. 一.NVIC概览 --嵌套中断向量表控制器 NVIC 的寄存器以存储器映射的方式来访问,除了包含控制寄存器和中断 ...

  2. Cortex M3内核架构

    CortexM3内核架构 宗旨:技术的学习是有限的,分享的精神是无限的. 1.ARMCortex-M3处理器 Cortex-M3处理器内核是单片机的中央处理单元( CPU). 完整的基于CM3的MCU ...

  3. Cortex M3 Bit-banding简介

    http://blog.csdn.net/shevsten/article/details/7676397 Cortex M3 Bit-banding简介 分类: ARM MCU2012-06-19 ...

  4. cortex m3 开源_开源增强现实耳机,Steam的125M有效帐户等

    cortex m3 开源 您好,开放游戏迷! 在本周的版本中,我们将了解Steam的1.25亿活跃帐户和Game Developers Conference,这是一个开源增强现实头戴设备,Linux游 ...

  5. cortex m3的操作模式和状态

    1.操作状态(operation state): debug state:处理器在调试器发起halt或匹配到断点时,会进入debug state并停止执行指令. thumb state:处理器正在运行 ...

  6. cortex m3/m4处理器的复位设计

    cortex m3/m4处理器在复位层面总体上可以划分为core和debug logic两部分.core部分包括处理器内核(core)以及NVIC,BUS Matrix,MPU的非debug部分.de ...

  7. Cortex、ARMv8、arm架构、ARM指令集、soc?Cortex A8、A9都是ARMv7a 架构;Cortex M3、M4是ARMv7m架构;前者是处理器(内核)后者是指令集的架构(架构)

    架构组成元素的指令集状态或者语法thumb指令集与arm指令集的区别例如thumb指令集是什么_thumb指令集与arm指令集的区别以及thumb-2的关系在下一文中介绍,本文暂时不讨论 有粉丝问我到 ...

  8. stm32 cortex M3 汇编指令集 英文详解

    这是cortex M3的汇编指令集详解,包含指令执行的周期,如下图示例,可以去Arm公司下载此文档,链接在此https://developer.arm.com/documentation/ddi033 ...

  9. Cortex‐M3的Faults异常究竟是什么?

    关注+星标公众号,不错过精彩内容 作者 | strongerHuang 微信公众号 | strongerHuang 有许多朋友在学习,或者开发STM32时都遇到过HardFault_Handler的情 ...

  10. ARM 架构、ARM7、ARM9、STM32、Cortex M3 M4 、51、AVR 有啥区别

    ARM架构.ARM7.ARM9.STM32.Cortex M3 M4.51.AVR之间有什么区别和联系? ARM架构:由英国ARM公司设计的一系列32位的RISC微处理器架构总称,现有ARMv1~AR ...

最新文章

  1. C 一样快,Ruby 般丝滑的 Crystal 发布 1.0 版本,你看好吗?
  2. 基于大数据的Uber数据实时监控(Prat 3:使用Vert.x的实时仪表盘)
  3. acegi,IBM的Acegi Security System(1)
  4. java gc原理_Java内存管理以及GC工作原理
  5. html文本滚动到底后自动回到顶部,JS 实现DIV 滚动至顶部后固定
  6. 利用权限禁止QQ的自动升级(QQUpdateCenter)
  7. unity, Gizmos.DrawMesh一个坑
  8. linux php7 替换,linux-shell-命令替换和变量替换
  9. HihoCoder-1174拓扑排序
  10. java翻译数字串并打印_如何使用Java翻译字符串?
  11. 2018辛苦一年了,程序员这样跟大boss谈2019加薪,谈薪杯具变喜剧
  12. 湖北省荆州市谷歌高清卫星地图下载
  13. python发送验证码通知短信(互亿无线)
  14. Vue开发工具vuejs-devtools超级详细安装教程以及常见问题解决
  15. 开源H5盲盒商城源码系统4.0-vue+TP5php框架开发开源网站
  16. bootstrap导航栏.nav与.navbar区别
  17. 实用的视频去水印方法
  18. 精品微信小程序源码丨基于微信小程序的美容预约+后台管理系统|前后分离VUE[包运行成功]
  19. 三角函数之角度与弧度
  20. 视频剪辑用计算机,剪辑视频用的电脑该如何配置 真的配置越高越好?

热门文章

  1. 记一次作为主讲人的培训经历
  2. 蓝桥杯嵌入式竞赛-数码管学习笔记(个人备份,以便日后查找)
  3. 【数学建模】模糊综合评价
  4. X-Frame-Options to sameorgin
  5. 我的/etc/motd 卡哇伊内~
  6. QTP .net插件
  7. 看过了不知道做过了才知道
  8. 使用Linux挂载NAS硬盘的RAID分区
  9. linux定时释放内存,定时释放Linux 内存 带释放记录
  10. Windows 使用 Alias,高效办公指南