什么?中断禁用失效了?

什么?中断禁用失效了?

1. 前言

道友们,在嵌入式的开发中我们不管是RTOS或NO-RTOS的开发,都无法避免“多线程”的应用场景,高优先级的任务或中断打断低优先级的任务或中断,此时为了要保证共享数据的安全性,往往我们都会采用临界区保护的措施来保护我们的共享数据。临界区保护的实现可以是互斥锁、开关中断等。对于开关中断的方式包括开关全局中断、控制中断优先级两种方式。OK,这不是之前在项目中因为使用控制中断优先级做临界区保护的方式导致代码出现了问题,因此写这篇文章记录一下。

2. 问题现象

该项目中使用的是TI的AM2634芯片。下面我逐步来介绍该问题是怎么发生的。
① 首先如下图所示,我们代码中在操作共享数据的前后增加了临界区保护的操作,该操作里的内容是通过修改中断优先级寄存器来达到禁用制定的中断目的。
在这里插入图片描述
如下图所示,临界区保护操作的就是这个寄存器,将需要禁用的中断对应的bit写0。我们这里禁用的是二类中断(受OS管控)。
在这里插入图片描述
执行完这个临界区保护(开始)的操作后,操作系统会在它的上下文中记录我们此时已经执行了禁用二类中断的操作,然后我们再看下面这个流程图。当我们的二类中断触发的时候,会先执行Os_Isr_Entry这个函数,在这个函数中OS会进行一系列的检查以及其它的操作,然后再去执行我们注册的中断服务函数。那么这个检查里面就涉及到中断禁用的检查,再OS的设定中,我们既然已经禁用了二类中断后,就不该再触发新的二类中断了,因此它会进入ErrorHook(故障回调函数)。
在这里插入图片描述
好了,说到这里问题的根本原因就是我们既然禁用了中断后,为什么中断还是触发了?

3. 问题原因

当问题复现的时候,我查看了这个寄存器,可看到我们其实已经写成功了,写之前的值是0xFF,我们禁用了优先级8以上的中断,因此写入0x7F,所以代码中的操作其实没有问题。
在这里插入图片描述
既然不是我们代码的问题,那么这个问题是什么呢?OK,直接来说最后的问题结论,这个寄存器再操作之后其实不是马上生效的,我们将值写入这个寄存器到中断被禁用这之间还有一个"生效时间",这就导致了为什么我们在操作完这个寄存器后中断依旧触发的原因了。
在这里插入图片描述
上面就是TI的回复了,针对这个寄存器,我们必须要按照下面的时序来操作以确保它生效。

4. 结尾

在我们开发中,有时候出现问题可能并不是由于我们代码的问题,也有可能跟芯片的设定有关。就拿这个VIM_IRQPRIMASK寄存器来说,我们的代码就是按照寄存器手册去写的,那为什么实际没有达到期望的功能效果,也许这中间就暗藏了一些芯片层面的“规则”。所以我们排查问题的时候思维要打开,进行一些头脑风暴后也许就会找到答案。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/38188.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

单表达式倒计时工具:datetime的极度优雅(Kimi)

一个简单表达式,也可以优雅自成工具。 笔记模板由python脚本于2025-03-22 20:25:49创建,本篇笔记适合任意喜欢学习的coder翻阅。 【学习的细节是欢悦的历程】 博客的核心价值:在于输出思考与经验,而不仅仅是知识的简单复述。 Pyth…

[笔记.AI]多头自注意力机制(Multi-Head Attention)

多头自注意力是深度学习领域,特别是自然语言处理(NLP)和Transformer模型中的关键概念。其发展源于对序列数据中复杂依赖关系的建模需求,特别是在Transformer架构的背景下。 举例 比喻-读长篇文章 用一个简单的比喻来理解“多头注…

SOFABoot-02-模块化隔离方案

sofaboot 前言 大家好,我是老马。 sofastack 其实出来很久了,第一次应该是在 2022 年左右开始关注,但是一直没有深入研究。 最近想学习一下 SOFA 对于生态的设计和思考。 sofaboot 系列 SOFABoot-00-sofaboot 概览 SOFABoot-01-蚂蚁金…

【实用部署教程】olmOCR智能PDF文本提取系统:从安装到可视化界面实现

文章目录 引言系统要求1. 环境准备:安装Miniconda激活环境 2. 配置pip源加速下载3. 配置学术加速(访问国外资源)4. 安装系统依赖5. 安装OLMOCR6. 运行OLMOCR处理PDF文档7. 理解OLMOCR输出结果9. 可视化UI界面9.1 安装界面依赖9.2 创建界面应用…

asp.net core mvc模块化开发

razor类库 新建PluginController using Microsoft.AspNetCore.Mvc;namespace RazorClassLibrary1.Controllers {public class PluginController : Controller{public IActionResult Index(){return View();}} }Views下Plugin下新建Index.cshtml {ViewBag.Title "插件页…

边缘计算革命:重构软件架构的范式与未来

摘要 边缘计算通过将算力下沉至网络边缘,正在颠覆传统中心化软件架构的设计逻辑。本文系统分析了边缘计算对软件架构的范式革新,包括分布式分层架构、实时资源调度、安全防护体系等技术变革,并结合工业物联网、智慧医疗等场景案例&#xff0c…

单链表:数据结构的灵动之链

本文主要讲解链表的概念和结构以及实现单链表 目录 一、链表的概念及结构 二、单链表的实现 1.1链表的实现: 1.2单链表的实现: 单链表尾插: 单链表的头插: 单链表的尾删: 单链表头删: 单链表查找&#…

链表题型-链表操作-JS

一定要注意链表现在的头节点是空节点还是有值的节点。 一、移除链表中的元素 有两种方式,直接使用原来的链表进行删除操作;设置一个虚拟头节点进行删除操作。 直接使用原来的链表进行删除操作时,需要考虑是不是头节点,因为移除…

读《浪潮之巅》:探寻科技产业的兴衰密码

引言:邂逅《浪潮之巅》 在信息技术飞速发展的今天,科技公司如繁星般闪烁,又似流星般划过。而我与《浪潮之巅》的相遇,就像在浩渺的科技海洋中,发现了一座指引方向的灯塔。初次听闻这本书,是在一次技术交流会…

【和春笋一起学C++】文本文件I/O

在windows系统中读取键盘的输入和在屏幕上显示输出统称为:控制台输入/输出。把读取文本文件和把字符输出到文本文件中统称为:文本文件I/O。 目录 1. 输出文本文件 2. 读取文本文件 1. 输出文本文件 把字符输出到文本文件中和输出到控制台很相似&#x…

【C#】WinForm自定义控件及窗体

前言 WinForm(Windows Forms)是Microsoft.NET框架中的技术,用于开发Windows桌面应用程序。它提供了一套丰富的控件和组件。通过拖放控件、编写事件处理程序等方式快速构建用户界面。 通过属性窗口定制这些控件的外观和行为。 通过数据绑定&am…

Live555+Windows+MSys2 编译Androidso库和运行使用

下载 wget http://www.live555.com/liveMedia/public/live555-latest.tar.gz tar -xzvf live555-latest.tar.gz加入版本控制 git init git add . git commit -a -m "first init" git log修改config.android-arm64 cd live vim config.android-arm64 ./genMakefile…

大模型-提示词工程与架构

什么是提示工程 提示工程(Prompt Engineering)是一门新兴的技术领域,专注于研究如何设计、构建和优化提示词,以充分发挥大模型的潜力 。它涉及到对语言结构、任务需求、模型特性等多方面因素的综合考量。提示工程的目标是通过精心…

Agent Team 多智能体系统解析

引言 在人工智能技术高速发展的今天,"多智能体协作系统"(Agent Team)正成为突破效率瓶颈的关键技术。与传统的单体AI不同,这种由多个专业化智能体组成的协同网络,通过分工协作和动态调整,展现出…

【蓝桥杯—单片机】IAP15F2K61S2专项 | 真题整理、解析与拓展 | 省赛题(更新ing...)

IAP15F2K61S2 专项 前言IAP15F2K61S2 介绍(基于手册)I/O口结构复位管脚RST中断第十四届省赛 外设通过PWM控制第十五届省赛题 性能与工作参数在线调试第十四届省赛题拓展与小结:单片机在线调试常用的接口 功耗第十五届省赛题 前言 在本文中我…

生物化学笔记:医学免疫学原理02 抗原概念+免疫应答+抗原的分类

抗原基本概念 影响抗原刺激机体产生免疫应答的因素 抗原的分类 CG 【北京大学】1080p 王月丹教授 《医学免疫学原理》2022春 全81p

(UI自动化测试)第二篇:元素定位的方法_name定位

二、name定位 ⽅法: driver.find_element_by_name(“name属性值”) 前置: 标签必须name属性 特点: 当前⻚⾯可以重复 提示: 由于name属性值可以重复,所以使⽤时需要查看是否为唯⼀。 # 导包selenium from selenium i…

软考中级-软件设计师 准备

软考中级-软件设计师 准备 一、软考相关1.1、考试时间1.2、考试时长1.3、题型和分值: 二、软考备考2.1、相关书籍2.2、推荐课程:B站up主zst_20012.3、学习路线 一、软考相关 1.1、考试时间 一年有两次软考,一般是五月末和十一月的中旬 以下…

记忆力训练day24

一 数字锁链串联法 数字两位 两位的连

田间机器人幼苗视觉检测与护苗施肥装置研究(大纲)

田间机器人幼苗视觉检测与护苗施肥装置研究 基于多光谱视觉与精准施肥的农业机器人系统设计 第一章 绪论 1.1 研究背景与意义 农业智能化需求: 传统幼苗检测依赖人工,效率低且易遗漏弱苗/病苗施肥不精准导致资源浪费和环境污染 技术挑战:…