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

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

3天内不再提示

FreeRTOS信号量介绍

麦辣鸡腿堡 来源:嵌入式Linux系统开发 作者:嵌入式Linux系统开 2023-07-06 17:09 次阅读

1、信号量用于控制对共享资源的访问

举一个很常见的例子,某个停车场有100个停车位,这 100 个停车位大家都可以用,对于大家来说这 100 个停车位就是共享资源。假设现在这个停车场正常运行,你要把车停到这个这个停车场肯定要先看一下现在停了多少车了?还有没有停车位?当前停车数量就是一个信号量,具体的停车数量就是这个信号量值,当这个值到 100 的时候说明停车场满了。停车场满的时你可以等一会看看有没有其他的车开出停车场,当有车开出停车场的时候停车数量就会减一,也就是说信号量减一,此时你就可以把车停进去了,你把车停进去以后停车数量就会加一,也就是信号量加一。这就是一个典型的使用信号量进行共享资源管理的案例,在这个案例中使用的就是计数型信号量。

再看另外一个案例:使用公共电话,我们知道一次只能一个人使用电话,这个时候公共电话就只可能有两个状态:使用或未使用,如果用电话的这两个状态作为信号量的话,那么这个就是二值信号量。

信号量用于控制共享资源访问的场景相当于一个上锁机制,代码只有获得了这个锁的钥匙才能够执行。

2、信号量的用于任务同步

任务与任务或中断与任务之间的同步。

在执行中断服务函数的时候可以通过向任务发送信号量来通知任务它所期待的事件发生了,当退出中断服务函数以后在任务调度器的调度下同步的任务就会执行。

在编写中断服务函数的时候我们都知道一定要快进快出,中断服务函数里面不能放太多的代码,否则的话会影响的中断的实时性。裸机编写中断服务函数的时候一般都只是在中断服务函数中打个标记,然后在其他的地方根据标记来做具体的处理过程。在使用 RTOS 系统的时候我们就可以借助信号量完成此功能,当中断发生的时候就释放信号量,中断服务函数不做具体的处理。具体的处理过程做成一个任务,这个任务会获取信号量,如果获取到信号量就说明中断发生了,那么就开始完成相应的处理,这样做的好处就是中断执行时间非常短。

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

    关注

    4983

    文章

    18295

    浏览量

    288597
  • 信号
    +关注

    关注

    11

    文章

    2641

    浏览量

    75393
  • FreeRTOS
    +关注

    关注

    12

    文章

    473

    浏览量

    61351
收藏 人收藏

    评论

    相关推荐

    FreeRTOS信号量使用教程

    信号量是操作系统中重要的一部分,信号量一般用来进行资源管理和任务同步, FreeRTOS信号量又分为二值信号量、 计数型
    的头像 发表于 12-19 09:22 2440次阅读
    <b class='flag-5'>FreeRTOS</b><b class='flag-5'>信号量</b>使用教程

    FreeRTOS信号量的使用与实例

    在嵌入式系统中,任务管理是一个重要的部分,它涉及到任务之间的通信和同步,信号量,队列,互斥锁和事件标志组等概念。本文将以 FreeRTOS 为例,详细讲解这些内容。
    的头像 发表于 12-12 15:25 642次阅读

    转:freeRTOS信号量学习

    信号量同样是RTOS学习中很重要的一节,信号量可以用在共享资源或者同步任务中,对执行权的控制,谁拥有信号量谁拥有执行权,在freeRTOS信号量
    发表于 08-12 18:29

    转:第21章 FreeRTOS计数信号量

    本章节开始讲解FreeRTOS任务间的同步和资源共享机制,计数信号量FreeRTOS中计数信号量的源码实现是基于消息队列实现的。 本章教程配套的例子含Cortex-M3内核的STM3
    发表于 09-05 09:36

    转:第22章 FreeRTOS二值信号量

    本章节讲解FreeRTOS任务间的同步和资源共享机制,二值信号量。二值信号量是计数信号量的一种特殊形式,即共享资源为1的情况。(注:本章节开头部分的知识
    发表于 09-06 10:02

    转:第23章 FreeRTOS互斥信号量

    本章节讲解FreeRTOS重要的资源共享机制---互斥信号量(Mutex,即MutualExclusion的缩写)。注意,建议初学者学习完前两个章节的信号量后再学习本章节的互斥信号量
    发表于 09-06 14:58

    转:第24章 FreeRTOS任务计数信号量

    本章节为大家讲解FreeRTOS计数信号量的另一种实现方式----基于任务通知(Task Notifications)的计数信号量,这里我们将这种方式实现的计数信号量称之为任务计数
    发表于 09-07 06:43

    有关FreeRTOS信号量和计数信号量在使用过程中需要注意的细节

    本文介绍有关FreeRTOS信号量和计数信号量在使用过程中需要注意的细节,以及自己在过程中的分享的一些有关遇到的问题和注意点。
    发表于 08-06 06:26

    如何创建FreeRTOS任务/信号量/串口底层?

    如何创建FreeRTOS任务/信号量/串口底层?
    发表于 12-16 07:39

    FreeRTOS信号量介绍

    FreeRTOS信号量 & ESP32实战阅读建议:有一定操作系统基础知识。FreeRTOS信号量1. 二值信号量  二值
    发表于 01-27 07:28

    FreeRTOS信号量 & ESP32实战

    FreeRTOS信号量 & ESP32实战阅读建议:有一定操作系统基础知识。FreeRTOS信号量1. 二值信号量  二值
    发表于 12-03 18:06 1次下载
    <b class='flag-5'>FreeRTOS</b><b class='flag-5'>信号量</b> & ESP32实战

    FreeRTOS高级篇6---FreeRTOS信号量分析

    FreeRTOS信号量包括二进制信号量、计数信号量、互斥信号量(以后简称互斥量)和递归互斥信号量
    发表于 01-26 17:39 7次下载
    <b class='flag-5'>FreeRTOS</b>高级篇6---<b class='flag-5'>FreeRTOS</b><b class='flag-5'>信号量</b>分析

    FreeRTOS系列第20篇---FreeRTOS信号量API函数

    FreeRTOS信号量包括二进制信号量、计数信号量、互斥信号量(以后简称互斥量)和递归互斥信号量
    发表于 01-26 17:44 4次下载
    <b class='flag-5'>FreeRTOS</b>系列第20篇---<b class='flag-5'>FreeRTOS</b><b class='flag-5'>信号量</b>API函数

    在Arduino IDE中使用FreeRTOS信号量

    电子发烧友网站提供《在Arduino IDE中使用FreeRTOS信号量.zip》资料免费下载
    发表于 01-04 10:18 0次下载
    在Arduino IDE中使用<b class='flag-5'>FreeRTOS</b><b class='flag-5'>信号量</b>

    FreeRTOS的二值信号量

    FreeRTOS中的信号量是一种任务间通信的方式,信号量包括:二值信号量、互斥信号量、计数信号量
    的头像 发表于 02-10 15:07 943次阅读