再识Cortex-M3之概述

前言

在上周会见了Jason,基于无人机的市场和技术列出了三个方向的规划,基于这个规划再次踏上了深入Cortex-M3内核的之旅。这里学习的材料主要是中文的《Cortex-M3权威指南》,英文的《The Definitive Guide to Arm Cortex-M3 and Cortex-M4 Processors_c》。本来材料就一个英文的文档,但是看下去太困难了,所以就选择了一个中文的翻译版本。

概览

Cortex-M3处理器内核是单片机的中央处理单元(CPU),CM3内核只是MCU的一部分,最核心的一部分。
这里写图片描述

一、简介
Cortex-M3是一个32位处理器内核。内部的数据路径是32位,寄存器是32位,存储器接口也是32位的。CM3采用哈佛结构,用于独立的指令总线和数据总线,可以让取指与数据访问并行不悖。
CM3提供一个可选的MPU,而且在需要的情况下可以使用外部的cache,另外内部还附赠了好多调试组件,用于在硬件水平上支持调试操作,如指令断电,数据观察点等。还有一些可选组件,如指令跟踪和多种类型的调试接口。
这里写图片描述
二、寄存器组
Cortex-M3处理器拥有R0-R15的寄存器组,其中R13作为堆栈指针SP。注:SP有两个,但是在同一时刻只能有一个可以看到。
1、R0-R12:通用寄存器,用于数据操作,注:16位Thumb指令只能访问R0-R7,而32为Thumb-2指令可以访问所有寄存器。
2、Banked R13:两个堆栈指针。虽然CM3拥有两个堆栈指针,但是任一时刻只能使用其中的一个。
主堆栈指针(MSP):复位后缺省使用的堆栈指针,用于操作系统内核以及异常处理例程
进程堆栈指针(PSP):由用户的应用程序代码使用。
注:堆栈指针的最低两位永远是0,这意味着堆栈总是4字节对齐的。
3、其他寄存器R14和R15
R14:连接寄存器——当呼叫一个子程序时,由R14存储返回地址。
R15:程序计数寄存器——指向当前程序地址,如果修改它,就能改变程序执行流。
4、特殊寄存器:程序状态字寄存器组(PSRs)、中断屏蔽寄存器组(PRIMASK, FAULTMASK, BASEPRI)、控制寄存器(CONTROL)
其功能如下:

寄存器功能
xPSR记录ALU标志(0标志、进位标志、负标志、溢出标志),执行状态,以及当前正服务的中断号
PRIMASK除能所有的中断——除不可屏蔽中断(NMI)
FAULTMASK除能所有的fault——NMI依然不受影响,而且被除能的faults会“上访”
BASEPRI除能所有优先级不高于某个具体数值的中断
CONRTOL定义特权状态,并且决定使用哪一个堆栈指针

三、操作模式和特权模式
CM3处理器支持两种处理器的操作模式,还支持两级特权模式。
两种操作模式分别是:处理者模式(handler mode)和线程模式(thread mode)。引入两个模式的本意,是用于区别普通应用程序的代码和异常服务例程的代码——包括中断服务例程的代码。
Cortex-M3的另一个侧面则是特权的分级——特权级和用户级。这是为了提供一种存储器访问的保护机制,使得普通的用户程序不能意外,设置恶意地执行涉及到要害的操作。
四、内建的嵌套向量中断控制器
Cortex-M3在内核上还搭载了一颗中断控制器–嵌套向量中断控制器NVIC(Nested Vectored Interrupt Controller).功能:可嵌套中断支持、向量中断支持、动态优先级调整支持、中断延迟大大缩短、中断可屏蔽。
五、存储器映射
这里先不做说明,等到后面在详细
六、总线接口和MPU
Cortex-M3内部有若干个总线接口,以使CM3能同时取指和访问内存,它们是:指令存储区总线(I-Code和D-Code)、系统总线—用于访问内存和外设、私有外设总线—主要访问调试组件
MPU是可选存储器保护单元,对特权级访问和用户级访问分别施加不同的访问权限。
七、指令集
Cortex-M3只使用Thumb-2指令集。允许32位指令和16位指令水乳交融,代码密度与处理性能两手抓,两手都硬。
过去时,处理好32位的ARM状态和16位的Thumb状态很是麻烦,而且容易出错。采用Thumb-2消灭了状态切换的额外开销,节省了both执行时间和指令空间,同时大大减负了软件开发管理。

总结:Cortex的高性能:许多指令都是单周期,指令总线和数据总线飞开,无需两种状态的切换,有了比较先进的中断处理功能。支持”位寻址带“操作,而且支持在线调试。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 6
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值