分解ARM Cortex-M系列优先级设置问题

发布者:轻松自在最新更新时间:2021-05-26 来源: eefocus关键字:ARM  优先级设置 手机看文章 扫描二维码
随时随地手机看文章

在我们嵌入式工程应用中,中断作为最常用的异步手段是必不可少的,而且在一个应用程序中,一个中断往往是不够用的,多个中断混合使用甚至多级中断嵌套也经常会使用到,而这样就涉及到一个中断优先级的问题。


本篇仍然是以我们最熟悉的Cortex-M系列为例,而M系列我就说说Freescale目前两大当家的——M0+和M4的优先级设置问题。我们知道ARM从Cortex-M系列开始引入了NVIC的概念(Nested Vectors Interrupts Controller),即嵌套向量中断控制器,以它为核心通过一张中断向量表来控制系统中断功能,NVIC可以提供以下几个功能:


1)可嵌套中断支持;


2)向量中断支持;


3)动态优先级调整支持;


4)中断可屏蔽。


抛开其他不谈,这里我们只说说中断优先级的问题。我们知道NVIC的核心工作原理即是对一张中断向量表的维护上,其中M4最多支持240+16个中断向量,M0+则最多支持32+16个中断向量,而这些中断向量默认的优先级则是向量号越小的优先级越高,即从小到大,优先级是递减的。但是我们肯定不会满足于默认的状态(人往往不满足于约束,换句俗话说就是不喜欢按套路出牌,呵呵),而NVIC则恰恰提供了这种灵活性,即支持动态优先级调整,无论是M0+还是M4除了3个中断向量之外(复位、NMI和HardFault,他们的中断优先级为负数,它们3个的优先级是最高的且不可更改),其他中断向量都是可以动态调整的。


不过需要注意的是,中断向量表的前16个为内核级中断,之后的为外部中断,而内核级中断和外部中断的优先级则是由两套不同的寄存器组来控制的,其中内核级中断由SCB_SHPRx寄存器来控制(M0+为SCB_SHPR[2:3],M4为SCB_SHPR[1:3]),外部中断则由NVIC_IPRx来控制(M0+为NVIC_IPR[0:7],M4为NVIC_IPR[0:59]),如下图所示:


M0+:




M4:





其中M4所支持的动态优先级范围为0~15(8位中只有高四位[7:4]才有效),而M0+所支持的动态优先级范围则为0~3(8位中只有高两位[7:6]才有效),而且秉承着号越小优先级越高的原则(0最高,15或3为最小),同时也间接解释了为什么复位(-3)、NMI(-2)和HardFault(-1)优先级最高的原因,很简单,人家都是负的了,谁还能比他们高,呵呵,而且这三位中复位优先级最高,NMI其次,HardFault最低(这个最低仅限于这三者)。

关键字:ARM  优先级设置 引用地址:分解ARM Cortex-M系列优先级设置问题

上一篇:【ARM9嵌入式系统硬件设计指南】产品电源设计过程
下一篇:Zynq7000的柔性直流输电桥臂控制器设计

推荐阅读最新更新时间:2024-11-10 12:30

利用ARM和Linux实现智能机器人的控制
引 言 现有智能机器人用直流电机作为驱动轮时一般都是用单片机或者高速的DSP等进行控制,智能机器人之所以叫智能机器人,这是因为它有相当发达的“大脑”。在脑中起作用的是中央计算机,这种计算机跟操作它的人有直接的联系。最主要的是,这样的计算机可以进行按目的安排的动作。正因为这样,我们才说这种机器人才是真正的机器人,尽管它们的外表可能有所不同。而且同一机器人往往需用多个CPU来实现各自的功能,但随着对机器人的智能化要求越来越高,需要一种新的控制器(使用一个处理器)来满足机器人的各种行为要求,例如视频采集、无线通信。本文介绍的利用ARM实现的智能机器人平台,为智能机器人的开发提供了一个新方法。Linux的引入使其他智能模块都以设备的形式存
[单片机]
利用<font color='red'>ARM</font>和Linux实现智能机器人的控制
Arm Cortex-A76的微架构改进了什么?
近日,在Arm Tech Day 2019上,Arm计算产品事业部高级技术副总裁及研究员Peter Greenhalgh详细讲述了最新推出的Cortex-A73处理器。Peter表示,采用该方案的笔记本性能水平相当于i5,实现了中档笔记本的性能,同时只需要移动设备水平的功耗。 此前,有媒体报道,A76由Arm Austin团队设计,和A57/A72一脉相承。作为比较,A73/A75是Sophia团队,A53/A55是Cambridge团队。 Peter表示:“Cortex-A76采用了全新的微架构,一方面突破了理论极限的性能瓶颈,同时利用更小的面积和功耗实现了更高的性能。” 该产品是目前Arm处理器家族的最顶级产品,因此所面向的市
[手机便携]
<font color='red'>Arm</font> Cortex-A76的微架构改进了什么?
Syntiant如何利用孵化器和Arm生态系统进行AI开发
本文编译自Arm官方博客,作者 Syntiant公司硬件副总裁Dave Garrett Syntiant成立于2017年,联合创始人兼首席执行官Kurt Busch经历了一个激动人心的时刻。当他观看孩子用iPad聊天时,他看到了一个商机,就是将人工智能(AI)和机器学习(ML)创新带入语音激活系统,并改变它们的交互方式。 截至2021年1月,Syntiant已向市场交付了两个AI芯片,出货量超过1000万个,其技术已在Amazon Alexa上获得认证,并在CES上获得殊荣。不到四年,该公司就从包括亚马逊,应用材料,博世,英特尔投资,微软和摩托罗拉在内的全球一些最大的投资者和公司筹集了超过6500万美元的风险投资。 这
[嵌入式]
S3C2440A之ARM学习的所有的问题
正文: 问题1:关于Nor/Nand启动判断的问题: 视频讲解是用写0到 ,取出还是0则Nand启动,视频例程: mov r1, 0 ldr r0, str r1, ldr r2, cmp r1, r2 //如果r1 != r2, nor启动 ldr sp, =0x40000000 + 4096 //如果r1 == r2, nand启动 moveq sp, #4096 streq r0, 如果:拨码开关为Nor启动,Norflash 地址中数据原本 即为0,Nor启动不能写入,但cmp r1, r2时,r1==r2依然 成立,系统是否会判断为Nand启动?有没有影响?怎么判断? 答:1 【传说】hceng(13
[单片机]
S3C2440A之<font color='red'>ARM</font>学习的所有的问题
浅析arm的异常、中断和arm工作模式的联系
说到异常向量,会让人联想到中断向量。其实,中断是属于异常的子集的,也就是说中断其实是异常其中的一种。 回到异常向量,他其实是一张表格,每个格子里存放的是一个地址,或者是一个跳转命令,不管是哪个,其目的都是让PC跳转到真正处理异常的代码的地方。 以下是arm的异常向量表: 图1 初步介绍完异常向量,就来对比下ARM的arm的7种工作模式: 图2 User : 非特权模式,大部分任务执行在这种模式 FIQ : 当一个高优先级(fast) 中断产生时将会进入这种模式 IRQ : 当一个低优先级(normal) 中断产生时将会进入这种模式 Supervisor :当复位或软中断指令执行时将会进入这种模式 Abort
[单片机]
浅析<font color='red'>arm</font>的异常、中断和<font color='red'>arm</font>工作模式的联系
嵌入式arm学习总结(六)--S3C2440体系架构学习总结
平台介绍:mini2440开发板,S3c2440主芯片 硬件信息 1.130个IO口,289个引脚17*17,BGA封装 2.电源 内核:1.25v 内存电源:1.8V GPIO:3.3v 3.芯片内部有4K字节的SRAM空间0x40000000-0x40001000; 4.s3c2440外部 主频:12M晶振 内部RTC晶振(时钟,万年历)32.768KHZ 5.复位电路 MAX811:上电复位。按键复位,电压低于一定值复位 6.存储芯片 K9F1216D0A为NANDflash Am29LV160DB为NORFLASH 均用来存储程序和数据 HY57V561620--SDRAM 内存 ARM有两种启动方式:一种为N
[单片机]
揭秘iMac Pro上那颗神秘芯片:可真不简单
   iMac  Pro来了,经过试用,人们给了它各种各样的评价,但总结起来其实也就是四个字 —— 性能怪兽。这点其实没有疑问,毕竟 iMac  Pro这一上来就是冲着这一点去的。跑分成绩,中端级的 iMac  Pro比高端的Mac Pro还要快45%,可以想见它有多可怕。下面就随嵌入式小编一起来了解一下相关内容吧。   不过老实说,iMac Pro除了那可怕的硬件性能外,真正值得我们去津津乐道的倒反不多。说来说去,配置规格就是高嘛,用来完成专业任务就是更快更顺手嘛。毕竟,iMac Pro可是带着“Pro”的,要多挖出点什么具体的感想,那还得专精某个方向才行。   所以我们倒不如先来聊一聊iMac Pro的那颗T2芯片。我们最早
[嵌入式]
ARM——栈
1 栈:栈是一种具有后进先出的数据组织方式,也就是说后存放的先取出,先存放的后取出。栈底是第一个进栈的数据所处位置,栈顶是最后一个数据进栈所处的位置。 数据组织:有链表、图、树等等(就数据结构那些东东) 2 满/空栈 根据SP指针指向的位置,栈可以分为满栈和空栈。 满栈:当堆栈指针总是指向最后压入堆栈的数据 空栈:当堆栈指针总是指向下一个将要放入数据的空位置   ARM采用满栈 3 升/降栈 根据SP指针移动的方向,栈可以分为升栈和降栈 升栈:随着数据的入栈,SP指针从低地址- 高地址移动 降栈:随着数据的入栈,SP指针从高地址- 低地址移动 ARM采用降栈 注:ARM是满降栈 4 栈帧 上图描
[单片机]
<font color='red'>ARM</font>——栈
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
随便看看

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved