初探Cortex-M3

Cortex-M3

初探CM3

ARM Cortex-M3处理器,Cortex系列的处女作。

招牌功夫:

  1. 性能强劲
  2. 功耗低
  3. 实时性好,能够极速地响应中断,而且响应中断所需的周期数是确定的
  4. 代码密度得到很大改善
  5. 使用更方便
  6. 低成本的整体解决方案
  7. 遍地开花的优秀开发工具

基于从ARMv6开始的新设计理念,ARM进一步扩展了它的CPU设计,ARMv7架构闪亮登场,内核架构首次从单一款式变成3种款式。

  • 款式A:设计用于高性能的“开放应用平台”
  • 款式R:用于高端的嵌入式系统,尤其是那些带有实时要求的——又要快又要准时
  • 款式M:用于深度嵌入的,单片机风格的系统中

到了架构7时代,ARM改革了一度使用的,冗长的、需要“解码”的数字命名法,转到另一种看起来比较整齐的命名法。比如,ARMv7的三个款式都已Cortex作为主名。这不仅更加澄清并且精装了所使用的ARM架构,也避免了新手对架构号和系列号的混淆。例如。ARM7TDMI并不是一款v7的产品,而是辉煌起点——v4T架构的产品。

指令系统的开发

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

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

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

    程序执行过程中,处理器可以动态地在两种执行状态之中切换。

Cortex-M3将自己的处理能力以身相许般地全托给Thumb-2指令集,这见证了Cortex-M3的用情专一。

这也意味着Cortex-M3不是向后兼容的。因此为ARM7写的ARM汇编语言不能直接移植到CM3上。

说了这么多,我们可以看看CM3处理器的舞台。

  • 汽车电子,CM3处理器支持多达240个外部中断。
  • 数据通信
  • 工业控制
  • 消费类产品

Cortex-M3是一个32位处理器内核。

采用哈佛结构,有独立的指令总线和数据总线。

但是,指令总线和数据总线共享同一个存储器空间(一个统一的存储器系统)

CM3中,小端模式和大端模式都是支持的。

寄存器组

CM3拥有R0-R15的寄存器组。R13作为堆栈指针SP。SP有两个,但是同一时刻只能看到一个。

  1. R0-R12

    1. 32位通用寄存器,用于数据操作
    2. 绝大多数16位Thumb指令只能访问R0-R7
    3. 32位Thumb-2指令可以访问所有寄存器
  2. Banked R13

    1. 两个堆栈指针,任意时刻只能使用其中一个
    2. 主堆栈指针(MSP):用于操作系统内核以及异常处理例程
    3. 进程堆栈指针(NSP):由用户的应用程序代码使用
    4. 堆栈指针的最低两位永远是0,这意味着堆栈总是4字节对齐的。
  3. R14

    1. 连接寄存器
    2. 呼叫一个子程序时,由R14存储返回地址
  4. R15

    1. 程序计数寄存器
    2. 指向当前的程序地址,如果修改它的值,就能改变程序的执行流(很多高级技巧就在这)
  5. 特殊功能寄存器

    CM3在内核水平上搭载了若干特殊功能寄存器

    包括

    • 程序状态字寄存器组(PSRs) :记录ALU标志,执行状态,以及当前正在服务的中断号
    • 中断屏蔽寄存器组(PRIMASK,FAULTMASK,BASEPRI)
    • 控制寄存器(CONTROL)

操作模式和特权级别

操作模式:

  • handle mode
  • thread mode

特权分级:

  • 特权级
  • 用户级

从用户级到特权级的唯一途径就是异常
在这里插入图片描述

总线接口

CM3内部由若干总线接口,以使CM3能同时取址和访内。

  • 指令存储区总线(两条)
    • I-code
    • D-code
  • 系统总线
    • 用于访问内存和外设
  • 私有外设总线
    • 负责一部分私有外设的访问

指令集

Cortex-M3只使用Thumb-2指令集的一个子集,允许32位指令和16位指令水乳交融,代码密度与处理性能两手抓

中断和异常

CM3的所有中断机制都有NVIC实现。。除了支持240条中断之外,NVIC还支持16-4-1=11个内部异常源,可以实现fault管理机制。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值