浅谈嵌入式软件操作系统

来源:本站
导读:目前正在解读《浅谈嵌入式软件操作系统》的相关信息,《浅谈嵌入式软件操作系统》是由用户自行发布的知识型内容!下面请观看由(电工技术网 - www.9ddd.net)用户发布《浅谈嵌入式软件操作系统》的详细说明。
简介:嵌入式系统由嵌入式处理器、外围硬件设备、嵌入式操作系统和用户的应用程序组成,用于实现对其他设备的控制与管理。嵌入式软件系统包括嵌入式操作系统软件和应用程序。嵌入式软件开发工作就是,针对具体硬件移植嵌入式操作系统和基于操作系统的应用程序设计,往往大部分工作集中在应用程序的开发上。

1 嵌入式软件操作系统选择要素

嵌入式开发第一步需要确定嵌入式操作系统,对于嵌入式操作系统的选择通常从以下几个方面考虑:

(1)硬件平台的限制

如果在已经设计好的硬件电路上移植嵌入式操作系统,首先需要确定某嵌入式操作系统是否支持该硬件平台,如CPU类型、内存大小、程序存储空间大小、MMU等因素。如果硬件电路设计留有弹性,或者是根据选择好的嵌入式操作系统进行硬件设计,就不是限制操作系统的选择,而是嵌入式操作系统限定了硬件电路的设计。

(2)性能参数要求

首先需要从系统需求人手,转化为操作系统对应的技术指标,如是否要求硬实时、优先级抢占式调度、中断响应速度等。当然,选用的嵌入式操作系统满足性能要求,还需要应用程序满足相应的设计要求,才能使整个嵌入式系统满足性能参数要求。嵌入式操作系统根据不同平台可裁剪、可配置,并且在不同硬件平台运行的效果也差异悬殊。大部分技术参数可以从网络上找到。虽然测试的硬件平台不尽相同,但往往可以通过类比得到所设计电路的技术参数。如果有些参数无法确定,并且技术支持缺乏,就需要主动进行性能参数测试。

(3)开发、调试环境

功能强大、容易搭建的集成开发/调试环境能节省项目人力投入,加速开发进度。这也是选择嵌入式操作系统时需要考虑的重要因素。大部分开发人员选择操作系统并不看操作系统特性,而是专注于集成开发环境的优劣,可见开发环境对嵌入式开发的重要性。对集成开发环境的评价,主要考虑:编辑、编译、调试界面是否友好和高度集成;支持的PC机操作系统;编译器通用性(容易掌握和移植),支持的编程语言,提供的库资源;是否支持版本控制(与Subversion或SourceSafe直接关联);调试环境的搭建(搭建是否便利,支持哪些连接方式,是否支持单步、断点跟踪调试);仿真平台(在硬件电路完成之前就可进行编程调试,方便单元测试);其他辅助调试、分析工具(如目标观察、系统分析、内存分析等)。

(4)移植操作系统的难易

虽然嵌入式操作系统的一个重要作用是让程序设计工作量大大减少,将主要设计工作集中在应用程序开发,但是毕竟嵌入式系统是针对具体平台配置的,移植操作系统就是要对这些差异环节编程,实现硬件和操作系统的连接。

从层次上看,有CPU内核移植、CPU的移植、最小系统组成的移植、外设驱动的移植。移植的难易主要是考察在代理商或技术支持所提供的模板基础上需要实现哪些中间层模块,有哪些现成的模块可利用。

操作系统移植是否相应地有支持的调试平台,程序下载环境对操作系统的移植工作也有很大影响。

(5)应用模块支持

应用模块支持也对嵌入式软件工作量有重要影响,如开发的嵌入式系统要求支持FTP文件传输协议,支持TFT LCD的图形界面显示,那么内核是否包含TCP/IP组件和网络文件系统、是否包含TFT LCD驱动模块就对进一步的开发工作有很大影响。尤其是一些编程调试工作量大的协议、驱动,能直接利用内核组件支持是最好的解决方案。

(6)技术支持

不论是代理、技术论坛,还是软件所属公司,能提供足够多的技术支持是保证开发顺利进行的重要因素。尤其引入一个未使用过的操作系统时,很多情况是难以预料的,需要针对开发工作准备好技术支持平台,避免开发进度意外停滞。另外,是否可以得到培训、是否可以获得评估板和示例代码也是很重要的。

(7)可移植性支持

嵌入式系统不像通用PC软件,它的运行对象容易发生变化,可移植性好的软件有利于跨平台测试、后期维护、代码跨系统重用。如,操作系统是否支持POSIX接口、EABI接口,它支持的CPU系列、编程语言等。

(8)软件购置成本

这里主要包括开发软件购买价格(操作系统或开发环境)和发布授权价格,开发成本可以通过以上几项综合评估。软件购置成本除了关心价格,还需要关心使用期限、应用范围、可选组件的价格、第三方软件的支持等。授权价格需要结合产品开发规模和发布特点考虑是按产品线付费、按单品付费,还是按CPU类型付费。

总体说来,软件购置成本和开发人力成本决定的软件开发总成本是整个嵌入式操作系统评估的最终因素。

2 几种常用嵌入式操作系统

现行应用中比较流行的嵌入式操作系统有Linux、WindowsCE、VxWorks、eCos、μC/OS-II、QNX等,下文将列举这几种相对常见的嵌入式操作系统特性,作为设计选择参考。

(1)嵌入式Linux

Linux是开放源代码、免费使用和自由传播的操作系统,发展历史悠久,第三方应用软件非常丰富,多数自由软件都能够运行在Linux系统上。Linux经过不断改版升级,已经发展成一个遵循POSIX标准的纯32位多用户多进程操作系统。

嵌入式Linux是将Linux操作系统进行裁剪修改,使之能在嵌入式计算机系统上运行。它广泛应用在移动电话、个人数字助理(PDA)、媒体播放器、消费性电子产品以及航空航天等领域。

嵌入式Linux因此具有丰富的开放源代码资源,又具有嵌入式操作系统的特性,有许多公开的代码可以参考和移植,免费的OS使其在价格上极具竞争力。Linux的内核小、效率高,内核的更新速度很快;Linux可定制,其系统内核最小只有约134 KB。Linux适用于多种CPU和硬件平台,是一个跨平台的系统。到目前为止,它可以支持Alpha、ARM、M68K、MIPS、PowerPC、SH、SPARC、MicroBlaze、Intel X86等二三十种CPU。Linux具有丰富的可配置组件,如数量繁多的设备驱动程序、多媒体、文件系统、网络、内存管理等。

嵌入式Linux系统不是实时操作系统,RT_Linux支持实时性,稳定性好,安全性好,不过价格不低。也有针对没有MMU设备移植的μClinux系统(最新的Linux2.6内核可配置MMU,支持无MMU的CPU,实际上已合并了μClinux)。

搭建嵌入式开发环境,可以免费从Linux官网下载gcc编译器、gdb调试器等交叉开发工具。要求运行在Linux系统上,这对Windows用户来说可能是不易接受的。虽然通过Cygwin可以在Windows上交叉开发Linux程序,不过Cygwin首先需要配置并生成交叉工具链。在生成交叉编译器的过程中,可能会遇到多次错误,就需要根据给出的出错信息,进行相应文件的修改。并且在实践中发现,利用Cygwin编译嵌入式Linux应用程序和Red Hat Linux编译的运行效果不一致。虽然Linux下支持的图形化交叉调试工具有不少可用资源,但针对具体的硬件平台,需要的设置工作也不少。可见,嵌入式Linux还缺乏好用的集成开发环境,需要消耗一定人力用于搭建开发环境。

(2)VxWorks

VxWorks操作系统是美国WindRiver公司于1983年设计开发的一种嵌入式实时操作系统(RTOS),具有高可靠性、高实时性、高性能、组件丰富可裁剪的微内核结构,以及友好的用户开发环境。它以良好的可靠性和卓越的实时性被广泛地应用在通信、军事、航空、航天等高精尖技术及实时性要求极高的领域中,如卫星通信、军事演习、弹道制导、飞机导航等。在美国的F-16/FA-18战斗机、B-2隐形轰炸机和爱国者导弹上,甚至火星探测器上也用到了VxWorks。支持的CPU有M68K、PowerPC、Cold-Fire、Intel X86、ARM、SPARC、MIPS等几十种。

Tornado是WindRiver公司推出的集成开发环境,为用户提供支持C、C++语言的交叉编译器和类库。编译器包括GNU的C/C++编译器和Diab C/C++编译器。图形化的工程管理工具非常方便有效,可以方便地对VxWorks操作系统、组件及工程编译参数进行配置。核心工具包括VxSim仿真器、WindView软件逻辑分析仪、WindShell命令行执行工具、CrossWind集成调试器、Browser系统对象检查工具。这些工具非常实用,方便开发调试。编辑器虽不受推崇,但好在可以设置外部编辑器。

VxWorks性能优越,开发调试便利,有强大的技术支持,但是昂贵的价格让开发者望而却步。

(3)eCos

eCos(embedded Configuration operating system)是由RedHat推出的小型实时操作系统。它诞生于1997年,最早是Cygnus公司开发,后被RedHat收购。它的特点是源码开放、免费、内核可灵活配置(配置项达200多项,甚至可以配置调度器的级别和最大任务个数,可以说是调整操作系统以适应应用程序),最低编译内核可小至10 KB的级别,适合用于微小型系统,比如增强型bootloader。eCos网络发行版支持的交叉开发主机有Windows和Linux两种版本,开发编译工具可支持GNU开源的开发工具链。eCos系统包含的开发工具有软件配置和构建工具,及基于GNU的编译器、汇编器、链接器、调试器和仿真器。

支持的CPU有十几种,包括ARM、Hitachi H8300、Intelx86、MIPS、Matsushita AM3x、Motorola 68k、PowerPC,SuperH、SPARC和NEC V8xx,可以方便对不同平台的移植。

eCos系统组件非常丰富,可加速开发。核心组件有硬件抽象层、实时内核、μITRON 3.0兼容的API、POSIX兼容的API、ISO C和数学库、从USB支持,TCP/IP网络协议栈、GDB调试支持、串口、以太网驱动等。

(4)μC/OS-II

μC/OS-II是Micrium公司的基于优先级抢占、多任务的小型实时操作系统。发布于1992年,最多可以管理255个任务,支持信号量及互斥信号量、消息队列和消息邮箱、固定大小内存块管理、时间/定时器管理等服务。

内核代码量小巧,适合学习和研究。作为大学实时操作系统的典型教材,它具有广泛的用户群,已广泛应用于高安全性的设备。其源码99%符合MISRA c编码标准。

支持的CPU有40多种,主要包括ARM、AVR、Niso、SE3208、M.Core、ColdFire、PowerPC、8051、80xC52、80x86、SPARClite、SH、Xscale、PIC18、PIC24、TMS320、TMS470、Z-80等。

可以从官方网站获得45天的免费评估源码。虽然可获得源代码,但并不是免费的,版权费针对产品、产品线或CPU类型,而与具体产品数量无关。开发环境的建立往往借助具体CPU的开发环境,比如ARM用ADS,x86用Borland C++,AVR用AVR Studio。

(5)QNX/Neutrino

QNX是加拿大QNX公司的微内核实时操作系统,开发于1980年,具有模块化、易于裁剪以及扩展、执行速度快、完全地址空间保护等特点。其核心仅提供4种服务:进程调度、进程间通信、底层网络通信和中断处理,进程在独立的地址空间运行。其他的OS服务,都实现为协作的用户进程,因此QNX核心非常小巧,运行速度极快。QNX实时操作系统还是一个开放的系统,其应用程序接口完全符合POSIX标准。Linux/UNIX程序能够方便地移植到QNX系统上来,极大地扩展了QNX系统的可用资源。在QNX Neutrino中,每一个驱动、应用程序、协议栈和文件系统都在内核之外,运行在安全的提供了内存保护的用户空间。容错性是内置的。因此,几乎任何组件都可以在出错后自动重启,并不影响其他组件或内核。

QNX是少数支持图形用户界面的实时操作系统之一。不同于一些实时操作系统,QNX对图形用户界面的支持不是通过用户可以使用的C/C++图形函数库,而是“立即”提供的。图形用户界面以一组运行模块的方式出现,用户只要运行这些模块,就“立即”获得了图形用户界面,无需编写一行程序。QNX的应用领域有医疗仪器、控制系统与自动化工程、电力和网络通信、航空航天、铁道工程等任务关键型应用。

QNX支持的CPU类型有x86、MIPS、PowerPC、ARM、StrongARM、XScale、SH-4等,支持的编程语言有C、C++、Embedded C++、Java。QNX Momentics集成开发环境自身就是基于Eclipse的,基于GNU开发工具,专业版提供有源代码调试器、内存分析器、系统剖析器、目标观察器、图形界面生成器等工具,含丰富的库资源。Neutrino2.1的开发系统不仅可以自宿主,也可以宿主在其他操作系统上,如Windows、Linux或Solaris。非商业版本可以免费下载使用,商业用途的集成开发环境则需要一定费用。

3 嵌入式操作系统比较

不同的嵌入式操作系统有不同的优缺点,要根据实际的产品设计和开发环境来选择操作系统。

提醒:《浅谈嵌入式软件操作系统》最后刷新时间 2024-03-14 01:06:09,本站为公益型个人网站,仅供个人学习和记录信息,不进行任何商业性质的盈利。如果内容、图片资源失效或内容涉及侵权,请反馈至,我们会及时处理。本站只保证内容的可读性,无法保证真实性,《浅谈嵌入式软件操作系统》该内容的真实性请自行鉴别。