临界区保护

2024-06-06 08:36
文章标签 保护 临界

本文主要是介绍临界区保护,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1. 临界区的保护实际应用中可能需要的场合:

调用公共函数的代码(不可重入函数)
读取或者修改变量(全局变量)
使用硬件资源(MCU的ram、flash、uart、spi、adc等)
对时序有精准要求的操作(I2C通讯)
某些用户不想被打断的代码(比如 printf 打印),串口接收的状态、接收中断重新开启等操作

2. 临界区保护方法:

在实时操作系统(RTOS)中操作I2C通常涉及到多任务/中断环境,因此需要确保I2C的使用是线程安全的。关闭中断和使用互斥量是两种常见的方法来确保线程安全。RT-Thread中提供了多种保护临界区的方法,具体分为以下几类

(1) 禁用系统调度器 ,中断可以响应
rt_enter_critical();   //将线程调度器上锁,此时线程调度器仅能响应中断
/* 以下进入临界区 */. . . .
/*临界区执行完成*/
rt_exit_critical();  //调度器解锁
(2)禁用中断

关闭中断通常用于确保在执行I2C传输时不会被其他中断打断。但是,这种方法应谨慎使用,因为它会影响系统的实时性。
rt_base_t level; //创建变量以使用中断关闭和中断开启函数
level = rt_hw_interrupt_disable(); //中断关闭函数
/* 以下是临界区*/
. . . .
rt_hw_interrupt_enable(level); 中断开启函数

(3)互斥量(Mutex)

是一种更灵活的同步机制,可以在保持系统实时性的同时提供更细粒度的同步。如果你的RTOS支持互斥量,并且你希望避免关闭中断带来的潜在问题,那么使用互斥量会是更好的选择。

3. 临界区具体场合的操作方法

(1)在任务中对全局变量先判断后赋值,而中断代码、高优先级任务中也会对该全局变量操作,这种情况需在任务中对其临界区保护。
(2)串口协议发送装帧代码(全局变量的复制)也需临界区保护,防止中断代码、高优先级任务对全局变量修改,比如装帧时复制了ADC值的一半部分后发生中断修改了该值,返回后继续复制后半部分,则装帧错误。
(3)串口接收的状态、接收中断重新开启等操作,也不希望被中断打断,导致出错,也需临界区保护。如果在串口中断接收中也有这段代码,如果串口优先级最高(所有访问该临界区的任务、中断等)因为优先级已经最高了,则不需要再保护了。
(3)串口、Timer等中断服务程序中,对同一全局变量有操作的代码段(临界区),需临界区保护。
函数 taskENTER_CRITICAL_FROM_ISR()和 taskEXIT_CRITICAL_FROM_ISR()中断级别临界段代码保护,是用在中断服务程序中的。
低优先级的中断被屏蔽了:优先级低于、等于configMAX_SYSCALL_INTERRUPT_PRIORITY
高优先级的中断可以产生:优先级高于configMAX_SYSCALL_INTERRUPT_PRIORITY

这篇关于临界区保护的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1035603

相关文章

PDF 软件如何帮助您编辑、转换和保护文件。

如何找到最好的 PDF 编辑器。 无论您是在为您的企业寻找更高效的 PDF 解决方案,还是尝试组织和编辑主文档,PDF 编辑器都可以在一个地方提供您需要的所有工具。市面上有很多 PDF 编辑器 — 在决定哪个最适合您时,请考虑这些因素。 1. 确定您的 PDF 文档软件需求。 不同的 PDF 文档软件程序可以具有不同的功能,因此在决定哪个是最适合您的 PDF 软件之前,请花点时间评估您的

如何保护自己的个人隐私

个人隐私保护概览 在数字时代,个人隐私保护显得尤为重要。随着信息技术的发展,个人信息的收集、存储、使用变得更加便捷,同时也带来了隐私泄露的风险。为了保护个人隐私,我们需要从多个维度出发,采取一系列措施来确保个人信息的安全。 个人隐私泄露风险 个人隐私泄露主要来源于以下几个方面: 社交网络:在社交平台上分享信息时,如果不恰当地设置了隐私权限,可能会导致敏感信息被公开。网络服务:在使用网络服务

【电子通识】半导体工艺——保护晶圆表面的氧化工艺

在文章【电子通识】半导体工艺——晶圆制造中我们讲到晶圆的一些基础术语和晶圆制造主要步骤:制造锭(Ingot)、锭切割(Wafer Slicing)、晶圆表面抛光(Lapping&Polishing)。         那么其实当晶圆暴露在大气中或化学物质中的氧气时就会形成氧化膜。这与铁(Fe)暴露在大气时会氧化生锈是一样的道理。 氧化膜的作用         在半导体晶圆

FreeRTOS学习笔记(四)Freertos的中断管理及临界保护

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、Cortex-M 中断管理1.1 中断优先级分组1.2 相关寄存器1.3 相关宏定义1.4 FreeRTOS 开关中断 二、临界段及其保护2.1 taskENTER_CRITICAL( ) 和 taskEXIT_CRITICAL( )2.2 taskENTER_CRITICAL_FROM_ISR( )

操作系统安全保护

操作系统安全概述 概念:满足安全策略要求,具有响应安全机制及安全功符合特定安全标准,在一定约束条件下 能抵御常见网络安全威胁,保障自身安全运行及资源安全 安全等级:根据安全功能和安全保障要求分为 用户自主保护级  系统审计保护级 安全标记保护级 结构化保护级 访问验证保护级 操作系统作用: 负责计算系统的资源管理、支撑和控制各种应用程序运行,为用户提供计算机系统管理接口 是构成网络信息

QDI主板的保护功能导致的电脑关机故障

由于QDI主板中的一种系统保护技术CPU Triple protection被激活导致电脑在刚开机几分钟后就自动关机的。   这种技术在用户开机时就开始运行,对CPU的温度进行实时的侦测,当发现CPU达到一定温度时即强行将CPU进行降速工作状态。如果温度继续升高,达到危险值时便会强行关机,以保护CPU,不会因为温度过高而烧毁。作为QDI的创新技术这一,这项技术主要是为了避免因CPU风扇安装不善

SpringBoot自定义classloader加密保护class文件

背景 最近针对公司框架进行关键业务代码进行加密处理,防止通过jd-gui等反编译工具能够轻松还原工程代码,相关混淆方案配置使用比较复杂且针对springboot项目问题较多,所以针对class文件加密再通过自定义的classloder进行解密加载,此方案并不是绝对安全,只是加大反编译的困难程度,防君子不防小人,整体加密保护流程图如下图所示 maven插件加密 使用自定义maven插件对编

js混淆保护在线工具开源项目大全

具体前往:js代码混淆加密保护工具&开源项目大全

CAD图纸怎么加密?这10款图纸加密工具轻松保护图纸文件

在设计和工程领域,CAD图纸是企业宝贵的知识产权和核心竞争力的体现。随着数字化进程的加速,图纸文件的安全性问题日益凸显,未经授权的访问和泄露风险也随之增加。因此,采取有效的加密措施来保护CAD图纸的安全变得至关重要。本文将介绍10款高效的图纸加密工具,它们能够帮助设计者和企业轻松保护其图纸文件,确保设计成果不被非法获取或滥用。 1.安秉图纸加密软件 安秉图纸加密软件是一款专为企业和设计师开

图纸安全管理措施有哪些?这九大措施全方位保护图纸安全

图纸安全管理措施是一个综合性的体系,旨在通过技术手段和管理措施确保图纸的机密性、完整性和可用性。以下是一些关键的图纸安全管理措施,以及软件安企神的应用。 一、保密协议与意识教育 签订保密协议:与所有接触图纸的员工签署保密协议,明确保密责任和违约后果,形成法律约束。 意识教育:定期开展保密教育培训,通过案例分析、法律法规解读等形式,提高员工的保密意识,树立“图纸即机密,保密无小事”的观念。