RTX51Tiny在核数据采集系统中的应用_周程

合集下载

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)或者是它们之间的组合。

第10章实时操作系统RTX51课件

第10章实时操作系统RTX51课件
. 在许多单片机应用系统中要求能够同时处理多项工作或 任务, 实时多任务操作系统(RTOS)可以灵活地为几个 任务调度系统的资源(CPU、存储器等)。 RTX51是一个 强大的实时操作系统, 而且简单易用。 它可以在所有的 8051派生产品中使用。
. 可以用标准C的结构编写RTX-51程序, 并用C51编译它 们。 它只在指定任务ID和优先权方面与标准C有一点不 同。 RTX-51程序也要求包含实时可执行的头文件, 并 用BL51链接器/定位器和相应的RTX-51库文件链接。 13
• 在RTX51 TINY环境下生成代码,需要用到下列工具: ➢ C51编译器 ➢ BL51连接/定位器 ➢ A51宏汇编器 此外,库文件RTX51TNY.LIB必须存放在环境变量C51LIB
所指定的路径下。
18
v RTX51 Tiny的存储模式 RTX51 Tiny版可以运行在8051的单芯片嵌入式系 统上,且不需要任何外部数据存储器,但也不排斥 应用程序访问外部的数据存储器。 RTX51 Tiny 版 本可以使用C51所支持的所有存储模式。所使用的 存储模式只影响应用对象的存储位置。 RTX51 Tiny的系统变量和应用程序的堆栈区总是存储在 8 0 5 1 的 片 内 RAM中 ( 即 DATA和 IDATA) 。 典 型 的RTX51 Tiny应用程序一般运行于SMALL存储模 式下。
4. BITBUS通信: RTX-51 FULL系统中集成了BITBUS主控制器和从控制器。
BITBUS任务主要用于支持与Intel 8044之间的信息传递。
15
6. 运行环境 v RTX-51实时多任务操作系统使用标准的C51来编写
程序,可以运行于所有的51系列单片机中。
v RTX-51自身提供了灵活的时间分配,以及任务的 响应和切换。用户只需要用标准的C51语言编写 RTX51 程序,然后用 C51 编译器编译即可生成代码。 其中,仅有少数内容和标准C语言有差异,这些内 容是为了实现任务标识和优先级而设置的。

RTX51嵌入式实时操作系统分析

RTX51嵌入式实时操作系统分析

(2) 任务创建 ,将自由堆栈空间的 2个字节分配给新创建 的任务 ;
(3) 任务删除 ,回收被删除任务的堆栈空间 ,并转换为自由 堆栈空间 。
堆栈管理如图 2所示 。
图 1 用户任务状态转换图
212 同步机制
RTX51 Tiny内核用以下事件进行任务间的通信和同步 。 超时 ( TIM EOUT) :由 os_wait函数调用引发的时间延时 ,
如果出现以下情况 ,则当前运行任务中断 : (1) 任务调用 os_wait函数并且指定事件没有发生 ; (2) 任务运行时间超过定义的时间片轮转超时时间 。 如果出现以下情况 ,则开始另一个任务 : (1) 没有其他的任务运行 ; (2) 将要开始的任务处于“READY”或“TIM EOUT”状态 。
213 调度策略
RTX51 Tiny采用时间片轮转算法 ,不支持任务优先级策 略 。时间片非常短 ,通常只有几个毫秒 。一个时间片的持续时 间也可以预先用配置变量 TIM ESHAR ING定义 。系统每次调度 时 ,把 CPU分配给一个就绪的任务 ,并令其执行一个时间片 ,构 成微观上轮流运行 、宏观上并行执行的多任务效果 。
以下情况会启动堆栈管理 : (1) 任务切换 ,将全部自由堆栈空间分配给正在运行的任务 ;
(1)任务 A 正在运行 ; (2)切换到任务 B 运行 ; (3)删除任务 C后 ,自由空间增加 ; (4)创建任务 D 后自由空间减少 2字节 图 2 堆栈管理
215 中断处理
RTX51 Tiny提供两种方法来处理中断 :一种是 C51中断函 数 ,包括软件中断和硬件中断 。对于硬件中断 ,用户不能再使用 定时器 T0。当中断发生的时候 ,程序跳到相应的中断处理函 数 。中断处理过程与正在运行的任务是相互独立的 ,即中断处 理过程在 RTX51系统内核之外和任务切换规则没有关联 。但 中断处理过程可以同 RTX51任务互发信号或交换数据 ;另一种 是 RTX51的任务中断 。如果中断发生 ,等待中断的任务就从 “等待 ”状态进入到“就绪 ”状态 ,并按照任务切换规则进行切 换 。这种中断处理是完全集成在 RTX51内部 ,与硬件中断事件 的处理以及信号 、消息的处理是完全相同的 。

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第二版在显著减小代码量并具有可扩展性。

实时操作系统RTX51Tiny在教学中的应用

实时操作系统RTX51Tiny在教学中的应用
维普资讯
20 0 7年第 5期

建 电

3 5
实时操作 系统 R X i 在教 学 中的应用 T 5Tn 1 y
卢 勇威
f广 西 职 业技 术 学 院 电 子 机 械 系 17 广 西 南 宁 5 0 2 9# 3 2 6)
【 要】 摘 :本文探讨ቤተ መጻሕፍቲ ባይዱ了嵌入 式实时操 作 系统 R X 1 iY在教 学中的应 用。 T 5 Tn 嵌入式 实时操作 系统在 实际的应用 中越 来越
它 汽车 . 工业 控 制 等行 业 中都 有 嵌 入 式 系统 的应 用 。 嵌 入式 实 时 换 每一 个 任 务 都有 自己 的 上下 文 . 是 每 次 被 调 度运 行 时所 要 在 P 操 作 系统 的 基 础 上编 写 的 各 种 应 用 程 序 与通 常 的前 后 台 系统 程 求 C U 寄存 器 的 状 态 每次 新 任务 被 创 立 时 . 内核 也 创立 一个 和维 护 认 为 相关 的 序相比. 具有 以下 优 势 : 能 更 强 大 、 功 设计 周 期 更 短 、 序更 容 易 程 C Ts ot o ) C oB c 移 植 与扩 展 。 因此 . 嵌入 式 实 时操 作 系统 在 程 序 设 计 中 的应 用 已 任务 控制 块 T B(akC nrl 1 k 。T B主要 包 括 三项 内容 : T Yt k i : s—d任 务 的 代 码 人 口地 址 , 于 C D R [s_d t k i a ]a 位 O E空 经 是 非常 重 要 的技 术 。 关 课 程 为 了 让 学 生 掌握 嵌 入 式 操 作 系统 的 程序 设 计 方法 和思 由于各 种 原 因 .我 系 并 没有 开设 嵌 入 式 实 时操 作 系统 的 相 间 , 节 为一 个 单 位 。 2字 Pt kd: si 务 所 使 用 堆 栈 栈 底 位 置 , 于 I A A空 [ si1t kd任 a a 位 D T

RTX51_Tiny_中文手册(全文下载)

RTX51_Tiny_中文手册(全文下载)

RTX51 Tiny 2.02 中文手册RTX51 Tiny第二版(版本2.02)是RTX51 Tiny 1.xx的升级版本,他完全集成在keil的集成开发环境中。

RTX51 Tiny是一款可以运行在大多数805 1兼容的器件及其派生器件上的实时操作系统(准实时),相对与传统的开发方式而言,用实时操作系统进行开发是一种效率更高的方式。

作为实时操作系统,RTX51 Tiny虽然比较简陋,但它还是具备了一些实时操作系统的基本要素,完全可以充当我们进入实时操作系统(RTOS)世界的领路者,更为重要的是,它是免费的。

:-)从本节起,我会陆续将keil帮助文件中的RTX51 Tiny第二版的使用手册翻译为中文,并发布给大家,供大家参考。

RTX51 Tiny 2.02 中文手册part1RTX51 Tiny第2版用户手册第一章概述RTX51 Tiny是一种实时操作系统(RTOS),可以用它来建立多个任务(函数)同时执行的应用。

嵌入式应用系统经常有这种需求。

RTOS可以提供调度、维护、同步等功能。

实时操作系统能灵活的调度系统资源,像CPU和存储器,并且提供任务间的通信。

RTX51 Ti ny是一个功能强大的RTOS,且易于使用,它用于8051系列的微控制器。

RTX51 Tiny的程序用标准的C语言构造,由Keil C51 C编译器编译。

用户可以很容易的定义任务函数,而不需要进行复杂的栈和变量结构配置,只需包含一个指定的头文件。

一、What’s NewRTX51 Tiny第二版增加了许多新特性,使得实时软件的开发更加简单,如:●支持Code Banking该选项必须在CONF_TNY.A51配置文件中允许,还要在L51_BANK.A51文件中定义Code Ban king硬件配置。

●直接任务切换新增加的函数(os_swich_task)允许一个任务立即切换到另一个处于就绪态的任务。

●任务就绪标志新的库函数isr_set_ready和os_set_ready允许用户给一个任务设置就绪标志。

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};则算法和代码会多出一倍来。

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)状态,这将导致任务被挂起,在中断中等待信号。

基于实时操作系统RTX51的多任务处理设备设计

基于实时操作系统RTX51的多任务处理设备设计

u o T k M i B x ni n as a o 1
_
p M i B x ta e : i
/ 木任 务会 话 邮箱 指针 /
) :
任 务 邮箱 的定 义 概括 了任 务 的各 类 信 息和 参 数 ,每 个 任务 利 用任 务 邮箱 交换 信 息 。任 务 邮箱基 本数 据 结构 如下 :
u i n T s a o { n o a k M iB x i
a k D: u sg e n r ue T s I n in d it So c
— —
下 联各 传 感 器 链 路联 接 、 传 感器 发 现 、注 册 、注 销和 状 态 维 护 , 并 将链 路 联接 状况 向相关 进 程报 告 。 通 过 现 场 总线 对 现 场传 感 器 进 行 参数 配 置 、 按 照设 定 的 时 间 间 隔 同各 个 检 测传 感 器 进 行通 信 ,采 集数 据 、并对 其 工 作 状 况进 行监视 。确定现场数据关联逻辑和算法,可在现场对各类检测传 感 装 置和 输 出驱 动进 行 有 简单 逻 辑 关 系 的连 锁 逻 辑 设 置 ,实 现控 制 功能 。 ( )任 务 队列数 据 结构 二 任 务 需 求循 环 链 队列 维护 进 程 通 过 RX 1 T 5 的任 务消 息 触 发 相 关进 程 , 由于 RX 1Tn 操 作 系统 短 小精 炼 ,任 务调 度 仅支 持单 T 5 iy 数据 位 消 息 机 制 ,无 法传 递更 多 的 参 数 ,但 是 多任 务处 理 设 备 的 各 个任 务之 间需 要传 递 的 参数 信 息 比较 多 ,采 用任 务 队列 和 任 务 邮 箱 的方法 ,可 以很 方便 的 实现 参数 传 递 。 以设 备 实 际 功 能为 例 ,说 明任 务 队 列 的工 作 方 式 。例 如 ,更 新 单体 传 感 器 定 时到 ,需 求维 护 子 进 程将 一 个 任 务 需求 推 入 任 务 队 列 ,并 同 时通过 R X 1T n T 5 iy发送 一 个 系统 消息 给 单体 传感 器 维 护 进程 ;简 单传 感 器 维 护 进程 收 到 系 统 消 息后 启 动 ,并 到 任 务 队 列 中取 出任 务 ,打 开 任 务 邮箱 ,根 据 任 务要 求 , 更新 单 体 传 感器 数据 ,并 将 更新 资源 镜像 表 的任 务 需 求推 入 任 务 队 列 ,并 同时通 过 R X 1 Tn 发 送 一个 系统 消 息给 资源 镜 像表 访 问维护 进程 :资 T 5 iy 源 镜 像 表访 问维护 进程 收 到系 统 消息 后 , 任 务队 列 中取 出任 务 , 到 打开 任 务 邮箱 ,将 要更 新 的传 感器 数 据 写入 资源 镜像 表 。 任务队列是 内存 中的逻辑上首尾相接 的数据队列。待执行的 任 务在 任 务 队列 中排 队 ,单 片机 按 照 R X 1 作 系 统调 度 处 理 , T5 操 处理 完 成 的任 务移 除 队列 。任 务 队列 数据 结 构定 义 如下 :

RTX51 TINY

RTX51 TINY

Theory of OperationRTX51 Tiny uses the standard 8051 Timer 0 (mode 1)to generate a periodic interrupt. This interrupt is the RTX51 Tiny Timer Tick. Timeout and interval values specified for the RTX51 Tiny library routines are measured using the RTX51 Tiny Timer Tick.By default(缺省,默认), the RTX51 Timer Tick interrupt occurs every 10,000 machine cycles. So, for a standard 8051 running at 12MHz, the period of the timer tick is 0.01 seconds or a frequency of 100Hz. The value may be changed in the CONF_TNY.A51 configuration file.TasksRTX51 Tiny is basically a task switcher. To create an RTX51 Tiny program, you must create an application with one or more task functions. The following details will help you to quickly gain an understanding of RTX51.∙Tasks are defined in the C Programming Language using new keywords supported by the Keil C51 Compiler.∙RTX51 Tiny maintains each task in exactly one state (Running, Ready, Waiting, Deleted, or Time-Out).∙Only one task at a time may be in the Running State.∙Many tasks may be in the Ready, Waiting, Deleted, or Time-Out States.∙An Idle Task is always ready to run in the event that all of your defined tasks are blocked.Task ManagementState DescriptionRUNNING The task that is currently running is in the RUNNING State. Only one task at a time may be in this state.The os_running_task_id returns the task number of the currently executing task.READY Tasks which are ready to run are in the READY State. Once the Running task has completed processing, RTX51 Tiny selects and starts the next Ready task. A task may be made ready immediately (even if the task is waiting for a timeout or signal) by setting its ready flag using the os_set_ready or isr_set_ready functions.W AITING Tasks which are waiting for an event are in the W AITING State. Once the event occurs, the task is switched to the READY State. The os_wait function is used to place a task in the W AITING State.DELETED Tasks which have not been started or tasks which have been deleted are in the DELETED State. The os_delete_task routine places a task that has been started (with os_create_task) into the DELETED State.TIME-OUT Tasks which were interrupted by a Round-Robin Time-Out are in the TIME-OUT State. This state is equivalent to the READY State for Round-Robin programs.EventsEvents in a real-time operating system may be used to control the execution of tasks in the program. A task may wait for an event(Event TIMEOUT、INTERV AL) or may set event flags for other tasks(Event SIGNAL).The os_wait function allows a task to wait for one or more events.∙The Timeout is a common event for which a task can wait. A timeout is simply a number of clock ticks. While a task waits for a timeout, other tasks may execute.Once thespecified number of timer ticks elapses, the task may continue execution.在等待事件发生过程中,可以执行其他任务,该任务处于挂起状态。

单片机操作系统RTX51Tiny的使用步骤

单片机操作系统RTX51Tiny的使用步骤

单片机操作系统RTX51Tiny的使用步骤一般地,下面三步是使用RTX51 Tiny要实现的l 编写RTX51程序l 编译并连接程序l 测试和调试程序一、编写程序写RTX51 Tiny程序时,必须用关键字对任务进行定义,并使用在RTX51TNY.H中声明的RTX51 Tiny核心例程。

1、包含文件RTX51 Tiny仅需要包含一个文件:RTX51TNY.H。

所有的库函数和常数都在该头文件中定义。

你可以在你的源文件中包含它:#include2、编程原则以下是建立RTX51 Tiny程序时必须遵守的原则:①、确保包含了RTX51TNY.H头文件。

②、不要建立main函数,RTX51 Tiny有自己的mian函数。

③、程序必须至少包含一个任务函数。

④、中断必须有效(EA=1),在临界区如果要禁止中断时一定要小心。

参见概述中的中断一节。

⑤、程序必须至少调用一个RTX51 Tiny库函数(象os_wait)。

否则,连接起将不包含RTX51 Tiny库。

⑥、Task 0是程序中首先要执行的函数,必须在任务0中调用os_create_task 函数以运行其余任务。

⑦、任务函数必须是从不退出或返回的。

任务必须用一个while(1)或类似的结构重复。

用os_delete_task函数停止运行的任务。

⑧、必须在uvison中指定RTX51 Tiny,或者在连接器命令行中指定。

更多技术文档参见keil软件知识库。

3、定义任务实时或多任务应用是由一个或多个执行具体操作的任务组成的,RTX51 Tiny支持最多16个任务。

任务就是一个简单的C函数,返回类型为void,参数列表为void,并且用_task_声明函数属性。

例如:void func (void)_task_task_id这里,func是任务函数的名字,task_id是从0到15的一个任务ID号。

下面的例子定义函数job0编号为0的任务。

该任务使一个计数器递增并不断重复。

第17章 RTX51 Tiny操作系统

第17章 RTX51 Tiny操作系统

RTX51 Tiny介绍
RTX51 Tiny是一个实时的内核,由一个ARM公司KEIL发布。RTX51 Tiny是一个小的实时内核,它用于代 码长度是重要考虑因素的那些应用。RTX51包含在PK51专 业开发工具中,这个工具和PSoC Creator一起安装。此外 ,RTX51 Tiny是免费的。 RTX51 Tiny支持C51编译器所有的存储器模型(小的 ,压缩的和大的存储模型)。 RTX51 Tiny可以配置成轮询和合作的多任务,但它不 支持抢占任务切换和任务优先级。 RTX51 Tiny使用单个定时器,用于操作系统的定时器 “ 滴答”。不使用其它硬件资源。
RTX51 Tiny介绍 --内核函数

返回:指定事件发生时,使能任务用于执行。恢复执行。 可能的返回值:

SIG_EVENT:接收到一个信号; TMO_EVENT:完成超时,或者间隔过期; NOT_OK:event_sel参数无效;
RTX51 Tiny介绍 --内核函数
1.下面给出一个例子说明使用RTX51 Tiny内核函数调 用实现轮询调度:
RTX51 Tiny介绍 --内核函数
char
os_wait(unsigned char event_sel, unsigned char ticks, unsigned int dummy)
功能:os_wait函数停止当前的任务,等待一个或多个事 件,比如:来自时间间隔,来自一个超时,或者 来自其它任务或者中断。event_sel参数指定了时间 或者等待事件,能是下面常数的任何的组合:
RTX51 Tiny介绍 --任务切换
RTX51 Tiny执行轮询多任务调度,这样允许模拟并行 执行多个无限循环或者任务。任务不是并发执行的,而是 按时间片执行的。可用的CPU时间被分成时间片,RTX51 Tiny为每个任务分配一个时间片。每个任务允许执行预先 确定的时间长度。然后,RTX51 Tiny切换到其它准备运行 的任务,然后这个任务执行一段时间。时间片的长度使用 变量TIMESHARING定义。

嵌入式操作系统RTX51Tiny的分析及应用 (1)

嵌入式操作系统RTX51Tiny的分析及应用 (1)

图 2 堆栈搬移图 1. 3 应用 RTX51 Tiny 的说明
在对 RTX51 Tiny 进行应用开发时 ,将会涉及到一些 全局变量及系统调用函数的问题 。
表 1 是对一些全局变量的说明 ,用户可以通过改变这 些变量 ,达到适应具体系统应用的目的 。表 2 是几个系统 调用函数的说明 ,用户通过使用系统调用函数来达到采用 操作系统简化程序设计的目的 。

16 卷 第 6 2006 年 6 月

计算机技术与发展
COMPU TER TECHNOLO GY AND DEV ELOPM EN T
VJoul.n1. 6 2N00o6. 6
嵌入式操作系统 RTX51 Tiny 的参量的说明
变量
文字说明
IN T - CLOC K 定义系统时钟间隔 。系统使用这个间隔产生中断
TIM ESHARIN G 定义时间片轮转任务切换的超时时间
RAM TOP
表明 8051 派生系列内存储器存储单元的最大尺 寸 。8051 应设为 7 FH ;8052 应设为 0 FFH
RTX51 Tiny 任务管理的主要工作是按某种调度策略 使应该运行的任务占用 CPU ,同时 ,要对各任务在切换时 的地址进行保存 ,即压栈 ,以便下次运行该任务时 ,能够恢 复运行 (下文有详细的分析) 。首先看看 RTX51 Tiny 的 任务状态 。RTX51 Tiny 的用户任务具有以下几个状态 。
?STACK 表示堆栈的起始地址 ,堆栈的下面是全局 变量 、寄存器和位寻址区 。栈顶 RAM TOP 可由配置文件 定义 。
图 1 任务状态转换图 一般情况下 ,任务切换由时间片控制 。但有时候 ,用 户需要用事件来控制任务切换 。RTX51 Tiny 事件有超时 (timeout) 、间隔 (interval) 和信号 (signal) 3 种 。 Timeout :挂起运行任务指定数量的时钟周期 , 调用 os - wait 函数的任务将被挂起 , 直到延时结束才返回到 ready 状态 ,并可被再次执行 。 Interval :类似于超时 , 但是任务的节拍计数器不复 位 。典型应用是产生时钟 。 Signal :用于任务间通信 , 如果一个任务调用了 os wait 等待 signal 而 signal 未置位 ,则该任务被挂起到 signal 位置 ,才返回到 ready 状态 ,可被再次执行 。 系统内核中的 os - wait 函数 (详见下文) 挂起一个任 务来等待一个事件的发生 。当任务等待的事件没有发生 的时候 ,系统挂起这个任务 ;当事件发生时 ,系统根据任务 切换规则切换任务 。 1. 2 存储器管理 存储器的管理主要是如何划分存储空间和采用什么 原则将要运行的程序安置到内存的适当位置上 。RTX51 采用的存储管理法是移动法 。它以一个任务为单元分配 内存 ,每个任务分配一连续的存储空间 。并且堆栈按任务 的标号由大到小排列 。 RTX51 Tiny 是把 51 单片机的内部 RAM 作为内存 使用的 。对于 8052 芯片 ,由于 00 H~2FH 是工作寄存器 区和位寻址区 ,设置堆栈要从 30 H 开始 ,直到 FFH 都是可 用的 。任务可用的堆栈从当前 SP~ FFH。在主程序中 , 赋给每个任务的堆栈栈底都是 RAM TOP。当这个任务被 创建时 ,将会在适当的位置为它腾出两字节的空间 ,存放 任务的入口地址 。当这个任务处于运行状态时 ,被替换下 来的任务堆栈空间将被转移到当前任务 。同时 ,时钟 0 中 断程序将会检查这段当前任务所用的堆栈是否有足够的

基于RTX51的数据采集系统实现

基于RTX51的数据采集系统实现
以复 杂 计 算 为 核 心 的 应 用 系 统 ,但 仍 在 智 能 仪 器 和 小 型 控 制 系 统 中得 到 应 用 。在 没 有 操作 系 统 支 持 的情 况 下 ,多 任 务 调 度 成 为 单 片机 应 用 系统 构 造 上 的重 要 难 题 。 循 环 方 式 的 多 任 务 是 在 主 函 数 中重 复 轮 流 调 用 任 务 函
第3 6卷 第 1 期 4
I 3 1 oL 6 No1 .4





21 0 0年 7月
J l 0 0 u y2 1
Co put rEng ne rng m e i ei
・工程应 用 技术 与 实现 ・
文章编号:l ( 32( l) _02—0 文献标识码:A o 卜- 8 o0 4-2l 3 0 4 2 1
[ src ]Ontebss f n lzn e i s rcsigs aeis f l— s p rt gss m R X5 ,hs a e ein n lmet Abta t ai o ayigt n akpo esn t tge tt ko ea n yt T tipp r sg s di e ns h a h ma t r o mu ia i e 1 d a mp
理通过处理函数完成 。在这种程序结构中各功能模 块界 限分 明 ,便于扩充 ,充分利用 C U 的处理能力 ,可以提高事件 响 P
应 的实 时 性 。
[ yw rs T 1 mbd e p rt gss m; aa olcig p rl lak sq e t lak Ke o d lR X5 e ddo eai yt d tc l t ;aa e ts;eu ni s e n e e n l at

为RTX51Tiny项目添加管程模块

为RTX51Tiny项目添加管程模块
高级同步管理工具 。
该 过 程 中 的 前几 条 指 令 将 检 查 在 管 程 中是 否 有 其 他 的 活 动 任 务 。这 是 程 序 员 替 代 编 译 器 完 成 管 程 语 言 成 分 时 所 需 做 的 少量 工作 。 管程 结 构 如 图 1所 示 , 管 程 把 所 有 共 享 资 源 以及 一 组 针对 这 些共 享 资 源 的 操 作 过 程 集 中 在 一 个 软 件 模 块 Mo — n i t o r内部 。并 发 争 用 管 程 内 部 共 享 资 源 的 外 部 多 任 务 , 只能 通 过调 用 管程 内 部 过 程 来 间接 使 用 管 程 内 部 共 享 资
小, 简洁高效 , 能 够 实 现 独立 不 相 关 的 多 任 务 并 发 执 行 , 具
体 相 关 伙 伴 组 任 务 之 间 的 同步 机 制 。被 广 泛 应 用 在 8 0 5 1 系 列 单 片 机 的软 件 开 发 项 目中 。 当 Ti n y系统 打 开 时 间 片 ( t i me s h a r e ≠O ) 时, 系统 中 多 任 务 由 内核 按 时 间 片轮 转 调 度 , 并 发 运 行 。但 这 时 只 有 独 立 不 相关 任 务 能 够 按 时 问片 并 发 推 进 ; 而对 于 有 共 享 资 源
Co r p o r a t i o n ,B e i j i n g 1 0 0 0 7 4, Ch i n a )
A b s t r a c t :RTX5 1 Ti n y i s a s ma l l mu l t i - t a s k r e a l — t i me o p e r a t i n g s y s t e m( RTOS )a d a p t i v e t o M CS 5 1 MCU. Th e s y s t e m k e r n e l l a c k s t h e ma n a g e me n t t o o l t o s h a r e t h e r e s o u r c e s i n t i me s o f s y n c h r o n i z i n g t h e e x e c u t i o n o f c o n c u r r e n t t a s k s.Th i s p a p e r i n t r o d u c e s a p r o p o s a l a i —

RTX51 Tiny内核应用常见问题分析

RTX51 Tiny内核应用常见问题分析

RTX51 Tiny内核应用常见问题分析
贾水英;杨建红;谢宏伟
【期刊名称】《单片机与嵌入式系统应用》
【年(卷),期】2009(000)009
【摘要】@@ 引言rnμVision是德国Keil公司开发的单片机IDE软件,最初主要用于8051系列单片机,目前也有支持ARM系列单片机的专用版本MDK-
ARM[1].RTX51是其自带的运行于8051系列单片机上的小型多任务实时操作系统,可用来设计具有实时性要求的多任务软件.RTX51有2个版本:RTX51 Tiny和RTX51 Full.RTX51 Tiny是RTX51 Full的子集.
【总页数】3页(P66-68)
【作者】贾水英;杨建红;谢宏伟
【作者单位】兰州大学;兰州大学;兰州大学
【正文语种】中文
【中图分类】TP3
【相关文献】
1.基于RTX51TINY实时操作系统的应用 [J], 雷霞;
2.RTX51 Tiny在核数据采集系统中的应用 [J], 周程
3.KEIL RTX51 TINY内核的分析与应用 [J], 刘玉宏
4.基于RTX51TINY实时操作系统的应用 [J], 雷霞
5.RTX51 Tiny多任务机制在物料搬运系统中的应用 [J], 贺淑敏;盛树军
因版权原因,仅展示原文概要,查看原文内容请购买。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

第28卷 第3期核电子学与探测技术
V ol .28 N o .3 2008年 5月Nuclear Electronics &Detection Technolo gy
M ay . 2008
RTX51Tiny 在核数据采集系统中的应用
周 程
(江苏省辐射环境监理站,南京 210029)
摘要:
介绍了一种基于实时操作系统RT X51Tiny 的核数据采集系统。

该系统是以P89C668为核心,512道的γ能谱数据采集系统。

将RT X51T iny 应用到核多道系统的设计中,大大提高了系统的稳定性和可靠性;同时,由于采用多任务设计,软件的模块化程度高,降低了软件开发的复杂性,提高了软件开发的效率。

关键词:核数据采集系统,RT X51T iny ,P89C668,γ能谱
中图分类号: T L81 文献标识码: A 文章编号: 0258-0934(2008)03-0599-03
收稿日期:2006-06-22
作者简介:周程(1981-),男,四川自贡人,硕士研究生,研究方向:核技术应用及辐射监测防护
1 核多道分析仪器系统介绍
本文以多道γ能谱仪器为例,首先由探测器将探测到的γ射线转换成电脉冲信号,经过信号整形放大、峰值检测和峰值保持等信号调
理电路后,启动A /D 转换,A /D 转换完毕后通知微控制器从中获取转换数据,然后通过P89C668对数据进行简单分析,在液晶屏上动态显示出γ射线的能谱曲线。

结构框图如图1所示。

图1 核多道分析仪器系统电路原理框图
2 核多道分析仪器硬件设计
2.1 探测器选择
在众多的γ射线探测器中,经过筛选比较,我们选用了探测效率较高、能量分辨率适宜、价格较便宜的NaI (Tl )闪烁体作为γ射线全谱测量探测器。

NaI (Tl )闪烁体的尺寸选取为 75×75m m 。

配合N aI (Tl )闪烁体工作的是GDB -76F 光电倍增管,工作高压约为负680V 。

2.2 放大甄别电路
电路包括了对脉冲信号的幅度放大,阈值甄别,信号的过峰检测,以及峰值保持的调理电路。

由控制电路(74LS74的第六脚)启动ADS7852,A /D 对此时的脉冲峰值进行模数转换,转换结束后触发批中断,P89C668从AD 读取有效数据并重新控制该电路(74LS74的第13脚置1,8脚为高,开关断开,电容充电)开始转换。

电路如图2所示。

2.3 AD 芯片
本设计采用的是美国TI 公司的12位并行输出A /D 芯片A DS7852。

ADS7852的最大采样率为500ksps ,有8个通道,其功率损耗在500ksps 条件下只有13m W ,功耗很低,而且ADS7852还具有一个半睡眠模式和一个全睡眠模式,可以在其不进行数据转换时把功耗降低到2mW ,ADS7852的这一特性完全满足核数据采集系统低功耗的要求。

599
图2 甄别控制电路
2.4 微控制器选择
鉴于512道能谱仪的数据处理相对较为复杂,本设计选用Philips系列单片机P89C668,其内带64kB大容量Flash存储器,8k的数据RAM足以支持核能谱程序的编写与数据的暂存。

该存储器既可并行编程也可以串行在系统编程ISP。

该器件在6个时钟周期内执行一条指令是传统的80C51的两倍。

2.5 液晶选择
液晶选用晶采光电科技公司的AG-320240A1FIQW-59H背光的LCD用于显示人机交换界面和谱线。

其主控芯片为SED1335,显示范围320×240。

在5V供电下,功耗150M W。

3 基于实时操作系统的核数据采集系统的设计
近年来,利用嵌入式实时操作系统来开发嵌入式系统的软件已是大势所趋。

这是因为传统的这类设计中,大多采用中断结合单任务的顺序机制进行,这种设计方法虽比较直观,但是也带来了诸如稳定性差、实时性差、不便于调试等问题。

尤其是当系统比较复杂、实时性要求较高时,这种单任务机制的缺陷更为明显。

利用嵌入式实时操作系统,程序开发者可以将复杂的系统分成多个相对独立的任务,从而分而治之,降低了系统的复杂性;通过对不同的任务赋以不同的优先级,从而能够保证系统的实时性;同时,由于软件系统由多个任务组成,所以其模块化程度好,提高了系统的可维护性。

因此,这里利用实时操作系统RTX51来进行核多道分析系统的软件设计。

3.1 RTX51Tiny简介
RTX51是美国keil公司开发的一种小型的应用于M CS51系列单片机的实时多任务操作系统,该操作系统简单易用,适用于51系列的所有派生机型,它分为RTX51Full和RTX51Tiny两个部分,后者是前者的子集。

我们使用的是后者,因为RTX51Tiny功能强大,足以满足本系统软件开发的需要,它可以灵活地分配硬件系统资源(CPU,存储器等)给各个任务,从而大大地缩短了程序开发的时间并增强了软件工作的稳定性。

此外,RTX51Tiny 可以很容易地运行在8051系统上,而不需要外部RAM。

它支持时间片轮转方式的任务切换,不支持占先式任务切换。

RTX51Tiny支持任务间的信号通讯,支持最大16个标准任务。

(1)RTX51Tiny所占资源很少,具体描述如下:
a)占用程序空间:900By te;
b)占用定时器:永久占用一个16位定时器,一般是定时器0(因此要记得一开始要打开全局中断和定时器0中断,并且不要对定时器0进行操作);
c)占用内部RAM的7字节Data区,占用ida ta区字节数为:3×任务数。

(2)RTX51Tiny的配置
a)RTX51Tiny有一个配置文件CONF TNY.A51,可配置时间片的大小等参数,该文件有详细的注释。

编辑完该文件后,需要进行编译,并与其它相关目标代码一起连接,之后再创建成库RTX51tny.lib。

b)在连接器的连接属性中需加上参数。

3.2 RTX51Tiny在核数据采集系统设计中的应用
本设计主要采用两个任务:任务0和任务1;任务0负责处理USB事件,任务1负责处理键盘事件;其中USB事件包括USB设备的枚举,USB端点数据的传送和接受,USB设备的挂起等操作;键盘事件包括键盘按键键值的获
600
取,键值对应相应功能的实现,如设置仪器参数、谱线实时显示、谱线刻度、数据上传等功能;两任务间利用时间片轮进行轮换调度;具体流程框图如图3所示。

值得注意的上传数据功能,当任务1中获取按键按下后,P89C668向USB端点1IN发送能谱仪存储的数据。

首次发送64By te,以后发送任务均由任务0中的USB端点0中断处理程序来启动数据上传,直至数据发送完毕返
回任务1等待新任务。

图3 RT X51T iny在系统软件中的应用4 总结
针对51系列单片机而言,RTX51是一个比较好的实时操作系统,将其应用到核探测仪器的设计中,大大提高了系统的稳定性和可靠性;同时,由于采用多任务设计,软件的模块化程度高,降低了软件开发的复杂性,提高了软件开发的效率。

参考文献:
[1]Keil Sof tw are Inc.RT X51T iny U se r's G uide.
[2]《RT X51Real2time K ernel》http://w ww.keil.
co m/r tx51/default.htm.
[3]徐爱钧,单片机高级语言C51Window s环境编程
与应用[M].北京:电子工业出版社.
[4]周立功,P DIU SBD12固件编程与驱动开发[M].北
京:北京航空航天大学出版社,2003.2.
The application of RTX51Tiny in nuclear data collection system
ZHO U Cheng
(Radiative and e nviro nmental mo nito ring and supe rvision statio n o f Jiang su P rov ince,210029,China)
Abstract:T his paper int roduces a kind of nuclear multi-channel analyse system,which isγenergy spec-trum data acquisition system with512channel and use P89C668as the key microprocessor.T he applica-tion of RT X51T iny in the design of nuclear multi-channel system greatly improve the system's stability and reliability,at the same time,the introduction of multi-task improve the softw are modularization and exploiture,cut dow n the complexity of soft ware exploiture.
Key words:nuclear dat a collection system,RTX51Tiny,P89C668,γenergy spect rum
601。

相关文档
最新文档