Cortex-M3学习笔记(持续更新)

缩写含义

缩略代号 含义

ADK

AMBA设计套件

AHB AHB-AP AMBA      先进高性能总线AHB访问端口先进单片机总线架构
APB 先进外设总线
ARM ARM ARM架构参考手册
ASIC 行业领域专用集成电路
ATB 先进跟踪总线
BE8 字节不变式大端模式
CPI 每条指令的周期数
CPU 中央处理单元
DAP 调试访问端口
DSP 数字信号处理器/数字信号处理
DWT 数据观察点及跟踪
ETM 嵌入式跟踪宏单元
FPB 闪存地址重载及断点
FSR Fault状态寄存器
HTM CoreSight AHB跟踪宏单元
ICE 在线仿真器
IDE 集成开发环境
IRQ 中断请求(通常是指外部中断的请求)
ISA 指令系统架构
ISR 中断服务例程
ITM 仪器化跟踪宏单元
JTAG JTAG-DP LR 连结点测试行动组(一个关于测试和调试接口的标准)JTAG调试端口连接寄存器
LSB 最低有效位
LSU 加载/存储单元
MCU 微控制器单元(俗称单片机)
MMU 存储器管理单元
MPU 存储器保护单元
MSB 最高有效位
MSP 主堆栈指针
NMI 不可屏蔽中断
NVIC 嵌套向量中断控制器
OS 操作系统
PC 程序计数器
PSP 进程堆栈指针
PPB 私有外设总线

 第一章 初识CM3

1.1 初识CM3

CM3的招牌功夫包括:

• 性能强劲:在相同的主频下能做处理更多的任务。(低CPI)

• 功耗低: 延长了电池的寿命——这简直就是便携式设备的命门(如无线网络应用)。

• 实时性好:采用了很前卫甚至革命性的设计理念,使它能极速地响应中断,而且响应中断所

需的周期数是确定的。

• 代码密度得到很大改善:一方面力挺大型应用程序,另一方面为低成本设计而省吃俭用。

• 使用更方便:现在从8位/16位处理器转到32位处理器之风刮得越来越猛,更简单的编程模型

和更透彻的调试系统,为与时俱进的人们大大减负。

• 低成本的整体解决方案: 让32位系统比和8位/16位的还便宜,低端的Cortex-M3单片机甚至还

卖不到1美元。

• 遍地开花的优秀开发工具:免费的,便宜的,全能的,要什么有什么。

1.1.1从 Cortex-M3 处理器内核到基于 Cortex-M3 的 MCU
 

 1.1.2 ARM 及 ARM 架构的背景

ARM在1990年成立,当初的名字是“Advanced RISC Machines Ltd.,”,当时它是三家公司的合资——它们分别是苹果电脑, Acorn电脑公司,以及VLSI技术(公司)。

除了设计处理器, ARM也设计系统级IP和软件IP。为了挺它们, ARM开发了许多配套的基础开发工具、硬件以及软件产品。使用这些工具, 合作伙伴可以更加舒心地开发他们自己的产品。

1.2 ARM 的各种架构版本:

         款式A(ARMv7-A):需要运行复杂应用程序的“应用处理器”(这里的“应用”尤指大型应用程序,像办公软件,导航软件,网页浏览器等。这些软件的使用习惯和开发模式都很像PC上的软件, 但是基本上没有实时要求)。 支持大型嵌入式操作系统,比如Symbian(诺基亚智能手机用), Linux, 以及微软的Windows CE和智能手机操作系统Windows Mobile。这些应用需要劲爆的处理性能, 并且需要硬件MMU实现的完整而强大的虚拟内存机制, 还基本上会配有Java支持, 有时还要求一个安全程序执行环境。典型的产品包括高端手机和手持仪器,电子钱包以及金融事务处理机。

         款式R(ARMv7-R):硬实时且高性能的处理器。标的是高端实时市场(通用处理器能否胜任实时系统的控制, 常遭受质疑,并且在这方面的争论从没停止过。从定义的角度讲, “实时”就是指系统必须在给定的死线(deadline,亦称作“最后期限” )内做出响应。在一个以ARM处理器为核心的系统中,决定能否达到“实时”这个目标的,有很多因素,包括是否使用“实时操作系统”,中断延迟,存储器延时,以及当时处理器是否在运行更高优先级的中断服务例程。
)。那些高级的玩意,像高档轿车的组件,大型发电机控制器, 机器手臂控制器等, 它们使用的处理器不但要很好很强大,还要极其可靠,对事件的反应也要极其敏捷。

        款式M(ARMv7-M):认准了旧世代单片机的应用而量身定制。在这些应用中,尤其是对于实时控制系统,低成本、低功耗、极速中断反应以及高处理效率,都是至关重要的。Cortex系列是v7架构的第一次亮相,其中Cortex-M3就是按款式M设计的。

1.2.1处理器命名法

处理器名字 架构版本号 存储器管理特性 其它特性
ARM7TDMI v4T
ARM7TDMI-S v4T
ARM7EJ-S v5E DSP,Jazelle[译注3]
ARM920T v4T MMU
ARM922T v4T MMU
ARM926EJ-S v5E MMU DSP,Jazelle
ARM946E-S v5E MPU DSP
ARM966E-S v5E DSP
ARM968E-S v5E DMA,DSP
ARM966HS v5E MPU(可选) DSP
ARM1020E v5E MMU DSP
ARM1022E v5E MMU DSP
ARM1026EJ-S v5E MMU 或 MPU[译注2] DSP, Jazelle
ARM1136J(F)-S v6 MMU DSP, Jazelle
ARM1176JZ(F)-S v6 MMU+TrustZone DSP, Jazelle
ARM11 MPCore v6 MMU+多处理器缓存支持 DSP
ARM1156T2(F)-S v6 MPU DSP
Cortex-M3 v7-M MPU(可选) NVIC
Cortex-R4 v7-R MPU DSP
Cortex-R4F v7-R MPU DSP+浮点运算
Cortex-A8 v7-A MMU+TrustZone DSP, Jazelle

 1.3 指令集的发展

        由于历史原因(从ARM7TDMI开始), ARM处理器一直支持两种形式上相对独立的指令集, 它们分别是:

  • 32位的ARM指令集:对应处理器状态: ARM状态
  • 16位的Thumb指令集:对应处理器状态: Thumb状态

        可见,这两种指令集也对应了两种处理器执行状态。在程序的执行过程中,处理器可以动态地在两种执行状态之中切换。 实际上, Thumb指令集在功能上是ARM指令集的一个子集,但它能带来更高的代码密度,给目标代码减肥。这对于要勒紧裤腰带的应用还是很经济的。

1.4 Thumb-2 指令集体系体系结构( ISA)

        Thumb-2强大,易用,轻佻,高效。 Thumb-2是16位Thumb指令集的一个超集,在Thumb-2中, 16位指令首次与32位指令并存,结果在Thumb状态下可以做的事情一下子丰富了许多,同样工作需要的指令周期数也明显下降。

     Thumb-2指令集与Thumb指令集的关系

        Cortex-M3拒绝了32位ARM指令集,把自己的处理能力以身相许般地全托给Thumb-2指令集。 这可能有些令人意外,但事实上这却见证了Cortex-M3的用情专一: 在内核水平上,就已经为适应单片机和小内存器件而抉择、取舍过了。但她没有嫁错郎, 因为Thumb-2完全胜任在这个领域挑大梁。不过, 这也意味着Cortex-M3作为新生代处理器,不是向后兼容的。因此,为ARM7写的ARM汇编语言程序不能直接移植到CM3上来。不过, CM3支持绝大多数传统的Thumb指令,因此用Thumb指令写的汇编程序就从善如流了。

1.5 Cortex-M3 应用场景

 高性能+高代码密度+小硅片面积, 3璧合一,使得CM3大面积地成为理想的处理平台:低成本单片机: CM3与生俱来就适合做单片机,甚至简单到用于做玩具和小电器的单片机,都能使用CM3作为内核。这里本是8位机和16位机统治最牢固的腹地, 但是CM3更便宜,更高性能,更易使用,所以值得开发者们转到这个新生的ARM32位系统中来,哪怕花点时间重新学习

  • 汽车电子: CM3也是汽车电子的好俅。 CM3同时拥有非常高的性能和极低的中断延迟,打入实时领域的大门。 CM3处理器能支持多达240个外部中断, 内建了嵌套向量中断控制器,还可以选择配上一个存储器保护单元(MPU)。所有这些,使它用于高集成度低成本的汽车应用最合适不过了。
  • 数据通信: CM3的低成本+高效率,再加上Thumb-2的强大位操作指令s,使CM3非常理想地适合于很多数据通信应用,尤其是无线数传和Ad-Hoc网络, 如ZigBee和蓝牙等。
  • 工业控制:在工控场合,关键的要素在于简洁、快速响应以及可靠。再一次地, CM3处理器的中断处理能力,低中断延迟, 强化的故障处理能力(fault-handing,以后fault就不再译成中文了——译注) ,足以让它能昂首挺胸地踏入这片热土。
  • 消费类产品:以往,在许多消费产品中,都必须使用一块甚至好几块高性能的微处理器。你别看CM3只是个小处理器,它的高性能和MPU机制可是足以让复杂的软件跑起来的,同时提供健壮的存储器保护。

目前在市场上已经有了好多基于Cortex-M3内核的处理器产品,最便宜的还不到1美元,让ARM终于比很多8位机还便宜了。

第二章 CM3简介

2.1 简介

        Cortex-M3 是一个 32 位处理器内核。内部的数据路径是 32 位的,寄存器是 32 位的,存储器接口也是 32 位的。 CM3 采用了哈佛结构,拥有独立的指令总线和数据总线,可以让取指与数据访问并行不悖。这样一来数据访问不再占用指令总线,从而提升了性能。为实现这个特性, CM3 内部含有好几条总线接口,每条都为自己的应用场合优化过,并且它们可以并行工作。但是另一方面,指令总线和数据总线共享同一个存储器空间(一个统一的存储器系统)。换句话说,不是因为有两条总线,可寻址空间就变成 8GB 了。

        比较复杂的应用可能需要更多的存储系统功能,为此 CM3 提供一个可选的 MPU,而且在需要的情况下也可以使用外部的 cache。另外在 CM3 中, Both 小端模式和大端模式都是支持的。

        CM3 内部还附赠了好多调试组件,用于在硬件水平上支持调试操作,如指令断点,数据观察点等。另外,为支持更高级的调试,还有其它可选组件,包括指令跟踪和多种类型的调试接口。

 

2.2 寄存器组
 

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

2.2.1 R0-R12:通用寄存器

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

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值