6回答

0收藏

让任务和谐的睡觉-UCOS精髓

 

#开源分享 #开源分享 4077 人阅读 | 6 人回复 | 2013-04-09

有人说,我的任务本来就很忙了,要是用了UCOS,那么就更忙了不是吗?
以我对UCOS的理解,使用UCOS就是应该协调你的任务,让你的任务不能那么忙,要去睡觉!
你的任务太忙了,你要不停的采集了数据,然后处理,然后显示,可能你应付不过来了
怎么办你?把任务分成几个好了,因为你好像很忙,其实串口不一定一直有数据,只是你等待的太辛苦!
因此,你去睡觉。
让中断唤醒操作系统服务,让操作系统服务决定是不是叫起你,看看数据缓冲区,有需要处理的你就去干活。对了,活不能一个人干,显示的事你就不用干了,你去整理好要显示的内容,去睡觉,睡觉前发个消息给显示任务,给他留言,“你该干活了”,然后乖乖去睡觉。“我可以不睡吗?来个FOR循环?”“NO!你要是不睡,显示任务就活不成了,谁来显示”,你去睡吧。
显示任务起床了,来不及刷牙就要干活了,干完活去睡觉,CPU留给有用的人。
中断程序在不停的跳,简单的将数据挤压进缓冲区就调用OSINTEXIT走人。

是不是很和谐,我希望大家能让你的任务尽量睡觉,如果CPU占用率都80%了,千万别觉得是好事,要崩溃了!
于是乎,俺要去睡觉了!
嵌入式,ucos,FPGA系统书籍作者
分享到:
回复

使用道具 举报

回答|共 6 个

倒序浏览

沙发

mcp2013

发表于 2013-4-10 08:18:26 | 只看该作者

用操作系统好处还是很多的
板凳

yiyanzhongqing

发表于 2013-4-10 09:28:58 | 只看该作者

之前从超级循环的流程做过来,总不太理解ucos的任务是如何运行的,总当做循环来看。现在稍稍理解了。任务的状态以及优先级是决定任务该不该执行。任务要是不挂起其他的任务就别想执行,真如老师所说做完了该做的赶紧去睡觉。当所有任务都在睡觉了各种中断就成了“更夫”
地板

laoliang-67665

发表于 2013-4-10 10:15:27 | 只看该作者

yiyanzhongqing 发表于 2013-4-10 09:28
之前从超级循环的流程做过来,总不太理解ucos的任务是如何运行的,总当做循环来看。现在稍稍理解了。任务的 ...

更夫1:启动任务必须设置定时器或SYSTICK(STM32一般用SYSTICK,因为SYSTICK在CORTEX内核,移植方便)中断来唤起操作系统服务TIMETICK,TIMETICK为所有的任务做叫醒服务
其他的硬件中断,如串口中端,独立于操作系统,但是必须在进入时调用OSINTENTER,退出时调用OSINTEXIT来和OS协调。如采集到出具需要处理,可以向处理任务发消息或设置POST事件
嵌入式,ucos,FPGA系统书籍作者
5#

wanass

发表于 2013-4-10 10:28:12 | 只看该作者

从这个角度来说,确实是把大的循环变成小的任务,然后按照小的任务来分配调度。从正面讲是让谁去工作,从反面讲就是说让谁去睡觉。在附件里我总结了一下几种软件结构。

第一章 嵌入式内核基础.pdf

1.11 MB, 下载次数: 13

6#

chenbingjy

发表于 2013-11-5 20:35:48 | 只看该作者

学习了。。。。。。。。。。
7#

eeshuke

发表于 2015-6-16 16:19:34 | 只看该作者

菜鸟学习了。
您需要登录后才可以回帖 注册/登录

本版积分规则

关闭

站长推荐上一条 /3 下一条