嵌入式系统及应用.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
嵌入式系统及应用.ppt

* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 管道机制的主要数据结构 管道控制块 Byte count Data buffer Buffer size Output position Input position Task3 Task4 …… 接收任务等待列表 Task1 Task2 …… 发送任务等待列表 * 典型的管道操作 创建和删除一个管道; 读或写管道; 管道上的选择操作; Flush操作。 * 典型的管道操作 管道创建和删除 创建管道的操作给调用者返回两个描述符,后续的调用引用这些描述符。一个描述符只能用于写,而另一个只能用于读。 创建一个命名管道与创建文件类似,在命名管道建立之后,在文件系统中有一个可识别的名字,可以使用open操作打开它。因此,调用者也必须说明是采用读方式打开还是写方式打开。 与open操作相对应,close操作用于关闭并删除一个命名管道。 * 典型的管道操作 管道读和写 读操作把管道中的数据返回给调用者(任务)。任务应指定读多少数据。如果指定的大小超过管道中可以得到的数据量,则任务可以选择阻塞,等待剩余的数据到达。 * 典型的管道操作 选择(Select)操作 Select操作允许一个任务阻塞并等待一个或多个管道上的一个指定条件的发生。 Task1 ISR Task2 Task3 Pipe1 Pipe2 Pipe3 任务Task3等待从Pipe1和Pipe2这两个管道读数据并写到第三个管道Pipe3上。在这种情况下,当头两个管道中的任意一个有数据时,Select调用返回。 * 典型的管道操作 Flush操作 Flush操作将所有的数据从管道中清除,使管道回到最初创建的状态。 * 管道机制的典型应用 主要用于任务到任务或ISR到任务的数据传输 也可用于任务之间的同步 * 管道机制的典型应用 Task A Task B Select操作 Select操作 管道C 管道D 任务A和任务B打开两个管道作为任务间的通信方式:打开管道C作为从任务A到任务B的数据传输,打开管道D作为从任务B到任务A的回应。 * 谢谢! * * * * * * * * * * * * * * * * * * * * * * * * 事件标志组、事件标志节点及 任务控制块之间的关系 OS_FLAG_GRP OS_FLAG_NODE .OSTCBFlagNode .OSFlagNodeFlags .OSFlagNodeWaitType .OSFlagNodeNext .OSFlagNodePrev .OSFlagNodeTCB .OSFlagWaitList .OSFlagFlags .OSFlagType AND or OR AND or OR AND or OR OS_EVENT_TYPE_FLAG 0 0 .OSTCBFlagNode OS_TCB OS_TCB OS_TCB * 典型的事件操作 创建事件集 删除事件集 发送事件(集) 获取事件(集):等待和无等待; 区别在于:调用前者时,若期望的事件标志没有置位,任务将被挂起,直到事件标志置位或等待超时。调用后者时,若期望的事件没发生,则调用的任务不挂起,返回出错代码。 获取有关事件集的各种信息 * 创建事件集 申请空闲事件集控制块,设置事件集属性,初始化控制块中的域,分配ID号 * 创建一个事件标志组OSFlagCreate() OS_FLAG_GRP *OSFlagCreate(OS_FLAGS flags, INT8U *err) { OS_FLAG_GRP *pgrp; pgrp=OSFlagFreeList;//获取一个空闲事件标志组结构 if(pgrp!=(OS_FLAG_GRP *)0){//获取成功,初始化该结构中的域 OSFlagFreeList=(OS_FLAG_GRP *)OSFlagFreeList-OSFlagWaitList;//调整空闲结构链头指针 pgrp-OSFlagType=OS_EVENT_TYPE_FLAG; pgrp-OSFlagFlags=flags;//初始化当前各事件标志的状态 pgrp-OSFlagWaitList=(void *)0;//尚无任务等待事件标志 *err=OS_NO_ERR; }else{*err=OS_FLAG_GRP_DEPLETED;} return(pgrp); } * 接收事件(集) 在接收事件(集)时可以有如下选项 WAIT

文档评论(0)

magui + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

版权声明书
用户编号:8140007116000003

1亿VIP精品文档

相关文档