1.嵌入式操作系统概述
1.1概述
根据IEEE(电气和电子工程师协会)的定义,嵌入式系统是“控制、监视或者辅助装置、机器和设备运行的装置”(devices used to control, monitor, or assist the operation of equipment, machinery or plants)。从中可看出嵌入式系统是软件和硬件的综合体,还可以涵盖机械等附属装置。嵌入式系统是与应用紧密结合的,具有很强专用性,必须结合实际系统需求进行合理的裁减利用。国内一个普遍被认同的定义是:以应用为中心、以计算机技术为基础、软件硬件可裁剪、适应应用系统对功能、可靠性、成本、体积、功耗严格要求的专用计算机系统。
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 基本概念
- 任务
pSOS系统中任务包括系统任务和用户任务两类。关于用户任务的划分并没有一个固定的法则,但很明显,划分太多将导致任务间的切换过于频繁,系统开销太大,划分太少又会导致实时性和并行性下降,从而影响系统的效率。一般说来,功能模块A与功能模块B是分开为两个任务还是合为一个任务可以从是否具有时间相关性、优先性、逻辑特性和功能耦合等几个方面考虑。
- 优先级
- 任务状态
①Executing (Ready)就绪
②Running运行
③Blocked阻塞
就绪任务是未被阻塞可运行的,只等待高优先级任务释放CPU的任务。由于一个任务只能由正运行的任务通过调用来被启动,而且任何时刻只能有一个正在运行的任务,所以新任务总是从就绪态开始。运行态任务是正在使用CPU的就绪任务, 系统只能有一个running任务。一般running任务是所有就绪任务中优先级最高的,但也有例外。
任务是由自身特定活动而变为阻塞的,通常是系统调用引起调用任务进入等待状态的。所以任务不可能从ready态到blocked态,因为只有运行任务才能执行系统调用。
- 任务控制块
pSOS启动时,将根据Configuration Table中的参数kc_ntask建立一个包含kc_ntask个TCB块的TCB池,它表示最大并行任务数。在创建一个任务时,分配一个TCB给该任务,在撤销一个任务时,该TCB将被收回。