0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

详细剖析Cortex-M3处理器

5RJg_mcuworld 2018-01-15 11:07 次阅读

工作模式

线程模式(Thread mode):处理器复位或异常退出时为此模式。此模式下的代码可以是特权代码也可以是用户代码,通过CONTROL[0]控制。

处理模式(Handler mode):出现异常(包括中断)时进入此模式,此模式下所有代码为特权访问。

代码权限

特权访问:对处理器资源拥有完全访问限权;处理器复位后进入此访问模式;清零 CONTROL[0]进入用户模式。

用户访问:禁止访问多数系统寄存器。只能通过进入异常(中断)来返回特权模式。进入异常前是用户级访问,则退出异常时自动回到用户及,除非在异常中修改CONTROL[0]位。

工作状态

Thumb状态(正常执行指令状态)和调试状态。

寄存器

r0-r12:通用寄存器,其中r8-r12只能被32位指令访问。

r13(SP):堆栈指针;线程模式时可以在线程堆栈和主堆栈之间切换,但处理模式只使用主堆栈。两个堆栈同一时刻只有一个可见,进入、退出异常时自动切换堆栈。

r14(LR):链接寄存器,保存子程序或异常的返回地址(要实现嵌套,必须入栈)。

r15(PC):程序计数器。

xPSR:特殊用途的程序状态寄存器。

异常

进入异常步骤:

1.处理器在当前堆栈上把xPSR、PC、LR、r12、r3~r0八个寄存器自动依次入栈。

2.读取向量表(如果是复位中断,更新SP值)。

3.根据向量表更新PC值。

4.加载新PC处的指令(2、3、4步与1步同时进行)。

5.更新LR为EXC_RETURN(EXC_RETURN表示退出异常后返回的模式及使用的堆栈)。

退出异常步骤

1.根据EXC_RETURN指示的堆栈,弹出进入中断时被压栈的8个寄存器。

2.从刚出栈的IPSR寄存器[8:0]位检测恢复到那个异常(此时为嵌套中断中),若为0则恢复到线程模式。

3.根据EXC_RETURN,选择使用相应SP。

末尾连锁(Tail-chaining):当前正在执行中断,又有一个中断到来且这个中断优先级比正在执行的中断优先级低(如果有其他被压栈的低优先级中断则要比这些中断优先级高),这个中断暂时被挂起,等到当前中断执行完后不再执行堆栈操作,而直接进入挂起的中断。

迟来:前一个中断还没有进入执行阶段(但处理器状态已经保存),后面来了一个高优先级中,则前一个中断被抢占,后来的高优先级中断不需要再保存寄存器状态。

中断

Cortex-M3中有两个优先级的概念——抢占式优先级和响应优先级,有人把响应优先级称作'亚优先级'或'副优先级',每个中断源都需要被指定这两种优先级。

具有高抢占式优先级的中断可以在具有低抢占式优先级的中断处理过程中被响应,即中断嵌套,或者说高抢占式优先级的中断可以嵌套低抢占式优先级的中断。

当两个中断源的抢占式优先级相同时,这两个中断将没有嵌套关系,当一个中断到来后,如果正在处理另一个中断,这个后到来的中断就要等到前一个中断处理完之后才能被处理。如果这两个中断同时到达,则中断控制器根据他们的响应优先级高低来决定先处理哪一个;如果他们的抢占式优先级和响应优先级都相等,则根据他们在中断表中的排位顺序决定先处理哪一个。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 寄存器
    +关注

    关注

    31

    文章

    5305

    浏览量

    119909
  • 中断
    +关注

    关注

    5

    文章

    895

    浏览量

    41365
  • Cortex-M3
    +关注

    关注

    9

    文章

    269

    浏览量

    59413

原文标题:Cortex-M3的一些关键概念!

文章出处:【微信号:mcuworld,微信公众号:嵌入式资讯精选】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    Cortex-M3处理器是什么

    STM32单片机STM32的核心Cortex-M3处理器是一个标准化的微控制结构,希望思考一下,何为标准化?简言之,Cortex-M3处理器
    发表于 07-16 06:33

    STM32的核心Cortex-M3处理器是什么

    STM32的核心Cortex-M3处理器是一个标准化的微控制结构,希望思考一下,何为标准化?简言之,Cortex-M3处理器拥有32位CP
    发表于 08-02 08:52

    Cortex-M3处理器中断与FreeRTOS中断优先级配置

    置顶/星标公众号,不错过每一条消息!很多朋友对中断的一些知识还是不了解,今天就写点关于Cortex-M3处理器中断相关,以及FreeRTOS中断优先级配置的内容。...
    发表于 08-13 06:16

    STM32的核心Cortex-M3处理器简介

    Cortex-M3处理器是什么?Cortex-M3的CPU支持哪两种运行模式?
    发表于 09-23 09:15

    Cortex-M3处理器中的嵌套向量中断控制的特性是什么?

    中断和异常的作用是什么?Cortex-M3处理器中的嵌套向量中断控制的特性是什么?
    发表于 11-05 07:25

    STM32的核心Cortex-M3处理器的标准化是什么意思

    STM32的核心Cortex-M3处理器是一个标准化的微控制结构,希望思考一下,何为标准化?简言之,Cortex-M3处理器拥有32位CP
    发表于 12-06 07:53

    基于ARM Cortex-M3内核的STM32处理器有何性能

    一、背景如果你正为项目的处理器而进行艰难的选择:一方面抱怨16位单片机有限的指令和性能,另一方面又抱怨32位处理器的高成本和高功耗。那么,基于 ARM Cortex-M3内核的STM32系列
    发表于 12-06 07:20

    制造一种基于Cortex-M0和Cortex-M3处理器的SoC

    DesignStartDesignStart计划可以让用户无需预付授权费用,就可以开始设计、制造基于Cortex-M0和Cortex-M3处理器的SoC,当产品成功量产出货之后再支付版税。ARM
    发表于 07-27 16:58

    Cortex-M3权威指南介绍

    Cortex-M3处理器介绍基本的硬件构架和指令系统待
    发表于 11-23 11:01 0次下载

    高性能低成本Cortex-M3处理器

    高性能低成本Cortex-M3处理器,参考下。
    发表于 01-22 14:23 27次下载

    基于ARM Cortex-M3处理器的电源设计及应用

    今天我们就来介绍一个基于Cortex-M3处理器的电源系统设计——GD32F1x0,希望对大家有所帮助。
    发表于 08-28 11:20 14次下载
    基于ARM <b class='flag-5'>Cortex-M3</b><b class='flag-5'>处理器</b>的电源设计及应用

    STM32系列ARM Cortex-M3处理器微控制原理与实践

    STM32系列ARM Cortex-M3处理器微控制原理与实践
    发表于 09-22 16:34 24次下载
    STM32系列ARM <b class='flag-5'>Cortex-M3</b><b class='flag-5'>处理器</b>微控制<b class='flag-5'>器</b>原理与实践

    基于Cortex-M3处理器的开关磁阻电机控制设计

    基于Cortex-M3处理器的开关磁阻电机控制设计
    发表于 09-29 09:15 9次下载
    基于<b class='flag-5'>Cortex-M3</b><b class='flag-5'>处理器</b>的开关磁阻电机控制<b class='flag-5'>器</b>设计

    STM32系列Cortex-M3处理器编程手册免费下载

    本编程手册为应用程序和系统级软件开发人员提供信息。它对STM32F10xxx/20xxx/21xxx/l1xxx Cortex-M3处理器编程模型、指令集和核心外设进行了完整的描述
    发表于 09-12 08:00 38次下载
    STM32系列<b class='flag-5'>Cortex-M3</b><b class='flag-5'>处理器</b>编程手册免费下载

    Cortex-M3处理器内核与基于Cortex-M3的MCU关系

    Cortex-M3Cortex-M3简述Cortex-M3是ARM公司设计的ARMv7架构下Cortex系列的首秀,其目的是为了让32位处理器加入单片机市场,
    发表于 11-05 18:35 8次下载
    <b class='flag-5'>Cortex-M3</b><b class='flag-5'>处理器</b>内核与基于<b class='flag-5'>Cortex-M3</b>的MCU关系