当前位置:
文档之家› RTX51-Tiny使用说明
RTX51-Tiny使用说明
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 使用