打印

RTX51 Tiny操作系统

[复制链接]
1216|14
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
关小波522|  楼主 | 2015-9-17 21:01 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
RTX51 Tiny操作系统和把RTX51 Tiny集成到PSoC3程序设计中的方法。
沙发
heping517| | 2015-9-17 21:03 | 只看该作者
RTX51 Tiny的描述、集成RTX51到软件设计和程序结构及代码分析

使用特权

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

使用特权

评论回复
地板
huihui520| | 2015-9-17 21:09 | 只看该作者
在不使用操作系统的传统的MCU设计中,使用单任务的程序或者轮询的程序。
       1.单任务程序
       一个标准的C程序用main函数启动执行。在嵌入式应用中,main通常编码作为一个无限循环,被认为一个单任务,这个任务连续的运行。下面给出单任务程序的代码:
int counter;
     void main (void) {
     counter = 0;
     while (1) { /* 无限循环 */
         counter++; /* 递增计数器*/}
  }

使用特权

评论回复
5
peace555| | 2015-9-17 21:09 | 只看该作者
简单的轮询程序
       不用实时操作系统RTOS,用一个轮询预安排的多任
务机制,实现一个更复杂的C程序。在这个机制中,任务
或者函数在一个无限循环中被重复的调用。
int counter;
void main (void) {
      counter = 0;
           while (1)  { /* 无限循环 */
                            check_serial_io ();
                            process_serial_cmds (); /* 处理串行输入 */
                            check_kbd_io ();
                            process_kbd_cmds (); /* 处理键盘输入 */
                            adjust_ctrlr_parms (); /* 调整控制器 */
                            counter++; /* 递增计数器*/
                          }
                      }

使用特权

评论回复
6
peace555| | 2015-9-17 21:09 | 只看该作者
实时或者多任务应用是由一个或多个执行指定操作的
任务所构成的。RTX51 Tiny允许最多16个任务。任务是简
单的C函数,返回类型为void,有一个void参数列表。使用
_task_函数属性声明。格式如下:
                       void func(void) _task_ num
     其中:num是任务ID号,取值从0~15;
    例如:
              void job0 (void) _task_ 0 {
              while(1) {
                             counter0++;    /*计数器递增*/
                           }
               }

使用特权

评论回复
7
zb0830| | 2015-9-17 21:12 | 只看该作者
每个在RTX51 Tiny中定义的任务,都应该在下面状态中的其中某个状态。RTX51 Tiny内核能够保证每个任务的
正确状态。表17.1给出了不同状态的描述。

使用特权

评论回复
8
zb0830| | 2015-9-17 21:13 | 只看该作者
状态                                          描述
RUNNING        在RUNING状态,当前任务正在执行。在一个时刻,只允许执行一个任务。
READY        在READY状态,等待执行任务。当前运行的任务完成处理后,RTX51 Tiny启动下一个准备的任务
WAITING        在WAITING状态,任务等待一个事件。如果发生一个事件,任务则进入READY状态
DELETED        在DELETED状态,没有启动任务。
TIME-OUT        在TIME-OUT状态,任务被轮询超时打断。这个状态等同于READY状态。

使用特权

评论回复
9
zheng522| | 2015-9-17 21:16 | 只看该作者
RTX51 Tiny执行轮询多任务调度,这样允许模拟并行执行多个无限循环或者任务。任务不是并发执行的,而是
按时间片执行的。可用的CPU时间被分成时间片,RTX51 Tiny为每个任务分配一个时间片。每个任务允许执行预先确定的时间长度。然后,RTX51 Tiny切换到其它准备运行的任务,然后这个任务执行一段时间。时间片的长度使用变量TIMESHARING定义。

使用特权

评论回复
10
zheng522| | 2015-9-17 21:16 | 只看该作者
如果不是等待一个任务的时间片超期,那么可以使用os_wait()系统函数来通知RTX51 Tiny让另一个任务开始执行。os_wait()停止执行当前的任务,等待一个指定时间的产生。在这段时间内,可以执行任意数目的任务。
         RTX51 Tiny中,负责分配处理器给一个任务的那部分称为调度器(scheduler)。根据下面的规则,RTX51 Tiny调度器定义所运行的任务
        如果发生下面的情况,则打断当前正在运行的任务:
任务调用os_wait函数,并且没有产生指定的事件;
执行任务的时间大于定义的轮询超时时间;
如果发生下面的情况,则启动其它任务:
没有运行其它任务;
将要启动的任务处于READY或者TIME_OUT状态;

使用特权

评论回复
11
zhengbo7hui| | 2015-9-17 21:23 | 只看该作者
下面对RTX51 Tiny内核函数进行说明,在调用这些内
核函数时,必须包含头文件rtx51tny.h,即         
                         #include<rtx51tny.h>:

char isr_send_signal(unsigned char task_id)
        功能:该函数发送信号到task_id任务。如果指定的任务已经
                      在等待信号,则该函数调用将准备用于执行的任务。
                      否则,保存信号到任务的信号标志内。该函数只能从
                      中断函数中调用。
          返回:0,表示成功;-1,表示任务不存在;

使用特权

评论回复
12
zhengbo7hui| | 2015-9-17 21:23 | 只看该作者
char os_clear_signal(unsigned char task_id)
       功能:清除task_id指定任务的信号标志;
        返回:0,表示成功清除信号标志;-1,表示任务不存在

char os_create_task(unsigned char task_id)
        功能:启动task_id指定的任务。任务标记为准备,并且根据   
                    RTX51 Tiny指定的规则执行。
       返回:0,表示成功启动任务;-1,表示没有启动任务,或
                   者不存在task_id定义的任务。

使用特权

评论回复
13
hnkf118| | 2015-9-18 00:10 | 只看该作者
好多马甲

使用特权

评论回复
14
leijixiaomile| | 2015-9-18 17:09 | 只看该作者
感觉配合好默契,这是怎么做到的?

使用特权

评论回复
15
给力芯片| | 2015-9-21 09:42 | 只看该作者
楼上也是马甲啊

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

58

主题

564

帖子

1

粉丝