RTX51 Tiny用户指南包含如何使用Keil RTX51 Tiny Real-Time Kernel的信息。

这个手册包含以下章节。

  1. 综述 提供一个RTX51 Tiny Kernel的简短介绍。
  2. Real-Time程序 讨论实时程序面临的问题,以及如何使用RTX51 Tiny来解决这些问题。
  3. 操作原理 描述如何操作RTX51 Tiny,以及切换任务。
  4. 配置RTX51 Tiny 描述如何为应用配置内核。
  5. 使用RTX51 Tiny 关注RTX51内核的用法,包括创建和编译任务的细节。
  6. 库参考 列出所有对RTX51 Tiny库有效的库程序。

版本历史

  1. 2004年1月:CHM格式初版

综述

RTX51 Tiny是一个实时操作系统(RTOS),可以用来创建同时执行多个函数或任务的应用程序。通常在嵌入式应用中需要用到。事实上不使用RTOS来创建实时程序(在一个循环中执行一个或多个函数或任务),像RTX51 Tiny这样的RTOS可以处理许多时序安排、保持以及时间问题。

实时操作(RTOS)可以柔性调度系统资源,如CPU与内存,以及提供任务间通信。RTX51 Tiny是一个强大的RTOS,可以轻松的在8051衍生设备中使用和工作。

RTX51 Tiny程序是使用标准C设计的,使用Keil C51 C编译器编译,添加到C语言中,可以轻松的声明任务函数,而不需要使用复杂的堆栈和变量结构配置。RTX51 Tiny程序仅需要将一个特殊的头文件包含在程序中并将RTX51 Tiny库连接到程序中。

新的特性

RTX51 Tiny版本2包含很多新的特性可以使实时软件开发更容易。例如:

  1. 支持代码分页

RTX51 Tiny目前支持代码分页。这个选项必须在CONF_TNY.A51配置文件中进行使能。其它的代码分页应用中必须在L51_BANK.A51文件中定义代码分页硬件配置。

  1. 直接转换任务

一个新的函数(os_switch_task)允许一个任务直接执行任务转换切换到其它READY状态的任务。

  1. 任务Ready标志

新的RTX51 Tiny库程序isr_set_ready和os_set_ready,允许为一个任务设置READY标志。READY标志可以用于将一个任务置于等待时间间隔、超时或信号(signal)(参考os_wait)READY的状态。任务在下一次时机中恢复。

  1. 支持CPU空闲模式

RTX51 Tiny目前允许Idle Task在中进入空间模式(很多设备可以)。

  1. 在定时器中断中支持用户代码

目前可以在RTX51 Tiny定时器中断中添加用户的代码。可以使用与RTX51 Tiny相同的固定时钟频率作为自己程序的时钟。这个选项必须在CONF_TNY.A51 配置文件中使能。

  1. 支持间隔调整

os_reset_interval函数在混合间隔和信号调用os_wait程序的时候,允许调整间隔的超时值。

此外,RTX51 Tiny已经完全重组结构来增加它的灵活性,提供性能以及减少代码和数据空间的需求。RTX51 Tiny版本2在遇到以下条件的时候是可伸缩的,并且显示代码尺寸显著减小。

  1. Round-Robin任务切换被禁止
  2. 使用很少的RTX51 Tiny系统函数
  3. 禁用堆栈检查

禁用Round-Robin任务切换也可以减少数据空间的需求。

问题解决

以下列出RTX51 Tiny版本1.06已知的问题。这些问题在RTX51 Tiny版本2中已被修正。

  1. 在RTX51 Tiny V1.06中,在os_wait时出现中断,isr_send_signal函数或破坏READY状态。这会导致任务死机,从中断等待信号。这个问题在RTX51 Tiny版本2中已修复。
  2. 在RTX51 Tiny V1.06中,K_IVL和K_SIG事件不能合并成一个来调用os_wait程序,因为在信号发生时不能调整interval时间值。RTX51 Tiny版本2提供os_reset_interval程序,允许适当的调整interval时间值。
  3. 在RTX51 Tiny V1.06中,Round-Robin的TIMESHARING EQUate不能置为1。如果是,如果中断在Round-Robin在时间设置前出现,Round-Robin周期将会被破坏,要延时256个时钟为不是1。这个问题在RTX51 Tiny版本2中已被修复。
  4. 在RTX51 Tiny V1.06中,当用户中断执行时长超出RTX51 Tiny系统时钟定时器周期,RTX51 Tiny系统时钟定时器被递归调用。重写SAVEPSW和SAVEACC的值通常会导致系统崩溃。这个问题在RTX51 Tiny版本2中已经修复。如果应用程序包含的中断函数执行时间比RTX51 Tiny系统时钟定时器间隔长,LONG_USR_INTR配置选项可以设置为1。如果应用程序中需要消耗大量时间执行高优先级的中断程序则可能需要这个选项。

产品规格

参数

限制

定义任务最大数量

16

激活任务的最大数量

16

需要的CODE 空间

最大900 Bytes

需要的DATA 空间

7 Bytes

需要的STACK 空间

3 Bytes/Task

需要的XDATA 空间

0 Bytes

定时器(Timer)

0

系统时钟因子(System Clock Divisor)

1,000-65,535

中断等待时间(Interrupt Latency)

20 Cycles or Less

环境切换时间(Context Switch Time)

100-700 Cycles

工具要求

以下软件应用程序是RTX51 Tiny需要的:

  1. C51编译器
  2. A51宏汇编器
  3. BL51连接器或LX51连接器

RTX51TNY.LIB和RTX51BT.LIB库文件必须存储在哭路径下。通常是\KEIL\C51\LIB文件夹。

RTX51TNY.H头文件必须存储在包含路径中。通常是\KEIL\C51\INC文件夹。

目标需求

RTX51 Tiny运行在多数8051兼容设备,包括单片的变种。RTX51 Tiny应用可以使用外部数据存储器,但是内核不需要。

RTX51 Tiny可以工作在所有Keil C51 编译器支持的内存模式。选择的内存模式仅影响应用程序目标的位置。RTX51 Tiny系统变量和应用的堆栈区域总是存储在8051内部存储器(DATA或IDATA)。典型的,RTX51 Tiny应用按SMALL模式执行。

RTX51 Tiny执行协作(cooperative)任务切换(每个任务调用一个操作系统程序)和循环(round-robin)任务切换(在操作系统切换到下一个任务之前,每个任务运行的时间是固定的)。抢占式任务切换和任务优先级是不支持的。如果应用需要抢占式任务切换,必须使用RTX51 Full Real-Time Executive。

中断

RTX51 Tiny与中断函数并行执行。中断服务程序可以通过发送一个信号(使用isr_send_signal函数)或设置任务的Ready标志(使用isr_set_ready函数)与RTX51 Tiny任务通信。

中断程序必须被执行,并且要像标准程序、non-RTX51 Tiny应用一样在RTX51 Tiny应用中使能。在RTX51 Tiny中没有中断程序管理。

RTX51 Tiny使用定时器0,定时器0中断,和寄存器bank 1。如果程序使用定时器0,RTX51 Tiny内核将不能正常工作。可以在RTX51 Tiny定时器0 ISR的尾部添加自己的定时器0 ISR。更多信息请参考“硬件定时器”。

RTX51 Tiny假设总中断(EA=1)是使能的。RTX51 Tiny库程序更改中断系统(EA位)的状态,需要确保RTX51 Tiny的内部结构没有被中断破坏。当使能和禁用总中断时,RTX51 Tiny只是简单的更改EA的状态。不会保存和恢复EA。EA只是简单地设置或清除。因此,如果程序禁用了之前调用RTX51程序的中断,RTX51将不会应答。

对于程序的关键部分可能需要短暂的禁止中断。但是,不可以使用被禁止的中断调用任何RTX51 Tiny程序。如果程序会禁止中断,也应该是短暂的。

可重入函数

C51编译器提供对可重入函数的支持。可重入函数将参数和局部变量存储在可重入堆栈中。在递归或重复调用的时候保护它们。RTX51 Tiny不包含C51可重入堆栈的管理。因此,如果在应用程序中使用可重入函数,必须确保这些函数不会调用RTX51 Tiny的系统函数,并且可重入函数不会被round-robin任务切换中断。

那些参数和自动变量仅使用寄存器的C函数,本身就是可重入的,并且可以被不受限制的从RTX51 Tiny调用。

不可重入C函数不可以从多个任务或中断程序中调用。非可重入C51函数将其参数和自动变量(局部变量)存储在静态存储区,当函数被多个任务同时调用或递归调用时会被重写。

如果可以确定不会递归调用(同时地),可以从多个任务调用非可重入函数。通常这意味着round-robin任务调度必须被禁用。并且非可重入函数不能电影任何RTX51 Tiny系统函数。

注意:

  1. 如果想要从多个任务或中断中调用可重入函数或非可重入函数,应该禁用round-robin任务切换。

C库程序

可重入的C51库程序可以不受限制的在任何任务中使用。对于非可重入的C51程序,同样的限制适用于不可重入的C函数。

多数据指针

Keil C51编译器允许使用多数据指针(对很多8051派生设备有效)。但是,RTX51 Tiny不提供对他们的管理。因此,如果在RTX51 Tiny应用程序使用多数据指针,必须要谨慎。

本质上,必须保证在执行更改数据指针选择器的代码时,round-robin任务切换不会发生。

注意:

  1. 如果想使用多数据指针,应该禁用Round-Robin任务切换。

算术单元

Keil C51编译器允许使用各种8051设备的算术单元。但是,RTX51 Tiny不提供对他们的管理。因此,如果在RTX51 Tiny应用程序中使用算术单元,必须谨慎。

本质上,必须保证在执行使用算术单元的程序时,round-robin任务切换不会发生。

注意:

  1. 如果想使用算术单元,应该禁用Round-Robin任务切换。

寄存器Bank

RTX51 Tiny将所有任务分配在寄存器bank0。出于这个原因,所有的任务函数必须使用默认的C51设置编译,REGISTERBANK (0)。

中断函数可以使用其它的寄存器bank。但是,RTX51 Tiny需要寄存器区的6个永久bytes。被RTX51 Tiny使用的6个byte所在的寄存器bank,可以在配置文件中指定。

RTX51 Tiny用户指南(一)相关推荐

  1. 基于51单片机运行RTX51 Tiny操作系统源码模板之1.LED闪烁

    什么是RTX51 Tiny: RTX51 Tiny是一种实时操作系统(RTOS),可以用它来建立多个任务(函数)同时执行的应用.能灵活的调度系统资源,像CPU和存储器,并且提供任务间的通信.RTX51 ...

  2. 【RTX51 Tiny入门】08_Conf_tny.A51配置文件

    文章目录 01 - Conf_tny.A51 02 - 关注的配置 03 - 总结 01 - Conf_tny.A51   Conf_tny.A51是RTX51 Tiny的OS配置文件,每一个RTOS ...

  3. jBPM3.12用户指南中文翻译----第一章 绪论

    这是Jboss 的jBPM3.12框架的用户指南的中文翻译.其中第一章的译文,是我在网上找到的.其他几章都是我自己做的翻译.我的翻译是中英文对照,只翻译部分我认为重要的,不翻译简单的英文,以免浪费你我 ...

  4. jesd204b应用指南中文_Novation 发布 Summit 合成器中文用户指南

    Novation 发布 Summit 合成器中文用户指南感谢购买Summit 16复音双声部合成器.它是novation至今开发的声音最佳合成器.Summit是novation桌面式合成器Peak的进 ...

  5. oracle 查二进制字符串,检测二进制文件 - Oracle® Developer Studio 12.5:Discover 和 Uncover 用户指南...

    检测二进制文件 通过检测目标二进制文件,会在关键位置添加代码,以便 discover 可以在二进制文件运行时跟踪内存操作. 注 - 对于 SPARC V8 体系结构上的 32 位二进制文件,disco ...

  6. 《Raspberry Pi用户指南》——2.4 使用外部存储设备

    本节书摘来自异步社区<Raspberry Pi用户指南>一书中的第2章,第2.4节,作者[英]Eben Upton , [美]Gareth Halfacree,译者 王伟 , 许金超 , ...

  7. Gradle用户指南(章9:Groovy快速入门)

    Gradle用户指南(章9:Groovy快速入门) 你可以使用groovy插件来构建groovy项目.这个插件继承了java插件的功能,且扩展了groovy编译.你的项目可以包含groovy代码.ja ...

  8. [转载]Guice 1.0 用户指南

    http://code.google.com/p/google-guice/ 用 Guice 写 Java Guice 1.0 用户指南 (20070326 王咏刚 译自:http://docs.go ...

  9. 《树莓派用户指南(第3版)》——2.1 连接显示器

    本节书摘来异步社区<树莓派用户指南(第3版)>一书中的第2章,第2.1节,作者:[英]Eben Upton(阿普顿),Gareth Halfacree(哈菲克),更多章节内容可以访问云栖社 ...

最新文章

  1. 虚拟化云计算平台Proxmox VE
  2. GitLab公布关于开发者趋势的问卷调查结果
  3. wstring与string相互转换
  4. MAX_DEPTH, MAX_ROUTERS and MAX_CHILDREN
  5. 你见过动物是怎么笑的吗?赶紧来看看【组图】
  6. VTK:图片之ImageConvolve
  7. 助力苏州、星火相传,广苏两地微软技术俱乐部交流纪实
  8. [相关总结性文章] 写给即将入行的程序员的一封信
  9. NHibernate3.0剖析:Query篇之NHibernate.Linq标准查询
  10. UEFI+GPT与BIOS+MBR的优缺点
  11. 用IoT放羊养牛,不出门也能知道它们的动向
  12. ei eo eq什么意思_招生官看重的EI和CPCI到底是啥?
  13. Miniflter中 NPInstanceSetup调查
  14. 菜鸟到高手:SQL开发进阶常用精妙语句
  15. 一款安全性测试工具Appscan
  16. 2021-07-30-DJ-006 Django模型的objects方法、参数详解
  17. 写给 python 程序员的 OpenGL 教程
  18. html5跳棋游戏,跳棋小游戏大全
  19. Diligent收购领先的批判性见解和分析SaaS提供商Insightia
  20. 电脑耳机电流声的消除2021-09-11

热门文章

  1. 快手发布2022直播生态报告,运营人速览
  2. [小说连载]张小庆,在路上(14)- 妈妈来北京打工
  3. 计算机系 礼物,湖大19个学院毕业礼物聚齐了,全都是用心爱你的模样!
  4. 区块链学习8:超级账本项目Fabric中的背书、背书节点、背书策略、背书签名
  5. 泛微ecology 公文管理功能相关的几张表
  6. 微信小程序 输入文字用canvas生成公章并转为图片
  7. 我做了一个100+工具的外贸营销推广工具导航,你觉得怎么样?
  8. 基于web的电影点评系统分析与设计
  9. 张一鸣演讲全文:外部波澜起伏,内心平静如常|字节跳动9周年
  10. 如何用W7100A实现串口转以太网(一)