柳城网站建设/软文范例800字
上一课:
【小黑嵌入式系统第十三课】PSoC 5LP第二个实验——中断控制实验
前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站:人工智能
文章目录
- 1 信号量
- 1.1 简介
- 1.2 任务间同步
- 1.3 ISR与任务同步
- 1.4 资源同步
- 例:银行柜台
- 1.5 任务信号量
- 2 事件标志组
- 2.1 简介
- 2.2 标志“与”
- 2.3 标志“或”
- 2.4 同步多个任务
1 信号量
1.1 简介
在实时多任务系统中,信号量(semaphore)被广泛用于:任务间对共享资源的互斥,但更多地是用于任务和中断服务程序之间的同步、任务之间的同步。
N为信号量值,表示发布信号量的次数累计值。
信号量用于任务-任务(或任务-ISR)间同步时,N表示事件已发生了多少次。
信号量用于资源共享时,N表示资源还可被多少个任务同时使用。
当任务(或ISR)调用OSSemPost()
函数发送信号量时:
任务(或ISR)可以多次调用OSSemPost()
函数发送信号量。
当信号量值大于0,任务调用OSSemPend()
函数接收信号量时:
当信号量值等于0,任务调用OSSemPend()
函数接收信号量时:
注意:μC/OS-III不允许在中断服务程序中等待信号量。
前面章节我们学习了互斥信号量,下面对计数型信号量与互斥信号量做一个对比。
1.2 任务间同步
在实际的应用中,常用信号量实现任务间的同步,OSSemPend()
和OSSemPost()
会出现在不同任务中,但不一定成对出现。
注意:在实际的应用中,还有多对多、一对多信号量操作的情况,但很不常见,建议不要设计出这样的操作方式,这样会带来很多的麻烦。
用来实现任务间同步的信号量在创建时赋给初始值,一般为0,表示事件还未发生,初始值在OSSemCreate()
函数中指定。
让一个LED以0.5Hz的频率闪烁,每按键一次,LED闪烁一次。
我们通过此例来说明如何使用信号量实现任务间同步,两个任务处理流程如下。
TaskKEY
任务主要代码如下。
TaskLED
任务主要代码如下。
1.3 ISR与任务同步
下面以示例来说明如何现实ISR与任务间同步。假设定时器1中断服务程序发送信号量,任务完成了信号量的创建并在接收到信号量后让蜂鸣器响一声。处理流程如下。
中断服务程序ISR示例代码如下。
蜂鸣器报警任务示例代码如下。
1.4 资源同步
在嵌入式系统中,可以使用信号量访问共享资源来实现资源同步。在使用时,注意发送信号量函数OSSemPost()
与等待信号量函数OSSemPend()
必须成对出现在同一个任务调用的函数中,才能实现资源同步(这与互斥信号量使用方式一致)。
在使用信号量做资源共享时,只有任务才能使用信号量,而中断服务程序则不可以。(注意对照前面所述,在使用信号量做ISR与任务间同步时,ISR可以给任务发送信号量,但不能做其它的信号量操作)
计数型信号量用于某共享资源可以同时为几个任务所用时,这是互斥型信号量不能处理的(互斥信号量是二值的)。
例:银行柜台
某银行有N个柜台可以为客户服务,设置信号量值为N(或者银行同时可以为N个用户服务)
为了说明使用信号量访问共享资源实现资源同步,设计两个任务,它们以不同的频率让LED点亮30个时钟节拍,然后熄灭60个时钟节拍,要求这两个任务不会互相干扰。下面是两个任务的处理流程。
为了实现资源同步,我们需要保证OSSemPost()
与OSSemPend()
成对在同一个任务函数中调用,所以我们可以编写一个函数LED()
供两个任务调用,代码如下。
下面给出两个LED任务的主要处理代码。
1.5 任务信号量
在μC/OS-III中,每个任务都有它自己的内嵌信号量,称为任务信号量。任务信号量是在任务创建OSTaskCreate()
时创建的,因此任务创建之后便可以直接使用。
任务信号量使用起来更方便,且速度比一般信号量要快。
当事件发生时,用户若明确知道该给哪个任务发信号,此时就可以使用任务信号量。
μC/OS-III中的任务信号量服务函数以OSTaskSem???()
命名。
- 如
OSTaskSemPend()
,它在任务信号量所属任务中调用。(无任务控制块参数需传递)
- 如OSTaskSemPost(),它在另一任务或ISR中调用。(需指定任务信号量所属任务的任务控制块参数,即发送(给)哪个任务的任务信号量)
2 事件标志组
2.1 简介
当任务要与多个事件的发生同步时,可以使用事件标志组。一个事件标志就是一个二值信号,事件标志组是若干二值信号的组合。
用事件标志组来做任务同步分为独立型同步(“或”同步)和关联型同步(“与”同步)。设一个任务与3个事件标志有关,如下图。
可以用多个事件的组合,发信号给多个任务,典型的有8个、16个或32个事件可以组合在一起(由os_type.h中的OS_FLAGS数据类型定义事件标志位数)。
注意:系统在一组新事件发生后判断是否有任务接收到需求的标志,在收到标志后进行任务状态切换。
2.2 标志“与”
为了说明如何使用标志事件组实现任务与若干个事件同步,我们设计一个系统,当时间到且独立按健被按下后,让LED1闪烁一下。三个任务的处理流程如图。
TaskKEY
任务主要代码如下。
TaskDly
任务主要代码如下。
TaskLED
任务主要代码如下。
2.3 标志“或”
为了说明如何使用标志事件组实现任务与任何事件之一同步,我们设计一个系统,当时间到或独立按健被按下后,让LED1闪烁一下。三个任务的处理流程如图。
注意:标志“或”和标志“与”操作只在等待标志的LED任务有所不同,其余都相同。
由于发送标志的两个任务代码和标志“与”操作的相同,这里不做重复。标志“或”中的 TaskLED
任务主要代码如下。
2.4 同步多个任务
有些时候需要使多个任务“同时”开始执行(将它们执行的起点同步到同一时刻),通过广播信号量来同步多个任务是一种常用的技术。
但当进行广播操作时,一些要同步的任务可能没有在等待信号量,解决该问题的方法是将信号量和事件标志组联合起来使用。
(1) 每个待同步的任务都需要先将一个事件标志位置位;
(2) 然后等待信号量的发布。
(3) 进行信号量广播的任务必须在所有事件标志位都被置位后,
(4) 才能发布信号量。
该方法要求左边任务优先级比右边任务优先级都低。否则对于右边的最后一个执行OSFlagPost()
的任务,在它尚未执行OSSemPend()
之前,左边任务就将发送信号量。
相关文章:

【小黑嵌入式系统第十四课】μC/OS-III程序设计基础(三)——信号量(任务同步资源同步)、事件标记组(与或多个任务)
上一课: 【小黑嵌入式系统第十三课】PSoC 5LP第二个实验——中断控制实验 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站:人工智能 文章目录 1 信号量1.1 简介1.2…...

PMP报考流程?
项目管理相关证书,PMP是一个不错的选择,尤其是小白朋友。 PMP 是项目管理的一个入门证书,理论知识很全面,涵盖了项目管理的全流程,可作为日常工具参考书、完全小白的可以先考一个PMP学好理论,再考一个PRIN…...

【EI会议征稿通知】2024年机器学习与智能计算国际学术会议(MLIC 2024)
2024年机器学习与智能计算国际学术会议(MLIC 2024) 2024 International Conference on Machine learning and intelligent computing 智能计算与机器学习被广泛应用于大数据分析、人工智能、智能制造、智能交通、智能电网、智慧城市、智慧医疗、金融科…...

第八篇 提升网页性能:深入解析HTTP请求优化策略(三)
文章目录 1. 缓存策略设计1.1 HTTP缓存机制1.1.1 强缓存(Cache-Control/Expires)1.1.2 协商缓存(ETag/Last-Modified) 1.2 缓存位置1.2.1 浏览器缓存1.2.2 代理服务器缓存 1.3 缓存策略选择1.3.1私有缓存1.3.2 公共资源缓存 1.4 V…...

高版本ant-design动态引用icon
需求 最近在更新自己的博客系统,从 vue2 升到 vue3,同步的也把 ant-design 从 1.7.8 跨越多个大版本升级到了 4.0.8,发现菜单上的 icon 报错了。 查询官方文档发现自从 2.0 版本以后的 icon 就不再支持通过 <a-icon /> 组件动态 type…...

【SQL】delete 与 truncate 命令的区别
区别 truncatedelete属于 DDL(数据定义语言) 范畴属于 DML(数据操作语言) 范畴删除表数据,不能删除视图数据删除表数据,删除视图数据只可以梭哈删除通过 where 进行选择性删除不涉及事务处理删除表中数据涉及事务处理效率高、但无法撤销效率低ÿ…...

【ITK库学习】使用itk库进行图像分割(四):水平集分割
目录 1、水平集2、itkFastMarchingImageFilter 快速步进分割3、itkShapeDetectionLevelSetImageFilter 快速步进分割 1、水平集 水平集是跟踪轮廓和表面运动的一种数字化方法。基于图像的亮度均值、梯度、边缘特征的微分计算,进行水平集分割。在itk中,所…...

Kali Linux——aircrack-ng无线教程
目录 一、准备 二、案例 1、连接usb无线网卡 2、查看网卡信息 3、开启网卡监听 4、扫描wifi信号 5、抓取握手包 6、强制断开连接 7、破解握手包 三、预防 一、准备 1、usb无线网卡(笔记本也是需要用到) 2、密码字典(Kali 系统自带…...

15.vdo管理
vdo管理 文章目录 vdo管理一、VDO基本概念二、常用操作三、验证VDO卷 一、VDO基本概念 VDO(Virtual Data Optimize虚拟数据优化) 通过压缩或删除存储设备上的数据来优化存储空间。VDO层放置在现有块存储设备例如RAID设备或本地磁盘的顶部。这些块设备也…...

安全漏洞周报(2024.01.01-2023.01.08)
漏洞速览 ■ 用友CRM系统存在逻辑漏洞 漏洞详情 1. 用友CRM系统存在逻辑漏洞 漏洞介绍: 某友CRM系统是一款综合性的客户关系管理软件,旨在帮助企业建立和维护与客户之间的良好关系。它提供了全面的功能,包括销售管理、市场营销、客户服…...

msckf-vio 跑Euroc数据集,并用evo进行评估
所需材料: Euroc数据集主页:https://projects.asl.ethz.ch/datasets/doku.php?idkmavvisualinertialdatasetsevo评估工具代码:https://github.com/MichaelGrupp/evo向msckf-vio中添加保存位姿的代码,可参考https://blog.csdn.ne…...

大模型LLM在 Text2SQL 上的应用实践
一、前言 目前,大模型的一个热门应用方向Text2SQL,它可以帮助用户快速生成想要查询的SQL语句,再结合可视化技术可以降低使用数据的门槛,更便捷的支持决策。本文将从以下四个方面介绍LLM在Text2SQL应用上的基础实践。 Text2SQL概…...

数据库:园林题库软件(《城市绿地设计规范》答题卷一 )
《城市绿地设计规范》答题卷一 填空题 1、城市绿地设计应贯彻人与自然和谐共存、可持续发展、经济合理等基本原则,创造良好生态和景观效果,促进人的身心健康。 2、城市绿地 urban green space 以植物为主要存在形态,用于改善城市生态&am…...

MySQL之视图外连接、内连接和子查询的使用
目录 一. 视图 1.1 含义 1.2 视图的基本语法 1.3 视图的实操 二. 外连接、内连接和子查询的使用 2.1 SQL脚本 2.2 使用外连接、内连接和子查询进行解答 三. 思维导图 一. 视图 1.1 含义 视图(view)是一种虚拟存在的表,是一个逻辑表&#x…...

MoE模型性能还能更上一层楼?一次QLoRA微调实践
Fine-Tuning Mixtral 8x7B with QLoRA:Enhancing Model Performance 🚀 编者按:最近,混合专家(Mixture of Experts,MoE)这种模型设计策略展现出了卓越的语言理解能力,如何在此基础上进一步提升 MoE 模型的性能成为业界…...

Java线程学习笔记
1、判断线程存活 1. 当线程run()或者call()方法执行结束,线程进入终止状态 2. 当线程内发生异常,并且异常没有被捕获,线程进入终止状态 3. 线程调用stop()方法后,线程进入终止状态(不推荐使用) 当主线程结束时,其他线程…...

平面光波导_三层均匀平面光波导_射线分析法
平面光波导_三层均匀平面光波导_射线分析法 三层均匀平面光波导: 折射率沿 x x x 方向有变化,沿 y y y、 z z z 方向没有变化三层:芯区( n 1 n_1 n1) > > > 衬底( n 2 n_2 n2) ≥ \geq ≥ 包层( n 3 n_3 n3)包层通常为空…...

IPV6学习记录
IPV6的意义 从广义上来看IPV6协议包含的内容很多: IPV6地址的生成与分配 IPV6的报头的功能内容 IPV4网络兼容IPV6的方案 ICMPv6的功能(融合了arp和IGMP功能) IPV6的路由方式 ipv6的诞生除了由于ipv4的地址枯竭外,很大程度上也是因为ipv4多年的发展产生了很多…...

使用proteus进行主从JK触发器仿真失败原因的分析
在进行JK触发器的原理分析的时候,我首先在proteus根据主从JK触发器的原理进行了实验根据原理图,如下图: 我进行仿真,在仿真的过程中,我向电路图中添加了外部的置0/1端口,由此在proteus中得到下面的电路图 …...

Golang基础入门及Gin入门教程(2024完整版)
Golang是Google公司2009年11月正式对外公开的一门编程语言,它不仅拥有静态编译语言的安全和高性能,而 且又达到了动态语言开发速度和易维护性。有人形容Go语言:Go C Python , 说明Go语言既有C语言程序的运行速度,又能达到Python…...

202312 青少年软件编程(C/C++)等级考试试卷(四级)电子学会真题
2023年12月 青少年软件编程(C/C)等级考试试卷(四级)电子学会真题 1.移动路线 题目描述 桌子上有一个m行n列的方格矩阵,将每个方格用坐标表示,行坐标从下到上依次递增,列坐标从左至右依次递增…...

leetcode-合并两个有序数组
88. 合并两个有序数组 题解: 这是一个经典的双指针问题,我们可以使用两个指针分别指向nums1和nums2的最后一个元素,然后比较两个指针所指向的元素大小,将较大的元素放入nums1的末尾,并将对应的指针向前移动一位。重复…...

网站怎么做google搜索引擎优化?
网站想做google搜索引擎优化,作为大前提,您必须确保网站本身符合google规范,我们不少客户实际上就连这点都无法做到 有不少客户公司自己本身有技术,就自己弄一个网站出来,做网站本身不是难事,但前提是您需要…...

TDengine 签约西电电力
近年来,随着云计算和物联网技术的迅猛发展,传统电力行业正朝着数字化、信息化和智能化的大趋势迈进。在传统业务基础上,电力行业构建了信息网络、通信网络和能源网络,致力于实现发电、输电、变电、配电和用电的实时智能联动。在这…...

赛门铁克OV代码签名证书一年多少钱?
在当前,软件和应用程序的安全性变得尤为重要。为了保护软件的完整性和安全性,越来越多的开发者和厂商开始采用代码签名的方式来确保软件的真实性和完整性。赛门铁克OV代码签名证书成为了其中一个备受信任的选择。那么,赛门铁克OV代码签名证书…...

Dockerfile详解
文章目录 一、Dockerfile介绍二、常用指令三、Dockerfile示例四、最佳实践 一、Dockerfile介绍 Dockerfile是一个包含创建镜像所有命令的文本文件,通过docker build命令可以根据Dockerfile的内容构建镜像。 一般的,Dockerfile分为四部分:基础…...

零基础小白如何自学sql?
学习SQL对于数据分析和处理来说非常重要。SQL是一种强大的工具,可以帮助你与数据库沟通,提取,整理和理解数据。 以下是一些学习SQL的建议: 01 前期:SQL数据库学习 了解SQL的基本概念:首先,你…...

【刷题笔记2】
刷题笔记2 最小公倍数、最大公约数 两个数的最大公约数两数乘积/最小公倍数 #<include> cmath; int a,b; int mgcd(a,b);//求最大公约数复制字符串substr()函数 s.substr(pos, len) :pos的默认值是0,len的默认值是s.size() - pos string a1;in…...

Kafka之集群搭建
1. 为什么要使用kafka集群 单机服务下,Kafka已经具备了非常高的性能。TPS能够达到百万级别。但是,在实际工作中使用时,单机搭建的Kafka会有很大的局限性。 消息太多,需要分开保存。Kafka是面向海量消息设计的,一个T…...

Linux备忘手册
常⽤命令 作⽤ shutdown -h now 即刻关机 shutdown -h 10 10分钟后关机 shutdown -h 11:00 11:00关机 shutdown -h 10 预定时间关机(10分钟后) shutdown -c 取消指定时间关机 shutdown -r now 重启 shutdown -r 10 10分钟之后重启 shutdown -…...