Cortex-M3/M4架构——基本介绍

  • 1. 概述
  • 2.Cortex-M架构
  • 3. Cortex-M3/M4-架构组成部分
    • 3.1 编程模型
      • 3.1.1 操作模式状态
      • 3.1.2 寄存器
    • 3.2 存储器系统
    • 3.3 异常和中断
    • 3.4 复位
  • 参考文献

1. 概述

什么是架构?百度百科说软件架构是系统的草图,用来指导软件系统的设计。
我理解,就像公司组织架构一样,根据需求目标,确定整体框架,框架里的每一部分都有各自的职能,部分之间有联系。架构规定了,构成部分,每个部分该做什么事,部分之间如何沟通。
Cortex-M3/M4处理器都是基于ARM-v7架构。

2.Cortex-M架构

Cortex-M架构(架构有的称为体系结构)包括ARM-v6,ARM-v7,ARM-v8和ARM-v8.1,处理器对应的架构如下表。

对比几种架构如下:

Cortex-M架构更为详细的信息参照官网:
https://developer.arm.com/architectures/cpu-architecture/m-profile

3. Cortex-M3/M4-架构组成部分

架构将从几个方面进行介绍,包括编程模型,存储器,中断,复位等方面进行,相当于针对组织架构的各部分分别介绍。

3.1 编程模型

编程模型,我理解是一个编程的模板。编程模型将从操作模式状态和寄存器两个方面介绍。

3.1.1 操作模式状态

Cortex-M3/M4处理器有两种操作状态和模式。
1.操作状态
包括调试状态和Thumb状态。
调试状态:处理器被暂停,进入此状态,停止指令执行。
Thumb状态:执行Thumb指令,进入此状态。
Cortex-M处理器在启动后默认处于特权线程模式以及Thumb状态。

2. 操作模式
操作模式有两种:处理模式和线程模式。
线程模式:执行普通代码
处理模式:主要执行中断服务程序等异常处理。处理模式下,具有特权访问等级(特权访问等级可访问处理器的所有资源,非特权访问等级某些状态不能访问)。

3.1.2 寄存器

这里的寄存器指的是处理器内核里的寄存器,用来对数据进行处理和控制。Cortex-M3/M4处理器的寄存器由寄存器组特殊寄存器浮点寄存器组成。
1)寄存器组
寄存器组有13个32位通用寄存器,3个特殊寄存器,总共16个寄存器。

栈指针:R13,通过PUSH/POP实现栈存储的访问。栈指针包括两种:主栈指针(MSP)和进程栈指针(PSP),由CONTROL寄存器决定。
MSP:默认的栈指针。用于处理模式。
PSP:用于线程模式。
链接寄存器:R14,用于调用函数或子程序时保存返回地址
程序计数器:可读可写。
2)特殊寄存器
包括程序状态寄存器、中断/异常屏蔽寄存器、控制寄存器。

程序状态寄存器包括以下三个寄存器

  • 应用状态寄存器(APSR)
  • 执行状态寄存器(EPSR)
  • 中断状态寄存器 (IPSR)

下图是以上状态寄存器位数的定义。


中断/异常屏蔽寄存器:

  • PRIMASK: 1位宽的中断屏蔽寄存器,异常优先级最高,为0。
  • FAULTMASK:故障屏蔽寄存器,异常优先级为1。
  • BASEPRI:根据优先级屏蔽。

CONTROL寄存器决定了

  • 栈指针的选择
  • 线程模式的访问,是特权还是非特权。

3)浮点寄存器
主要是指Cortex-M4浮点寄存器。主要包括浮点单元寄存器组和浮点状态寄存器。

3.2 存储器系统

特点如下:

  • 4GB寻址空间(32位)
  • 被定义的存储器映射
  • 支持大小端存储
  • 存储器保护单元(MPU)
  • 支持非对齐传输
  • 写缓冲

关于存储器映射,为了方便Cortex-M不同系列的移植和重用
4GB的存储空间被划分为以下几种,如下图所示:

  • 代码访问
  • 数据访问
  • 外设
  • 内部控制和调试部件

3.3 异常和中断

打断正常执行程序的事件就是异常,中断是异常的一种。异常源有多个,如下所示:

NVIC:Nested vectoredinterrupt controller嵌套向量中断控制器,作用是管理异常,比较中断优先级,确定异常入口以及屏蔽中断等。
下图是异常类型总结表

3.4 复位

复位类型有三种:

  • 上电复位。复位微控制器的所有
  • 系统复位。只复位处理器和外设,调试部分不复位
  • 处理器复位。
    复位流程如下:

    先读主栈指针2个字,再读复位向量的地址。

参考文献

《ARM Cortex-M3与Cortex-M4权威指南》
《Arm Cortex-M Processor Comparison Table》

Cortex-M3/M4(2)-架构相关推荐

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

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

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

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

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

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

  4. ARM 架构、ARM7、ARM9、STM32、Cortex M3 M4 、51、AVR 之间有什么区别和联系?

    本文转自嵌入式资讯精选公众号,特别鸣谢, 编者按:初学习ARM单片机的同学们可能会对ARM的架构定义并不是很明确,形形色色的名词背后到底代表什么含义呢?请听听这位嵌入式工程师的经验总结. ARM架构: ...

  5. Cortex M3/M4 学习摘要(二)

    ########################################## 处理器类型 使用RICS 3级流水选,且拥有哈佛架构 4GB寻址空间 加载存储架构 ############### ...

  6. Cortex M3/M4 学习摘要(一)

    #####################################################  微控制器和处理器: 在一个基本的微处理器中,处理器只占了很小一部分,一般被内存.时钟发生器 ...

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

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

  8. Cortex M3内核架构

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

  9. Cortex M3 NVIC与中断控制

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

  10. Cortex M3 Bit-banding简介

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

最新文章

  1. 嵩天python笔记_第一篇python笔记
  2. lt;备份gt;10月18日 DNS
  3. scala学习之数组操作
  4. python shape函数_Perlin噪声和Python的ctypes
  5. 漫画:什么是拜占庭将军问题
  6. 多态计算器的开发 c# 1614095334
  7. Java核心编程总结(二、抽象类与接口),linux音频驱动架构
  8. 让Sublime Text 2支持GBK
  9. 时间序列分析的模型应用 – 股价预测
  10. 朋友:趣头条上市了!我:谁?
  11. 某程序员入职后,发现领导是前公司的下属
  12. [连载2]互联网究竟是什么怪物…他们不愿公开真正秘密...
  13. 如果们正预测基本面子
  14. AutoCAD Civil 3D 介绍
  15. 软考高项记忆小妙招-项目章程
  16. 2020电赛省赛实战(二)ADS1292心电检测仪
  17. 探店通系统,短视频矩阵源码,抖音矩阵系统,look
  18. 保险基本概念测试人员须知(一)
  19. plotly绘制简单图形<7>--用plotly画图参数设置
  20. vue-cli模拟后台数据交互

热门文章

  1. Git 处理tag和branch的命令
  2. C语言循环结构中break,C语言-循环结构及break、continue
  3. 盘点科技公司十大裁员风波:诺基亚累计裁员近半(转)
  4. 新华都总裁兼CEO给唐骏留言
  5. Android 设置属性动画AnimatorSet设置pause无效问题
  6. 图像训练时的数据处理
  7. 不明所以然,就被KO了,内部人员道出真相,原因竟在这!
  8. spring之AOP(面向切面编程)和五大通知(前置通知、后置通知、异常通知、环绕通知、过滤通知)
  9. 全志v40 开发板_全志
  10. 语音识别,语义理解一站式解决之智能照相机(人脸识别,olami)