UCOSIII 简介:
ucosiii是一个可裁剪、可固化、可剥夺的多任务系统,没有任务数目的限制,是ucos的第三代内核。ucosiii有以下几个特性:
(1)可剥夺多任务管理:ucosiii和ucosii是一样都属于可剥夺的多任务内核,总是执行当前的就绪的最高优先级任务。
(2)同优先级任务的时间片的轮转调度:ucosiii允许一个任务优先级被多个任务试用,当这个优先级处于最高就绪态的时候,ucosiii就会轮转调度这个优先级的所有任务,让每个任务运行一段由用户指定的时间长度,叫做时间片。
(3)极短的关中断时间:ucosiii可以采用锁定内核调度的方式而不是关中断的方式来保护临界段代码,这样就可以将关中断时间降到最低,使得ucosiii能够非常快速的响应中断请求;
(4)任务级数量不受限制:ucosiii本身是没有任务数目限制的,但是从应用实际角度出发,任务数据会受到CPU所使用的存储空间的限制,包括代码空间和数据空间。
(5)优先级数目不受限制:ucosiii支持无限多的任务优先级;
(6)内核对象数目不受限制:ucosiii允许定义任意数目的内核对象,内核对象是指任务、信号量、互斥信号量、 事件标志组、消息队列、定时器和存储块等。
(7)软件定时器:用户可以任意定义“单次”和“周期”型定时器。定时器是一个递减型计数器,递减到0时会执行预先定好的操作。每个定时器可以指定所需的操作,周期型的定时器在递减到0时,会执行指定操作,并自动重置计数器值。
(8)同时等待多个内核对象:ucosiii允许一个任务同时等待多个事件。也就是说,一个任务能同时挂在多个信号量或消息队列上。当其中任何一个等待的事件发生时,等待的任务就会被唤醒。
(9)直接向任务发送信号:ucosiii允许中断或任务直接给另一个任务直接发送信号,避免创建和诸如信号量和事件标志等内核对象作为向其他任务发送信号的中介,该特性有效提高了系统性能。
(10)任务寄存器:每个任务都可以设定若干个“任务寄存器”,任务寄存器和CPU硬件寄存器不同的,主要保存的是各个任务的错误信息,id识别信息,中断关闭的时间测量结果。
(11)任务级时钟节拍处理:ucosiii的时钟节拍是通过以一个专门任务完成的,定时中断仅触发该任务,将延迟处理和超时判断放在任务级代码完成,能够极大减少中断延迟时间。
(12)防止死锁:所有的ucosiii的等待功能都提供了超时检测机制,有效避免了死锁。
(13)时间戳: ucosiii需要一个16位或32位的自由运行计数器(时基计数器)来实现时间测量,在系统运行时,可以通过读取该计数器来测量某一个事件的时间信息,例如,当isr给任务发送消息时,会自动读取该计数器的数值并将其附加在消息中,当任务读取消息时,可以得到该消息携带的时标, 这样,再通过读取当前的时标,并计算两个时标 的差值,就可以确定传递的这条消息所花费的确切时间。