随着嵌入式系统应用的日益广泛, RTOS 越来越受到嵌入式系统开发人员的青睐,特别是进入 20 世纪 90 年代后,
RTOS 更是逐步确立了在嵌入式系统设计中的主导地位。使用 RTOS 所带来的最大好处是可提高嵌入式系统的可靠性,
同时也提高了软件的开发效率,缩短了开发周期。由于商业化 RTOS 软件较高的价格和使用成本(版权费、维护费等)
的限制,RTOS 在国内的应用并不普遍。
μC/OS-II 是一个著名的源码免费的嵌入式 RTOS,具有源码公开、可移植、可固化、可裁减、稳定性和可靠性高的
特点。μC/OS-II 是基于优先级的占先式(Preemptive)实时多任务内核,最多可支持 64 个任务(其中系统保留 8 个自
用)。由于 μC/OS-II 是为嵌入式应用编写的通用软件,故在具体应用时需根据不同单片机的特点进行移植。 μC/OS-II
的大部分代码是用 ANSI C 编写的,只有与处理器相关的一部分代码用汇编语言编写,所以具有很强的可移植性,可以
在大多数 8 位、16 位、32 位单片机及数字信号处理器上运行。本文介绍 μC/OS-II 在 Infineon C167CR 单片机上的移植
技术。
1 Infineon C167CR 单片机简介
C167CR 单片机是 Infineon 公司 80C166 系列单片机中的一款高性能 16 位微处理器,其最高时钟频率可达 25
MHz,片内 ROM 最多达 128K,寻址能力 16M。C167CR 单片机集成度高,具有丰富的片内资源:111 个 I/O 引脚、16
级 56 个中断、32 个捕捉/比较通道、16 个 A/D 转换通道、4 个 PMW 通道、两组通用定时器单元、8 通道外围事件控制
器、同步/异步串行接口和高速同步串行接口、CAN 模块等。C167CR 单片机的内部资源及其 C 编译器满足 μC/OS-II 的
移植条件。
2 μC/OS-II 在 C167CR 单片机上的移植
在 μC/OS-II 的移植中需要修改五个文件:主头文件 INCLUDES.H、系统配置文件 OS_CFG.H 以及与 CPU 相关的三
个文件(OS_CPU.H、OS_CPU_A.ASM 以及 OS_CPU_C.C)。移植中使用的编译器是 Keil 公司的 Keil C166 编译器。
五个文件具体内容请见本刊网络补充版(http://www.dpj.com.cn)。
3 移植示例
示例中,共创建了二个任务,其中发送任务 SenderTask()以发送消息的形式连续地向发送邮箱中传送 0~9 这 10
个数,当收到接收邮箱的消息之后,就开始发送下一个数字;接收任务 ReceiverTask()从发送邮箱中取出数字,从 P2
口输出,再延时 5 s,而后向接收信箱回送消息。程序清单如下:
#include "includes.h""
#define TASK_STK_SIZE 512 /*任务堆栈为 1KB*/
#define N_TASKS 2 /*任务数*/
OS_STK TaskStk[N_TASKS][TASK_STK_SIZE];
/*任务堆栈*/
OS_EVENT pReceiverMailBox; /*接收邮箱*/
OS_EVENT pSenderMailBox; /*发送邮箱*/
void ReceiverTask(void *data);
void SenderTask(void *data);
/*主程序*/
void main (void){
DP2 = 0xffff; /*设置 P2 口为输出*/