ucosII学习笔记

来源:本站
导读:目前正在解读《ucosII学习笔记》的相关信息,《ucosII学习笔记》是由用户自行发布的知识型内容!下面请观看由(电工技术网 - www.9ddd.net)用户发布《ucosII学习笔记》的详细说明。
简介:ucOS-II特性: 可剥夺内核、 不支持同优先级的任务时间片轮转调度算法、 可避免优先级反转、不支持优先级继承、允许建立63个用户任务、仅支持优先级法启动等待信号量的任务等等。

ucOS-II特性:

l可剥夺内核

l不支持同优先级的任务时间片轮转调度算法

l可避免优先级反转

l不支持优先级继承

l允许建立63个用户任务

l仅支持优先级法启动等待信号量的任务

l仅支持优先级法启动等待消息邮箱的任务

l支持事件标志,提供事件标志置位、清0和等待事件标志服务

l支持先进先出(FIFO)和后进先出(LIFO)的消息队列

l允许中断嵌套,中断嵌套层次可达255层

实现互斥的方法:

l关中断

l使用测试并置位指令

l禁止任务切换

l使用信号量(信号量初始化为1)

信号量的作用

l控制共享资源的使用权

l标志某事件的发生

l同步2个任务(信号量初始化为0)

可剥夺的内核ucOS任务切换的时机:

(任务切换的时机:当前任务被挂起、或有更高优先级的任务就绪)

l中断处理程序激活了优先级更高的任务,则当中断返回时发生任务切换

l等待信号量、邮箱、消息队列的任务被激活(该任务优先级比原任务优先级高)

l当前任务请求信号量、事件、消息等,然无可用事件时,则当前任务挂起

l当前任务调用延时函数,将自身延时一段时间。

最简单的防止死锁的方法,让每个任务:

l先得到全部需要的资源,再做下一步工作。

l用同样的顺序申请多个资源。

l释放资源时,使用相反的顺序。

l设置等待超时

中断及中断处理时间

在大多数情况下,中断服务子程序应识别中断来源,从叫中断的设备取得数据或状态,并通知真正做该事件处理的那个任务。当然应该考虑到是否通知一个任务去做事件处理所花的时间比处理这个事件所花的时间还多。在中断服务中通知一个任务做时间处理(通过信号量、邮箱或消息队列)是需要一定时间的,如果事件处理需花的时间短于给一个任务发通知的时间,就应该考虑在中断服务子程序中做事件处理并在中断服务子程序中开中断,以允许优先级更高的中断打入并优先得到服务。

非屏蔽中断

在非屏蔽中断的中断服务子程序中,不能使用内核提供的服务,因为非屏蔽中断是关不掉的,故不能在非屏蔽中断处理中处理临界区代码。然而向非屏蔽中断传送参数或从非屏蔽中断获取参数还是可以进行的。参数的传递必须使用全程变量,全程变量的位数必须是一次读或写能完成的,即不应该是两个分离的字节,要两次读或写才能完成。

非屏蔽中断服务通常具有最高的优先级,在非屏蔽中断服务过程中不允许中断嵌套,普通中断一直要等到非屏蔽中断服务子程序运行结束后才能被识别。

时钟节拍——抖动解决方案:

l增加微处理器的时钟频率

l增加时钟节拍的频率

l重新安排任务的优先级

l避免使用浮点运算(如果非使用不可,尽量用单精度数)

l使用能较好地优化程序代码的编译器

l时间要求苛刻的代码用汇编语言写

l如果可能,用同一家族的更快的微处理器做系统升级。如从8086向80186升级,从68000向68020升级等

l

不管怎么样,抖动总是存在的。

使用RTOS的额外需求是

l内核的价格

l额外的ROM/RAM开销

l2到4百分点的CPU额外负荷。

提醒:《ucosII学习笔记》最后刷新时间 2024-03-14 01:05:16,本站为公益型个人网站,仅供个人学习和记录信息,不进行任何商业性质的盈利。如果内容、图片资源失效或内容涉及侵权,请反馈至,我们会及时处理。本站只保证内容的可读性,无法保证真实性,《ucosII学习笔记》该内容的真实性请自行鉴别。