一步一步教你使用uCOS-II( 四 )


调度工作的内容可以分为两部分:最高优先级任务的寻找和任务切换 。其最高优先级任务的寻找是通过建立就绪任务表来实现的 。u C / O S 中的每一个任务都有独立的堆栈空间,并有一个称为任务控制块TCB(TaskBlock)的数据结构,其中第一个成员变量就是保存的任务堆栈指针 。任务调度模块首先用变量 记录当前最高级就绪任务的TCB 地址,然后调用()函数来进行任务切换 。
第二章 搭建UCOS-II 2.52版的调试平台
在这一章中我们主要讨论的源码调试环境,为了给大家一个共同的学习平台,我搜集整理了一写资料,就是以X86为平台,使用BC31(这个堪称骨灰级的编译器)来调试源码 。当然你也可以用BC45或更高版本的编译器,具体方法大同小异,我在此就不再啰嗦 。
本章节的主要内容包括四点:
1、下载并安装BC31编译器
2、下载并安装UCOS-II2.52版本源代码
3、使用BC31编译UCOS-II源码
【一步一步教你使用uCOS-II】4、让OS的第一个任务RUN起来
接下来会在每个帖子中讨论一点 。耐心等待哦!
下载并安装BC31编译器
我在这里提供给大家这个骨灰级的编译器BC31.需要的可以下载 。见附件(骨灰级编译器BC31)由于这个软件的比较大,分成两个压缩包 。下班了,先到这里,回家再传附件!
让自己的第一个任务Run起来
前面已经给大家介绍了如何在PC机上调试UCOS,方法和需要的软件都介绍给大家了,相信有兴趣的朋友已经安装调试了,下面咱们就让自己的第一个任务在PC上Run起来 。
OK,下面我就分步介绍建立自己的第一个任务
第一步:CopyC:\\uCOS-II目录下的文件夹 。作为我们的工程模板
第二步:修改工程模板的名字为:
第三部:按照咱们前面的《使用 BC31 工具编译 UCOS‐II 的源码过程》修改配置文件;
第四步:修改Test.c文件,建立自己的第一个任务
具体的内容我就不再帖子上写了 。大家可以参考附件.rar里面的Test.c文件 。然后编译
关于UCOS任务的理解
UCOS的运行是基于任务运行的,为了能够好的使用UCOS我们先要对UCOS的任务的概念做一个理解
在学习UCOS任务前我们先对我们以前使用的模式做一个回顾--前后台模式 。

一步一步教你使用uCOS-II

文章插图
这种系统可称为前后台系统或超循环系统(Super-Loops) 。应用程序是一个无限的循环,循环中调用相应的函数完成相应的操作,这部分可以看成后台行为() 。中断服务程序处理异步事件,这部分可以看成前台行。后台也可以叫做任务级 。前台也叫中断级 。时间相关性很强的关键操作( )一定是靠中断服务来保证的 。因为中断服务提供的信息一直要等到后台程序走到该处理这个信息这一步时才能得到处理,这种系统在处理信息的及时性上,比实际可以做到的要差 。这个指标称作任务级响应时间 。最坏情况下的任务级响应时间取决于整个循环的执行时间 。因为循环的执行时间不是常数,程序经过某一特定部分的准确时间也是不能确定的 。进而,如果程序修改了,循环的时序也会受到影响 。
这种系统是在我们上学时和做小项目时经常用到,很多工程师称这种方式为“裸奔” 。哈哈!我大学毕业后的钱三年写的项目都是在裸奔 。
UCOS-II是基于任务运行的 。一个任务,也称作一个线程,是一个简单的程序,该程序可以认为 CPU 完全只属该程序自己 。实时应用程序的设计过程,包括如何把问题分割成多个任务,每个任务都是整个应用的某一部分,每个任务被赋予一定的优先级,有它自己的一套 CPU 寄存器和自己的栈空间(如下图所示) 。