找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3334|回复: 0
打印 上一主题 下一主题
收起左侧

uC/OS-II任务间的同步通信

[复制链接]
跳转到指定楼层
楼主
ID:51024 发表于 2014-8-10 12:15 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
    当你开始去学习uC/OS-ii的时候,心里面肯定有底,觉得自己的单片机或者某些语言学的还算是可以,然后当接到复杂的系统,或者在某些逻辑方面难以用简单的过程控制去实现的时候,很多时候心里面总有一个想法,如果有某样一种方法能够使我很容易的搞定那该多好啊!在很大程度上操作系统不是说你想让自己的项目中添加就一定可以添加的(拿uC/OS-ii为例),因为在使用OS的时候,工程师们往往会面临很多的问题,是否会?是否熟悉?这个项目是否一定得去使用,有时候我自己都被这个问题所困扰,因为我也是刚刚开始接触uC/OS-ii,其实我们并不用时刻去考虑这个问题,还是得把重心放在学习这个系统上面,当自己确实对其可以驾驭的时候,同时某个项目搞不定了,那么你一定会想到应该使用OS了,那么就很顺其自然的运用到了,用的好或者差就是自己所掌握的情况了。上面是我自己学习uC/OS-ii以来一直难以想通的地方,在学习的过程中时刻想着在自己以前做过的项目里面加入uC/OS-ii,也许这样就感觉十分的“高大上”了,其实不然,用的好确实厉害,如果生搬硬套可能会导致系统都没法工作,而且不知道自己究竟想干嘛……
    由于平时也很忙,所以没有太多的时间去写一些东西,只能利用周末了,这次的主题是“通信”和“同步”,对于这两个词我们并不陌生,通信嘛……不就是相互交换东西,你的给我,我的给你,同步---说白了就是相对静止,共同进步的意思,在uC/OS-ii中的通信和同步是相对任务而言的,需要记住的地方是在OS中,所有的对象都是任务,一切的工作都是围绕任务在转动,对于task而言,我们所想到的是OSTCB(任务控制块),后面会具体讲到这个的作用,对于通信而言,需要靠事件(EVENT)来完成,那么就有了一个新的名词(OSECB),在uC/OS-ii中事件包括:信号量(semaphore其中互斥信号量留在后面进行说明)、消息邮箱(mail-box)、消息队列(query)。
    信号量(Sem):通过字面意思可以了解到是信号(flag),作为标志使用,主要做判断,就好比是只能有了钥匙才可以开门这样子,所以sem就如同这个钥匙,任务只有得到了sem才可以运行,换句话说就处在了Running状态,没有得到sem的任务处于waiting或者pending状态。
    消息邮箱(M-box):邮箱就是传消息的,任务与任务之间可以通过邮箱来交换信息,其实这个时间和sem也挺像的,只有获得了消息才可以使任务处于Running状态,只不过相比sem而言可能会高端一点点,功能多了一些----可以传值了,因为毕竟是邮箱嘛,可以装东西。
    消息队列(Query):消息队列,一听就是一整个队列,很多很多的意思,其实它的功能和m-box的功能差不多,只不过是m-box的升级版,传递的值变得很多了,毕竟是队列嘛……m-box有的功能,query都存在!这就是它的优势,可以传递很多的值。
    对于初学者来说关于事件处理的函数有很多,一下在都不知道从何下手去看和实验,这里介绍在uC/OS-ii任务间通信最为关键的两个函数:OS***Pend()和OS***Post(),其中的***表示具体事件。对于他们的执行过程我们可以通过Debug来理清楚,具体如下:当事件控制块(OSECB)中的相关量为空,例如sem中的cnt为0或者m-box为null的时候,只要有任务调用OS***Pend()的时候会引发任务切换(不是处在中断中),当前任务被挂起,如果事件控制块中的相关量不为空则任务正常运行,当任务中调用了OSTimeDly()函数(前面讲过其作用),则会进行一次任务调度。如果ECB中的相关量为空,任务调用OS***Pend()的时候会产生任务切换,当前任务执行被断开了,假设断开点为A,并将当前任务挂起,如果在另一个任务中调用OS***Post()时,会对事件的相关量进行改变,例如sem中的cnt加1或者m-box不在为空,则同时会切换到waiting状态下等待这些信号的最高优先级任务中,并且在断开点处继续运行该任务,如果说没有任务处于waiting状态,则任务会正常运行。事件操作的基本流程如上所述。有一点需要注意,出了空闲任务之外的所有任务必须在任务中合适的位置调用系统提供的函数OSTimeDly(),使当前任务的运行延时一段时间并进行一次任务调度,以让出CPU的使用权,使低优先级的任务得以运行。


分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表