找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2167|回复: 0
收起左侧

任务行为同步

[复制链接]
ID:60266 发表于 2014-8-19 23:09 | 显示全部楼层 |阅读模式
系统的整体功能是通过各个任务 和ISR的协同运行来实现的。运行步骤的协调就是行为同步
一 .用于行为同步的通信手段
1. 任务之间的动作配合和协调关系称为行为同步。
体现在:
任务之间的运行按照某种预定的顺序来进行。在一次同步过程中,一个任务(ISR)为控制方,使用OS的通信手段发出控制信息;另一个任务为被控制方,通过通信手段得到控制信息后就进入就绪状态,根据优先级高低,或立即进入运行态,或随后进入运行态。
被控制方的运行状态由控制方发出的信息来控制。
2.实现行为同步的通信手段
  • 二值信号量
取值只能为01的信号量称为二值信号量。 表示某种事件是否发生。
使用范围:被控制方总能够及时响应控制方发出的信号,完成响应处理任务。并在下一次信号到来之前进入等待状态。
直接使用 :计数信号量或消息邮箱作为二值信号量。


  • 计数信号量
使用范围:被控制方不能保证在下一次信号来到之前处理完本次控制方发出的信号,但总体上可以响应所有信号。
如果被控制方总能够及时响应控制方发出的信号,完成响应任务,并在下一次信号来之前进入等待状态,则计数信号量=二值信号量。
OSSemPost()
函数使 处于等待该信号量的任务 从等待状态进入就绪状态(不一定运行,要看任务优先级),信号量不加1,如果没有等待的任务,则信号量加1
OSSemPend()
调用它来获取信号量。
如果当前信号量为0,则调用后任务挂起,等待控制方发送的信号量。
如果当前信号量不为0,则调用后,将信号量-1,然后继续运行,
  • 事件标志组
可以实现多个任务包括ISR协同控制一个任务,当哥哥先关任务先后发出自己的信号后(是事件标准组的对应标志有效),预定的逻辑运算结果有效,触发被控制的任务(使其进入就绪状态)。
  • 消息邮箱
既提供同步的时刻,又向被控制方提供内容。
消息邮箱里只能存放一条信息,在用消息邮箱进行同步控制需要满足条件:任何时候消息的生产速度都比消息的消费速度慢。即,被控制任务总是在等待消息,这和二值信号量类似。
消息邮箱可以放任何类型消息。
消息邮箱可以当二值信号量来用(void *)0表没发生 (void*1)表示发生。
有四个函数
OSMbosCreat(void *msg)
msg为指向初始消息的指针。 当作为行为同步时 msg应设为(void *)0,表示邮箱为空。
OSMbosPost(OS_EVENT *pevent,void *msg)
pevent消息邮箱指针。msg为指向消息的指针。邮箱只存msg。
若有若干任务正在等待该邮箱中的消息,该函数会使等待消息的优先级最高的任务进入就绪态。此时消息已被直接消费,所以msg不再放入邮箱中。
OSMbosPostOpt(OS_EVENT *pevent,void *msg,INT8U opt)
opt为消息分发方式。通常是广播方式。若有若干任务正字等待该邮箱中的消息,则会使所有任务从等待态进入就绪态,此时msg不再放入邮箱中。
OSMbosPend(OS_EVENT *pevent,INT16U timeout,INT8U* err)
函数返回值为指向消息的指针,通过这个指针就可以读取邮箱传递的消息内容。
  • 消息队列
消息队列可以存放对个消息,能够解决消息的临时堆积问题。满足条件。消息的平均生产时间比消息的平均消费时间长;否则再长的消息队列也会溢出。
用一个指针数组来构建消息队列。
OSQ(void**start INT16U size)
start是消息队列的初始位置。指针数组的起始地址。 size是消息队列的长度
小结:通信手段选择
不需传输内容:信号类   二值信号量 计数信号量  事件标志组
需要传递内容:消息类  消息邮箱,消息队列
任何时候生产速度比消费速度慢  简单通信手段  二值信号量  事件标志组  消息邮箱
非周期性同步信息 有缓冲功能的通信手段   计数信号量 消息队列
是多个信号的逻辑运算结果 事件标志组
  • 行为同步
合理安排同步点和任务优先级时获得预期效果的关键。
A:ISR和任务之间同步

注意:与ISR相关联的任务的优先级要足够高。
B:两个任务之间的单向同步

一般用左图 挂起点为尾部  延时函数的时间要大于低优先级任务处理事件的时间。
可以使用消息邮箱的分发功能,使一个事件同时触发两个任务。
C:两个任务直接的双向同步
通信双方相互制约。生产者必须得到消费者的回复才能进行下一个消息的生产。能确认通信每次都成功,没有遗漏。

  • 两个以上任务同步一个任务
采用事件标志组。采用逻辑与或者逻辑或。

回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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