RTX51小型实时操作系统介绍.doc
《RTX51小型实时操作系统介绍.doc》由会员分享,可在线阅读,更多相关《RTX51小型实时操作系统介绍.doc(7页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、RTX51小型实时操作系统介绍(连载1)有二个不同的RTX51版本可以使用RTX51 Full 使用多于四个任务优先权同时完成存在时间片轮转调度和抢先式的任务切换。 RTX51工作在与中断功能类似的状态下。 信号和消息可以通过邮箱系统在任务之间互相传递。 你可以从一个可分配存储区中分配和释放内存。 你可以强迫一个任务等待中断、超时或者是从另一个任务或中断发出的信号或消息。RTX51 Tiny 是 RTX51的一个子集,它可以很容易地在没有任何外部存储器的单片8051系统上运行。 除了下列例外,RTX51 Tiny支持许多 RTX51 中的特性。RTX51 Tiny仅支持时间片轮转任务切换和使用
2、信号进行任务切换。不支持抢先式的任务切换。不包括消息历程。 没有可分配存储区分配程序。许多微处理器应用程序要求同时执行两个工作或任务。 对于这样的应用程序,一个实时操作系统(RTOS)允许灵活的分配系统资源(中央处理器、存储器、等等.)给各个任务。 RTX51是一个很容易使用的功能强大的实时操作系统。 RTX51可以运行于所有的 8051 派生机型。你可以使用标准 C语言编写和编译一个程序并使用 C51 构造、编译他们, 仅在指定任务标识符和优先权上有一点差别。. RTX51程序也要求你在程序中用include命令引入实时管理的头文件并使用 BL51 linker/locator进行连接和选择
3、适当的 RTX51库文件。RTX51小型实时操作系统介绍(连载2)单任务程序一个标准的 C语言程序从主函数开始执行。 在一个嵌入式应用中,主函数通常是一段无限循环的代码,可以认为是一个连续执行的单独任务。 例如int counter;void main (void) counter = 0; while (1) /* 始终重复 */ counter+; /* 计数器加1 */ 时间片轮转程序一种更高级的 C语言程序可以在不使用实时操作系统的情况下实现时间片轮转拟多任务系统。 在这种系统中、任务或功能被一段无限循环程序重复调用。 例如int counter;void main (void) co
4、unter = 0; while (1) /* 始终重复 */ check_serial_io (); process_serial_cmds (); /* 处理串行输入 */ check_kbd_io (); process_kbd_cmds (); /* 处理键盘输入 */ adjust_ctrlr_parms (); /* adjust the controller */ counter+; /* increment counter */ 用 RTX51进行时间片轮转调度rtx51也能完成多重任务时间片轮转,而且允许准并行执行多个无限循环或任务。 任务并不是并行执行的而是按时间片执行的。
5、可利用的中央处理器时间被分成时间片由 RTX51分配一个时间片给各个任务。 每个任务允许执行一个预先确定的时间。 然后,rtx51切换到另一准备运行的任务并且允许这个任务执行片刻。 时间片非常短、通常为几个毫秒。 因此、它表现得如同各个任务是同时地执行的。RTX51使用一个8051硬件计时器中断作为定时程序,产生的周期性中断用于驱动 RTX51时钟。RTX51不需要在你的程序中拥有一个主函数。它将自动开始执行任务 0。 如果你确实有一个主函数,你必须利用 RTX51 Tiny中的 os_create_task函数或 RTX51中的 os_start_system函数手工启动 RTX51。下面的
6、例子显示一个只使用时间片轮转任务调度的简单的 RTX51应用程序。 在本程序里的二个任务是简单的计数器回路。 rtx51启动时执行函数名为 job0的任务 0。 这个函数添加了另一个叫做 job1 的任务。 在 job0 运行一会儿以后、RTX51切换到 job1。 在 job1运行一会儿以后、RTX51转回到 job0。 这个过程将不确定地重复下去。i nclude int counter0;int counter1;void job0 (void) _task_ 0 os_create (1); /* mark task 1 as ready */ while (1) /* loop fo
7、rever */ counter0+; /* update the counter */ void job1 (void) _task_ 1 while (1) /* loop forever */ counter1+; /* update the counter */ RTX51事件即使是在等待一个任务的时间片到达时,你也可以使用 os_wait函数通知 RTX51它可以让另一个任务开始执行。 这个功能中止正在运行的当前任务然后等待一个指定事件的发生。 在这个时候、任意数量的其他任务仍可以执行。使用 RTX51的时间溢出事件你可以用 os_wait函数等待的最简单的事件是 RTX51时钟报时
8、信号周期溢出。 这类事件可被用于任务中需要延迟一段时间的地方。 这可用于查询一个开关状态的代码中。 在这样的应用中,只须每隔 50ms左右查询一次开关状态。下一个例子示范了如何在允许其他的任务执行的时候使用 os_wait功能延迟任务的执行。i nclude int counter0;int counter1;void job0 (void) _task_ 0 os_create (1); /* mark task 1 as ready */ while (1) /* loop forever */ counter0+; /* update the counter */ os_wait (K_
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- RTX51 小型 实时 操作系统 介绍
限制150内