嵌入式操作系统介绍

来源:互联网 发布:我是山姆 知乎 编辑:程序博客网 时间:2024/04/29 18:44

1.嵌入式操作系统概述

1.1概述

根据IEEE(电气和电子工程师协会)的定义,嵌入式系统是“控制、监视或者辅助装置、机器和设备运行的装置”(devices used to control, monitor, or assist the operation of equipment, machinery or plants)。从中可看出嵌入式系统是软件和硬件的综合体,还可以涵盖机械等附属装置。嵌入式系统是与应用紧密结合的,具有很强专用性,必须结合实际系统需求进行合理的裁减利用。国内一个普遍被认同的定义是:以应用为中心、以计算机技术为基础、软件硬件可裁剪、适应应用系统对功能、可靠性、成本、体积、功耗严格要求的专用计算机系统。

事实上,在很早以前,嵌入式这个概念就已经存在了。在通信方面,嵌入式系统在20世纪60年代就用于对电子机械电话交换的控制,当时被称为“存储式程序控制系统”(Stored Program Control)。嵌入式计算机的真正发展是在微处理器问世之后。1971年11月,Intel公司成功地把算术运算器和控制器电路集成在一起,推出了第一款微处理器Intel 4004,其后各厂家陆续推出了许多8位、16位的微处理器,包括Intel 8080/8085、8086,Motorola 的6800、68000,以及Zilog的Z80、Z8000等。以这些微处理器作为核心所构成的系统,广泛地应用于仪器仪表、医疗设备、机器人、家用电器等领域。微处理器的广泛应用形成了一个广阔的嵌入式应用市场,计算机厂家开始大量地以插件方式向用户提供OEM产品,再由用户根据自己的需要选择一套适合的CPU板、存储器板以及各式I/O插件板,从而构成专用的嵌入式计算机系统,并将其嵌入到自己的系统设备中。为灵活兼容考虑,出现了系列化、模块化的单板机。流行的单板计算机有Intel公司的iSBC系列、Zilog公司的MCB等。后来人们可以不必从选择芯片开始来设计一台专用的嵌入式计算机,而是只要选择各功能模块,就能够组建一台专用计算机系统。用户和开发者都希望从不同的厂家选购最适合的OEM产品,插入外购或自制的机箱中就形成新的系统,这样就希望插件是互相兼容的,也就导致了工业控制微机系统总线的诞生。1976年Intel公司推出Multibus,1983年扩展为带宽达40MB/s的MultibusⅡ。1978年由Prolog设计的简单STD总线广泛应用于小型嵌入式系统。20世纪80年代可以说是各种总线层出不穷、群雄并起的时代。随着微电子工艺水平的提高,集成电路制造商开始把嵌入式应用中所需要的微处理器、I/O接口、A/D、D/A转换、串行接口以及RAM、ROM等部件统统集成到一个VLSI中,从而制造出面向I/O设计的微控制器,也就是我们俗称的单片机,成为嵌入式计算机系统异军突起的一支新秀。其后发展的DSP产品则进一步提升了嵌入式计算机系统的技术水平,并迅速地渗入到消费电子、医用电子、智能控制、通信电子、仪器仪表、交通运输等各种领域。20世纪90年代,在分布控制、柔性制造、数字化通信和信息家电等巨大需求的牵引下,嵌入式系统进一步加速发展。面向实时信号处理算法的DSP产品向着高速、高精度、低功耗发展。Texas推出的第三代DSP芯片TMS320C30,引导着微控制器向32位高速智能化发展。在应用方面,掌上电脑、手持PC机、机顶盒技术相对成熟,发展也较为迅速。特别是掌上电脑,1997年在美国市场上掌上电脑不过四五个品牌,而1998年底,各式各样的掌上电脑如雨后春笋般纷纷涌现出来。此外,Nokia推出了智能电话,西门子推出了机顶盒,Wyse推出了智能终端,NS推出了WebPAD。装载在汽车上的小型电脑,不但可以控制汽车内的各种设备(如音响等),还可以与GPS连接,从而自动操控汽车。21世纪无疑是一个网络的时代,使嵌入式计算机系统应用到各类网络中去也必然是嵌入式系统发展的重要方向。

1.2 特点  

1)系统内核小。由于嵌入式系统一般是应用于小型电子装置的,系统资源相对有限,所以内核较之传统的操作系统要小得多。比如Enea公司的OSE分布式系统,内核只有5K。   
2)专用性强。嵌入式系统的个性化很强,其中的软件
4种嵌入式操作系统的调度机制
系统和硬件的结合非常紧密,一般要针对硬件进行系统的移植,即使在同一品牌、同一系列的产品中也需要根据系统硬件的变化和增减不断进行修改。同时针对不同的任务,往往需要对系统进行较大更改,程序的编译下载要和系统相结合,这种修改和通用软件的“升级”是完全两个概念。   
3)系统精简。嵌入式系统一般没有系统软件和应用软件的明显区分,不要求其功能设计及实现上过于复杂,这样一方面利于控制系统成本,同时也利于实现系统安全。   
4)高实时性的系统软件(OS)是嵌入式软件的基本要求。而且软件要求固态存储,以提高速度;软件代码要求高质量和高可靠性。  

5)嵌入式软件开发要想走向标准化,就必须使用多任务的操作系统。嵌入式系统的应用程序可以没有操作系统直接在芯片上运行;但是为了合理地调度多任务、利用系统资源、系统函数以及和专家库函数接口,用户必须自行选配RTOS(Real-Time Operating System)开发平台,这样才能保证程序执行的实时性、可靠性,并减少开发时间,保障软件质量。

6)嵌入式系统开发需要开发工具和环境。由于其本身不具备自举开发能力,即使设计完成以后用户通常也是不能对其中的程序功能进行修改的,必须有一套开发工具和环境才能进行开发,这些工具和环境一般是基于通用计算机上的软硬件设备以及各种逻辑分析仪、混合信号示波器等。开发时往往有主机和目标机的概念,主机用于程序的开发,目标机作为最后的执行机,开发时需要交替结合进行。

1.3 核心

嵌入式系统的核心是嵌入式微处理器。嵌入式微处理器一般具备以下4个特点:  

1)对实时任务有很强的支持能力,能完成多任务并且有较短的中断响应时间,从而使内部的代码和实时内核心的执行时间减少到最低限度。   
2)具有功能很强的存储区保护功能。这是由于嵌入式系统的软件结构已模块化,而为了避免在软件模块之间出现错误的交叉作用,需要设计强大的存储区保护功能,同时也有利于软件诊断。

3)可扩展的处理器结构,以能最迅速地开发出满足应用的最高性能的嵌入式微处理器。   

4)嵌入式微处理器必须功耗很低,尤其是用于便携式的无线及移动的计算和通信设备中靠电池供电的嵌入式系统更是如此,如需要功耗只有mW甚至μW级。

2.业界流行的嵌入式操作系统

2.1pSOS

pSOS是美国系统集成公司(Integrated Systems, Inc. 简称ISI公司)根据几十年从事嵌入式实时系统理论研究与实践活动而设计开发的。该产品推出时间比较早,因此比较成熟,可以支持多种处理器,曾是国际上应用最广泛的产品,主要应用领域是远程通信,航天,信息家电和工业控制。但该公司已经被风河公司(windriver)兼并,从VxWorks5.5开始,已将PSOS的主要特点融入VxWorks中。pSOS是一个由标准软组件组成的,可剪裁的实时操作系统。它分为内核层、系统服务层、用户层。

2.1.1. 内核层

pSOS内核负责任务的管理与调度、任务间通信、内存管理、实时时钟管理、中断服务;可以动态生成或删除任务、内存区、消息队列、信号灯等系统对象;实现了基于优先级的、选择可抢占的任务调度算法,并提供了可选的时间片轮转调度。pSOS Kernel还提供了任务建间通信机制及同步、互斥手段,如消息、信号灯、事件、异步信号等。
pSOS操作系统在Kernel层中将与具体硬件有关的操作放在一个模块中,对系统服务层以上屏蔽了具体的硬件特性,从而使得pSOS很方便地从支持Intel 80x86系列转到支持MC68XXX系列,并且在系统服务层上对不同应用系统不同用户提供标准的软组件如PNA+、PHILE+等。

2.1.2. 系统服务层

pSOS系统服务层包括PNA+、PRPC+、PHILE+等组件。PNA+实现了完整的基于流的TCP/IP协议集,并具有良好的实时性能,网络组件内中断屏蔽时间不大于内核模块中断屏蔽时间。PRPC+提供了远程调用库,支持用户建立一个分布式应用系统。PHILE+提供了文件系统管理和对块存储设备的管理。PREPC+提供了标准的C、C++库,支持用户使用C、C++语言

编写应用程序。由于pSOS内核屏蔽了具体的硬件特性,因此,pSOS系统服务层的软组件是标准的、与硬件无关的。这意味着pSOS各种版本,无论是对80X86系列还是MC68XXX系列,其系统服务层各组件是标准的、同一的,这减少了软件维护工作,增强了软件可移植性。每个软组件都包含一系列的系统调用。对用户而言,这些系统调用就象一个个可重入的C函数,然而它们却是用户进入pSOS内核的唯一手段。

pROBE+  

pROBE+是一个驻留在目标机(Target)上的调试器,它能够对目标机上运行的程序进行调试监控,并同宿主机(Host)进行通讯以提供宿主机上的源语言调试器所需信息。pROBE+本身不依赖于 pSOS+, 可使开发人员在开发BSP 时得到调试支持。pROBE+提供同时提供Target端Shell和Host端Shell的功能。

2.1.3. 用户层

用户指的是用户编写的应用程序,它们是以任务的形式出现的。任务通过发系统调用而进入pSOS内核,并为pSOS内核所管理和调度。pSOS为用户还提供了一个集成式的开发环境(IDE)。pSOS_IDE可驻留于UNIX或DOS环境下,它包括C和C++优化编译器、CPU和pSOS模拟仿真和DEBUG功能。pSOS内核机制

2.1.4.pSOS 基本概念

  • 任务
在实时操作系统中,任务是参与资源竞争(如CPU、Memory、I/O devices等)的基本单位。pSOS为每个任务构造了一个虚拟的、隔离的环境,从而在概念上,一个任务与另一个任务之间可以相互并行、独立地执行。任务与任务之间的切换、任务之间的通信都是通过发系统调用(在有些情况下是通过ISR)进入pSOS Kernel,由pSOS Kerne成的。
pSOS系统中任务包括系统任务和用户任务两类。关于用户任务的划分并没有一个固定的法则,但很明显,划分太多将导致任务间的切换过于频繁,系统开销太大,划分太少又会导致实时性和并行性下降,从而影响系统的效率。一般说来,功能模块A与功能模块B是分开为两个任务还是合为一个任务可以从是否具有时间相关性、优先性、逻辑特性和功能耦合等几个方面考虑。
  •  优先级
每个任务都有一个优先级。pSOS系统支持0~255级优先级,0级最低,255级最高。0级专为IDLE任务所有,240~255级为系统所用。在运行时,任务(包括系统任务)的优先级可以通过t_setpri系统调用改变。
  • 任务状态
pSOS下任务具有三种可能状态并处于这三个状态之一。只有通过任务本身或其他任务、ISR对pSOS内核所作的系统调用才能改变任务状态。从宏观角度看,一个多任务应用通过一系列到pSOS的系统调用迫使pSOS内核改变受影响任务而从运行一个任务到运行另一任务向前发展的。对于pSOS kernel,任务在创建前或被删除后是不存在的。被创建的任务在能够运行前必须被启动。一旦启动后,一个任务通常处于下面三个状态之一:
①Executing (Ready)就绪
②Running运行
③Blocked阻塞
就绪任务是未被阻塞可运行的,只等待高优先级任务释放CPU的任务。由于一个任务只能由正运行的任务通过调用来被启动,而且任何时刻只能有一个正在运行的任务,所以新任务总是从就绪态开始。运行态任务是正在使用CPU的就绪任务, 系统只能有一个running任务。一般running任务是所有就绪任务中优先级最高的,但也有例外。
任务是由自身特定活动而变为阻塞的,通常是系统调用引起调用任务进入等待状态的。所以任务不可能从ready态到blocked态,因为只有运行任务才能执行系统调用。
  • 任务控制块
任务控制块TCB是pSOS内核建立并维护的一个系统数据结构,它包含了pSOS Kernel调度与管理任务所需的一切信息,如任务名、优先级、剩余时间片数、当前寄存器状态等。在有的RTOS中,任务的状态与任务TCB所处的队列是等同的。pSOS操作系统将二者分为两个概念,例如任务处于阻塞状态,但它的TCB却处于消息等待队列、信号灯等待队列、内存等待队列、超时队列之一。
pSOS启动时,将根据Configuration Table中的参数kc_ntask建立一个包含kc_ntask个TCB块的TCB池,它表示最大并行任务数。在创建一个任务时,分配一个TCB给该任务,在撤销一个任务时,该TCB将被收回。
原创粉丝点击