RTX51 Tiny用户指南(四)

使用RTX51 Tiny

为了使用RTX51 Tiny,必须能够成功创建RTX51程序并编译、连接它们。通常,必须完成以下三步内容:

  1. 书写RTX51程序
  2. 编译和连接程序
  3. 测试与调试程序

 

书写程序

当书写RTX51 Tiny程序时,必须使用_task_关键字定义自己的RTX51 Tiny任务,并使用RTX51 Tiny内核程序,原型位于RTX51TNY.H。

 

包含文件

RTX51 Tiny需要使用的仅有一个包含文件:RTX51TNY.H。所有库程序和常量都定义在头文件中。可以将其包含在自己的RTX51 Tiny原文件中,如下:

#include <rtx51tny.h>

 

编程指导

创建RTX51 Tiny程序时,有一些规则必须遵守。

  1. 确保包含了RTX51TNY.H头文件。
  2. 不要创建main C函数。RTX51 Tiny有它自己的main函数。
  3. 程序必须创建至少一个任务函数。
  4. RTX51 Tiny程序必须使能中断(EA=1)。如果在当前部分禁止中断需要谨慎。RTX51 Tiny如何使用中断系统,请参考“综述”中的“中断”部分。
  5. 程序必须调用至少一个RTX51 Tiny库程序(如os_wait)。否则,连接器将不会包含RTX51 Tiny库。
  6. 任务0是用户程序中第一个执行的任务。必须在任务0中调用os_create_task函数来运行其它任务。
  7. 任务函数必须不能退出或返回。任务必须使用while(1)或类似的功能进行循环。使用os_delete_task函数来停止正在运行的任务。
  8. 必须在µVision或连接器命令行指定RTX51 Tiny。

关于RTX51 Tiny的一些技术文献可以在Keil Software Knowledgebase找到。

 

定义任务

实时或多任务应用由一个或多个执行特殊操作的任务组成。RTX51 Tiny支持最多16个任务。

任务是由_task_函数属性定义的void返回类型和void参数列表的简单的C函数。例如:

void func (void) _task_ task_id

其中

func

是任务函数的名称。

task_id

任务ID编号,0-15

以下示例定义函数job0作为任务0。这个任务重复增加一个计数器。

void job0 (void) _task_ 0 {

  while (1) {

    counter0++; /* increment counter */

  }

}

注意

  1. 所有任务要作为死循环执行。任务不应该返回。
  2. 任务不能返回一个函数值。必须是void返回类型。
  3. 参数不可以传递到函数。任务必须是void参数列表。
  4. 每个任务必须分配一个唯一、非周期的任务ID。
  5. 为了减少RTX51 Tiny对存储器的需求,将任务按顺序从0开始。

 

编译与连接

有两种主要的方式来编译和连接RTX51 Tiny应用。以下描述如何创建一个RTX51 Tiny应用。

  1. 使用µVision IDE
  2. 使用命令行工具

 

命令行工具

RTX51 Tiny完全整合和了C51编程语言。这就使得创建RTX51 Tiny应用程序变得非常简单。创建一个RTX51 Tiny程序,仅需要书写C函数即可。不需要汇编程序。

从命令行编译RTX51 Tiny程序

正常调编译器。不需要特殊指令,例如:

C51 RTXPROG.C DEBUG OBJECTEXTEND

生成的RTXPROG.OBJ文件包含C代码和定义的RTX51 Tiny任务。

从命令行连接RTX51 Tiny程序

  1. 在连接器命令行指定RTX51TINY命令。
  2. 在object文件列表中包含RTX_CONF.OBJ文件(如果更改了配置文件)。

例如:

BL51 RTXPROG.OBJ, RTX_CONF.OBJ RTX51TINY

RTX51TINY指令命令连接器连接RTXPROG.OBJ与RTX_CONF.OBJ文件,来包含RTX51 Tiny库。RTX51 Tiny程序使用已创建的C文件中的任务。

注意:

  1. 不要在RTX51 Tiny程序中创建main C函数。要创建一个任务函数。Main C函数包含在RTX51 Tiny库中,用于启动操作系统与任务0。如果在应用程序中包含一个main函数,将会遇到连接器错误,表明定义了多个main。
  2. 必须在应用程序中创建至少一个任务函数。
  3. 应用程序必须调用至少一个RTX51 Tiny函数(如os_wait或os_create_task),使连接器能够包含RTX51 Tiny库。

 

µVision IDE

使用µVision创建RTX51 Tiny程序

  1. 打开Options for Target对话框(从Project菜单选择Options for Target选项)。
  2. 选择Target表
  3. 在Operating System选项列表选择RTX-51 Tiny。

 

调试

µVision Simulator允许运行和测试RTX51 Tiny应用程序。RTX51 Tiny应用程序载入方法与而非RTX51 Tiny程序相同。调试没有特殊的命令或选项需求。

kernel-aware对话框显示RTX51 Tiny内核和程序中自定义任务的所有内容。从Peripherals菜单选择RTX51 Tiny Tasklist来显示这个对话框。

  1. TID是在任务定义中指定的任务ID。
  2. Task Name是任务函数的名称。
  3. State是任务的当前状态。
  4. Wait for Event指定任务等待的事件。
  5. Sig表示任务的signal falg的状态(1 = set)
  6. Timer表示任务到达超时前执行的定时器滴答数量。这是一个自由运行的定时器,仅在任务等待超时或interval时使用。
  7. Stack表示本地任务堆栈的起始地址。

 

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值