http://www.rt-thread.org/官网

RT-Thread RTOS,由国内一些专业开发人员开发、维护。它不仅仅是一款 高效、稳定的实时操作系统内核,也是一套面向嵌入式系统的软件平台,覆盖了:

  • 全抢占的实时操作系统内核
  • 小巧而与底层具体实现无关的文件系统
  • 轻型的TCP/IP协 议栈
  • 命令即C语言的shell命令行
  • 轻型的多窗口多线程图形用户界面。

目前RT-Thread RTOS在国内已经有十多家企业在使用,从数据采集、数据监控到机械控制,从ARM7芯片到STM32、LM3S等的Cortex-M3芯片,从实时内核、文件系统、shell命令行到轻型TCP/IP网络协议栈,RT-Thread RTOS被证明是一款可用于产品并稳定运行的嵌入式实时操作系统。

 
RT-Thread 结构
 
 
 

实时操作系统核心

 
 

RT-Thread实时操作系统核心是一个高效的硬实时核心,它具备非常优异的实时性、稳定性、可剪裁性。最小可以到3k ROM占用、1k RAM占用。

  • 内核对象系统
  • 实时线程操作系统内部采用面向对象的方式设计,内建内核对象管理系统,能够访问/管理所有内核对象。内核对象包含了内核中绝大部分设施,而这些内核对象可 以是静态分配的静态对象,也可以是从系统内存堆中分配的动态对象。通过内核对象系统,RT-Thread可以做到不依赖于具体的内存分配方式,伸缩性得到 极大的加强。
  • 任务/线程调度
    支持以线程为基本调度单位的多任务系统。调度算法是基于优先级的全抢占式线程调度,支持256个线程优先级(亦可配置成32个线程优先级),0优先级代表 最高优先级,255优先级留给空闲线程使用;相同优先级上支持多个线程,这些相同优先级的线程采用可设置时间片长度的时间片轮转调度;调度器寻找下一个最 高优先级就绪线程的时间是恒定的(O(1))。系统不限制线程数量的多少,只与物理平台的具体内存相关。
  • 同步机制
    系统支持semaphore,mutex等线程间同步机制。mutex采用优先级继存方式以防止优先级翻转。semaphore释放动作可安全用于中断服 务例程中。同步机制支持线程按优先级等待或按先进先出方式获取信号量或互斥锁。
  • 通信机制
    系统支持event,mailbox,message queue通信机制等。event支持多事件"或触发"及"与触发",适合于线程等待多个事件情况。mailbox中一个mail的长度固定为4字节,效 率较messagequeu高。通信设施中的发送动作可安全用于中断服务例程中。通信机制支持线程按优先级等待或按先进先出方式获取。
  • 时钟,定时器
    系统默认使用时钟节拍来完成同优先级任务的时间片轮转调度;线程对内核对象的时间敏感性是通过系统定时器来实现的;定时器又分成了硬定时器和软定时器,一 次定时及周期性定时。
  • 内存管理
    系统支持静态内存池管理及动态内存堆管理。从静态内存池中获取/释放内存块时间恒定,而当内存池空时,可根据申请线程请求把申请线程挂起、立刻返回、或等 待一段时间仍未获得返回。当其他线程释内存块到内存池时,将把挂起的线程唤醒。对于系统内存紧张的系统,RT-Thread也提供了小型的伙伴内存管理算 法。而对于拥有大一些内存的嵌入式系统,RT-Thread提供了性能非常高效的SLAB内存管理系统。
  • 诊断
    通过系统提供的FinSH shell系统,能够查看到线程,信号量,互斥锁,事件,邮箱,消息队列的运行情况,以及各个线程的栈使用情况。
 
技术指标

基本内核配置资源占用情况: 13344字节 ROM,1800字节 RAM 简化版资源占用情况: 2.5K ROM,1K RAM 线程上下文切换时间(在72MHz的STM32上采用逻辑分析仪测得的结果):挂起操作引起线程上下文切换:4.25 μs 信号量引起线程上下文切换:7.25 μs 邮箱引起线程上下文切换:8.63 μs

 
 
 

RTT操作系统的更多相关文章

  1. VxWorks操作系统shell命令与调试方法总结

    VxWorks下的调试手段 主要介绍在Tornado集成开发环境下的调试方法,和利用支撑定位问题的步骤.思路. 1         Tornado的调试工具 嵌入式实时操作系统VxWorks和集成开发 ...

  2. kali 2.0 linux中的Nmap的操作系统扫描功能

    不多说,直接上干货! 可以使用-O选项,让Nmap对目标的操作系统进行识别. msf > nmap -O 202.193.58.13 [*] exec: nmap -O 202.193.58.1 ...

  3. 【原创】xenomai3.1+linux构建linux实时操作系统-基于X86_64和arm

    版权声明:本文为本文为博主原创文章,转载请注明出处.如有问题,欢迎指正.博客地址:https://www.cnblogs.com/wsg1100/ 目录 一.概要 二.环境准备 1.1 安装内核编译工 ...

  4. Linux操作系统相关资料

    玩转Linux操作系统 操作系统发展史 只有硬件没有软件的计算机系统被称之为"裸机",我们很难用"裸机"来完成计算机日常的工作(如存储和运算),所以必须用特定的 ...

  5. pxe+kickstart部署多个版本的Linux操作系统(下)---实践篇

        我们在企业运维环境中,难免会遇到使用多个Linux操作系统的情况,如果每天都需要安装不同版本的Linux系统的话,那么使用Kickstart只能安装一种版本的Linux系统的方法则显得有些捉襟 ...

  6. 操作系统篇-调用门与特权级(CPL、DPL和RPL)

    || 版权声明:本文为博主原创文章,未经博主允许不得转载. 一.前言 在前两篇文章(<操作系统篇-浅谈实模式与保护模式>和<操作系统篇-分段机制与GDT|LDT>)中,我们提到 ...

  7. 操作系统篇-分段机制与GDT|LDT

    || 版权声明:本文为博主原创文章,未经博主允许不得转载. 一.前言     在<操作系统篇-浅谈实模式与保护模式>中提到了两种模式,我们说在操作系统中,其实大部分时间是待在保护模式中的. ...

  8. 操作系统篇-hello world(免系统运行程序)

     || 版权声明:本文为博主原创文章,未经博主允许不得转载. 一.前言     今天起开始分享关于操作系统的相关知识,本人也是菜鸟一个,正处于学习阶段,这整个操作系统篇也是我边学习边总结的一些结果,希 ...

  9. Linux实战教学笔记03:操作系统发展历程及系统版本选择

    标签(空格分隔): Linux实战教学笔记-陈思齐 第1章 Linux简介 1.1 什么是操作系统? 简单讲:操作系统就是一个人与计算机硬件的中介. 操作系统,英文名称Operating System ...

随机推荐

  1. DataGridView控件的使用---添加行

    最简单的方法 可以静态绑定数据源,这样就自动为DataGridView控件添加相应的行. 假如需要动态为DataGridView控件添加新行,方法有很多种,下面简单介绍如何为DataGridView控 ...

  2. [HIHO1051]补提交卡(枚举,贪心)

    题目链接:http://hihocoder.com/problemset/problem/1051 思路:先排序,然后枚举连续的长度为m的子段,用这个段之后的第一个天数减去这个段之前的第一个天数再-1 ...

  3. [Codeforces137B]Permutation(贪心?思路?,水题)

    题目链接:http://codeforces.com/contest/137/problem/B 给n个数字,要求修改成1~n的全排列数中的一个,修改的次数尽可能少,问最少需要修改几个数. 记下数组里 ...

  4. Python错误处理

    中文注释出错,把UTF-8标明放在文件头就行了 # coding: utf-8

  5. Android之ScaleGestureDetector(缩放手势检测)

    一.概述 ScaleGestureDetector这个类是专门用来检测两个手指在屏幕上做缩放的手势用的,最简单的应用就是用来缩放图片或者缩放网页. 二.要求 利用ScaleGestureDetecto ...

  6. UVa 11077 (循环分解 递推) Find the Permutations

    把{1, 2, 3,,, n}叫做自然排列 本题便是求有多少个n元排列P要至少经过k次交换才能变为自然排列. 首先将排列P看做置换,然后将其分解循环,对于每个长度为i的循环至少要交换i-1次才能归位. ...

  7. bzoj2466: [中山市选2009]树

    同上一题.(应该可以树形dp,然而我不会... #include<cstdio> #include<cstring> #include<iostream> #inc ...

  8. HNOI2008越狱(快速幂)

    快速幂水过,贴一下模版. ; var x,y,n,m:int64; function power(num,times:int64):int64; var temp:int64; begin then ...

  9. js array 数组删除元素

    /* * 方法:Array.remove(dx) * 功能:根据元素位置值删除数组元素. * 参数:元素值 * 返回:在原数组上修改数组 */ Array.prototype.baoremove = ...

  10. I.MX6 Goodix GT9xx touchscreen driver porting

    /************************************************************************ * I.MX6 Goodix GT9xx touch ...