目前,8位单片机在测控领域和智能化电子产品应用中仍占有重要地位.而应用嵌入式实时操作系统(ERTOS)会对8位单片机的软件开发带来极大方便。在此简要介绍嵌入式实时操作系统及其在程序设计中的优越性,重点介绍了适合于小RAM单片机的嵌入式实时操作系统Small RTOS51,以及基于8位单片机的硬件和软件的设计方法和过程。
1 嵌入式实时操作系统Small RTOS51简介
嵌入式系统已成为当今的热门话题之一,从消费类电子产品到各种工业设备,嵌入式系统已渗透到日常生活的各个角落。对于嵌人式系统,一个重要的特征是实时性,即在确定的时间内完成规定的功能,并能对外部异步事件做出正确响应。确保系统的实时性,需要软硬件配合来完成,首先必须保证硬件处理速度满足实时要求,而对于软件,就是采用与之相适应的嵌入式实时操作系统(Embedded Real_TimeOperating System,ERTOS)。
采用嵌入式实时操作系统(ERTOS),能够保证系统中任务切换的实时性,事件响应时间的确定性及系统的高可靠性,同时,ERTOS将用户应用程序看成是其上运行的多个任务,这就为程序的编写、调试和系统功能的扩展提供了极大方便,并且由于ERTOS的使用,客观上使得应用软件与下层硬件环境无关,便于嵌入式软件的移植,从而可以大大降低系统开发成本和开发周期。目前,已推出的嵌入式实时操作系统有很多种,比较常用的有VxWorks,WinCE,VRTX,pSOS,Palm OS,嵌入式Linux,Delta OS等。对于8051系列单片机,由于具有很少的RAM和ROM,在嵌入式实时操作系统中,比较适合于这种单片机操作系统是Small RTOS51,它使用Keil C51所带得RTX Tiny的堆栈管理机制,并和μC/OS-Ⅱ一样是抢占式的。目前,Small RTOS的最新版本为1.20.3,可以支持任务的动态建立与删除,支持C51的重入函数,支持动态内存分配等。
2 嵌入式温控器
2.1 嵌入式温控器的结构及原理
由Small RTOS51实现的基于8位单片机的温控器的系统结构如图1所示。单片机作为控制核心,负责读取温度传感器的温度,并输出至LED显示器显示,按键用来设置温控器的温度,当温度超限时由输出控制部分输出控制信号,驱动继电器或者报警装置,电源部分为整个系统供电。
2.2 嵌入式温控器硬件电路
由于温控器的外围电路比较简单,主控器所需的输入/输出口不多,故采用Atmel公司的AT89C2051,温度传感器采用美国DALLAS半导体公司的DS18B20,其数据信号线接微控制器P3.7,LED显示器采用4个共阴极数码管构成,由4个串入并出的移位寄存器74LS164驱动,采用静态显示方式,P1.1作为LED显示器的串行数据输入,P1.0作为LED显示器的串行时钟输入,输出控制信号由P1.7输出,控制PNP型晶体管,另外设置4个按键分别连接微控制器的P3.2~P3.5,其硬件电路如图2所示。
3 系统软件设计
3.1 任务的分解划分
任务的划分包括确定哪些变换属于哪个任务,以及确定各任务的优先级。具体划分原则可参考文献[1]。根据任务划分的原则以及嵌入式温控器的具体功能,本系统将任务分解划分为按键显示处理,温度测量,和输出执行3个任务。
3.2 系统软件的设计
系统软件设计主要包括主程序设计和各任务程序设计。
该设计主程序流程图如图3所示。主程序进行初始化以后,顺序建立3个任务,进入CPU休眠状态,各个任务运行后,首先进入任务休眠状态,等待相应任务的唤醒,任务被唤醒以后,进行相应处理,再次进入休眠状态。各个任务均采用无限循环结构,其形式如下:
任务唤醒用函数OSTaskResume(TASK_ID)来完成。在KeilμVision 2下建立工程,编辑相应的头文件config.h,并对OS_CFG.h和OS_CPU.h的有关内容进行相应设置,进行编译直到成功为止。
根据嵌入式温控器的硬件电路,利用嵌入式实时操作系统Small RTOS51对其进行程序设计,KeilμVision 2建立工程并进行编译,下载代码后温控器工作正常。对于现在仍然使用广泛的8位单片机,采用Small RTOS51进行程序设计,既简单又方便。利用中断、信号量、消息队列,可以实现更多功能和作用;另外实时操作系统有多种,但其原理类似,懂得了其中之一,可以举一反三,理解和应用其他嵌入式实时操作系统。