UCOSII的前身是UCOS,最早出自于1992 年美国嵌入式系统专家Jean J.Labrosse 在《嵌入式系统编程》杂志的5月和6月刊上刊登的文章连载,并把UCOS 的源码发布在该杂志的
BBS 上。
UCOSII是一个可以基于ROM运行的、可裁减的、抢占式、实时多任务内核,具有高度可
移植性,特别适合于微处理器和控制器,是和很多商业操作系统性能相当的实时操作系统
(RTOS)。
UCOSII最大程度上使用ANSI C语言进行开发,并且已经移植到近40多种处理器体系上,涵盖了从8位到64位各种CPU(包括DSP)
UCOSII是专门为计算机的嵌入式应用设计的, 绝大部分代码是用C语言编写的。
CPU 硬件相关部分是用汇编语言编写的、总量约200行的汇编语言部分被压缩到最低限度,为的是便于移植到任何一种其它的CPU 上。
用户只要有标准的ANSI 的C交叉编译器,有汇编器、连接器等软件工具,就可以将UCOSII嵌人到开发的产品中。
UCOSII具有执行效率高、占用空间小、实时性能优良和可扩展性强等特点, 最小内核可编译至 2KB 。
UCOSII已经移植到了几乎所有知名的CPU 上。
UCOSII构思巧妙。结构简洁精练,可读性强,同时又具备了实时操作系统的全部功能。
虽然它只是一个内核,但非常适合初次接触嵌入式实时操作系统的朋友,可以说是麻雀虽小,五脏俱全。

上图可以看出,UCOSII的移植,我们只需要修改:os_cpu.h、os_cpu_a.asm和os_cpu.c
等三个文件即可
定时器的作用是为UCOSII提供系统时钟节拍,实现任务切换和任务延时等功能。
UCOSII早期版本只支持64个任务,但是从2.80版本开始,支持任务数提高到255个。
所谓的任务,其实就是一个死循环函数,该函数实现一定的功能,一个工程可以有很多这样的任务(最多255个)
Ucos任务的一般格式为:
void MyTask (void *pdata)
{
任务准备工作…
While(1)//死循环
{ 任务MyTask实体代码;
OSTimeDlyHMSM(x,x,x,x);//调用任务延时函数,释放cpu控制权,
}
}
假如我们新建了2个任务为MyTask和YourTask,这里我们先忽略任务优先级的概念,两个任务死循环中延时时间为1s。