uC/OS-II读作“micro controller OS 2”,意为“微控制器操作系统版本2”。特点之一是:结构小巧。包含全部功能的核心部分代码只占用8.3K字节,同时由于uC/OS-Ⅱ是可裁剪的,所以用户系统中实际的代码最少可达2.7K字节。特点之二是:是一个真正的实时操作系统。什么是实时操作系统呢?一般定义为“一个能够在指定的或者确定的时间内,完成系统功能和对外部或内部、同步或异步事件做出响应的统”。尤其值得一提的是,该系统自从2.51版本之后,就通过了美国FAA认证,可以运行在诸如航天器等对安全要求极为苛刻的系统之上。鉴于uC/OS-II可以免费获得代码,对于嵌入式RTOS而言,选择uC/OS无疑是最经济的选择。
近年来,许多人开始从事这一操作系统的学习及应用工作,但由于其文档较少,特别是关于安装和使用方面的指导性文章不够充足,使很多初学者,特别是刚刚接触嵌入式操作系统的朋友们不知道如何进行系统的安装及调试,为此我结合自己使用的切身体会,谈一谈它的安装及调试问题,希望对大家能起到一定的帮助作用。
文中的开发工具及开发包如下:
开发包:uC/OSV2.52(鉴于本论坛附件上传大小限制,需要下载的朋友可以联系我 sadanjingji@163.com)
文中开发工具:Borland C++ 4.5 (如果网上找不到,可以联系我)
1 安装
1.1 下载安装文件uCOSV252.exe(文件大小1.06MB)
1.2 安装,建议安装到C盘根目录,这样文件将安装在C:\SOFTWARE,需要空间4.04MB
1.3 安装完毕
1.4 以默认安装路径为例,目录结构为:
C: \SOFTWARE
这是根目录,是所有软件相关的文件都放在这个目录下。
C:\SOFTWARE\BLOCKS
子程序模块目录。笔者将例子中μC/OS-II用到的与PC相关的函数模块编译以后放在这个目录下。
C:\SOFTWARE\HPLISTC
这个目录中存放的是与范例HPLIST相关的文件。HPLIST.C存放在C:\SOFTWARE\HPLISTC\SOURCE目录下。 DOS下的可执行文件(HPLIST.EXE)存放在C:\SOFTWARE\TO\EXE中。
C:\SOFTWARE\TO
这个目录中存放的是和范例TO相关的文件。源文件TO.C存放在C:\SOFTWARE\TO\SOURCE中,DOS下的可执行文件(TO.EXE)存放在C:\SOFTWARE\TO\EXE中。注意TO需要一个TO.TBL文件,它必须放在根目录下。用户可以在C:\SOFTWARE\TO\EXE目录下找到TO.TBL文件。如果要运行TO.EXE,必须将TO.TBL复制到根目录下。
C: \SOFTWARE\uCOS-II
与μC/OS-II 相关的文件都放在这个目录下。
C:\SOFTWARE\uCOS-II\EX1_x86L
这个目录里包括例1的源代码,可以在DOS(或Windows 95/98/2000/xp下的DOS窗口)下运行。
C:\SOFTWARE\uCOS-II\EX2_x86L
这个目录里包括例2的源代码,可以在DOS(或Windows 95/98/2000/xp下的DOS窗口)下运行。
C: \SOFTWARE\uCOS-II\EX3_x86L
这个目录里包括例3的源代码,可以在DOS(或Windows 95/98/2000/xp下的DOS窗口)下运行。
C: \SOFTWARE\uCOS-II\EX4_x86L.FP
这个目录里包括例4的源代码(包含浮点运算,这个例子也是2.52版本新增的例子),可以在DOS(或Windows 95/98/2000/xp下的DOS窗口)下运行。
C: \SOFTWARE\uCOS-II\Ix86L
这个目录下包括依赖于处理器类型的代码。在80x86处理器上运行uC/OS-II必须的一些代码,实模式,在大模式下编译。
C: \SOFTWARE\uCOS-II\Ix86L-FP
这个目录中的文件类似于\uCOS-II\Ix86L中的文件,功能增加了浮点运算,适合带浮点协处理单元的80x86处理器,实模式,在大模式下编译。
C: \SOFTWARE\uCOS-II\SOURCE
这个目录里包括与处理器类型无关的源代码。这些代码完全可移植到其它架构的处理器上。
2 Borland c++ 4.5 安装的注意事项
建议安装在C盘根目录下,这样使用起来也方便(和ucosii有关),需要注意的是,Borland c++ 4.5不能识别中文目录,所以如果你的C源文件是中文名或保存在中文目录下,它是打不开的,所以要使用英文名。
3 项目开发
随开发包附带了4个例子,都具有一定的代表性,下面我们结合例1介绍项目开发的全过程,需要说明的是:安装路径均为默认值。
3.1 进入C:\SOFTWARE\uCOS-II\EX1_x86L\BC45目录,会看到两个目录,他们的子目录及其功能如下:
C:\SOFTWARE\uCOS-II\EX1_x86L\BC45\SOURCE
源文件目录
C:\SOFTWARE\uCOS-II\EX1_x86L\BC45\SOURCE\INCLUDES.H
总的项目头文件,每个源文件都应包含
C:\SOFTWARE\uCOS-II\EX1_x86L\BC45\SOURCE\OS_CFG.H
配置文件,用于操作系统配置和剪裁
C:\SOFTWARE\uCOS-II\EX1_x86L\BC45\SOURCE\TEST.C
应用程序文件,在开发新项目时可以参考这个文件的格式
C:\SOFTWARE\uCOS-II\EX1_x86L\BC45\SOURCE\TEST.LNK
链接文件,包含了链接的库和链接参数
C:\SOFTWARE\uCOS-II\EX1_x86L\BC45\TEST
项目文件目录
C:\SOFTWARE\uCOS-II\EX1_x86L\BC45\TEST\TEST.MAK
项目的MAKE文件,熟悉C编译器的人一定知道,通过Make文件可以智能的对整个项目进行自动的编译链接,非常方便,我们在后面会详细介绍这个文件。
C:\SOFTWARE\uCOS-II\EX1_x86L\BC45\TEST\TEST.MAP
项目映像文件主要完成库文件地址的映射,是项目的产物
C:\SOFTWARE\uCOS-II\EX1_x86L\BC45\TEST\MAKETEST.BAT
项目Make操作的批处理文件,它将自动完成整个编译链接的全过程
C:\SOFTWARE\uCOS-II\EX1_x86L\BC45\TEST\TEST.EXE
项目生成的可执行文件,使项目的产物
下面正式开始项目的开发
3.2 第二步,更改INCLUDES.H文件,文件内容为:
#include
#include
#include
#include
#include
#include
#include
#include "\software\ucos-ii\ix86l\bc45\os_cpu.h"
#include "os_cfg.h"
#include "\software\ucos-ii\source\ucos_ii.h"
#include "\software\blocks\pc\bc45\pc.h"
其中"os_cfg.h"没有写出完整的路径是因为它和INCLUDES.H在同级目录下,如果他们不在相同的目录下,则必须写上详细的路径。如果你的uCOS-II的安装路径和工程的建立路径是按推荐方式设定的,则不需要更改此文件,但你可以增加一些你想在项目中追加的头文件,如一些驱动程序或应用模块的头文件,但一定要注意路径是否正确。如果你没有按标准路径建立项目,必须逐行更改路径代码,使路径正确。
3.3 第三步,配置OS_CFG.H文件,因这与软件包和开发工具的安装无关,只用于项目中操作系统的配置,具体的请根据你的项目来自主决定,
相关的介绍很多,可以参考uC/OS-II的电子书。
3.4 第四步,修改TEST.LNK配置,这里进行开发工具链接时一些参数和链接模块的设置,可以用编辑器打开:
/v /s /c /P- +
C:\BC45\LIB\C0L.OBJ +
..\OBJ\TEST.OBJ +
..\OBJ\OS_CPU_A.OBJ +
..\OBJ\OS_CPU_C.OBJ +
..\OBJ\PC.OBJ +
..\OBJ\uCOS_II.OBJ
..\OBJ\TEST,..\OBJ\TEST
C:\BC45\LIB\EMU.LIB +
C:\BC45\LIB\MATHL.LIB +
C:\BC45\LIB\CL.LIB
3.4.1 /v /s /c /P- 是链接的参数,建议不要更改;
3.4.2 C:\BC45\LIB\C0L.OBJ 是 Turbo C 的Large模式编译库模块,如果开发工具路径不是默认设置,请改为实际的安装路径,例如将C:\BC45改为D:\BorlandC45
3.4.3 ..\OBJ\TEST.OBJ 是应用程序的目标文件,它是由TEST.C编译后生成的,并保存在临时生成的C:\SOFTWARE\uCOS-II\EX1_x86L\BC45\OBJ目录中,这个目录使用与保存编译时产生的目标文件的。
3.4.4 ..\OBJ\OS_CPU_A.OBJ ..\OBJ\OS_CPU_C.OBJ ..\OBJ\PC.OBJ ..\OBJ\uCOS_II.OBJ 同上,都是编译时产生的目标文件,并保存在OBJ目录下,作为项目链接的组成模块,如果在OBJ目录中缺少上述文件,链接将不会成功。
3.4.5 ..\OBJ\TEST,..\OBJ\TEST是指定的项目产生的EXE文件和MAP文件的路径和名称,它们分别是TEST.EXE和TEST.MAP,并保存在OBJ目录下。
3.4.6 C:\BC45\LIB\EMU.LIB C:\BC45\LIB\MATHL.LIB C:\BC45\LIB\CL.LIB是链接时需要的库文件,必须令路径符合Borland C的安装路径,如果安装在非推荐目录,必须改成正确的路径。其中EMU为8087仿真库,MATHL为数学函数库,CL为TurboC在Large模式下的运行库。
3.5 第五步,修改TEST.MAK文件,这是Borland C的Make文件,关于Make文件的格式及编写方法请参考相关书籍,这里仅介绍一些配置有关的内容,打开文件可以看到:
############
#TOOLS
###############################################################################
#
BORLAND=C:\BC45
CC=$(BORLAND)\BIN\BCC
ASM=$(BORLAND)\BIN\TASM
LINK=$(BORLAND)\BIN\TLINK
TOUCH=$(BORLAND)\BIN\TOUCH
###############################################################################
#DIRECTORIES
###############################################################################
#
LST=..\LST
OBJ=..\OBJ
SOURCE=..\SOURCE
TARGET=..\TEST
WORK=..\WORK
OS=\SOFTWARE\uCOS-II\SOURCE
PC=\SOFTWARE\BLOCKS\PC\BC45
PORT=\SOFTWARE\uCOS-II\Ix86L\BC45
如果你的Borland C没有安装在推荐安装的目录,需要更改BORLAND=C:\BC45这一句,例如如果安装在D:\BorlandC45 ,则将BORLAND=C:\BC45改为BORLAND=D:\BorlandC45。
CC=$(BORLAND)\BIN\BCC:这是编译器的名称及路径,一般不更改
ASM=$(BORLAND)\BIN\TASM:这是汇编器的名称及路径,一般不更改
LINK=$(BORLAND)\BIN\TLINK:这是链接器的名称及路径,一般不更改
LST=..\LST:列表文件目录,这个设定必须和MAKETEST.BAT中设定相一致
OBJ=..\OBJ:目标代码目录,这个设定必须和MAKETEST.BAT中设定相一致
SOURCE=..\SOURCE:源文件目录,如果路径不是按推荐方式,必需要更改路径
TARGET=..\TEST:项目文件目录,如果路径不是按推荐方式,必需要更改路径
WORK=..\WORK:项目工作目录,MAKETEST.BAT自动编译时全部源文件都复制到这个目录,这个设定必须必须和MAKETEST.BAT中设定相一致
OS=\SOFTWARE\uCOS-II\SOURCE:操作系统源文件目录,必须保证路径的正确,如果你的开发包没按推荐方式安装,必须更改这个设定为实际安装的目录。
PC=\SOFTWARE\BLOCKS\PC\BC45:与PC有关的源文件目录,必须保证路径的正确,如果你的开发包没按推荐方式安装,必须更改这个设定为实际安装的目录。
PORT=\SOFTWARE\uCOS-II\Ix86L\BC45:与处理器有关源文件目录,必须保证路径的正确,如果你的开发包没按推荐方式安装,必须更改这个设定为实际安装的目录。
3.6 第六步,配置MAKETEST.BAT,打开可以看见
MD ..\WORK
MD ..\OBJ
MD ..\LST
CD ..\WORK
COPY ..\TEST\TEST.MAK TEST.MAK
C:\BC45\BIN\MAKE -f TEST.MAK
CD ..\TEST
首先是建立 ..\WORK ..\OBJ ..\LST 三个目录,这个目录的名称和路径必须同TEST.MAK 一致,然后进入..\WORK目录,并将..\TEST目录中的
TEST.MAK复制到这里,最后执行Borland C的Make程序,自动进行编译和链接,这里面还是要注意C:\BC45的路径问题。
3.7 第八步,进行相关应用程序的开发就可以了,具体的可以参见Test.c这个文件,如果你的项目包括多个源文件,最好是在Test.c中用#include语句把他们都包含进来,否则就要更改Make文件TEST.MAK和其他几个设置文件,如果你确需如此,可以自己尝试一下,这里不再列。
3.8 最后,运行MAKETEST.BAT,系统自动生成三个文件夹:LST,OBJ,WORK。其中生成的.EXE文件在OBJ目录下。
3.9 以上方法较为复杂,下面针对初学者,我总结了一个简单易行的调试办法:打开BC45开发环境,新建一个工程在C:\SOFTWARE\uCOS-II\EX1_x86L\BC45\SOURCE目录下,然后把TEST.C,OS_CPU_A.ASM,OS_CPU_C.C,uCOS_II.C,PC.C这五个文件加入工程,逐个编译,最后运行,就可以生成TEST.EXE文件。其中需要注意两点:1.设置BC环境是,设置成DOS Standard,Large 2.如果编译OS_CPU_A.ASM文件时提示找不到TASM.EXE和TASM2MSG.EXE两个文件,则需要到C:\BC45\BIN目录下把这两个文件拷贝到TEST.C的同级目录中,如果编译还通不过,提示无法运行TASM2MSG.EXE,则需要到C:\BC45\BIN目录下把TASM2MSG.DLL文件也拷贝到TEST.C的同级目录中。
这篇文章写作很匆忙,基本是一气呵成的,难免存在很多错误,其中的一些观点由于本人水平有限,可能存在一些错误,在此,我欢迎看到这篇文章并发现问题或错误的朋友及时指正,以免误导别人,同时也欢迎读罢有所感悟的朋友积极来信,提出你的观点和看法,让我们共同努力,找到uC/OS开发的最好途径。
最后,感谢Hcompute等其他在网上提供移植文章的网友,在我初学期间,他们的案例给了我莫大帮助和启发,使我的嵌入式之路走得虽然磕磕绊绊,但仍然不停的得到鼓励和安慰,希望我的这篇文章能给大家有所帮助。