1、航天星载计算机

航天电子产品不但要耐火箭起飞时的冲击、振动等苛刻的力学环境,而且要承受宇宙空间的高温、低温、高真空、高辐射等极端条件;另外,由于在空间环境条件下,电子产品的可维护性非常差,而且一旦发生故障,其后果往往比较严重,甚至是致命的。因此相对于普通计算机,其可靠性要求更高。

(1)星载操作系统

卫星上面的操作系统崩溃(宕机)了该如何重启?

https://www.zhihu.com/question/20160612

星载的研究单位和方向

自主可控的片上系统、嵌入式系统全系统安全性、自主可控的嵌入式软件工具链等方向开展联合研究,为申请国家重点基础研究发展计划做准备。

http://sunwiseinfo.com/newsitem/278381996

1

星载计算机中应用实时操作系统的两种方式:使用一种源码开放的RTOS——RTEMS和自主开发RTOS. RTEMS从1993年开始开发,并于1999年开始地外开放源代码,并由OAR公司进行维护和升级。现在最新版本为4.6.0,在OAR的网站(www.oarcorp.com)上可以下载到相关资源.RTEMS支持C/Ada语言.

2

航天器用的系统是最重要的指标是实时性,而Windows和Linux都不是实时操作系统(RTOS)。

实时操作系统重要的指标包括:对中断响应速度(一般要求是ns级),Windows和Linux关中断的时间都太长了(都达到ms级的水平),不适合航天器使用。
实时操作系统调度策略都是抢占式的,Windows和Linux都不是抢占式的系统(补充:Windows是不完全抢占式系统,有防饥饿机制,Linux在2.4之前不是,2.6以后据说已经是抢占式的)。

跟SpaceOS同类的系统大多数人平时很难接触到,比如ucos,nucleus,threadX,以及VxWorks,这些系统一般用在工控的领域比较多。

工控方面主要是VxWorks和Linux,另有uCos/Nucleus/ThreadX等等,WINCE都不太主流。至于你提到的RMX,这个没有听过,查了一下历史很古老,衰落的原因应该是平台太少,毕竟x86平台做嵌入式的并不多,过去MIPS/PPC是主流,现在ARM是主流。
链接:https://www.zhihu.com/question/23749819/answer/25541615

VxWorks 风河公司,现在属于intel,工业、航天领域用得最多

QNX 汽车电子行业占有率最高

RtLinux/RTAI等 RtLinux有众多的不同分支,用得比较多的是RtLinux,但已经无人维护了,RTAI一直在更新,但接口的使用比较麻烦,开发者不友好

VIRT 国内最好的一个实时操作系统,北京并集科技(http://www.rtlimit.com) 研发,也是起源于RtLinux的一个分支,性能和特性都非常先进,国内的航天、军工、电力应用较多

其他还有一些用得比较多的比如:ucos, dos等,都是功能非常简单的操作系统,可扩展性太差,与上面这几个比较起来,算不上先进的操作系统,未来的发展潜力比较小

参考:
https://www.zhihu.com/question/23749819/answer/121590415
https://www.zhihu.com/question/22346689/answer/21087798
https://zhidao.baidu.com/question/80204483.html
https://www.zhihu.com/question/22346689

(2)处理器架构

在星载计算机系统中处理器性能的稳定与可靠,在整个系统的稳定与可靠性中占有重要地位,因此选择合适的处理器架构变得相当重要。目前,在世界范围内星载计算机系统中所使用的处理器架构只有两种,一种是由美国使用的POWERPC架构,另一种就是欧洲主导的SPARC架构。
如此看来,目前在嵌入式领域颇为火热的ARM、MIPS、X86等架构,并不能够应用于星载、计算中,或者说其不具备在这一领域应用的优势。

美国现在使用的最高端的星载计算机,采用的是基于POWERPC体系结构的。欧空局为了摆脱美国对其空间研发能力的制约而独立开发了基于SPARC V7机构的面向空间应用的微处理器:ERC32,其辐射加固版本已经成熟使用于航天环境中。06年5月22日,基于LEON SPARC V8的处理器也成功使用于航天工程。可以说SPARC体系结构的CPU在今后的航天计划中将发挥更大作用。

由于中国与美国的战略关系,因此中国的星载计算机不太可能使用POWERPC架构,因此SPARC架构目前正逐渐被国内相关星载处理器研制单位所采用,特别是因为SPARC架构的开源优势,可以替资本并不雄厚的本土IC设计企业省下一大笔开发经费。基于笔者的观察,目前国内研究与使用SPARC架构的机构有这么几家:西安微电子研究所、北京微电子研究所、国防科技大学、航天二院、哈尔滨工业大学、北京理工大学、北京航空航天大学、珠海欧比特控制工程股份有限公司等,其中欧比特控制工程股份有限公司是一家民营的国内创业板上市公司,虽然没有明显的“航空航天”血统,但是在SPARC产品的产业化与自主产权处理器与系统开发方面,欧比特走在了前列。

可以预见,虽然在中国的星载计算机处理器中,POWERPC架构也会占有一席之位,但是大部分份额显然会被SPARC架构所占领。

https://blog.csdn.net/makebuaa/article/details/6955263
https://www.zhihu.com/question/23749819

SPARC(RISC精简)

洞察”号火星测器上的计算机

RAD750单板计算机(SBC)
BAE系统
BAE系统公司的RAD750单板计算机(SBC)
BAE系统公司的RAD750单板计算机(SBC)为下一代航天器提供了所需的高性能机载处理能力,以支持从天气和行星探测到通信、监视和国家安全任务等空间任务。

CPU:RAD750TM抗辐射PowerPCTM微处理器
RAD750TM是PowerPC 750TM的一个完全专利授权的电路转译版本,
它为洛马公司等航空航天公司提供了最先进的商业性能特性,与当时业界领先的星载计算机产品AD6000TM相比,它的数据处理能力有了一个数量级的提高。

RAD750紧凑型PCI单板计算机,
可以支持由洛克希德马丁公司开发的JPL X2000程序运行环境,提供了模块化的标准产品,
使航天器开发人员在系统配置中具有极好的灵活性。

RAD750是一个超纯量架构的RISC处理器,
有6个执行单元和一个允许并行执行的调度/执行系统。两条指令和一条进程可以同步执行。RAD750包含了PowerPC 750的所有增强架构。其中包括一个集成的二级缓存控制器(带通道可选的1MB外部二级缓存端口)、带内存管理单元的双8路集关联的32KB一级缓存、用于改进任务切换性能的硬件表日志、用于动态进程预测的进程历史表和目标缓存以及双固定点执行单元。核心处理器的处理速度为系统I/O总线吞吐速度的2倍到8倍(增量为1/2),可基于引脚可编程设置。L2接口由延迟锁定环路控制,从全速到处理器核心处理速度的1/3以1/3的增量计时。

https://zhuanlan.zhihu.com/p/149257818
https://www.vipsmt.com/news/hydt/35922.html

2、RTOS介绍

14种主流的RTOS:

非国产:VxWorks、RTEMS、μClinux、μC/OS-II、eCos、FreeRTOS、mbed OS、RTX、QNX、NuttX,
国产:神舟OS、SylixOS、Reworks;都江堰操作系统(djyos)、Alios Things、Huawei LiteOS、RT-Thread。

参考:
https://www.sohu.com/a/332985081_100281310

(1)VxWorks【微内核】

实时系统实例

全球有无数产品搭载了实时操作系统,仅VxWorks就被超过20亿台设备使用。从汽车发动机到太空望远镜,从直升机制导系统到火星车,都搭载了运行实时操作系统的嵌入式系统。

商用实时操作系统与内部实时操作系统的优势和风险

一些公司尝试开发适合自己特定项目的实时操作系统,而不是购买商用现货操作系统。这样做有一定优势。操作系统是针对特定的应用案例而设计的,而且各公司了解各自内部的运作机制。但其弊端是成本高昂而且耗时,不适应的开发人员需要花费大量的时间来开发一个操作系统。商用系统使用起来更简便快捷,且配备经验丰富的技术团队,负责答疑解惑并提供技术支持。操作系统是一种工具,就好比一个锤子或钻头。量身定制一款操作系统无疑将会花费大量的时间,而且性能无法保证。
【这样看来,只有系统内为了安全,防止后门等需求,需要开发实时系统如SpaceOS,其他商业航天基本就上VxWorks了,少有定制开发OS的。】

为何使用实时操作系统?

在可靠性和可重复操作性要求高的应用程序中,实时操作系统比通用操作系统更受青睐。特别是在可靠性和速度至关重要的嵌入式或关键系统中,更需要实时操作系统。

不断演变的嵌入式实时操作系统

新方法
如今,人们的关注点已从嵌入式系统转移到其所搭载的操作系统上。实时操作系统必须跟上创新的步伐,拥抱现代化开发实践,以适应新一代嵌入式系统开发者所采用的框架、语言和方法,并确保信息安全性、功能安全性、高性能及可靠性。

支持旧版系统
系统的创新进步在优化性能和连接性、缩短设计周期的同时,加速了产品的更新迭代。随之而来的是如何处理旧版系统的问题。持续重新编码嵌入式应用程序成本高昂。另一方面,系统制造商希望尽可能使用现有的代码,特别是在已经投资认证软件的时候。

新硬件和虚拟化
随着多核硬件平台的进步,嵌入式系统和应用得到了整合。单个芯片能够包含2到64个CPU,有助于降低最终产品的成本、减小尺寸和重量。

虚拟化也加速了嵌入式系统的发展。如今,多个嵌入式系统可以通过硬件上的hypervisor实现虚拟化运行。这对于那些希望最大限度地利用现有IP投资、从传统应用向新平台过渡的制造商来说至关重要。

由上面知:嵌入式开发是主,RTOS是客!

RTOS是适配嵌入式开发架构的,而非嵌入式开发架构适配操作系统!!!
只要是嵌入式程序,好像上任何一个RTOS都可。

【风河官网】:http://www.windriver.com.cn/solutions/learning/rtos/
【这个官网有很多干货,关于嵌入式开发和实时操作系统的,也有课程,很值得学习浏览。】:
https://www.windriver.com/company/universities
https://learning.windriver.com/page/learning-subscription#products_vxworks
【风河在线研讨会,免费课程】:http://www.windriver.com.cn/solutions/learning/rtos/#collapse10
【找工作】:https://jobs.jobvite.com/windriver/jobs
【安全验证岗】:https://jobs.jobvite.com/windriver/job/ovepifwa

(2)RTEMS

最早用于美国国防系统,早期的名称为实时导弹系统(Real Time Executive for Missile Systems),后来改名为实时军用系统(Real Time Executive for Military Systems)

详细
1、RTEMS(多处理系统实时可执行体)是一个为嵌入式系统而设计的自由的开源实时操作系统。
在缩写词RTEMS取其现在的含义之前,初始时代表导弹系统实时可执行体,然后变成了军用系统实时可执行体。
RTEMS曾被移殖到多个以不同类型的中央处理器(CPU)为基础的计算机系统上。这些计算机系统所采用的CPU,计有:ARM、i386、m68k、MIPS、PowerPC、SH等多种不同的处理器。
2、RTEMS被设计为支持多种开放的API如POSIX和uITRON。FreeBSD和TCP/IP栈还有多种文件系统也被支持。OAR公司当前在维护和管理RTEMS项目。RTEMS也被一些EPICS站点所使用。
3、RTEMS是在GPL授权条款下分发,但它允许将RTEMS的目标文件链接至其它文件而不需将整个文件以GPL授权覆盖,这方面有点像LGPL。
4、多处理器系统(RTEMS)的实时执行是一个多线程的、单地址空间的实时操作系统,没有内核空间/用户空间分隔。它能够在SMP配置中运行,提供最先进的特性
5、RTEMS使用和发布的第三方软件(可链接到应用程序)是根据许可的开放源码许可协议许可的。构建RTEMS应用程序所需的一切都可以通过开源软件获得。这使您完全独立于供应商。
6、特性

api
带有pthreads的POSIX(支持多种标准软件在RTEMS上运行)
经典
C11(包括线程支持)
c++ 11(包括线程支持)
Newlib和GCC内部
编程语言
C/ c++ /OpenMP (RTEMS Source Builder, RSB)
Ada(RSB, --with-ada)
Erlang
Fortran (RSB——with-fortran)
Python和MicroPython
并行编程语言
EMB²
Google Go2
OpenMP 4.5
线程同步和通信
具有和不具有锁定协议的互斥锁
计数信号量
二进制信号量
条件变量
事件
消息队列
障碍
Futex(被OpenMP屏障使用)
基于时代的填海工程
锁定协议
传递优先级继承
OMIP (SMP特性)
优先级天花板
MrsP (SMP特性)
可扩展的定时器和超时支持
无锁时间戳(FreeBSD时间计数器)
响应中断管理
C11 11 TLS / c++ 3
链接时可配置的调度器
Fixed-priority
Job-level fixed-priority (EDF)
Constant Bandwidth Server (实验)

集群调度(SMP特性)
灵活的链接时配置
作业级固定优先级调度器(EDF),支持一对一和一对所有线程与处理器的密切关系(默认SMP调度器)
几个调度器
概念证明强大的APA调度程序
关注链接时特定于应用程序的配置
基于链接器集的初始化(类似于全局c++构造函数)
操作系统使用细粒度锁定(SMP特性)
动态内存分配器
首先满足(默认)
通用内存分配器(UMA, libbsd)
文件系统
IMFS
FAT
RFS
NFSv2
JFFS2 (NOR flashes)
YAFFS2 (NAND flash, GPL或商业许可证)
设备驱动程序
Termios(串行接口)
I2C (Linux用户空间API兼容)
SPI (Linux用户空间API兼容)
网络栈(遗留、libbsd、lwIP)
USB堆栈(libbsd)
SD/MMC卡栈(libbsd)
Framebuffer (Linux用户空间API兼容,Qt)
应用程序运行在内核空间中,可以直接访问硬件
libbsd
FreeBSD用户空间和内核空间组件到RTEMS的端口
易于访问FreeBSD软件RTEMS
支持与FreeBSD保持同步

7.RTEMS生态系统
RTEMS生态系统是由RTEMS项目提供的工具、包、代码、文档和在线内容的集合。生态系统提供了一种开发、维护和使用RTEMS的方法。它的各个部分与用户、主机环境以及彼此交互,以使RTEMS可访问、可用和可预测。

参考:
https://blog.csdn.net/AI_LX/article/details/111466912

(3)esol【微内核】

https://www.esol.com/cn/embedded/lineup_rtos.html

3、各个RTOS对比

(1)四种RTOS对比:VxWorks、μClinux、μC/OS-II和eCos

展开
1 4种操作系统的介绍
(1)VxWorks
    VxWorks是美国WindRiver公司的产品,是目前嵌入式系统领域中应用很广泛,市场占有率比较高的嵌入式操作系统。VxWorks实时操作系统由400多个相对独立、短小精悍的目标模块组成,用户可根据需要选择适当的模块来裁剪和配置系统;提供基于优先级的任务调度、任务间同步与通信、中断处理、定时器和内存管理等功能,内建符合POSIX(可移植操作系统接口)规范的内存管理,以及多处理器控制程序;并且具有简明易懂的用户接口,在核心方面甚至町以微缩到8 KB。
(2) μC/OS-II
    μC/OS-II是在μC-OS的基础上发展起来的,是美国嵌入式系统专家Jean J.Labrosse用C语言编写的一个结构小巧、抢占式的多任务实时内核。μC/OS-II能管理64个任务,并提供任务调度与管理、内存管理、任务间同步与通信、时间管理和中断服务等功能,具有执行效率高、占用空间小、实时性能优良和可扩展性强等特点。
(3)μClinux
    μClinux是一种优秀的嵌入式Linux版本,其全称为micro-control Linux,从字面意思看是指微控制Linux。同标准的Linux相比,μClinux的内核非常小,但是它仍然继承了Linux操作系统的主要特性,包括良好的稳定性和移植性、强大的网络功能、出色的文件系统支持、标准丰富的API,以及TCP/IP网络协议等。因为没有MMU内存管理单元,所以其多任务的实现需要一定技巧。
(4)eCos
    eCos(embedded Configurable operating system),即嵌入式可配置操作系统。它是一个源代码开放的可配置、可移植、面向深度嵌入式应用的实时操作系统。最大特点是配置灵活,采用模块化设计,核心部分由小同的组件构成,包括内核、C语言库和底层运行包等。每个组件可提供大量的配置选项(实时内核也可作为可选配置),使用eCos提供的配置工具可以很方便地配置,并通过不同的配置使得eCos能够满足不同的嵌入式应用要求。

2 性能分析与比较
    任务管理、任务及中断间的同步与通信机制、内存管理、中断管理、文件系统、对硬件的支持和系统移植这几方面是实时操作系统的主要性能。下面就从这几个方面着手对上述4种操作系统进行分析与比较。
2.1 任务管理
    任务管理是嵌入式实时操作系统的核心和灵魂,决定了操作系统的实时性能。它通常包含优先级设置、多任务调度机制和时间确定性等部分。
2.1.1 优先级设置
    嵌入式操作系统支持多任务,每个任务都具有优先级,任务越重要,赋予的优先级应越高。优先级的设置分为静态优先级和动态优先级两种。静态优先级指的是每个任务在运行前都被赋予一个优先级,而且这个优先级在系统运行期间是不能改变的;动态优先级则是指每个任务的优先级(特别是应用程序的优先级)在系统运行时可以动态地改变。
2.1.2 多任务调度机制
    任务调度主要是协调任务对计算机系统资源的争夺使用。对系统资源非常匮乏的嵌入式系统来说,任务调度尤为重要,它直接影响到系统的实时性能。通常,多任务调度机制分为基于优先级抢占式调度和时间片轮转调度。
    基于优先级抢占式调度:系统中每个任务都有一个优先级,内核总是将CPU分配给处于就绪态的优先级最高的任务运行。如果系统发现就绪队列中有比当前运行任务更高的优先级任务,就把当前运行任务置于就绪队列中,调入高优先级任务运行。系统采用优先级抢占方式进行调度,可以保证重要的突发事件及时得到处理。
    时间片轮转调度:让优先级相同的处于就绪状态的任务按时间片使用CPU,以防止同优先级的某一任务长时间独占CPU。
    在一般情况下,嵌入式实时操作系统采用基于优先级抢占式调度与时间片轮转调度相结合的调度机制。
2.1.3 时间的可确定性
    嵌入式实时操作系统甬数调用与服务的执行时间应具有可确定性。系统服务的执行时间不依赖于应用程序任务的多少。基于此特征,系统完成某个确定任务的时间是可预测的。表1具体列出了4种操作系统的调度机制。
    4种嵌入式实时操作系统都支持多任务,只是在支持任务数量上和任务调度机制上有所不同。VxWorks具有高效的任务管理功能,它支持多任务,可分配256个优先级,支持优先级抢占式调试和时间片轮转调度,实时性最好。μC/OS-II内核是针对实时系统的要求设计实现的,只支持基于固定优先级抢占式调度;调度方法简单,可以满足较高的实时性要求。μClinux在结构上继承了标准Linux的多任务实现方式,分为实时进程和普通进程,分别采用先来先服务和时间片轮转调度;仅针对中低档嵌入式CPU特点进行改良,且不支持内核抢占。eCos调度方法丰富,提供了两种基于优先级的调度器(即位图调度器和多级队列调度器),允许用户在进行配置时选择其中一个凋度器,适应性好。
2.2 任务及中断间的同步与通信机制
    实时操作系统的功能一般要通过若干任务和中断服务程序共同完成。任务与任务之间、任务与中断间任务及中断服务程序之间必须协调动作,互相配合,这就涉及任务间的同步与通信问题。嵌入式实时操作系统通常是通过信号量、互斥信号量、事件标志和异步信号来实现同步,通过消息邮箱、消息队列、管道和共享内存来提供通信服务。由于互斥信号量的使用,带来了实时操作系统中常见的优先级反转问题。优先级反转是一种不确定的延迟形式,当高优先级任务企图访问已被低优先级占有的共享资源时,必须等待低优先级任务释放共享资源;如果这时低优先级任务被一个或多个中优先级任务抢占,那么高优先级任务被延迟的时间将更进一步延长,实时性难以保证。因此,应采取相关措施以尽鼍避免出现优先级反转问题。实时系统通常采用优先级继承和优先级置顶机制。
    优先级继承足指拥有互斥量的任务被提升到与下一个在等待该互斥最的最高优先级任务相同的优先级;优先级置顶是指获得互斥量的任务将其优先级提升到一个事先规定好的值。表2为4种操作系统的同步与通信机制的比较。

    4种系统都具有灵话的任务间同步与通信机制,都可以通过信号量、消息队列来实现同步与通信,但是VxWorks与μClinux都不支持邮箱和事件标志,而且除了μClinux和eCos中的位图调度器,其他操作系统都采取了措施抑制优先级反转。
2.3 内存管理
    内存管理主要包括:内存分配原则,存储保护和内存分配方式。
2.3.1 内存分配原则
    内存分配原则包括快速性、可靠性和高效性。其中,快速性要求内存分配过程要尽可能快,所以一般采用简单、快速的分配算法;可靠性指的是内存分配的请求必须得到满足;系统强调高效性的要求,不仅仅是对系统成本的要求,而且由于系统本身可配置的内存容量也是很有限的,所以要尽可能地避免浪费。
2.3.2 存储保护
    通常在操作系统的内存中既有系统程序也有用户程序,为了使两者都能正常运行,避免程序间相互干扰,需要对内存中的程序和数据进行保护。存储保护通常需要硬件支持,在很多系统中都采用MMU,并结合软件实现;但由于嵌入式系统的成本限制内核和用户程序通常都在相同的内存空间中。
2.3.3 内存分配方式
    内存分配方式可分为静态分配和动态分配。静态分配是在程序运行前一次性分配给相应内存,并且在程序运行期间中不允许再申请或在内存中移动;动态分配则允许在程序运行整个过程中进行内存分配。静态分配使系统失去了灵活性,但对于实时性要求比较高的系统是必需的;而动态分配赋予了系统设计者更多自主性,可以灵活地调整系统的功能。
    VxWorks对内存的使用采用的是Flat Mode,可被静态或动态链接。VxWorks为用户提供了两种内存区域Region和Partition。Region是变长的内存区,用户可以从创建的Region中分配Segment,其特点是容易产生碎片,但灵活并且不浪费;Partition是定长的内存区,用户可以从刨建的Partition中分配Buffer,其特点是不会产生碎片,技率高但是易浪费。VxWorks采用最先算法分配内存。μC/OS-II把连续的大块内存按分区来管理,每个分区中都包含整数个大小相同的内存块,但不同分区之间内存的太小可以不同。用户动态分配内存时,只须选择一个适当的分区,按块来分配内存,释放时将该块放回到以前所属的分区,这样就消除了因多次动态分配和释放内存所引起的碎片问题。μClinux是针对没有MMU的处理器设计的,不能使用处理器的虚拟内存管理技术,只能采用实存储器管理策略。系统使用分页内存分配方式,在启动时对实际存储器进行分页。系统对内存的访问是直接的操作系统对内存空间没有保护,多个进程可共享一个运行空间,所以,即使是一个无特权进程调用一个无效指针也会触发一个地址错误,并有可能引起程序崩溃甚至系统崩溃。eCos对内存分配既不分段也不分页,而是采用一种基于内存池的动态内存分配机制。通过两种内存池类来实现两种内存管理方法:一种是变长的内存池;另一种是定长的内存池,类似于VxWorb的管理方案。表3为4种操作系统内存管理的比较。
2.4 中断管理
    中断管理是实时系统中一个很重要的部分,系统经常通过中断与外部事件交互。主要考虑是否支持中断嵌套、中断处理机制、中断延时等。
(1)VxWorks的中断管理
    VxWorks操作系统中断管理采用中断处理与普通任务分别在不同栈中处理的中断处理机制,使得中断只会引发一些关键寄存器的存储,而不会导致任务的上下文切换,从而极大地缩短了中断延时。同时,VxWorks的中断处理程序只能在最短时间内通告中断的发生,而将其他的非实时处理尽量放入被引发的中断服务程序中来完成,这也缩短了中断延时。但是凼为中断服务程序不在一个固定的仟务上下文中执行,而目没有任务控制块,所以所有中断服务程序使用相同的中断堆栈。为了能处理最坏情况下的中断嵌套,必须分配足够大的中断堆栈空间。
(2)μC/OS-II的中断管理
    μC/OS-II中断处理比较简单。一个中断向量上只能挂一个中断服务子程序ISR,而且用户代码必须都在ISR中完成。ISR需要做的事情越多,中断延时也就越长。内核所能支持的最大嵌套深度为255。
(3) μClinux的中断管理
    μClinux操作系统将中断处理分为两部分:顶半处理和底半处理。在顶半处理中,必须关中断运行,且仅进行必要的、非常少、速度快的处理,其他处理交给底半处理;底半处理执行那些复杂、耗时的处理,而且接受中断。因为系统中存在有许多中断的底半处理,所以会引起系统中断处理的延时。
(4)eCos的中断管理
    eCos使用了分层式中断处理机制,把中断处理分为传统的ISR和滞后中断服务程序DSR。类似于μClinux的处理机制,这种机制可以在中断允许时运行DSR,因此在处理较低优先级中断时允许高优先级的中断和处理。为了极大地缩短中断延时,ISR应当可以快速运行。如果中断引起的服务量少,则ISR可以单独处理中断;如果中断服务复杂,则ISR只屏蔽中断源,然后交由DSR处理。
2.5 文件系统
    所谓“文件系统”是指负责存取和管理文件信息的机构,也可以说是负贵文件的建立、撤销、组织、读写、修改、复制,以及对文件管理所需的其他资源实施管理的软件部分。VxWorks操作系统在文件系统与设备驱动程序之间使用一种标准的I/O口操作接口,且支持MS-DOS、RT-11、RFS、CD-ROM、RAW等文件系统。这样,在单个VxWorks操作系统中可以运行多个相同或不同种类的文件系统。μC/OS-II是面向中小型嵌入式系统的,即使包含全部功能,编译后内核也不到10 KB,所以系统本身并没有提供对文件系统的支持。但是μC/OS-II具有良好的扩展性能,如果需要也可自行加入文件系统的内容。μClinux继承了Linux完善的文件系统性能,它支持ROMFS、NFS、ext2、MS-DOS、JFFS等文件系统。但一般采用ROMFS文件系统,这种文件系统相对于一般的文件系统(如ext2)占用更少的空间。但是ROMFS文件系统不支持动态擦写保存,对于系统需要动态保存的数据须采用虚拟RAM盘/JFFS的方法进行处理。eCos操作系统的可配置性非常强大,用户可以自己加入所需的文件系统。
2.6 对硬件的支持
    VxWorks、μC/OS-II、μClinux和eCos这4种操作系统都支持当前流行的大部分嵌入式CPU。μC/OS-II支持从8位到32位的CPU,VxWorks、μClinux和eCos可以在16位、32位和64位等不同体系结构之间移植。由于μClinux继承了Linux的大部分性能,所以至少需要512KB的RAM空间,lMB的ROM/Flash空间;而μC/OSII和eCos由于本身内核就很小,经过裁剪后的代码最小可以分别为2 KB和10 KB,所需的最小数据RAM空间分别为4 KB和10 KB。总的来说,4种系统对硬件的要求比较低,比较经济。具体比较如表4所列。

2.7 系统移植
    嵌入式操作系统移植的目的是使嵌入式操作系统能在某个微处理器或微控制器上运行。4种系统中VxWorks是商用操作系统的有很多API函数及相关技术支持,所以移植和二次开发比较容易,但是移植成本较高。其他3种系统的结构化设计便于把与处理器相关的部分分离出来,所以被移植到新的处理器上也是可能的。μC/OS-II的移植相对比较简单,只需要修改与处理器相关的代码就可以了。μClinux是Linux针对嵌入式系统的一种改良,其结构比较复杂。移植μClinux,目标处理器除了应满足μC/OS-II移植所需的条件外,还需要足够容量的外部ROM和RAM。eCos系统的可移植性明显比μC/OS-II和μClinux好。在eCos系统中,每个硬件平台都有一个单独的目录,用于存放引对这一硬件平台的硬件抽象层的代码和配置信息;而μClinux的硬件抽象层的代码则分布在好几个目录中,通过命令来选择不同硬件平台的代码。所以,修改eCos代码相对简单,移植也相对容易。

结论
    这4种嵌入式实时操作系统在嵌入式系统的应用非常广泛,但是又具有各自的特点。根据上述比较,归纳出各自的适用领域。
    ①VxWorks是一套娄似于Unix的实时操作系统,它内建了符合POSIX规范的内存管理,以及多处理器控制程序,并且具有简明易懂的用户接口,在核心方面甚至可以微缩到8 KB。它由400多个相对独立的、短小精悍的目标模块组成,用户可根据需要选择适当模块来裁剪和配置系统,有效地保证了系统的安全性和可靠性。它被广泛地应用在通信、军事、航空、航天等高尖技术及实时性要求极高的领域,尤其是在许多关键应用方面,VxWorks还是一枝独秀。例如,美国波音公司就在其最新的787客机中采用了此操作系统;而在外层空间探索领域,VxWorks则一直是美国太空总署NASA的最爱。
    ②μC/OS-II是一个结构简单、功能完备和实时性很强的嵌入式操作系统内核,适合于广大的嵌入式系统开发人员和爱好者入门学习,以及高校教学和科研。μC/OSII很适合开发那些对系统要求不是很苛刻,且RAM和ROM有限的各种小型嵌入式系统设备。
    ③μClinux最大特点在于针对无MMU处理器设计,可以利用功能强大的Linux资源,因此适合开发对事件要求不高的小容量、低成本的各类产品,特别适用于开发与网络应用密切相关的嵌入式设备或者PDA设备。例如,CISCO公司的2500/3000/4000路由器就是基于μClinux操作系统开发的。
    ④eCos最大特点是配置灵活,而月是面向深度嵌入 式应用的,很适合用于一些商业级或工业级对成本敏感的

    嵌入式系统,例如消费电子类领域中的一些应用。


参考:https://www.it610.com/article/1289978923869872128.htm

(2)μC-OS-II与μClinux的比较

参考:
https://wenku.baidu.com/view/e1f6b34e33d4b14e8424681f.html

posted on 2022-03-14 07:49  西伯尔  阅读(1408)  评论(0编辑  收藏  举报