引言

引言

大家好,又见面了,我是全栈君。

1.1概述

1980年,美国ReadySystem公司推出了实时操作系统VRTX/OS算起,现在已有30年的历史,RTOS产品也是繁花似锦。20世纪80年代,除VRTX外,还有IPI公司的MTOS和ISI公司的PSOS。

到了20世纪90年代后,因为现代操作系统的思想运用,诞生了非常多现在都在广泛应用的实时操作系统(RTOS)。如大家熟知的VxWorks、μC/OS、QNX、Lynx、eCOS等。

21世纪,因为商业领域的运作和市场的要求。RTOS产品開始兼并整合,一些产品被兼并淘汰,如PSOS被Windriver收购。主要功能特点合并到VxWorks中;另外一些产品则壮大成熟,如商业上极其成功的VxWorks,和差点儿全部MCU都能够使用的μC/OS-II。现在已经发展到了μC/OS-III。

当然也出现一些后起之秀,如开源世界的FreeRTOS和中国人自己研发的Delta OS、RT-thread、SylixOS。

RTOS大都是以应用为主的可定制的操作系统。软件模块可被高度的裁剪、定制,以适应各种不同的应用,不同的硬件条件,同一时候在有限的资源下实现性能的最优化。这是传统的桌面操作系统、server操作系统所不及的。

嵌入式开发不同于PC平台的开发。它首先面临着软件与硬件同一时候成熟的风险。

同一时候市场的迫切需求,使得嵌入式产品的开发周期越来越短。

尽管新开发方法、新工具的应用提高了开发效率,对开发人员来说,产品成熟的压力和风险依旧丝毫未减;再次它面临着硬件资源、系统性能、产品成本的平衡问题,市场的竞争使得嵌入式系统追求最佳的性价比,这更添加了系统设计的难度。最后因为摩尔定律的支配,高性能MCU价格减少并广泛使用。使得前后台系统不再风光一时,系统的可维护性、伸缩性、可移植性等问题越来越突出。要非常好地解决这些问题。不得不求助操作系统或一些成熟的中间件。进入20世纪90年代后,RTOS在嵌入式系统设计中的主导地位已经形成。

它的发展有下面特点:

1.        新处理器大量运用,要求RTOS易于移植,以便在短时间内支持不同的处理器。消费类电子产品对实时性要求并不高。如掌上电脑、手机、机顶盒等,但对软件的可维护性、扩展性、易用性、交互性有比較高的要求,使得WinCE、Linux等软实时操作系统广泛地被应用到消费类电子产品中;

2.        因为电信设备、控制系统的高可靠性,对RTOS提出了新的要求。如双机热备份、线程迁移、使用MMU、MPU保护RTOS内核等;

3.        芯片制造技术的提升,多核处理器大量运用,要求RTOS支持单芯片多处理器(Chip-Multiprocessor,CMP)、对称多处理器(Symmetric Multiprocessor,SMP)、非对称多处理器(AsymmetricMultiprocessor,ASMP)。

4.        系统级别的应用越来越多,要求系统支持各种各样的协议栈、文件系统、Webserver、数据库、图形界面,甚至支持Java虚拟机和脚本语言;

5.        开放源代码已经成为大势所趋,一些商业老牌的RTOS已经向授权客户开发源代码,如VxWorks、QNX等;

6.        厂商和客户逐步认识到。RTOS应统一应用程序接口以节省用户的软件投资。

RTOS開始在应用程序接口中提供诸如POSIX和ITRON等标准接口;

7.        RTOS一般都有一套自己的集成开发环境。便于操作系统在实际应用中的定制和应用开发工作,也有採用GNU工具链或第三方工具链的RTOS产品,但工具链大都也经过整合加工,变得更加易用。

中国正在如火如荼的进行一场空前的系统化project——物联网(TheInternet of things)。顾名思义,物联网就是“物物相连的互联网”。有两层意思:第一,物联网的核心和基础仍然是互联网,是在互联网基础上的延伸和扩展的网络。第二,其用户端延伸和扩展到了不论什么物体与物体之间,进行信息交换和通信。

从而实现比传统的互联网本身更广泛的价值。

和传统的互联网相比,物联网有鲜明的特征:

1.        它是各种感知技术的广泛应用。

物联网上部署了海量的多种类型传感器,每一个传感器都是一个信息源,不同类别的传感器所捕获的信息内容和信息格式不同。

传感器获得的数据具有实时性,按一定频率周期性地採集环境信息,不断更新数据;

2.        它是一种建立在互联网上的网络。物联网技术的重要基础和核心仍旧是互联网,通过各种有线和无线网络与互联网融合。将物体的信息实时准确地传递出去。在物联网上,传感器定时採集的数据信息须要通过网络传输。

因为其数量极其庞大,形成了海量信息。在传输过程中。为了保障数据的正确性、可靠性和实时性,必须适应各种异构网络和协议;

3.        物联网不仅仅提供了传感器的连接,其本身也具有智能处理的能力。能够对物体实施智能控制。物联网将传感器和智能处理相结合,利用云计算、模式识别等各种智能技术,扩充其应用领域。

从传感器获得的海量信息中分析、加工和处理出有意义的数据,以适应不同用户的不同需求。

物联网能够分为三层架构:感知层、网络层和应用层。尽管感知层是物联网的核心,但从上面的介绍不难看出,须要嵌入式系统的支撑;须要实现各种各样的系统级应用。并对系统的实时性有一定的要求。感知层所形成的网络是一个比传统互联网更加庞大更加复杂的分布式系统。

这些要求被转化为对RTOS的要求,推动促进其发展。

RTOS 的发展方向主要集中在三个方面。首先是RTOS的标准化研究。

现在国内外的RTOS开发商数不胜数,提供了上百个RTOS,它们各具特色。这也给应用开发人员带来难题,当选择不同的RTOS开发时,代码不能复用。用户的软件投资付之东流。

RTOS的标准化研究越来越被重视。如IEEE协会在UNIX的基础上。制定了可移植操作系统接口标准 POSIX 1003.1b,用于规范实时系统接口;日本开发的ITRON标准等。新的应用层出不穷。软件接口仍然须要不断地完好,与时俱进。

其次是多处理器结构RTOS、分布式实时操作系统和实时网络的研究。实时应用的飞速发展,对RTOS的性能提出了更高的要求。

单处理器的嵌入式系统已不能非常好地满足某些复杂实时应用系统的须要,开发支持多处理器结构的RTOS已成为发展方向。至于分布式RTOS。如QNX、VxWorks、RTEMS、eCos等都提供相关的功能。但分布式实时操作系统的研究还未全然成熟,特别是在网络实时性和多处理器间任务调度算法上还需进一步地研究。

最后是集成化的RTOS开发环境的研究。开发实时应用系统,仅仅有RTOS是不够的,还须要集编辑、编译、调试、模拟和仿真等功能为一体的集成开发环境的支持。开发环境的研究还包含网络上多主机协作开发、分布式RTOS的调试等技术。

非常多开源RTOS在性能方面是超越商业RTOS,可是在工具链方面与商业RTOS还有着不小的差距。如RTEMS使用GNU的工具链。调试使用GDB;而VxWorks的工具链不仅提供图形化调试界面,还提为用户提供系统执行时的一些状态信息。尽管GNU提供了GDB的图形化前端DDD以及insight,但两者差距还是不小。

终于目标就是让嵌入式系统级的开发与PC平台差距越来越小。充分利用新技术减少应用层开发和调试的难度。

1.2 RTEMS

RTEMS诞生于20世纪80年代。最早用于美国国防部的导弹控制系统,在诞生时就以高实时性和高可用性为目标。而且採用了面向对象技术、构件技术等到现在非常先进的设计思想构造而成,在实时性、稳定性、开发速度和多处理器支持上面都是非常优秀的。早期该操作系统的名称为实时导弹系统(Real Time Executive for Missile Systems)。后来改名为实时军用系统(Real Time Executive forMilitary Systems), 眼下的全称是实时(Real Time Executive for Multiprocessor Systems)。经过了20多年的持续开发,RTEMS拥有较为丰富的开发资源和广泛的客户群体。它是一个纯粹的32位系统(因为充分利用了32位的特性,所以无法像 μC/OS-II 那样用于低端的8位系统)。在本书截稿前,RTEMS最高发行版本号是4.10.2。正在开发的版本号是4.11。它的特点例如以下:

1.        支持POSIX 1003.1b API,包含对threads的支持;

2.        基于VMEBus工业协会RTEID/ORKID的经典API(相似pSOS+的API)。

3.        支持ITRON 3.0标准的API;

4.        使用GNU工具链。支持ISO/ANSIC、ISO/ANSI C++以及模板库和Ada;

5.        支持多任务和以事件驱动的基于优先级的抢占调度;

6.        支持同构或者异构的多处理器系统。

7.        可选基于单调频率 RMS 调度。

8.        支持多任务间的通行与同步。

9.        支持优先级继承算法;

10.    反应灵敏的中断管理;

11.    高度的可配置性并支持多种目标系统。如x86、ARM、MIPS等。

12.    高性能的FreeBSD TCP/IP协议栈。支持PPPD、DHCPclient、DNSclient、TFTPclient、NFSclient,支持FTPserver、Webserver、Telnetserver、Sun Remote Procedure Call、Sun eXternal Data Representation、CORBA;

13.    支持内存文件系统IMFS、mini-IMFS、FAT文件系统、设备文件系统、RTEMS文件系统、NFSclient;

14.    支持GNU Debugger、通过以太网调试、通过串口调试等。

加拿大航空航天局2003年对20款RTOS做了一个评估。如表1.1所看到的,RTEMS甚至排在了老牌商业操作系统VxWorks之前。评估的标准请參考: A Selection Methodology for the RTOS Market. Philip Melanson, SiamakTafazoli. 眼下RTEMS是GPL的开源项目。由OAR公司负责版本号的升级与维护。它最核心的License规定RTEMS发行和使用遵守GPL规范,同一时候同意不管使用了RTEMS的库或是头文件。假设以二进制的方式公布应用程序,用户无需公开自己的代码。这点又不同于GPL。这是因为使用RTEMS的非常多项目是须要保密的。如军事、航天领域的项目。是无法公开代码的。RTEMS使用的TCP/IP协议栈遵循的是BSD许可证,它仅仅要求被许可者附上该许可证的原文以及全部开发人员的版权资料。不限制在商业领域的应用。

RTEMS的WebserverGoAhead WebServer要求使用时。须要在用户连接GoAheadserver时。在浏览器中显示GoAhead的商标。

RTEMS的RPC/XDR採用SUN RPC。License规定用户能够任意使用该代码,但SUN公司不负有不论什么责任。总的来说,RTEMS的代码用户能够放心的使用。即使商用也不必操心产生不论什么的商业风险。从推动开源世界发展的角度来说。最好能把对RTEMS有价值的改进公布出来。

RTEMS从2008年開始參加Google Summer Of Code(GSOC)。

该活动要求一名在校学生在一位顾问的指导下,在约三个月的时间内完毕某个开源项目中的一个相关子项目。它的主旨在于鼓舞学生參与开源项目。一方面为学生提供參与真实软件项目的机会。还有一方面有利于开源项目的发展。RTEMS通过SOC一方面推动了自身的发展;还有一方面也扩大了自身的影响。一些RTEMS的BSP。以及内部的測试用例都是在GSOC中完毕的。

1.1 2003年加拿大航天局对20款RTOS的评估结果

引言

RTEMS已经在各个领域得到了广泛的应用。这些应用领域包含通信、航空航天、医疗、科学研究、军事、工业、民用消费类电子等。如图1.1所看到的,PLR航空公司开发的飞行记录器(飞机的黑匣子)。科学领域的EPICS。EPICS(Experimental Physics andIndustrial Control System)是物理试验与工业控制系统的简称,为分布式的高能物理学试验提供了一系列的控制软件和应用。有VxWroks和RTEMS两个版本号以及基于Windows的终端界面。

使用的设备包含原子加速器、射电望远镜等。通常须要上百个子系统协同工作。rtems.com公布了一些使用RTEMS开发的项目,非常多都是激动人心的应用。

引言

RTEMS 的网络资源:

1.        RTEMS 的官方站点。http://www.rtems.com。

2.        RTEMS 国内爱好者站点,http://www.rtems.net;

3.        RTEMS google 沙龙。

4.        本书作者的博客。http://blog.csdn.net/coolbacon

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/115970.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

  • 基础篇:Linux 常用命令总结「建议收藏」

    基础篇:Linux 常用命令总结「建议收藏」熬夜爆肝Linux集合,还不收藏?

  • javascript 数组排序(三种方法)

    javascript 数组排序(三种方法)一、用sort()方法进行数组排序vararr1=[20,80,54,78,8,67,27]; functionmy(a,b){ returna-b; } console.log(arr1.sort(my));//8,20,27,54,67,78,80二、冒泡排序vararr1=[20,80,54,78,8,67,27]; functionmys(arr1){ for(vari=0;i<arr1.length-1;

  • 查看android证书签名

    查看android证书签名虽然以前搞过,一直忘了怎么查看android证书签名。最近因为需要查看android证书签名,在网上找了很多都不是印象中的方法,最后看到一篇搜索才想起,看来以后要多提高搜索技巧,好记性不如好笔记。正题—-其实查看android签名很简单,对于签过名的apk文件中,用winrar打开后在在META-INF文件下的cert.rsa属于pkcs7证书文件,所以加改后缀为.p7b打开,在

  • mac使用tree命令

    mac使用tree命令brewinstalltreetreetree-L1#深度1treeufo  #展示子目录find.|xargsgrep-ri""  #-r递归-i忽略大小写tree-N  #解决汉语乱码 命令行的双击tab太好用现在想要进入一个比较深的目录每进入一层就ls一下太慢了cd到一个目录下之后就双击tab…

  • pycharm 2022.01.12 激活[最新免费获取]

    (pycharm 2022.01.12 激活)最近有小伙伴私信我,问我这边有没有免费的intellijIdea的激活码,然后我将全栈君台教程分享给他了。激活成功之后他一直表示感谢,哈哈~IntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,下面是详细链接哦~https://javaforall.cn/100143.html…

  • 使用RadControls的RadMenu控件开发系统菜单

    使用RadControls的RadMenu控件开发系统菜单关于菜单这个话题我想应该是不讲则懂,所以本文不会多讲这些概念,则重关注RadControls控件中的RadMenu控件的使用,结合数据库来开发一个系统菜单。一、数据库设计这里我就使用Access作为示例数据库,详细见下图:表字段依次为:自动编号、菜单编码、菜单名称、请求地址、菜单上显示的图片地址、快捷键(RadMenu控件支持)、菜单顺序、菜单级限、是否为末级和父菜单编码。整个设计中…

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号