打印

ucosii的一些困惑

[复制链接]
1440|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
victor3l|  楼主 | 2013-8-14 07:18 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
这几天学习一下原子的ucosii移植教程,有些问题不是很明白,请大家解释一下,谢谢!
问题:
1,信号量,消息邮箱,消息队列,标志组这些机制都是为了在任务之间传递某种数据的吗?
2,教程中的各个任务都是小任务,如点灯啊。如果要在大点的系统中应用ucosii,如,把整个6路AD装换看成一个任务,把系统的菜单看成一个任务,把按键扫描看成一个任务,把通信看成一个任务。
这里面就有些数据需要共享,如在菜单中需要很多次的按键,那么是不是在每次需要的时候,发送一个请求按键的消息?另外,数据采集中要根据菜单设置的某些参数,对数据进行处理,那么这些参数,怎么才能传到采集任务中,我要使用全局变量吗?总之任务之间所需要的某些数据该如何传递,是不是使用信号量,消息邮箱,消息队列,标志组这些啊?
3,在大的系统中如何划分任务?在划分任务中需要注意什么限制?

相关帖子

沙发
ballack_linux| | 2013-8-14 09:19 | 只看该作者
呵呵 首先这个问题呢 应该在嵌入式系统里面问才对。
第一个问题,你可以认为是为了任务间传递某种数据,当然它们也的确有那个功能,但是比如信号量,也可以用来控制临界区的访问,诸如此类的功能有很多。
第二个问题,这个问题正好可以用到你第一个问题提到的东西,在多任务系统工作时,按键一般是用中断的方式来触发的,而每按一个按键,可以用消息邮箱或者消息队列,标志组等等来传递按键值,对于参数也是一样的,这些信号量,消息邮箱,消息队列,标志组就是为了防止用太多的全局变量而设置的,全局变量容易被误修改。
第三个问题,这个划分任务,其实每个人都有自己的划分方法,像你自己那样的划分也是可以的,总之我划分的原则就是按功能划分,尽量降低任务功能的耦合度。

使用特权

评论回复
板凳
chenbb8| | 2013-8-14 16:24 | 只看该作者
1、除了消息传递还有同步的功能,比如A函数中建立了一个信号值为0的信号量,然后PEND这个信号量,A任务就会进入阻塞状态,当相应的事件发生后,在ISR中POST这个信号量,A任务就回复就绪态了。
2、你的菜单任务相对于按键来说是信号的接受方,直接pend邮箱或者队列就行了。
3、任务的划分和优先级的选定请看周航慈的 基于嵌入式实时操作系统的程序设计技术,看了你就知道如何在操作系统下更好的设计软件了,经典好书极力推荐。

使用特权

评论回复
地板
victor3l|  楼主 | 2013-8-15 10:17 | 只看该作者
chenbb8 发表于 2013-8-14 16:24
1、除了消息传递还有同步的功能,比如A函数中建立了一个信号值为0的信号量,然后PEND这个信号量,A任务就会 ...

谢谢您的指导。

使用特权

评论回复
5
victor3l|  楼主 | 2013-8-15 10:23 | 只看该作者
ballack_linux 发表于 2013-8-14 09:19
呵呵 首先这个问题呢 应该在嵌入式系统里面问才对。
第一个问题,你可以认为是为了任务间传递某种数据,当 ...

谢谢您

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

77

主题

308

帖子

5

粉丝