news 2026/5/1 6:20:05

ARM 架构中的 PRIMASK、FAULTMAST、BASEPRI 寄存器

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
ARM 架构中的 PRIMASK、FAULTMAST、BASEPRI 寄存器

ARM 架构中的 PRIMASK、FAULTMAST、BASEPRI 寄存器

这三个是ARM Cortex-M 系列处理器中的关键系统异常屏蔽寄存器,用于控制中断和异常的行为。下面分别解释:


1. PRIMASK(优先级屏蔽寄存器)

  • 作用:临时屏蔽所有可配置优先级的中断(即除NMI、HardFault外的异常)。
  • 位宽:1位(只有最低位有效)。
    • 0:允许所有中断(默认)。
    • 1:屏蔽所有可屏蔽中断(进入临界区)。
  • 使用场景
    • 保护临界代码,防止被中断打断。
    • 通常用__disable_irq()__enable_irq()CMSIS函数操作。
  • 注意:不影响NMI、HardFault等不可屏蔽异常。

2. FAULTMASK(故障屏蔽寄存器)

  • 作用:屏蔽除NMI外的所有异常(包括可配置优先级的中断和HardFault)。
  • 位宽:1位(只有最低位有效)。
    • 0:允许所有异常(默认)。
    • 1:屏蔽所有异常(仅NMI能响应)。
  • 使用场景
    • 用于故障处理程序(如HardFault)中,防止其他异常干扰。
    • 可以屏蔽HardFault自身,使当前故障升级为NMI。
  • 注意:通常只有操作系统或错误恢复代码使用。

3. BASEPRI(基础优先级寄存器)

  • 作用:屏蔽优先级低于或等于某个阈值的中断。
  • 位宽:取决于具体Cortex-M内核(如M3/M4为8位,支持256级优先级)。
    • 0:关闭屏蔽功能(默认)。
    • 非0:屏蔽所有优先级值大于等于该数值的中断(数值越大,逻辑优先级越低)。
  • 使用场景
    • 选择性屏蔽低优先级中断,允许高优先级中断响应。
    • 更精细的临界区保护。
  • 示例
    • 设置BASEPRI = 0x20,则屏蔽优先级 ≥ 0x20(数字越大优先级越低)的中断。
    • 允许优先级更高的中断(数值 < 0x20)继续响应。

三者的比较

寄存器屏蔽对象是否屏蔽NMI/HardFault粒度
PRIMASK所有可屏蔽中断全有或全无
FAULTMASK所有中断 + HardFault仅NMI可响应全有或全无
BASEPRI优先级低于等于某阈值的中断优先级阈值

操作方式(以Cortex-M为例)

汇编指令:

CPSID I ; 置位PRIMASK(关中断) CPSIE I ; 清零PRIMASK(开中断) CPSID F ; 置位FAULTMASK CPSIE F ; 清零FAULTMASK MSR BASEPRI, r0 ; 设置BASEPRI MRS r0, BASEPRI ; 读取BASEPRI

CMSIS函数(C语言):

void__disable_irq(void);// 置位 PRIMASKvoid__enable_irq(void);// 清零 PRIMASKvoid__set_FAULTMASK(uint32_tvalue);uint32_t__get_FAULTMASK(void);void__set_BASEPRI(uint32_tvalue);uint32_t__get_BASEPRI(void);

典型使用场景

  1. 实时任务保护:使用PRIMASKBASEPRI保护短暂临界区。
  2. 错误处理:在 HardFault 处理中操作FAULTMASK避免嵌套异常。
  3. 任务调度:RTOS 在切换上下文时用BASEPRI屏蔽低优先级中断。

总结:这三个寄存器是 Cortex-M 异常/中断管理的关键,PRIMASK用于全局中断开关,FAULTMASK用于故障处理时的强屏蔽,BASEPRI提供基于优先级的精细中断控制。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/1 6:18:48

Wan2.2-T2V-A14B为何成为专业视频创作平台的核心引擎?

Wan2.2-T2V-A14B&#xff1a;如何重塑专业视频创作的底层逻辑&#xff1f; 在影视广告制作领域&#xff0c;一个曾经司空见惯的场景是&#xff1a;导演反复修改分镜脚本、美术团队加班绘制概念图、拍摄周期因天气或演员档期一再推迟。整个流程动辄耗时数周&#xff0c;成本高达…

作者头像 李华
网站建设 2026/5/1 6:19:22

如何在5分钟内完成量子任务提交?Azure CLI与VSCode协同操作全曝光

第一章&#xff1a;量子计算任务提交的现状与挑战当前&#xff0c;量子计算正处于从理论验证向实际应用过渡的关键阶段。随着IBM、Google、Rigetti等公司开放量子云平台&#xff0c;研究人员可通过网络提交量子电路任务至真实量子设备或模拟器执行。然而&#xff0c;任务提交过…

作者头像 李华
网站建设 2026/5/1 6:19:59

python中pandas库的使用(超详细)

1、serier系数&#xff0c;可以看作是竖起来的listprint(s_1.index)当加入index后,index等于多少&#xff0c;那么它对应的那一行数据的行名就是多少pandas库和numpy库的不同就是&#xff0c;numpy只能处理数值类型的数据&#xff0c;而pandas可以处理字符串等print(s_3.values…

作者头像 李华
网站建设 2026/5/1 1:01:39

为什么你的生存分析结果不显著?——R语言建模常见错误与修正方案

第一章&#xff1a;为什么你的生存分析结果不显著&#xff1f;在进行生存分析时&#xff0c;研究者常遇到统计结果不显著的问题&#xff0c;这可能并非数据本身无价值&#xff0c;而是方法或数据处理环节存在隐患。理解潜在原因并采取相应对策&#xff0c;是提升分析质量的关键…

作者头像 李华
网站建设 2026/4/25 8:04:07

还在手动找视频台词?用Dify实现自动帧提取与关键词检索

第一章&#xff1a;Shell脚本的基本语法和命令Shell脚本是Linux和Unix系统中自动化任务的核心工具&#xff0c;它允许用户通过一系列命令的组合来执行复杂的操作。编写一个有效的Shell脚本需要掌握基本语法结构、变量使用、条件判断以及循环控制等关键要素。脚本的起始声明 每个…

作者头像 李华
网站建设 2026/4/27 12:08:41

邬思道的消失,是雍正王朝最狠的一场管理课

《雍正王朝》中&#xff0c;邬思道从田文镜处撤离、彻底消失于朝堂视野的那一幕&#xff0c;是整部剧最富含权力哲学的瞬间。表面看来&#xff0c;只是一位幕僚离开了权力中心&#xff0c;但从组织博弈的角度审视&#xff0c;它是一场关于顶级智囊如何安全下车、帝王如何维持系…

作者头像 李华