免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1794 | 回复: 0

[操作系统] uCOSII中关于任务调度 [复制链接]

论坛徽章:
0
发表于 2016-05-24 19:38 |显示全部楼层
刚接触uCOS,说一下学习过程中的一些心得,方便交流
1)首先强调一下实时操作系统(RTOS)的特点,最明显的是提供及时响应和高可靠性
2)基于实施操作系统的应用程序设计中,其中很重要的一个概念是"任务",任务设计也就是任务函数的设计是整个整个应用程序的基础,其他软件设计工作都是围绕来展开的
3)用户任务函数中,必须包含至少一次的系统服务函数(一般是等待类的函数以便其他函数有机会得以运行),否则优先级更低的任务将无法得到运行的机会,中断服务程序不能调用该类函数即一些等待函数,防止中断服务程序被打断
4)任务函数分为三类:
单次执行,即执行一次就退出的任务。
周期性执行,即到一定时间就执行的任务,当没到时间时该任务休眠,以便CPU去执行其他的任务。
事件触发执行,即当特定的事件发生时就执行任务,当没有对应的事件发生时,该任务会休眠,CPU可以去执行其他任务。
5)使用ucos-II时,要注意在Main函数中,加入两个初始化函数:OSInit(),OSStart()。OSInit()初始化ucosII中内部变量,OSStart()函数启动多任务环境
6)OSTaskCreateExt,创建一个任务,第一个参数为函数指针,即创建好后,就执行该函数指针指向的函数体:
INT8U  OSTaskCreateExt (void   (*task)(void *pd),   //建立扩展任务(任务代码指针,函数指针)  
                        void    *pdata,             //传递参数指针  
                        OS_STK  *ptos,              //分配任务堆栈栈顶指针  
                        INT8U    prio,              //分配任务优先级  
                        INT16U   id,                //(未来的)优先级标识(与优先级相同)  
                        OS_STK  *pbos,              //分配任务堆栈栈底指针  
                        INT32U   stk_size,          //指定堆栈的容量(检验用)  
                        void    *pext,              //指向用户附加的数据域的指针  
                        INT16U   opt)               //建立任务设定选项      
例:OSTaskCreateExt(TaskRxProc,
                NULL,
                &TaskStkRxProc[128 - 1],
                3,
                3,
                TaskStkRxProc,
                TASK_STK_LEN_RX_PROC,
                NULL,
                OS_TASK_OPT_STK_CHK | OS_TASK_OPT_STK_CLR);//Enable stack checking for the task|Clear the stack when the task is create
               
7)操作系统中的共享区也就是临界区,各个任务访问必须互斥,保证互斥的常见方法主要有:
第一,进入然后就退出临界区,第二,使用信号量与互斥信号量
另外,注意处理临界段代码需要禁止中断,处理完毕再允许中断,避免其他任务或者中断服务同时进入临界区
uCOS提供了两个宏来实现,其中
OS_ENTER_CRITICAL()进入临界区,禁止中断
OS_EXIT_CRITICAL() 退出临界区,允许中断
8)除了互斥外,资源同步也就是任务间的通信,主要的(同步)方式有:
信号量,事件标志组,消息邮箱,消息队列这几种方法
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP