RTX51-Tiny使用说明

合集下载

RTX51小型实时操作系统介绍[1]

RTX51小型实时操作系统介绍[1]

RTX51小型实时操作系统介绍(连载1)有二个不同的RTX51版本可以使用∶RTX51 Full使用多于四个任务优先权同时完成存在时间片轮转调度和抢先式的任务切换。

RTX51工作在与中断功能类似的状态下。

信号和消息可以通过邮箱系统在任务之间互相传递。

你可以从一个可分配存储区中分配和释放内存。

你可以强迫一个任务等待中断、超时或者是从另一个任务或中断发出的信号或消息。

RTX51 Tiny 是 RTX51的一个子集,它可以很容易地在没有任何外部存储器的单片8051系统上运行。

除了下列例外,RTX51 Tiny支持许多 RTX51中的特性。

RTX51 Tiny仅支持时间片轮转任务切换和使用信号进行任务切换。

不支持抢先式的任务切换。

不包括消息历程。

没有可分配存储区分配程序。

许多微处理器应用程序要求同时执行两个工作或任务。

对于这样的应用程序,一个实时操作系统(RTOS)允许灵活的分配系统资源(中央处理器、存储器、等等.)给各个任务。

RTX51是一个很容易使用的功能强大的实时操作系统。

R TX51可以运行于所有的 8051 派生机型。

你可以使用标准 C语言编写和编译一个程序并使用 C51 构造、编译他们,仅在指定任务标识符和优先权上有一点差别。

. RTX51程序也要求你在程序中用include命令引入实时管理的头文件并使用 BL51 linker/locator进行连接和选择适当的 RTX51库文件。

RTX51小型实时操作系统介绍(连载2)单任务程序一个标准的 C语言程序从主函数开始执行。

在一个嵌入式应用中,主函数通常是一段无限循环的代码,可以认为是一个连续执行的单独任务。

时间片轮转程序一种更高级的 C语言程序可以在不使用实时操作系统的情况下实现时间片轮转拟多任务系统。

在这种系统中、任务或功能被一段无限循环程序重复调用。

例如∶用 RTX51进行时间片轮转调度rtx51也能完成多重任务时间片轮转,而且允许准并行执行多个无限循环或任务。

RTX51Tiny实时内核理解

RTX51Tiny实时内核理解

RTX51 Tiny 实时内核理解声明:以下来自网络整理而来并非本人作品,觉得挺容易懂所以放入博客以便后来学习者参考RTX51 Tiny中容易混淆的问题RTX51 Tiny是 Keil uVision中自带的一个小型嵌入式RTOS,具有小巧、速度快、系统开销小、使用方便等优点。

使用RTX51 Tiny能够提高系统的稳定性,优化程序的性能;而且它是为51单片机专门定制的,所以在51单片机上的运行效率比其它一些通用的RTOS性能也要好一些。

但是,由于RTX51 Tiny的相关资料和书籍比较少,大部分只是对程序自带帮助文件的简单翻译,很少进行深入探讨。

下面就RTX51 Tiny使用中经常遇到的一些问题进行探讨。

1 关于时间片的问题RTX51 Tiny使用的是无优先级时间片轮询法,每个任务使用相同大小的时间片,但是时间片是怎样确定的呢?RTX51 Tiny的配置参数(Conf_tny.a51文件中)中有INT_CLOCK和TIMESHARING两个参数。

这两个参数决定了每个任务使用时间片的大小:INT_CLOCK是时钟中断使用的周期数,也就是基本时间片;TIMESHARING是每个任务一次使用的时间片数目。

两者决定了一个任务一次使用的最大时间片。

如假设一个系统中INT_CLOCK设置为10000,即10ms,那么TIMESHARING=1时,一个任务使用的最大时间片是 10ms;TIMESHARING=2时,任务使用最大的时间片是20ms;TIMESHARING=5时,任务使用最大的时间片是50ms;当 TIMESHARING设置为0时,系统就不会进行自动任务切换了,这时需要用os_switch_task函数进行任务切换。

这部分功能是RTX51 Tiny 2.0中新增加的。

2 关于os_wait延时的问题os_wait 是RTX51 Tiny中的基本函数之一。

它的功能是将当前任务挂起来,等待一个启动信号(K_SIG)或超时信号(K_TMO)或周期信号(K_IVL)或者是它们之间的组合。

RTX51 Tiny User Manual

RTX51 Tiny User Manual

目录总览 (2)实时程序 (5)操作原理 (7)配置RTX51 Tiny (11)使用RTX51 Tiny (14)实例 (17)函数参考 (18)总览RTX51 Tiny是一个实时系统,它允许你创建可同时执行多个功能或任务的应用程序。

在嵌入式应用中这往往是必须的。

虽然可以创建无RTOS实时程序(通过执行一个或多个任务循环),但诸如调度,维护和时序问题,像RTX51 Tiny这样的RTOS可以解决。

一个实时的操作系统可以灵活的调度系统资源,像CPU、内存和任务之间的通信。

RTX51 Tiny是一个功能强大且简单易用的RTOS,适用于所有8051衍生产品。

在Keil C51编译器中RTX51 Tiny是用标准C(ANSI C)编写的。

C语言允许你轻松的定义任务功能而不必进行复杂的栈和变量设置。

RTX51程序需要包含一个特殊的头文件且链接RTX51库到程序中。

1.新特性RTX51 Tiny第二版包含了许多新特性使实时软件开发更容易,如下代码分段RTX51 Tiny现在支持代码分段(需配置文件L51_BANK.A51文件)。

明确任务切换新功能(OS_SWITCH_TASK)可以是一个任务处于就绪状态并立即切换至另一个任务。

任务就绪标志新的RTX51 Tiny库允许给任务设置就绪状态标志,使任务处于就绪状态,在一个时间间隔、超时或接受到信号后恢复运行。

CPU空闲模式RTX51 Tiny允许CPU处于空闲模式定时器中断的用户代码支持开发者可以添加自己的代码到RTX51 Tiny定时器中断中,也可以为自己的例程设置和RTX51 Tiny相同的例程(需配置CONF_TNY.A51)。

支持间隔时间设置OS_REST+INTERVAL允许开发者在混合的时间间隔和信号中调用OS_WAIT来调整超时时间。

此外,RTX51 Tiny已被重新组合以具备灵活性、加速性以及对代码和数据空间要求更小。

RTX51 Tiny第二版在显著减小代码量并具有可扩展性。

8051单片机实时操作系统RTX51 Tiny总结

8051单片机实时操作系统RTX51 Tiny总结

RTX51 Tiny介绍μVision是德国K eil公司开发的单片机IDE软件,最初主要用于8051系列单片机,RTX51是其自带的运行于8051系列单片机上的小型多任务实时操作系统,可用来设计具有实时性要求的多任务软件。

RTx51有2个版本:RTX51 Tiny和RTX51 Full。

RTX51 Tiny是RTX51 Full的子集。

RTX51 Tiny 自身仅占用900字节左右的程序存储空间,可以很容易地运行在没有外部扩展存储器的8051单片机系统上。

它完全集成在Keil C5l编译器中,具有运行速度快、对硬件要求不高、使用方便灵活等优点,因此越来越广泛地应用到单片机的软件开发中。

它可以在单个CPU上管理几个作业(任务),同时可以在没有扩展外部存储器的单片机系统上运行。

目前在8051系列单片机上使用多任务实时操作系统,RTX51 Tiny也就成为了首选。

////////////////////////////////////////////////////////////////////////////////////////////////////////////////// \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ RTX51 TINY允许同时“准并行”地执行多个任务:各个任务并非持续运行,而是在预先设定的时间片(time slice)内执行。

CPU执行时间被划分为若干时间片,RTX51 TINY为每个任务分配一个时间片,在一个时间片内允许执行某个任务,然后RTX51 TINY切换到另一个就绪的任务并允许它在其规定的时间片内执行。

由于各个时间片非常短,通常只有几ms,因此各个任务看起来似乎就是被同时执行了。

RTX51 Tiny学习

RTX51 Tiny学习

Round-robin 任务切换RTX51 Tiny可以配置成使用round-robin多任务。

Round-robinp容许quasi-parallel执行多任务。

任务并不是连续执行的,而是分时间片执行的(可用的CPU时间被分成时间片,RTX51 Tiny把时间片分配给各个任务)。

时间片的时间很短(以毫秒为单位),所以任务看起来像连续执行一样任务在分配给他的时间片内执行(除非放弃)。

然后切换到下一个就绪的任务。

这个时间片在RTX51 Tiny Configuration.配置文件中定义.下面的例子是一个使用round-robin多任务的RTX51 Tiny的程序。

这个程序中的两个任务都是循环计数器。

RTX51 Tiny执行称为job0的任务0。

这个函数创建了另一个任务job1。

Job0执行完它的时间片后,RTX51 Tiny开始执行job1。

Job1执行完它的时间片后,RTX51 Tiny又返回到job0开始执行。

然后再切换到job1,如此循环。

#includeint counter0;int counter1;void job0 (void) _task_ 0 {os_create (1);/* mark task 1 as ready */while (1) {/* loop forever */counter0++; /* update the counter */}}void job1 (void) _task_ 1 {while (1) { /* loop forever */counter1++; /* update the counter */}}注意:除了一个任务的时片到时,也可以使用函数os_wait 或函数os_switch_task通知RTX51 Tiny可以切换到另一个任务。

函数os_wait挂起当前任务直到特定的事件发生。

在这期间任何其他的任务都可以执行。

Cooperative 任务切换如果你禁止了round-robin多任务,你必须设计并执行你的任务从而让他你们以cooperativ方式工作。

RTX51应用笔记

RTX51应用笔记

RTX51应用笔记mcs 51 2008-09-01 08:33:48 阅读31 评论0 字号:大中小RTX51是KEILC公司专为51系列单片机而出的嵌入式系统,目前有两个版本可供选择:RTX51 tiny和RTX51 full 两个版本。

由于使用的人不是很多,相关的资料也十分的少。

因此本人在调试时走了一点点弯路,由于之前自学了点UC/OS II嵌入式操作系统。

学习RTX51时感到十分的轻松。

此次上传一点关于RTX51软件安装包和一点中文使用手册(想学好的话必须得看英文手册,安装好软件包后,英文手册在HLP目前下可找到)。

本此讲解的为RTX51 TINY版,因为它适合于没有外展存储器的51芯片,其本身也就900个字节左右,非常的小巧,当然了功能方面也就相应缩水了!。

但是,使用RTX51 Tiny 的程序可以访问外部存储器。

RTX51 Tiny允许循环任务切换,并且支持信号传递,还能并行的利用中断功能。

RTX51 Tiny 的os_wait函数可以等待以下事件:时间到、时间间隔、来自任务或者中断的信号。

压缩包中的中文手册讲解的非常的详细,也此就不再赘说了。

下面举两个小例子:事前准备:下载附件,解压。

安装RTX 51软件包,(注KEIL C 版本必须是7.02版本以上)实例1:(最好的例子是安装后程序处带的examples,我就是认真看了交通灯那个例子后才调通了下面的LED流水灯程序的)#include#includeconst unsigned char table[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80,0x40,0x20,0x10,0x08,0x04,0x02,0x01,0xFF,0x00};/*时间到空间的转换,如果table是:const unsigned char table[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};则算法和代码会多出一倍来。

RTX-51使用手册

RTX-51使用手册
系统调试...................................................................................... 41
堆栈管理...41 用 dScope- 51调试.....................................................................................................................印在打印机上的信息
本字体也用于出现在命令行上的论述或描述文字
KEYS 这种字体的文字表示在键盘上实际存在的键 例如 ALT+<x> 表明一Alt组合键 Alt和 <x>键必须同时按下
“Press Enter to Continue.”
CTRL+<x> 表明一Ctrl组合控制键 Ctrl和 <x>控制键必须同时按下
Springer-Verlag Inc., New York
本用户指南包含 部分
第 1 部分 概述 描述 rtx51实时操作系统的功能并给出RTX51 Tiny和 RTX51 Full 版本的基本特征和差异 同时包括 RTX51 Full 和 RTX51 Tiny. 的 技术数据
第 部 分 系 统 需 求 和 定 义 讨论 RTX51 Tiny的开发工具和目标系统的需求 解释在 RTX51 Tiny 手册中使用的术语和任务定义的描述
符号约定
本手册使用下列约定
范例说明
B old: BL51采用 Bold字体 大写的文本用于可执行程序 数据文件 源文件 环境变量的名称和你在DOS命令提示窗口键
入的命令 这种文本通常表示你必须逐字地输入的命令

RTX51-Tiny使用说明

RTX51-Tiny使用说明
如果你的程序中优先级高的中断函数消耗了比较多的时间那么也应该把longusrintrrtx51tiny使用rev1014july2014operatingsystemmanual13产品规格产品参数限制值最大可定义的任务数16最大激活的任务数16需要的code空间900字节最大需要的data空间字节需要的stack空间字节任务需要的xdata空间字节需要的定时器定时器系统时钟的机器周期数100065535中断响应时间20机器周期最大上下文切换时间100700机器周期14工具需求rtx51tiny需要以下的软件工具
限制值
16 16 900 字节(最大) 7 字节 3 字节/任务 0 字节 定时器 0 1,000-65,535 20 机器周期(最大) 100-700 机器周期
1.4 工具需求
RTX51 Tiny 需要以下的软件工具: ◆ C51 编译器 ◆ A51 宏汇编器 ◆ BL51 或者 LX51 连接器
本质上,你要确保时间轮转任务调度不会发生在使用算术单元的地方。 注意:
如果你想要使用算术单元,那么你应该禁止时间轮转任务调度,改用合作式任务调度。
1.5.6 寄存器组 RTX51 Tiny 假定所有的任务都使用寄存器组 0,正因为这样所有的任务函数都必须采用
默认的 C51 设定来编译(REGISTERBAN(0))。 中断程序应该可以使用剩下的寄存器组,不过 RTX51 Tiny 在寄存器组中占用了 6 个固
1.2 解决的问题
下面的列表是 RTX51 Tiny 版本 1.06 中发现的问题,这些问题在版本 2 中已经被修正。
(1) RTX51 Tiny 版本 1.06 中,如果 os_wait 期间有中断产生,那么函数 isr_send_signal 将会破坏就绪(READY)状态,这将导致任务被挂起,在中断中等待信号。
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1.2 解决的问题
下面的列表是 RTX51 Tiny 版本 1.06 中发现的问题,这些问题在版本 2 中已经被修正。
(1) RTX51 Tiny 版本 1.06 中,如果 os_wait 期间有中断产生,那么函数 isr_send_signal 将会破坏就绪(READY)状态,这将导致任务被挂起,在中断中等待信号。
RTX51 Tiny 假定系统中断使能控制位总是处于允许的状态(EA = 1),RTX51 Tiny 库函 数根据需要来改变系统中断的使能控制,目的是为了保护内核的结构不被中断所破坏;不过 RTX51 Tiny 的控制方式比较简单,并没有对 EA 的状态进行保存或者恢复。如果你的程序 在调用 RTX51 Tiny 内核函数之前禁止 EA,那么内核将会失去响应。
通常不允许在你的程序访问临界区时,短暂禁止中断;如果必须要禁止中断,那么要确 保禁止的时间很短,同时在中断禁止期间不允许调用任何内核函数。
1.5.2 重入函数 C51 编译器支持重入函数,通过将参数和局部变量保存到重入栈中来实现重入,支持重
入的函数可以被递归调用或者同时调用。不过 RTX51 Tiny 不包含任何对 C51 重入栈的管理, 因此只能在你的应用程序中使用重入函数,要确保重入函数不调用任何 RTX51 Tiny 的内核 函数同时也不被时间轮换任务调度所中断。
如果 C 函数仅仅使用了寄存器参数以及自动变量,这是天然的可重入函数,在 RTX51 Tiny 系统中调用没有任何限制。
非重入 C 函数不能被超过一个以上的任务或者中断程序调用,因为函数的参数和局部 变量是保存在静态存储区的,一旦发生多个任务同时调用或者递归调用,就会导致参数和局 部变量被覆盖。
如果你要从多任务中调用非重入函数,你必须要确保不会发生递归或者同时调用的情况 发生。通常,这意味着你禁止了时间轮转任务调度同时非重入函数也不调用任何的内核服务。 注意:
支持 CPU 的 Idle 模式 RTX51 Tiny 现在允许在 Idle 任务里进入 CPU 的 Idel 模式(许多器件都支持这个模式)。
支持在定时中断中添加用户代码 你现在可以在 RTX51 Tiny 的定时器中断中添加自己的代码,并在你自己的程序中使用和 RTX51 Tiny 相同且固定的时钟频率。这是一个可选项,需要通过配置文件 CONF_TNY.A51 来使能。
-1-
RTX51-Tiny 使用
REV 1.0 — 14 July 2014
Operating System Manual
支持调整时间间隔 如 果 调 用 os_wait 时 , 同 时 混 合 了 时 间 间 隔 和 信 号 两 种 事 件 , 那 么 就 可 以 通 过 函 数 os_reset_interval 来调整一个时间间隔的超时值。
(2) RTX51 Tiny 版本 1.06 中,在 os_wait 函数参数中不能组合 K_IVL 和 K_SIG 这两种 事件条件,因为当信号事件产生时没有办法调整定时器的时间间隔。版本 2 提供了函数 os_reset_interval,允许你正确调整定时器的时间间隔。
(3) RTX51 Tiny 版本 1.06 中,针对时间轮转调度的参数 TIMESHARING 不能设置为 1, 如果在时间轮转调度发生之前有中断产生,那么这个时间轮转调度的周期将被破坏,由 1 变成了 256。
定的寄存器,RTX51 Tiny 使用哪一个寄存器组可以由配置文件来设定(CONF_TNY.A51)。
-5-
RTX51-Tiny 使用
REV 1.0 — 14 July 2014
Operating System Manual
2、实时程序设计
实时程序设计必须要求能够快速响应实时事件,如果处理的事件比较少,那么在没有实 时操作系统的条件下也是比较容易实现的。一旦处理的事件增加,那么程序的复杂性和不确 定性就大大增加,这个时候就需要从操作系统上获益了。
是 RTX51 Tiny 并不支持对多数据指针的管理,因此在 RTX51 Tiny 应用上如果要使用多数据 指针,那么要非常小心。
-4-
RTX51-Tiny 使用
REV 1.0 — 14 July 2014
Operating System Manual
本质上,你要确保时间轮转任务调度不会发生在数据指针选择器改变的地方。 注意:
1、RTX51-Tiny 简介:
RTX51 Tiny Version 2(版本 2.02)是一个实时操作系统(RTOS),允许你设计实现在 同时一时间完成多功能或者运行多任务的应用。在嵌入式应用当中,往往会在没有 RTOS 的条件下实现一个特定的实时程序(在一个单循环中实现一种或多种功能,或者运行一个或 多个任务);这样的设计往往有很多资源分配,运行时间以及程序维护的问题需要解决,而 像 RTX51 这样的 RTOS 就可以帮你解决这些问题。
不论你在多个任务或者中断程序中调用重入或者非重入函数,你最好是禁止时间轮转的 任务调度,改用合作式任务调度。
1.5.3 C 库函数 C51 库函数中,支持重入的函数可以在任何任务中调用,没有限制;非重入 C51 库函
数的限制和普通 C 的非重入函数是一样的。
1.5.4 多数据指针 Keil C51 编译器允许你使用多数据指针(许多 8051 衍生产品都有支持多数据指针),但
限制值
16 16 900 字节(最大) 7 字节 3 字节/任务 0 字节 定时器 0 1,000-65,535 20 机器周期(最大) 100-700 机器周期
1.4 工具需求
RTX51 Tiny 需要以下的软件工具: ◆ C51 编译器 ◆ A51 宏汇编器 ◆ BL51 或者 LX51 连接器
库文件 RTX51TNY.LIB 和 RTX51BT.LIB 必须保存在编译器的库路径中,通常就是这个文件 夹:\KEIL\C51\LIB
头文件 RTX51TNY.H 也必须保存在 include 的路径中,通常是:\KEIL\C51\INC
1.5 目标系统要求
程序可能会使用到外部数据存储器,不过内核没有这个需求。RTX51 Tiny 可以运行在 所有被 Keil C51 编译所支持的存器模式上,存器模式的选择仅仅影响应用程序目标的定位 而已。RTX51 Tiny 的系统变量和应用程序的堆栈区总是位于 8051 的内部数据存储器里 (DATA 或者 I DATA)。典型的应用,RTX51 Tiny 的应用程序往往选择 SMALL 这种内存模 式。
RTX51 Tiny 采用合作式的任务调度(每一个任务都会调用一个内核函数)和时间轮转 的任务调度(每一个任务在操作系统切换到下一个任务之前都运行一个固定的时间)。不支 持有优先权的任务调度以及任务的优先级,如果你的应用需要使用到有优先权的任务调度那 么你需要使用 RTX51 Full 实时操作系统。
直接任务切换 os_switch_task 是新增加的函数,可以从一个任务立即切换到另外一个处于就绪(READY) 状态的任务。
任务就绪标志 新 的 RTX51 Tiny 库 函 数 isr_set_ready 和 os_set_ready , 让 你 可 以 给 一 个 任 务 设 置 就 绪 (READY)标志。就绪(READY)标 志将使一个任务立即处于就绪(READY)状态,等 待一个时间间隔(interval)、超时(timeout)或信号(signal)事件(参考函数 os_wait),任 务将在下一个时机唤醒进入运行。
此外,RTX51 Tiny 已经彻底调整结构获得了更多的灵活性,提高了性能并且减少了代 码和数据的空间需求。如果符合以下的条件,RTX51 Tiny 版本 2 是可以裁剪的,代码量将 显著缩减。
(1) 禁止时间轮转的任务切换; (2) 使用 TRX51 Tiny 新的系统函数; (3) 禁止堆栈检查;
一个实时操作系统(RTOS)可以更灵活有效地分配系统资源,例如 CPU 和存储器,同 时也提供任务之间的通信。RTX51 Tiny 是一个功能强大且易于使用的 RTOS,可以运行在所 有 8051 以及其衍生产品上。
RTX51 Tiny 的程序设计可以使用标准 C 语言,并可以用 Keil 的 C51 C 编译器进行编译。 利用 C51 附加的特性,你可以很容易声明任务函数,却不需要复杂的堆栈以及变量帧的配 置。RTX51 Tiny 的程序设计仅要求你包换一个特定的头文件以及正确连接 RTX51 的库到你 的程序中。
RTX51-Tiny 使用
REV 1.0 — 14 July 2014
Operating System Manual
RTX51-Tiny 使用
GARY Studio
有问题请联系 QQ:782387489
RTX51-Tiny 使用
REV 1.0 — 14 July 2014
Operating System Manual
本质上,你要确保时间轮转任务调度不会发生在使用算术单元的地方。 注意:
如果你想要使用算术单元,那么你应该禁止时间轮转任务调度,改用合作式任务调度。
1.5.6 寄存器组 RTX51 Tiny 假定所有的任务都使用寄存器组 0,正因为这样所有的任务函数都必须采用
默认的 C51 设定来编译(REGISTERBAN(0))。 中断程序应该可以使用剩下的寄存器组,不过 RTX51 Tiny 在寄存器组中占用了 6 个固
1.1 新增加的特性
RTX51 Tiny 版本 2 新增加了很多特性,使得实时软件的设计更容易,例如:
支持代码分页 RTX51 Tiny 现 在 支持 代 码 分 页 ,代 码 分 页 的支 持 是 一 个 可选 项 , 需 要 通过 配 置 文 件 CONF_TNY.A51 进行使能。和所有的代码分页应用一样,也必须通过文件 L51_BANK.A51 来配置代码分页的硬件操作。
-2-
RTX51-Tiny 使用
相关文档
最新文档