原创 FreeRTOS与uCOS-II的空闲任务在功能上有什么差别呢?(原创)

2008-9-12 12:58 10440 10 11 分类: MCU/ 嵌入式
    当我们调用vTaskStartScheduler()以启动FreeRTOS时,我们跟着代码向下看时就会发现,OS会自动创建一个空闲任务,名字就叫prvIdleTask,这个与uCOS-II中的空闲任务---OS_TaskIdle有什么差别呢?
    大家都比较熟悉uCOS-II,其空闲任务的代码如下:
b64f4096-8bf3-4fa0-b877-f28aa043e4fa.JPG
   发现uCOS-II只是完成了一个计数功能,及一个钩子函数的调用。
   我们再来看看FreeRTOS的idle任务,代码如下:
点击看大图
   可以看到,prvCheckTasksWaitingTermination 首先会检测有没有任务要删除,并处理;(顺便提一下:宏configUSE_PREEMPTION的作用是配置需不需在时钟中断里进行任务切换,配置为0即为不可剥夺型,就在idle中检测有没有任务已经就序),接下来就根据配置进行任务切换;
其中( listCURRENT_LIST_LENGTH( &( pxReadyTasksLists[ tskIDLE_PRIORITY ] ) ) > ( unsigned portBASE_TYPE ) 1 )这里是判断有没有与idle一样优先级的任务需要分时切换运行,这个是必须的,也正是因为有了这样的处理(别的地方也有类似的处理),才可以同级任务可以分时调度。
    当然,我们配置一下:configUSE_IDLE_HOOK=1,我们也可以在FreeRTOS里添加空闲任务的钩子函数。

    由于FreeRTOS设计的晚于uCOS-II,所以有些地方是优于uCOS-II的,所以希望更多的朋友来参与自由嵌入式OS的学习与使用。  Free意味:自由,而非字面意义:免费。
    当然,FreeRTOS不只是自由,也是免费供大家使用的。


PARTNER CONTENT

文章评论1条评论)

登录后参与讨论

用户461316 2008-9-12 20:13

收藏起来!!!!!!
相关推荐阅读
walnutcy_696810119 2012-11-21 08:37
Linux下使用smartCOM调试串口
在Windows下的串口调试一直使用sscom,在Linux下只找到一个cutecom,用了几次,很不喜欢,就着手开发了一款自己的串口调试工具,smartCOM。 smartCOM介绍:http...
walnutcy_696810119 2012-03-29 18:12
【博客大赛】原创--测量基础:什么是测量
写在正文之前: 适逢EDNChina搞活动,而我本人也算在测量业工作,就一起作下笔记吧。若有错误,请大家一起斧正。笔者写本文一方面是梳理知识,另一方面也希望与大家探讨有关测量的知识、应用等,希...
walnutcy_696810119 2011-12-20 18:29
GLONASS 15年来,首次实现24颗星在轨可用
  EDN的博客改版后,不太好用,在SINA重开一个,不过重点改为关注GNSS行业新闻 http://blog.sina.com.cn/s/blog_7420cd1701012en9....
walnutcy_696810119 2011-12-20 17:49
逆向工程第一步:通信协议分析
工程中常有这样的事,想分析下其他知名公司产品中的通信协议,以便生产设计兼容产品。 1) 逆向工程,首先要了解产品,知己知彼,百战不怠;     去年受命想仿一款GARMIN的导航盒,但无法...
walnutcy_696810119 2011-11-14 11:30
通用代码调试方法 (Keil, VCC)
调试代码一般需要定位问题,这里给出一个解决方案, 一般的编译器均支持这些宏指令。   #define DEBUG_WALT_1113     1 extern void log_t...
我要评论
1
10
关闭 站长推荐上一条 /3 下一条