一、什么是RTX51 RTX51是keil公司开发的一款实时操作系统,由汇编编写,其有两个版本:Tiny版本和Full版本。 其中Tiny版本采用分时调度的方式,占用资源小,可以运行在STC89C52RC这种只有256个字节的单片机上,而Full版本是抢占式调度,支持任务间通信和内存管理等功能,功能强但占用资源多,适合RAM更大的单片机上,不适合STC89C52RC单片机,所以这里我们只做Tiny版本的分享。 运行流程RTX51 Tiny 本质上是一个实时操作系统(RTOS),他通过不同任务间的切换,允许单片机同时(实际上是伪并行)完成多个功能或者运行多个任务。在裸机编程中,我们往往会在没有RTOS的条件下实现一个特定的实时程序(在一个单循环中实现一种或多种功能,或者运行一个或多个任务);这样的设计往往会遇到资源分配、运行时间以及程序维护的问题,而像RTX51这样的RTOS就可以帮我们很大程度上解决这些问题,在程序结构中,我们创建多个任务死循环体,每个任务循环体运行很短的一段时间后就会释放CPU资源,给其他循环体(又称为任务)来运行,因为切换的时间极短,所以在我们感官上,这些循环体就是在同时运行! 学习方式一个实时操作系统(RTOS) 可以更灵活有效地分配系统资源,让原本复杂的逻辑简单化,其程序设计使用标准C语言进行开发,并可以用Keil的编译器进行编译。因为其底层源码为汇编,学习原理比较复杂,所以我们只要学会如何操作对应的API函数就行,至于具体学习RTOS内核,则可以去找uC/OS、RT-Thread、FreeRTOS等实时系统学习。 具体参数Tiny的具体资源参数 任务数目就是上面所提到的循环体数目。 CODE空间指的是ROM空间,STC89C52RC用有8KROM大小,900字节对他来说微不足道。 DATA空间指内部RAM,STC89C52RC有128个字节,XDATA指外部RAM,STC89C52RC有128个字节外部RAM。 定时器0用来做单片机的时间基准,用于Tiny内核做参考进行任务调度。 二、移植准备工作既然是编写在STC89C52RC上移植RTOS,首先要准备的工具则是一个Keil软件和一个软件工程(默认已经完成)。这里我准备的一个LED例程程如下,编译通过。 找到Tiny源文件右击keil,打开文件所在位置 返回此文件夹的上一级,找到C51文件夹,点击进去,找到如下文件路径 C51\RtxTiny2\SourceCode
复制配置文件(.a51)和库文件(.lib)到我们的工程下 复制到点灯例程,这里我新建了一个文件夹专门放源文件 在keil内添加文件 配置keil在keil设置里面按下图配置选择RTX-Tiny系统 配置完成后我们在main函数复制以下内容 #include "RTX51TNY.h"/******************************************************************************** 函 数 名 : task_create* 函数功能 : 任务0* 输 入 : 无* 输 出 : 无*******************************************************************************/void task_create(void) _task_ 0{ while(1) { ; } }
编译一下,结果如下,无报错 我们系统的移植就完成了,下面就是根据项目需要对内容的具体修改以及调用API了 三、API介绍在编译完成之后,我们点击RTX51TINY.H的头文件里面
|