第5章嵌入式操作系统第5章嵌入式操作系统5.1引言5.2嵌入式操作系统概述5.3操作系统的基本概念5.4μC/OS-Ⅱ简介5.5μC/OS-Ⅱ内核结构5.6μC/OS-Ⅱ在ARM上的移植5.7基于μC/OS-Ⅱ构建的TCP/IP/PPP协议栈思考与练习题第5章嵌入式操作系统5.1引言嵌入式系统采用的操作系统一般是实时操作系统(RealTimeOperatingSystem,RTOS),它是嵌入式应用软件的基础和开发平台。RTOS一般是一段嵌入在目标代码中的软件,用户的其他应用程序都建立在它的基础上。RTOS的引入,解决了嵌入式软件开发标准化的难题。随着嵌入式系统中软件比重不断上升、应用程序越来越大,对开发人员、应用程序接口、程序档案的组织管理成为一个大的课题。引入RTOS相当于引入了一种新的管理模式,对于开发单位和开发人员都是一个提高。基于RTOS开发出的程序,具有较高的可移植性,可以实现90%以上的设备独立,一些成熟的通用程序还可以作为专用库函数产品推向社会。第5章嵌入式操作系统嵌入式软件的函数化、产品化能够促进嵌入式软件模块的复用性,从而降低系统的研发成本。C/OS-Ⅱ是一个可裁减的、源代码公开的嵌入式实时操作系统。它提供任务调度、任务间的通信与同步、任务管理、时间管理和内存管理等基本功能,现在已经应用于多个领域,非常适合实时操作系统的教学。第5章嵌入式操作系统5.2嵌入式操作系统概述5.2.1嵌入式实时操作系统一般的,嵌入式操作系统是指支持嵌入式系统工作的操作系统,它在知识体系和技术结构上与通用操作系统没有太大区别。通用操作系统只注重平均性能,如对于整个系统来说,所有任务的平均响应时间是关键,并不关心单个任务的响应时间;而实时系统强调的是实时性,即系统的正确性不仅依赖于计算结果,也依赖于结果产生的时间。因此,实时系统是指一个能够在指定的或者确定的时间内,实现系统功能和对外部或内部、同步或异步事件作出响应的系统。图5-1形象地体现了两者之间的关系。第5章嵌入式操作系统图5-1实时操作系统与嵌入式操作系统的关系第5章嵌入式操作系统嵌入式实时操作系统是嵌入在系统目标代码中的软件,并在系统启动之后运行。用户的其他应用程序是运行在这个软件平台基础之上的多个任务。实时操作系统根据各个任务的要求,进行资源管理、任务调度、中断响应等。并且,在嵌入式实时操作系统中,每个任务根据重要性不同具有不同的优先级,系统根据各个任务的优先级来动态地切换各个任务,从而保证对实时性的要求。因此,嵌入式实时操作系统可以理解为一个标准内核,它将CPU时间、中断、定时器等资源都封装起来,留给用户标准的API接口。在这个基础上,用户通过使用这些内核提供的API函数进行程序开发,最终完成各个任务的协调工作。第5章嵌入式操作系统5.2.2典型的嵌入式操作系统1.VxWorksVxWorks操作系统是美国WindRiver公司于1993年设计开发的一种嵌入式实时操作系统。VxWorks拥有良好的持续发展能力、高性能的内核以及友好的用户开发环境,是目前嵌入式系统领域中使用最广泛、市场占有率最高的实时操作系统。VxWorks支持多种处理器,如x86、i960、SunSparc、PowerPC、MotorolaMC68xxx、MIPSRX000、StrongARM等。VxWorks操作系统基于微内核结构,由400多个相对独立、短小精悍的目标模块组成,用户可以根据需要增加或删减适当模块来裁剪和配置系统,其链接器可按应用的需要来动态链接目标模块。大多数的VxWorksAPI是专有的,采用GNU的编译和调试器。第5章嵌入式操作系统VxWorks以其良好的可靠性和卓越的实时性被广泛地应用在通信、军事、航空、航天等高精尖技术及实时性要求极高的领域中,如通信卫星、军事演习、导弹制导和飞机导航等。尤其在美国的F-16、FA-18战斗机,B-12隐形轰炸机和爱国者导弹上,甚至美国JPL实验室研制的著名“索杰纳”火星探测器上也使用了VxWorks。第5章嵌入式操作系统2.WindowsCEMicrosoftWindowsCE是从整体上为有限资源的平台而设计的多线程、完整优先权、多任务的嵌入式操作系统。WindowsCE主要针对小容量、移动式、智能化、32位、连接设备的模块化实时应用。高度模块化使得WindowsCE能够对掌上设备、无线设备、专用工业控制器的用户电子设备等进行定制,并使得WindowsCE能在多种处理器体系结构上运行,尤其适用于那些对内存占用空间具有一定限制的设备。WindowsCE操作系统的基本内核至少需要200KB的ROM。它能够支持Win32API子集、多种用户界面硬件、多种串行和网络通信技术、COM/OLE和其他进程间通信的先进方法。而且,Microsoft公司为WindowsCE提供了PlatformBuilder和EmbeddedVisualStudio开发工具。第5章嵌入式操作系统WindowsCE有5个主要的模块:(1)内核模块:支持进程和线程处理及内存管理等基本服务。(2)内核系统调用接口模块:允许应用软件访问操作系统提供的服务。(3)文件系统模块:支持DOS等格式的文件系统。(4)图形窗口和事件子系统模块:控制图形显示并提供WindowsGUI界面。(5)通信模块:允许与其他设备进行信息交换。第5章嵌入式操作系统需要指出的是,WindowsCE嵌入式操作系统不是一个硬实时操作系统,但它最大的优点是能够提供与PC机类似的图形用户界面和主要的应用程序。它的界面内容大多是在Windows里出现的标准部件,包括桌面、任务栏、窗口、图标和控件等。因此,只要是对PC机上的Windows比较熟悉的用户,都能很快学会使用基于WindowsCE嵌入式操作系统的嵌入式设备。第5章嵌入式操作系统3.pSOSpSOS是ISI(IntergratedSystemsInc.)公司研发的产品。ISI最早成立于1980年,pSOS在其成立后不久即被推出,是世界上最早的实时操作系统之一,也是最早进入中国市场的实时操作系统。ISI公司于2000年被WindRiver公司兼并。第5章嵌入式操作系统pSOS是一个模块化、高性能、完全可扩展的实时操作系统,专为嵌入式微处理器设计,提供了一个完全的多任务环境,在定制的或是商业化的硬件上提供高性能和高可靠性,可以让开发者根据操作系统的功能和内存需求定制每一个应用所需的子系统。pSOS包含单处理器支持模块(pSOS+)、多处理器支持模块(pSOS+m)、文件管理器支持模块(PHILE)、TCP/IP通信包(PNA)、流式通信模块(OPEN)、图形界面、Java、HTTP等。开发者可以利用它来实现从简单的单个独立设备到复杂的、网络化的多处理器系统。第5章嵌入式操作系统4.QNXQNX是加拿大QNX公司的产品。大多数RTOS都是从68K的CPU上开发成熟,然后再移植到x86体系上的。而QNX是直接在x86体系上开发出来的,只是近几年才在68K等CPU上使用。QNX是一个实时、可扩充的操作系统。它部分遵循POSIX相关标准,如POSIX.1b实时扩展。QNX提供了一个很小的微内核以及一些可选的配合进程;其内核仅提供4种服务:进程调度、进程间通信、底层网络通信和中断处理;其进程在独立的地址空间运行;所有其他的操作系统服务都实现为协作的用户进程。因此,QNX内核非常小巧(QNX4.x约为12KB),而且运行速度极快。QNX灵活的结构可以使用户根据实际的需求,将系统配置成微小的嵌入式操作系统或是包括几百个处理器的超级虚拟机操作系统。第5章嵌入式操作系统5.PalmOS3COM公司的PalmOS在掌上电脑和PDA市场上占有很大的市场份额。PalmOS有开放的操作系统应用程序接口(API),开发商可以根据需要自行开发所需的应用程序。目前共有3500多个应用程序可以运行在PalmPilot(PalmOS平台)上,其中大部分应用程序为其他厂商和个人开发,从而使PalmPilot的功能得以不断增多。这些应用软件包括计算器、各种游戏、电子宠物、地理信息等。在开发环境方面,可以在Windows95/98以上及Macintosh上安装PalmPilotDesktop。此外,PalmPilot可以与流行的PC平台上的应用程序(如Word、Excel等)进行数据交换。第5章嵌入式操作系统6.嵌入式LinuxLinux是一种免费的、源代码完全开放的、符合POSIX标准规范的操作系统。随着Linux的迅速发展,嵌入式Linux现在已经有许多版本,包括硬实时的嵌入式Linux(如新墨西哥工学院的RT-Linux堪萨斯大学的KURT-Linux)和一般的嵌入式Linux版本(如(CLinux、PocketLinux等)。其中,RT-Linux通过把Linux任务优先级设为最低,而所有实时任务的优先级都高于它,最终达到既兼容通常的Linux任务又保证强实时性能的目的。第5章嵌入式操作系统另外一种常用的嵌入式Linux——(CLinux是针对没有MMU的处理器而开发的,已被广泛使用在ColdFire、ARM、MIPS、SPARC、SuperH等没有MMU的微处理器上。虽然(CLinux的内核比Linux2.0内核小得多,但它保留了Linux操作系统稳定性好、网络能力优异以及对文件系统的支持等主要优点。(CLinux与标准Linux最大的区别在于内存管理。标准Linux是针对有MMU的处理器而设计的,它将虚拟地址送到MMU,然后把虚拟地址映射为物理地址;通过赋予每个任务不同的虚拟-物理地址转换映射,支持不同任务之间的保护。第5章嵌入式操作系统而(CLinux是针对没有MMU的处理器,不能使用处理器的虚拟内存管理技术,它对内存的访问是直接的,即它对地址的访问不需要经过MMU,而是直接送到地址线上输出;所有程序中访问的地址都是实际的物理地址;对内存空间不提供保护,各个进程实际上共享一个运行空间。在实现上,(CLinux专为嵌入式系统做了许多小型化的工作。第5章嵌入式操作系统7.(C/OS-Ⅱ(C/OS-Ⅱ是一个完整的,源码公开的,可移植、固化、裁剪的占先式实时多任务内核,主要面向中小型嵌入式系统,具有执行效率高、占用空间小、可移植性强、实时性能优良和可扩展性强等特点。(C/OS-Ⅱ结构小巧,最小内核可编译至2KB(虽然这样的内核没有太大的实用性),即使包含全部功能,编译后也仅有6~10KB,因而非常适用于小型控制系统。(C/OS-Ⅱ具有良好的兼容性,如系统本身不支持文件系统,但是如果需要,也可以自行加入文件系统的内容。此外,(C/OS-Ⅱ是用ANSI的C语言编写的,包含一小部分汇编语言代码,使之可供不同架构的微处理器使用。至今,从8位到16位,(C/OS-Ⅱ已在超过49种不同架构的微处理器上成功移植。第5章嵌入式操作系统(C/OS-Ⅱ是基于实时内核(C/OS的,和(C/OS版本V1.11((C/OS的最终版)是向上兼容的。目前,世界上已有很多人在各个领域中使用(C/OS及(C/OS-Ⅱ,这些领域包括:照相机行业(如数码相机)、航空业、高端音响、医疗器械、电子乐器、发动机控制、网络设备、高速公路电话系统、自动提款及工业机器人等。更因为(C/OS-Ⅱ完全公开源代码,所以国内外很多高等院校都将其用于实时系统教学。第5章嵌入式操作系统8.国内著名的嵌入式实时操作系统(1)DeltaOS:DeltaOS是全中文的嵌入式实时操作系统,提供强实时和嵌入式多任务的内核。DeltaOS的特点是任务响应时间快速、确定,不随任务负载大小改变;绝大部分的代码由C语言编写,具有很好的移植性。它适用于内在要求较大、可靠性要求较高的嵌入式系统。DeltaOS主要包括:嵌入式实时内核DeltaCORE、嵌入式TCP/IP组件DeltaNET、嵌入式文件系统DeltaFILE以及嵌入式图形用户接口DeltaGUI等。同时,它还提供了一整套的嵌入式开发套件LamdaTOOL。DeltaOS是国内嵌入式领域不可多得的一整套