UCOSII

泉水

UCOSII

提出者

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结构

在这里插入图片描述
上图可以看出,UCOSII的移植,我们只需要修改:os_cpu.h、os_cpu_a.asm和os_cpu.c
等三个文件即可

  • os_cpu.h,进行数据类型的定义,以及处理器相关代码和几个函数原型;
  • os_cpu_a.asm,是移植过程中需要汇编完成的一些函数,主要就是任务切换函数;
  • os_cpu.c,定义一些用户HOOK函数。

定时器的作用是为UCOSII提供系统时钟节拍,实现任务切换和任务延时等功能。

  • 这个时钟节拍由OS_TICKS_PER_SEC(在os_cfg.h中定义)设置,一般我们设置UCOSII的系统时钟节拍为1ms~100ms,具体根据你所用处理器和使用需要来设置。
  • 本章,我们利用STM32F4的SYSTICK定时器来提供UCOSII时钟节拍。

UCOSII早期版本只支持64个任务,但是从2.80版本开始,支持任务数提高到255个。

  • UCOSII保留了最高4个优先级和最低4个优先级的总共8个任务,用于拓展使用。
  • 实际上,UCOSII一般只占用了最低2个优先级,分别用于空闲任务(倒数第一)和统计任务(倒数第二),所以剩下给我们使用的任务最多可达255-2=253个(V2.91)。

所谓的任务,其实就是一个死循环函数,该函数实现一定的功能,一个工程可以有很多这样的任务(最多255个)

  • UCOSII对这些任务进行调度管理,让这些任务可以并发工作(注意不是同时工作,并发只是各任务轮流占用CPU,而不是同时占用,任何时候还是只有1个任务能够占用CPU),这就是UCOSII最基本的功能。

UCOSII

Ucos任务的一般格式为:

void MyTask (void *pdata) 
{  
 任务准备工作… 
 While(1)//死循环 
{ 任务MyTask实体代码; 
  OSTimeDlyHMSM(x,x,x,x);//调用任务延时函数,释放cpu控制权, 
} 
} 

并发

假如我们新建了2个任务为MyTask和YourTask,这里我们先忽略任务优先级的概念,两个任务死循环中延时时间为1s。

  • 如果某个时刻,任务MyTask在执行中,当它执行到延时函数OSTimeDlyHMSM的时候,它释放cpu控制权
  • 这个时候,任务YourTask获得cpu控制权开始执行,任务YourTask执行过程中,也会调用延时函数延时1s释放CPU控制权
  • 这个过程中任务A延时1s到达,重新获得CPU控制权,重新开始执行死循环中的任务实体代码。
  • 如此循环,现象就是两个任务交替运行,就好像CPU在同时做两件事情一样。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

万码无虫

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值