一,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. 关于禁止在 .NET Framework 中执行用户代码。启用 "clr enabled" 配置选项

    这个问题是我新装好sql2008r2以后,我把服务器上的数据库还原到本地,取代码里跟踪测试的时候,出现的这个问题. 然后我在网上找了之后在sql里直接新建查询执行如下语句: exec sp_confi ...

  2. Android Studio 将工程作为第三方类库的步骤

    一.将工程的module名称修改为自己要添加的类库名称 1.选中module文件夹右键到Rename项 2.选中Rename module项 3.修改为自己的名称,如VolleyLibary 二.修改 ...

  3. 本地连接速度100.0mbps变10.0mbps如何恢复

    右键我的电脑--管理---设备管理器--网络适配器展开,可以看到网卡,右击属性--高级--连接速度和双工模式或(LINK SPEED)选项,选择100就好了   那么我们在选择的时候会有100M全双工 ...

  4. iOS9中请求出现App Transport Security has blocked a cleartext HTTP (http://)

    错误描述: App Transport Security has blocked a cleartext HTTP (http://) resource load since it is insecu ...

  5. PHP Libxml

    PHP Libxml 函数 PHP:指示支持该函数的最早的 PHP 版本. 函数 描述 PHP libxml_clear_errors() 清空 Libxml 错误缓冲. 5 libxml_get_e ...

  6. php随机密码

    <?php /* * php自动生成新密码自定义函数(带实例演示) 适用环境: PHP5.2.x / mysql 5.0.x * */ function genPassword($a=1,$b= ...

  7. C++中基类对象的引用

    代码: #include <iostream> #include <cstdio> using namespace std; class A{ public: void pri ...

  8. 磁盘阵列RAID

                                                                                  磁盘阵列RAID 年提出的.RAID名为独立 ...

  9. 机器学习之python: kNN

    ################################################## # kNN : k Nearest Neighbour # Author : Monne # Da ...

  10. SQLServer 2008 删除、压缩日志

    SQL Server 2008删除或压缩数据库日志的方法 由于数据库日志增长被设置为“无限制”,所以时间一长日志文件必然会很大,一个400G的数据库居然有600G的LOG文件,严重占用了磁盘空间.由于 ...