欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    最新嵌入式实时操作系统μCOS原理与实践5PPT课件.ppt

    • 资源ID:59524963       资源大小:1,009KB        全文页数:25页
    • 资源格式: PPT        下载积分:20金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要20金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    最新嵌入式实时操作系统μCOS原理与实践5PPT课件.ppt

    嵌入式实时操作系统嵌入式实时操作系统COSCOS原理原理与实践与实践5 5作者卢有亮作者卢有亮 图书图书PPT和全部代码下载和全部代码下载http:/ 嵌入式实时操作系统原理与实践嵌入式实时操作系统原理与实践第5章 消息管理5.1 消息邮箱5.1.1 建立消息邮箱5.1.2等消息5.1.3 发消息5.1.4 删除消息邮箱5.1.5放弃邮箱等待5.1.6 无等待请求消息5.1.7查询邮箱状态5.1.8 消息邮箱的例子5.2 消息队列5.2.1 消息队列数据结构5.2.2 初始化消息队列5.2.3 建立消息队列5.2.4发消息到消息队列5.2.5等待消息队列中的消息5.2.6删除消息队列5.2.7取得消息队列的状态5.2.8消息队列应用举例习题作者卢有亮作者卢有亮 图书图书PPT和全部代码下载和全部代码下载http:/ 嵌入式实时操作系统原理与实践嵌入式实时操作系统原理与实践作者卢有亮作者卢有亮 图书图书PPT和全部代码下载和全部代码下载http:/ 嵌入式实时操作系统原理与实践嵌入式实时操作系统原理与实践作者卢有亮作者卢有亮 图书图书PPT和全部代码下载和全部代码下载http:/ 嵌入式实时操作系统原理与实践嵌入式实时操作系统原理与实践作者卢有亮作者卢有亮 图书图书PPT和全部代码下载和全部代码下载http:/ 嵌入式实时操作系统原理与实践嵌入式实时操作系统原理与实践作者卢有亮作者卢有亮 图书图书PPT和全部代码下载和全部代码下载http:/ 嵌入式实时操作系统原理与实践嵌入式实时操作系统原理与实践作者卢有亮作者卢有亮 图书图书PPT和全部代码下载和全部代码下载http:/ 嵌入式实时操作系统原理与实践嵌入式实时操作系统原理与实践作者卢有亮作者卢有亮 图书图书PPT和全部代码下载和全部代码下载http:/ 嵌入式实时操作系统原理与实践嵌入式实时操作系统原理与实践5.1.4 删除消息邮箱删除消息邮箱当消息邮箱不再使用了,就应该尽快归还给系统,即将消息占用的ECB归还给ECB空闲链表以备它用。消息邮箱的删除函数是OSMboxDel。删除一个消息也要涉及方方面面,因为可能有任务正在等待这个邮箱中的消息。表5.5删除消息邮箱的函数OSMboxDel解析作者卢有亮作者卢有亮 图书图书PPT和全部代码下载和全部代码下载http:/ 嵌入式实时操作系统原理与实践嵌入式实时操作系统原理与实践5.1.5放弃邮箱等待放弃邮箱等待同放弃对信号量的等待类似,放弃等待邮箱也绝对不会是放弃本任务对邮箱的等待。放弃等待邮箱函数将放弃的是所有等待某邮箱的任务对该邮箱的等待或等待某邮箱的优先级最高的任务对邮箱的等待。表5.6放弃等待邮箱函数OSMboxPendAbort解析流程如下:1.检查事件控制块指针是否有效及事件控制块类型是否有效。2.如果pevent-OSEventGrp为0说明没有任务等待消息邮箱,取消等待的任务数是0,返回0。3.否则根据参数opt(选项)进行分支转移,如为OS_PEND_OPT_BROADCAST,使用while语句循环地将等待该邮箱的每个任务用OS_EventTaskRdy来取消等待并使其就绪(除非任务还被挂起);如果为其他值则只将最高优先级的任务取消等待并就绪之。4.返回取消等待信号量的任务数。作者卢有亮作者卢有亮 图书图书PPT和全部代码下载和全部代码下载http:/ 嵌入式实时操作系统原理与实践嵌入式实时操作系统原理与实践5.1.6 无等待请求消息无等待请求消息在中断服务程序和有些用户任务中,需要无等待的请求消息邮箱。也就是说,到邮箱中取邮件,如果有邮件就获得邮件,如果没有并不阻塞自己,而是继续执行其他代码。OSMboxAccept就是无等待的请求消息邮箱函数,参数是请求的消息邮箱的ECB指针。该函数的返回值是指向邮箱的指针,如果没有取得消息,那么就返回空指针。表5.7无等待地请求消息邮箱函数OSMboxAccept解析首先参数检查ECB是否有效,如果有效,将消息邮箱中邮件的地址OSEventPtr赋值给pmsg,然后清邮箱内容,返回获得的邮件的地址pmsg。这样,如果邮箱中有邮件,那么返回邮件的地址,如果没有,返回值就是空地址。作者卢有亮作者卢有亮 图书图书PPT和全部代码下载和全部代码下载http:/ 嵌入式实时操作系统原理与实践嵌入式实时操作系统原理与实践5.1.7查询邮箱状态查询邮箱状态消息邮箱状态查询函数OSMboxQuery的参数是ECB地址和一个指向OS_MBOX_DATA类型的地址。ECB地址指向邮箱,OS_MBOX_DATA类型的地址指向返回结果的一个S_MBOX_DATA类型的对象。表5.9查询消息邮箱状态函数OSMboxQuery解析作者卢有亮作者卢有亮 图书图书PPT和全部代码下载和全部代码下载http:/ 嵌入式实时操作系统原理与实践嵌入式实时操作系统原理与实践5.1.8 消息邮箱的例子消息邮箱的例子假设有任务TaskMessageSen和TaskMessageRec,TaskMessageSen在事件片1创建一个邮箱,如果邮箱中已没有邮件,每秒向邮箱发送一个消息,消息内容为从0开始的计数值,该计数值每秒加1。任务TaskMessageRec从时间1开始,做的事情就是查看邮箱,然后把邮件打印出来。现在我们采用邮件管理完成这两个任务的设计。作者卢有亮作者卢有亮 图书图书PPT和全部代码下载和全部代码下载http:/ 嵌入式实时操作系统原理与实践嵌入式实时操作系统原理与实践5.2 消息队列消息队列 消息邮箱中只能存放一则消息,太少了,能不能像电子邮件一样,管理多条消息呢?C/OS为实现这一目的,设计了消息队列管理。使用消息队列管理,就允许使用可以容纳多条信息的大邮箱,按照先进先出(FIFO)的原则,发送和接收邮件。需要注意的是,这样的邮箱不是操作系统提供的,而是要由用户任务来提供。操作系统提供的是对其进行管理的程序。另外,邮箱中的内容仍然是邮件的地址。消息队列的代码单独存放在os_q.c中 作者卢有亮作者卢有亮 图书图书PPT和全部代码下载和全部代码下载http:/ 嵌入式实时操作系统原理与实践嵌入式实时操作系统原理与实践5.2.1 消息队列数据结构消息队列数据结构1消息队列及其控制块消息队列及其控制块typedef struct os_q /*队列控制块队列控制块QCB*/struct os_q *OSQPtr;/*在空闲在空闲QCB链表中,指示下一个链表中,指示下一个QCB*/void *OSQStart;/*队列数据的首地址队列数据的首地址*/void *OSQEnd;/*队列数据的末地址队列数据的末地址*/void *OSQIn;/*指示下次插入消息的位置指示下次插入消息的位置*/void *OSQOut;/*指示下次提取消息的位置指示下次提取消息的位置*/INT16U OSQSize;/*队列的最大容量队列的最大容量*/INT16U OSQEntries;/*队列中当前的消息量队列中当前的消息量*/OS_Q;2消息控制块实体消息控制块实体 OS_Q OSQTblOS_MAX_QS;3空闲消息队列链表 消息控制块QCB中OSQWaitList用来指示空闲消息控制块QCB链表中的下一个消息控制块QCB。作者卢有亮作者卢有亮 图书图书PPT和全部代码下载和全部代码下载http:/ 嵌入式实时操作系统原理与实践嵌入式实时操作系统原理与实践作者卢有亮作者卢有亮 图书图书PPT和全部代码下载和全部代码下载http:/ 嵌入式实时操作系统原理与实践嵌入式实时操作系统原理与实践5.2.2 初始化消息队列初始化消息队列消息队列初始化函数在操作系统初始化时被调用,主要用于初始化消息队列使用的数据结构。消息队列初始化函数的名称为OS_QInit表5.13消息队列初始化函数OS_QInit解析1.将所有QCB全部清为全0。2.使用for循环将除最后一个消息控制块OSQTblOS_MAX_QS-1之外的所有消息控制块初始化,构建了单向的消息队列空闲链表。3.初始化最后一个QCB,将消息队列空闲链表完善。作者卢有亮作者卢有亮 图书图书PPT和全部代码下载和全部代码下载http:/ 嵌入式实时操作系统原理与实践嵌入式实时操作系统原理与实践5.2.3 建立消息队列建立消息队列创建消息队列就是将从ECB空闲链表中取下一个事件控制块ECB来,将其用于消息队列管理。并从QCB空闲链表的表头取下一个消息控制块QCB,将其各种属性进行设置,用于指示消息的位置以及提取和插入消息的位置。创建消息队列的函数名称为OSQCreate。表5.14消息队列创建函数OSQCreate分析 1.判断是否在中断服务程序中调用本函数,如果是就返回。2.取得消息队列的链表首地址送pevent。3.判断pevent是否为空指针,如果是则说明是系统已经没有空闲的ECB可供使用,填写错误信息,返回空指针。4.从空闲ECB链表取下表头。5.空闲QCB链表首地址送pq。6.如果没有有效的空闲QCB链表,恢复空闲ECB链表,返回空ECB指针。7.在空闲QCB链表中取一个pq指向的QCB,对其进行初始化。设置OSQStart为消息指针数组的首地址start。OSQEnd值为&startsize即消息指针数组(消息队列)中最后一个指针后面的一个地址。OSQIn和OSQOut也设置为start。OSQSize的值为size。OSQEntries为0表示该队列中还没有消息。8.接下来对pevent指向的ECB进行初始化。OSEventType为OS_EVENT_TYPE_Q表示用于消息队列管理。OSEventCnt在这里没有用,设置为0。OSEventPtr指向QCB,即设置为pq。调用OS_EventWaitListInit初始化ECB中的事件等待表和事件等待组。9.返回ECB指针。作者卢有亮作者卢有亮 图书图书PPT和全部代码下载和全部代码下载http:/ 嵌入式实时操作系统原理与实践嵌入式实时操作系统原理与实践5.2.4发消息到消息队列发消息到消息队列发消息到消息队列的函数名称为OSQPost。参数是事件控制块ECB的地址pevent和消息的地址pmsg。表5.15发消息到消息对列函数OSQPost分析 1.首先进行参数检查,如果参数检查失败则返回。2.如果有任务等待消息队列中的消息,那么消息队列现在必然是空的。不需要将消息存入队列,而直接将消息给在等待的优先级最高的消息,并将其就绪。执行一次任务调度然后返回。3.如果没有任务等待消息队列中的消息,那么就需要将该消息加入消息队列。如果消息队列是满的,不能容纳更多的消息,返回出错信息。否则,在消息控制块QCB的OSQIn所指示的消息指针数组位置存入该消息,然后将OSQIn 指向下一个单元以便下次使用。判断OSQIn是否到超过了表尾,如果超过了,将其指向队首。然后返回。作者卢有亮作者卢有亮 图书图书PPT和全部代码下载和全部代码下载http:/ 嵌入式实时操作系统原理与实践嵌入式实时操作系统原理与实践5.2.5等待消息队列中的消息等待消息队列中的消息等待消息队列的消息是消息队列管理中的又一核心函数。如果消息队列中有消息,那么就取出消息,然后返回;如果没有消息,只有在ECB中标记自己的等待,然后阻塞。等待消息队列的函数的名称为OSQPend,参数是ECB的指针、等待超时时间和返回函数执行信息的指针的perr。函数的返回值是指向消息的指针。表5.16消息队列等待函数OSQPend分析1.首先进行参数、ECB类型、中断、调度锁检查,失败则返回。2.取得ECB中的QCB指针,查询消息队列中是否有消息。如果有消息,那么请求直接成功,取得消息队列中OSQOut所指的消息,将OSQOut指向消息队列中的下一个元素以备下一次的消息提取。如果OSQOut指向了消息队列之外,就指向消息队列的首地址。将OSQEntries减1表示消息数量减少了一个。然后返回消息的指针。3.如果没有消息,那么任务就只有被阻塞。首先在TCB中的STCBStat中添加消息队列等待标志,任务延时时间,初始化等待状态,然后调用OS_EventTaskWait 添加等待标志和取消就绪标志,接着调用OS_Sched执行一次任务调度。4.任务恢复运行后,根据TCB中的等待状态OSTCBStatPend决定程序走向。如果获得了消息,进行一些处理后返回该消息。如果是退出等待,或是等待超时,分别填写没有取得消息的原因,然后返回空指针。作者卢有亮作者卢有亮 图书图书PPT和全部代码下载和全部代码下载http:/ 嵌入式实时操作系统原理与实践嵌入式实时操作系统原理与实践5.2.6删除消息队列删除消息队列当消息队列不再使用了,就应该尽快归还给系统,即将消息占用的ECB归还给ECB空闲链表以备它用,将QCB也归还给空闲QCB链表。删除消息队列的函数的名称为OSQDel,参数是ECB的指针、删除操作的选项opt和返回函数执行信息的指针的perr。其中opt的值为 OS_DEL_NO_PEND 表示只有当没有任务等待该消息队列的时候才允许删除,opt的值为OS_DEL_ALWAYS 表示无论如何都删除。如果成功删除,返回空指针;否则返回ECB的指针。表5.17消息队列删除函数OSQDel解析 1.首先进行参数的检查。2.根据选项opt决定程序的分支3.如果opt不是这两个值当中的一个,那就是说明是错误的选项,也属于参数检查失败。因此,标记错误信息perr为OS_ERR_INVALID_OPT后,直接返回原来ECB指针pevent。作者卢有亮作者卢有亮 图书图书PPT和全部代码下载和全部代码下载http:/ 嵌入式实时操作系统原理与实践嵌入式实时操作系统原理与实践5.2.7取得消息队列的状态取得消息队列的状态消息队列数据OS_Q_DATA是为返回消息队列信息而提供的,因此用户程序如果想了解消息队列的信息,要先创建OS_Q_DATA的实例。然后以消息队列所在ECB地址及该实例的地址为指针为参数调用获取消息队列的状态函数OSQQuery表5.19获取消息队列的状态函数OSQQuery解析作者卢有亮作者卢有亮 图书图书PPT和全部代码下载和全部代码下载http:/ 嵌入式实时操作系统原理与实践嵌入式实时操作系统原理与实践5.2.8消息队列应用举例消息队列应用举例假设有任务假设有任务TaskQSen和和TaskQRec,TaskQSen在时间片在时间片1创建一个消息队列,然创建一个消息队列,然后每秒向消息队列中发邮件,其余时间延时。后每秒向消息队列中发邮件,其余时间延时。TaskQRec每每2秒从消息队列中取邮秒从消息队列中取邮件,然后延时。件,然后延时。表5.20消息邮箱的例子作者卢有亮作者卢有亮 图书图书PPT和全部代码下载和全部代码下载http:/ 嵌入式实时操作系统原理与实践嵌入式实时操作系统原理与实践习题习题1.比较消息管理和信号量管理,指出他们的区别和共同点。比较消息管理和信号量管理,指出他们的区别和共同点。2.消息队列管理使用了哪些数据结构,请描述他们之间的关系。消息队列管理使用了哪些数据结构,请描述他们之间的关系。3.请分析等待消息的过程都涉及了哪些数据结构,画出消息等待的流程。请分析等待消息的过程都涉及了哪些数据结构,画出消息等待的流程。4.请分析发消息的过程都涉及了哪些数据结构,画出发消息的流程。请分析发消息的过程都涉及了哪些数据结构,画出发消息的流程。5.请分析删除消息队列的过程都涉及了哪些数据结构,画出删除消息队列的请分析删除消息队列的过程都涉及了哪些数据结构,画出删除消息队列的流程。流程。6.请分析提取消息队列信息的过程都涉及了哪些数据结构,画出提取消息队请分析提取消息队列信息的过程都涉及了哪些数据结构,画出提取消息队列信息的流程。列信息的流程。7.有任务有任务A、任务、任务B。任务。任务A接收屏幕上输入的数据,然后将该数据送给任务接收屏幕上输入的数据,然后将该数据送给任务B,任务,任务B能立刻打印出该数据。请采用消息管理编程实现任务能立刻打印出该数据。请采用消息管理编程实现任务A和任务和任务B并并上机实践。上机实践。8.有任务有任务A、任务、任务B。任务。任务A接收屏幕上输入的数据,然后将该数据送给任务接收屏幕上输入的数据,然后将该数据送给任务B,任务,任务B每每20秒打印一次这秒打印一次这20秒内接收到的数据。请采用消息队列管理编秒内接收到的数据。请采用消息队列管理编程实现任务程实现任务A和任务和任务B并上机实践。并上机实践。

    注意事项

    本文(最新嵌入式实时操作系统μCOS原理与实践5PPT课件.ppt)为本站会员(豆****)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开