一步一步教你使用uCOS-II

第一篇 UCOS介绍
这个大家都知道 。呵呵 。考虑到咱们学习的完整性还是在这里唠叨一下 。让大家再熟悉一下 。高手们忍耐一下吧! uC/OS II(MicroTwo)是一个可以基于ROM运行的、可裁减的、抢占式、实时多任务内核,具有高度可移植性,特别适合于微处理器和控制器,是和很多商业操作系统性能相当的实时操作系统(RTOS) 。为了提供最好的移植性能,uC/OS II最大程度上使用ANSI C语言进行开发,并且已经移植到近40多种处理器体系上,涵盖了从8位到64位各种CPU(包括DSP) 。
uC/OS II可以简单的视为一个多任务调度器,在这个任务调度器之上完善并添加了和多任务操作系统相关的系统服务,如信号量、邮箱等 。其主要特点有公开源代码,代码结构清晰、明了,注释详尽,组织有条理,可移植性好,可裁剪,可固化 。内核属于抢占式,最多可以管理60个任务 。
μC/OS-II 的前身是μC/OS,最早出自于1992 年美国嵌入式系统专家Jean J. 在《嵌入式系统编程》杂志的5 月和6 月刊上刊登的文章连载,并把μC/OS 的源码发布在该杂志的B B S 上 。
μC/OS 和μC/OS-II 是专门为计算机的嵌入式应用设计的, 绝大部分代码是用C语言编写的 。CPU 硬件相关部分是用汇编语言编写的、总量约200行的汇编语言部分被压缩到最低限度,为的是便于移植到任何一种其它的CPU 上 。用户只要有标准的ANSI 的C交叉编译器,有汇编器、连接器等软件工具,就可以将μC/OS-II嵌人到开发的产品中 。μC/OS-II 具有执行效率高、占用空间小、实时性能优良和可扩展性强等特点, 最小内核可编译至 2KB。μC/OS-II 已经移植到了几乎所有知名的CPU 上 。
严格地说uC/OS-II只是一个实时操作系统内核,它仅仅包含了任务调度,任务管理,时间管理,内存管理和任务间的通信和同步等基本功能 。没有提供输入输出管理,文件系统,网络等额外的服务 。但由于uC/OS-II良好的可扩展性和源码开放,这些非必须的功能完全可以由用户自己根据需要分别实现 。
uC/OS-II目标是实现一个基于优先级调度的抢占式的实时内核,并在这个内核之上提供最基本的系统服务,如信号量,邮箱,消息队列,内存管理,中断管理等 。
uC/OS-II以源代码的形式发布,但并不意味着它是开源软件 。你可以将其用于教学和私下研究( );但是如果你将其用于商业用途,那么你必须通过获得商用许可 。
虽然uCOS-II在商业上使用时需要的得到授权并且费用也是一笔不小的数字,但是他的开源毕竟带领我们走入了内核的世界 。在此我代表嵌入式工程师向Mr Jean J. 致谢 。
任务管理
uC/OS-II 中最多可以支持64 个任务,分别对应优先级0~63,其中0 为最高优先级 。63为最低级,系统保留了4个最高优先级的任务和4个最低优先级的任务,所有用户可以使用的任务数有56个 。
uC/OS-II提供了任务管理的各种函数调用,包括创建任务,删除任务,改变任务的优先级,任务挂起和恢复等 。
系统初始化时会自动产生两个任务:一个是空闲任务,它的优先级最低,该任务仅给一个整形变量做累加运算;另一个是系统任务,它的优先级为次低,该任务负责统计当前cpu的利用率 。
在系统初始化完毕后启动任务时必须创建一份用户任务,也就是说必须有一个应用程序(用户任务,使用应用程序对于我们经常使用用户容易接受一些 。呵呵),否则系统会崩溃 。当然还有一些其他的要求,咱们后续再说,下面简要概述一下任务管理相关的函数
1:建立任务()/()
如果想让UCOS管理用户的任务,必须先建立任务 。可以通过将任务的地址和其他参数传递到以下两个函数之一来建立任务 。当调用()时,需要四个参数: