一,RTX51 Tiny简单介绍

   RTX51 Tiny是一种实时操作系统(RTOS),能够用它来建立多个任务(函数)同一时候运行的应用(从宏观上看是同一时候运行的,但从微观上看,还是独立运行的)。嵌入式应用系统常常有这样的需求。RTOS能够提供调度、维护、同步等功能。
  实时操作系统能灵活的调度系统资源,像CPU和存储器,而且提供任务间的通信。RTX51 Tiny是一个功能强大的RTOS,且易于使用,它用于8051系列的微控制器。该RTOS最多支持16个任务,基于RTX51
Tiny构建的应用程序没有main( )函数,是从任务0開始运行的。
  RTX51 Tiny的程序用标准的C语言构造,由Keil
C51 C编译器编译。用户能够非常easy的定义任务函数,而不须要进行复杂的栈和变量结构配置,仅仅需包括一个指定的头文件(rtx51tny.h)。
 RTX51 Tiny使用定时器0、定时器0中断,和寄存器组1。假设在程序中使用了定时器0,则RTX51 Tiny将不能正常运转。你能够在定时器0的中断服务程序后追加自己的定时器0中断服务程序代码(改动配置文件Conf_tny.A51)。
二,单任务、多任务和基于RTX51 Tiny程序的比較
单任务程序:
 嵌入式程序和标准C程序都是从main函数開始运行的,在嵌入式应用中,main一般是一个无限循环,能够觉得是一个持续运行的单个任务,比如:
void main(void)
{
while(1){
do_something( ); //一直循环运行do_something任务
}
}

多任务程序:
很多C程序通过在一个循环里调用服务函数(或任务)来实现伪多任务调度。如:
void main(void)
{
while(1){
key_scan( ); //键盘扫描
do_key( ); //处理按键事件
ctr_adj( ); //调整控制器
}
}
   该例中,每一个函数运行一个单独的操作或任务,函数(或任务)按次序依次运行。当任务越来越多,调度问题就被自然而然的提出来了。比如,假设ctr_adj(
)
函数运行时间较长,主循环就可能须要较长的时间才干返回来运行key_scan(
)
函数,导致遗漏部分按键事件。当然,能够在主循环中更频繁的调用key_scan(
)
函数以纠正这个问题,但终于这种方法还是会失效。

RTX51 Tiny程序:

当使用Rtx51Tiny时,为每一个任务建立独立的任务函数,比如:

void job0(void)  _task_  0
{
os_create_task(1); //创建任务1
os_create_task(2); //创建任务2
os_create_task(3); //创建任务3
os_delete_task(0); //删除任务0
} void job1(void) _task_ 1 //键盘扫描任务
{
while(1){
key_scan( );
}
} void job2(void) _task_ 2 //处理按键事件任务
{
while(1){
do_key( );
}
} void job3(void) _task_ 3 //调整控制器任务
{
while(1){
ctr_adj( );
}
}

该例中,每一个函数定义为一个RTX51 Tiny任务。RTX51 Tiny程序不须要main函数,取而代之,RTX51
Tiny从任务0開始运行。在典型的应用中,任务0简单的建立全部其它的任务。

学习RTX51
Tiny的书籍比較少,事实上最好的学习资料是Keil uVision中自带的用户手冊,按下图所看到的方式可打开:

 
             





RTX51 Tiny实时操作系统学习笔记—初识RTX51 Tiny的更多相关文章

  1. ucos实时操作系统学习笔记——操作系统在STM32的移植

    使用ucos实时操作系统是在上学的时候,导师科研项目中.那时候就是网上找到操作系统移植教程以及应用教程依葫芦画瓢,功能实现也就罢了,没有很深入的去研究过这个东西.后来工作了,闲来无聊就研究了一下这个只 ...

  2. ucos实时操作系统学习笔记——任务间通信(消息)

    ucos另一种任务间通信的机制是消息(mbox),个人感觉是它是queue中只有一个信息的特殊情况,从代码中可以很清楚的看到,因为之前有关于queue的学习笔记,所以一并讲一下mbox.为什么有了qu ...

  3. ucos实时操作系统学习笔记——内核结构和任务创建

    对于ucos实时操作系统,邵贝贝的那本书已经写得很详细了,我因为之前不深的研究过ucos,所以在这里做一个笔记,写一些个人对该操作系统的理解,仅仅是个人理解,如果有人看到这边随笔有不对的地方,望给我指 ...

  4. ucos实时操作系统学习笔记——任务间通信(信号量)

    ucos实时操作系统的任务间通信有好多种,本人主要学习了sem, mutex, queue, messagebox这四种.系统内核代码中,这几种任务间通信机制的实现机制相似,接下来记录一下本人对核心代 ...

  5. ucos实时操作系统学习笔记——任务间通信(队列)

    ucos操作系统中的queue机制同样使用了event机制来实现,其实和前面的sem,mutex实现类似,所不同的是对sem而言,任务想获得信号量,对mutex而言,任务想获得的是互斥锁.任务间通信的 ...

  6. ucos实时操作系统学习笔记——任务间通信(互斥锁)

    想讲一下ucos任务间通信中的mutex,感觉其设计挺巧妙,同sem一样使用的是event机制实现的,代码不每一行都分析,因为讲的没邵贝贝老师清楚,主要讲一下mutex的内核是如何实现的.可以理解互斥 ...

  7. 操作系统学习笔记----进程/线程模型----Coursera课程笔记

    操作系统学习笔记----进程/线程模型----Coursera课程笔记 进程/线程模型 0. 概述 0.1 进程模型 多道程序设计 进程的概念.进程控制块 进程状态及转换.进程队列 进程控制----进 ...

  8. 深挖计算机基础:趣谈Linux操作系统学习笔记

    参考极客时间专栏<趣谈Linux操作系统>学习笔记 核心原理篇:内存管理 趣谈Linux操作系统学习笔记:第二十讲 趣谈Linux操作系统学习笔记:第二十一讲 趣谈Linux操作系统学习笔 ...

  9. 操作系统学习笔记5 | 用户级线程 && 内核级线程

    在上一部分中,我们了解到操作系统实现多进程图像需要组织.切换.考虑进程之间的影响,组织就是用PCB的队列实现,用到了一些简单的数据结构知识.而本部分重点就是进程之间的切换. 参考资料: 课程:哈工大操 ...

随机推荐

  1. 获取android手机联系人信息

    package com.yarin.android.Examples_04_04; import android.app.Activity; import android.database.Curso ...

  2. Android 如何调用自写APK和非自写APK

    由于项目需要,调用一个现成的APK,总结之余,顺便把怎么调用自写APK的方法也写上,以做比较 1.如何调用现成的APK: 先上调用代码,然后再一一解释: Intent mIntent = new In ...

  3. “The SQL Server license agreenment cannot be located for the selected edition.”MSSQL安装问题

    今天老邹又来吐槽了.今天不和IE7较劲了.说点别的吧. 我呢什么软件都喜欢装最新版的,这部刚出来windows 8.1就赶紧装上了,随后就用上了vs2013.前天看到新闻说微软已经发布了sql ser ...

  4. CocoaPods报错:The dependency `xxx` is not used in any concrete target

    官网是这样给推荐的: 在创建Podfile的时候,用这种格式使用, platform :ios, '8.0' use_frameworks! target 'MyApp' do pod 'AFNetw ...

  5. WindowManager

    我们Android平台是一个又一个的Activity组成的,每一个Activity有一个或者多个View构成.所以说,当我们想显示一个界面的时候,我们首先想到的是建立一个Activity,然后所有的操 ...

  6. ECSTORE 关于前台页面DIALOG的调用

    在需调用dialog的html页面中插入本段代码. link='<{link app=test ctl=site_test act=abc}>'; var dialog = new Dia ...

  7. 制作PHP安装程序的原理和步骤56

    制作PHP安装程序的原理和步骤56 1.制作PHP安装程序的原理和步骤检查目录或文件的权限----修改或填加配置文件---检查配置文件正 确性---导入数据库----锁定或删除安装文件 原理: 其实P ...

  8. 文成小盆友python-num14 - web 前端基础 html ,css, JavaScript

    本部分主要内容 html - 基础 css - 基础 一.html 标签 html 文档标签树如下: head 部分 Meta(metadata information) 提供有关页面的元信息,例:页 ...

  9. 常用排序算法之——选择排序(C语言+VC6.0平台)

    选择排序是另一种经典排序算法,核心思想是:在一趟找最小(大)数的过程中,先假设待排数据中的第一个数据即为最小(大)数据,然后循环将其他数据与该数据比较,每次比较时若小于该数据则让新数据成为最小(大)数 ...

  10. Java中关于String的split(String regex, int limit) 方法

    今天在对一个String对象进行拆分的时候,总是无法到达预计的结果.呈现数据的时候出现异常,后来debug之后才发现,错误出在String spilt上,于是开始好好研究下这东西,开始对api里的sp ...