已阅读5页,还剩18页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
西安邮电学院计算机系 1 2020 1 26 嵌入式实时操作系统 C OS II 西安邮电学院 计算机系Tel 85383409 ZQL Email zql 2020 1 26 西安邮电学院计算机系 2 第5章信号量集 西安邮电学院计算机系 3 2020 1 26 第5章目录 1 信号量集的结构2 信号量集的操作 西安邮电学院计算机系 4 2020 1 26 在实际应用中 任务常需要与多个事件同步 即需要根据多个逻辑信号量组合作用 逻辑运算 的结果来决定任务的运行方式 uC OS II中定义了一种特殊的数据结构 信号量集 来专用于此类事务的管理 信号量集分为 与信号量集 和 或信号量集 与 信号量集 当信号量集中所有信号量都 有效 时 该信号量集 有效 或 信号量集 当信号量集中有一个信号量为 有效 时 该信号量集 有效 备注 有点类似组合电路中的 逻辑运算电路 西安邮电学院计算机系 5 2020 1 26 第5章目录 1 信号量集的结构2 信号量集的操作 西安邮电学院计算机系 6 2020 1 26 5 1信号量集的结构 一 信号量集由两部分组成 标志组 用于存放信号量集中的所有信号 等待任务链表 链表中的节点 Node 对应一个正在等待信号量集的等待任务 Task 备注 信号量集根据这个链表来管理等待任务 西安邮电学院计算机系 7 2020 1 26 5 1信号量集的结构 信号量集的组成 信号量集是由标志组 等待任务链表 任务控制块组成的关联数据结构 即信号量集 标志组 等待任务链表 等待任务控制块uC OS II基于这个关联数据结构实现信号量集管理 信号量集结构图 西安邮电学院计算机系 8 2020 1 26 5 1信号量集的结构 二 信号量集的标志组 uC OS II使用 标志组 的结构OS FLAG GRP来描述 管理信号量集 其结构定义如下 typedefstruct INT8UOSFlagType 信号量集类型void OSFlageWaitList 等待任务链表指针OS FLAGSOSFlagFlags 当前信号量值表 OS FLAG GRP 西安邮电学院计算机系 9 2020 1 26 5 1信号量集的结构 三 关于 信号量标志组 OS FLAG GRP结构的说明 成员OSFlagType 是一个标识 用于标示这是一个信号量集结构 其值固定为OS EVENT TYPE FLAG 成员 OSFlageWaitList 指针 指向等待本信号量集的 等待任务链表 成员OSFlagFlags 是一个OS FLAGS类型变量 用于存放信号量集所有信号量的状态 每个信号量占据1bit 1 0 信号量有 无 效 OS FLAGS数据类型是在OS CFG H文件中定义的整型数 在ARM版的uC OS II中typedefINT16UOS FLAGS uC OS II初始化时 按照OS CFG H中的OS MAX FLAGS常数来创建含有OS MAX FLAGS个节点的标志组 用其指针成员构成 空信号量集标志组链表 并系统变量OSFlagFreeList指向该链表 备注 西安邮电学院计算机系 10 2020 1 26 5 1信号量集的结构 四 等待任务链表 节点OS FLAG NODE 信号量集使用一个双向链表来组织等待任务 每个 等待任务 都是该链表中的一个节点 等待任务链表节点OS FLAG NODE结构如下 该结构定义在uCOS II H文件中 typedefstruct EventFlagWaitListNode void OSFlagNodeNext PointertonextNODEinwaitlist void OSFlagNodePrev PointertopreviousNODEinwaitlist void OSFlagNodeTCB PointertoTCBofwaitingtask void OSFlagNodeFlagGrp PointertoEventFlagGroup OS FLAGSOSFlagNodeFlags Eventflagtowaiton INT8UOSFlagNodeWaitType Typeofwait OS FLAG NODE 西安邮电学院计算机系 11 2020 1 26 5 1信号量集的结构 四 等待任务链表 节点OS FLAG NODE OSFlageNodeFlages 信号量过滤器 信号量屏蔽字 1 0 使用 屏蔽该信号量 OSFlageNodeWaitType 信号量逻辑运算选择器 指示信号量集有效于各信号量状态的关系 等待任务只有当信号量集有效时 所指定的信号量符合逻辑运算选择器指定的关系时 该等待任务方被转为 就绪任务 状态 备注 西安邮电学院计算机系 12 2020 1 26 5 1信号量集的结构 OSFlageNodeWaitType成员的取值与含义 西安邮电学院计算机系 13 2020 1 26 5 1信号量集的结构 五 信号量集 信号量集是由标志组 等待任务链表 任务控制块组成的关联数据结构 即信号量集 标志组 等待任务链表 等待任务控制块uC OS II基于这个关联数据结构实现信号量集管理 信号量集结构图 西安邮电学院计算机系 14 2020 1 26 第5章目录 1 信号量集的结构2 信号量集的操作 西安邮电学院计算机系 15 2020 1 26 信号量集的数据结构 信号量集 标志组 等待任务链表 等待任务控制块 信号量集结构图 思考 结合信号量集结构 对信号量集有些什么基本操作呢 用户需要的 uC OS II提供的 信号量集基本操作 创建信号量集 请求信号量集 向信号量集发信号 删除信号量集 西安邮电学院计算机系 16 2020 1 26 5 2信号量集的操作 一 创建信号量集 任务使用系统函数OSFlagCreate 来创建一个信号量集 其函数原型 OS FLAG GRP OSFlagCreate OS FLAGSflags 信号的初始值INT8U err 错误信息 本函数的主要工作 从OSFlageFreeList链表申请一个标志组 OS FLAG GRP 并赋以初值 赋初值OSFlagType OS EVENT TYPE FLAG赋初值OSFlagWaitList Null赋初值OSFlagFlags flags 函数入口参数 本函数应用注意事项 正常情况 函数返回标志组指针 否则返回NULL 本函数只能应用于Task中 本函数定义于OS FLAG C文件 西安邮电学院计算机系 17 2020 1 26 5 2信号量集的操作 二 请求信号量集 任务使用系统函数OSFlagPend 来申请一个信号量集 其函数原型 OS FLAGSOSFlagPend OS FLAG GRP pgrp 请求的信号量集指针OS FLAGSflags 信号过滤器INT8Uwait type 逻辑运算类型INT16Utimeout 等待时限INT8U err 错误信息 本函数的主要工作 向pgrp指定的信号量集添加一个等待任务节点 赋初值OSFlagNodeFlags OSFlagNoteWaitType 以及OS TCB中的等待时限 本函数应用注意事项 任务执行本函数后即等待信号量集 请求信号量集 超时 则返回0 本函数只能应用于Task中 本函数定义于OS FLAG C文件 西安邮电学院计算机系 18 2020 1 26 请求信号量集系统函数OSFlagPend 函数原型 OS FLAGSOSFlagPend OS FLAG GRP pgrp 请求的信号量集指针OS FLAGSflags 信号过滤器INT8Uwait type 逻辑运算类型INT16Utimeout 等待时限INT8U err 错误信息 本函数的wait type参数说明 该参数有4种取值 信号相应后的处理方式 在该函数中使用OS FLAG CONSUME系统常数 申请的信号量得到响应后将被清除 使用方式 wait type OS FLAG CONSUME 西安邮电学院计算机系 19 2020 1 26 5 2信号量集的操作 三 发送信号to信号量集 任务使用系统函数OSFlagPost 向信号量集发送信号 置位 清0 事件标志组中的信号标志 其函数原型 OS FLAGSOSFlagPost OS FLAG GRP pgrp 操作的信号量集指针OS FLAGSflags 信号过滤器INT8Uopt 信号操作的方式选择置1 清0INT8U err 错误信息 本函数的主要工作 改写pgrp指定的信号量集的信号量值 OSFlagFlags 参数opt OS FLAG SET OS FLAG CLR 分别对flags指定信号 置1 清0 函数返回前进行一次任务调度 从任务等待列表中删除等待任务节点 备注 该函数可以在ISR中使用 西安邮电学院计算机系 20 2020 1 26 5 2信号量集的操作 四 删除信号量集 任务使用系统函数OSFlagDel 删除一个信号量集 其函数原型 OS FLAG GRP OSFlagDel OS FLAG GRP pgrp 删除的信号量集指针INT8Uopt 删除方式选择INT8U err 错误信息 本函数的主要工作 特别提示 删除共享资源前 先删除使用该资源的任务 删除pgrp指定的信号量集 参数opt OS DEL NO PEND OS DEL ALWAYS OS DEL NO PEND 若没有等待任务时 删除信号量集 否则 err OS ERR TASK WAITING返回 OS DEL ALWAYS 直接删除信号量集 其中等待该信号量集的任务皆标志为 就绪 西安邮电学院计算机系 21 2020 1 26 5 2信号量集的操作 五 信号量集应用举例 某系统中有三个任务 Task Door Task SC1 Task SC2 Task T Task SC1产生一个信号A Task SC2产生一个信号B Task T是一个周期性任务 每5秒钟执行一次 功能是清除信号A B Task Door运行的条件是这两个信号都有效 分析 使用信号量集 Task T周期性地发送 清0 信号量集 Task SCx发送 置位 信号量集 信号量集有效 全1 时启动Task Door 西安邮电学院计算机系 22 2020 1 26 defineTASK STK SIZE512OS STKTask SC1 Stk INT8Uerr OS FLAG GRP Sem F voidTask SC1 void ppdata voidmain void OSInit Sem F OSFlageCreate 0 err OSTaskCreate 创建系统各任务 OSStart 5 2信号量集的操作 应用举例 voidTask Door void ppdata OSFlagePend Sem F OS FLAGS 3 OS FLAG WAIT SET ALL 0 err 打开金库保险 西安邮电学院计算机系 23 2020 1 26 5 2
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 酒泉市农村信用社联合社秋季校园招聘笔试备考题库(浓缩500题)及参考答案详解1套
- 庆阳市农村信用社联合社秋季校园招聘笔试备考题库(浓缩500题)及一套答案详解
- 黔东南苗族侗族自治州农村信用社联合社秋季校园招聘笔试备考题库(浓缩500题)附答案详解(培优b卷)
- 昆明市农村信用社联合社秋季校园招聘笔试备考题库(浓缩500题)含答案详解(b卷)
- 无锡市农村信用社联合社秋季校园招聘笔试备考题库(浓缩500题)完整答案详解
- 通化市农村信用社联合社秋季校园招聘笔试备考题库(浓缩500题)有完整答案详解
- 黔南布依族苗族自治州农村信用社联合社秋季校园招聘笔试备考题库(浓缩500题)及答案详解(历年真题)
- 广元市农村信用社联合社秋季校园招聘笔试备考题库(浓缩500题)含答案详解(巩固)
- 2026年张掖市农村信用社联合社秋季校园招聘笔试备考题库(浓缩500题)附答案详解ab卷
- 河南省农村信用社联合社秋季校园招聘笔试备考题库(浓缩500题)含答案详解(考试直接用)
- 乙二醇合同范本
- 3.3.2元素符号和元素周期表教学设计-九年级化学人教版上册
- 消化内镜教学课件
- 垂钓园转让合同(标准版)
- 医疗耗材采购流程及合同范本
- 智算产业园人才引进与培养方案
- 2024贵州省社区《网格员》备考题汇编(含答案)
- 无人机侦察机课件
- 西藏公务员2025年真题
- 安全生产第二季度会议纪要
- 基孔肯雅热预防宣传课件
评论
0/150
提交评论