物联网能否落地?可裁剪嵌入式OS成关键
作者: 潘少红
来源:IT168
日期:2010-03-31 09:01:06
摘要: 随着物联网应用的普及,智能化、网络化将会无所不在。随着价格低廉、结构小巧的CPU和连接稳定可靠的外设硬件大量使用,限制嵌入式系统发展的瓶颈就突出表现在软件方面。因此,一旦嵌入式处理器和外围硬件选定了,那么工作最多的就集中在嵌入式软件的选择和研发,嵌入式软件的嵌入式操作系统和应用软件就成了重中之中。
英特尔愿景中四个最具成长力的百亿美元部门分别是消费电子、移动互联网终端(MID)、上网本和嵌入式通讯,而其中最被看好、成长空间最大的是嵌入式通讯。英特尔为什么如此重视嵌入式通讯?原因是根据Intel的数据统计,目前世界上大概有20亿个设备可接入互联网,而到2020年将有150亿个设备可接入互联网。
据国际电信联盟(ITU)提出的一个设备互联概念,可分成四个阶段:第一个阶段是大型机、主机;第二个阶段是台式机、笔记本跟互联网相联;第三个阶段是近年的新现象,手机联上移动互联网;而第四个阶段则是更多样化的设备都可以联网,它们联网以后会是一个新的嵌入式设备互联网时代,也就是目前风靡一时的“物联网”的概念。
一.物联网概念已落地,核心技术有待突破
(1)什么是“物联网”时代?
对于大多数人来说,物联网是一个较为新鲜的概念。物联网(The Internet of Thing),就是“物物相连的互联网”。它是指通过射频识别(RFID)、红外感应器、全球定位系统、激光扫描器等信息传感设备,把任何物品与互联网连接起来,进行信息交换和通讯,以实现智能化识别、定位、跟踪、监控和管理的一种网络。据美国咨询机构FORRESTER预测,物联网将会是继计算机、互联网与移动通信网之后的世界信息产业第四次浪潮。目前物联网产业已被中国正式列为国家五大新兴战略性产业之一。
据有关资料介绍,发展物联网的关键在于射频标签、传感器、嵌入式系统及传输数据计算等领域。其中,嵌入式系统是以应用为中心,以计算机技术为基础,软硬件可裁剪,适用于应用系统对功能、可靠性、成本、体积、功耗有严格要求的专用计算机系统。因此,嵌入式系统一般指非PC系统,它包括硬件和软件两部分。硬件包括微处理器、存储器及外设器件和I/O端口等。软件部分包括操作系统软件(OS)和应用程序,应用过程控制着系统的运作和行为,而操作系统控制着应用程序与硬件的交互作用。
(2)物联网设备操作系统的特点
随着物联网应用的普及,智能化、网络化将会无所不在。随着价格低廉、结构小巧的CPU和连接稳定可靠的外设硬件大量使用,限制嵌入式系统发展的瓶颈就突出表现在软件方面。因此,一旦嵌入式处理器和外围硬件选定了,那么工作最多的就集中在嵌入式软件的选择和研发,嵌入式软件的嵌入式操作系统和应用软件就成了重中之中。而嵌入式操作系统是与应用环境密切相关的,因此物联网设备需要的是一套高度简练、界面友善、质量可靠、易开发、多任务,并且价格低廉的操作系统。
在嵌入式软件只中最核心的莫过于RTOS(Real Time Operating System,实时操作系统)。所以,无论是嵌入式Linux、VxWorks系统或者Windows CE操作系统,想要在物联网嵌入式操作系统市场大展身手,首先必须是要强化可裁剪性。就是因为物联网设备的硬件和软件都必须要更高效率地设计,量体裁衣、去除冗余,力争在小型设备上实现更高的性能,才能更具有竞争力。
二.为什么嵌入式系统关注可剪裁性?
嵌入式技术之所以能够快速发展,一个重要的原因就是嵌入式技术具有技术可剪裁的灵活性。无论是软件嵌入可剪裁还是硬件嵌入可剪裁,采用可剪裁技术都可以把复杂的系统设计变为独立模块的设计。但也正因为可剪裁技术的飞速发展,使得现有嵌入式系统设计平台面临着各种不同的挑战。
(1)量体裁衣,轻松应对设备软件的特殊挑战
一般来说,软件与硬件必须相辅相成的。但对于服务器、桌面或者笔记本PC来说,软件与硬件的协调是比较容易做到的,因为这些设备的硬件环境都是标准化的;而对于物联网设备来说,硬件环境则是千差万别的,因此也造成了软件环境的千差万别。因此,物联网嵌入式系统被描述为:以应用为中心、软件硬件可裁剪的、适应应用系统对功能、可靠性、成本、体积、功耗等严格综合性需要的专用电脑系统。它由嵌入式硬件和嵌入式软件两部分组成。嵌入式操作系统位于硬件和应用软件之间,为上层应用提供基础服务,是嵌入式系统的核心和灵魂。
例如,从硬件环境来看,桌面操作系统具有标准化的CPU、存储和I/O架构,而嵌入式环境中的RTOS硬件环境只有标准化的CPU,没有标准化的存储、I/O和显示器架构,因此许多模块在特定的硬件中并不会用到。从应用环境来看,桌面操作系统面向复杂多变的应用,而RTOS面向单一设备的单一应用,操作系统中的许多部件因此可以裁剪掉,以便节省内存,在降低成本的同时提高可靠性。因此,考虑到物联网设备的多样性,为适应不同的要求,无论在硬件方面还是在软件方面,嵌入式系统必须具有很强的可裁剪性,并且便于修改。
(2)什么是操作系统的可裁剪性?
由于物联网设备目标系统的多样性,致使在设计中经常出现需要通过裁剪来获得一个满意的操作系统。因为可裁剪性带给用户的一个最直接的好处是硬件成本降低,这对于成本敏感的应用具有重要的现实意义。由于设备中只包含应用程序用到的那部分操作系统功能,这就使得系统变得简单、易把握,从而提高系统的可靠性。但有人认为,嵌入式开发者如果拥有了软件的源代码,就可以按照自己的需求对其进行任意裁剪,就等于拥有了可裁剪性,这是一个很大的误解。删掉部分源代码之后,将会给整个系统带来什么影响,这是很难预估的,也可能会给系统的可靠性带来极大的隐患。所以如果一个软件平台只能依靠手工的方式去掉一些源代码,这根本就不是可裁剪性。
因此,操作系统的可裁剪性是指一个规模大且功能齐全的操作系统,在结构上保证了用户可在其中有选择地保留某些模块,而删减掉一些模块的性能。简单的说,是指以优秀的模块化设计为基础,随时利用软件配置方法实现软件构件的“即插即用”。因此,操作系统的可裁剪性也常被叫做操作系统的可配置性。配置方法一般有两种:一种是在系统进行编译连接时进行配置;另一种是在系统运行时进行配置。
在编译连接时的配置方法一般都是通过条件编译来实现的,即在操作系统中都有一个配置文件,在这个文件中系统的设计者可通过对一些配置常数的设置来选择使用或不使用的模块。也就是说,在对系统编译连接时,编译系统会按配置常数的设置值对与之对应的模块进行编译或不编译;那些不被编译的模块就自然地不包含在系统中而被删掉了,这样可以大大减小系统所占用的内存。条件编译是实现系统裁剪的有效手段,但这需要一个前提条件,即用户要获得待裁剪的操作系统的源代码。
在运行时对系统进行配置,是指依靠系统在初始化运行阶段执行一些条件转移语句来实现的。只不过这些条件语句是根据事先由目标系统开发人员编写的配置文件中的一些参数来跳转的。这样就可实现了系统功能上的裁剪,但不是物理上的裁剪。也就是说,被裁剪的模块的代码仍然还存在,只不过未被执行。所以,这种方法不能减少系统所占用的内存,只是使运行速度有某种程度的提高。但这种裁剪方法的优点是,目标系统开发人员可以没有源代码,并且操作起来很方便,因此是商品软件经常采用的方法。
三.主流嵌入式操作系统可剪裁性的比较
物联网嵌入式操作系统 EOS(Embedded Operating System)并不是简单嵌入的操作系统,它除了具有通用操作系统的基本特点外,在小巧、可装卸等方面必须要有突出的特点。作为在嵌入式操作系统市场上通用的三种系统:Linux、VxWorks、Windows CE在可剪裁性方面有自己的特点。下面在这里对这几种系统的特点做一一分析。
(1)VxWorks操作系统
VxWorks操作系统是风河公司开发的一种嵌入式实时操作系统。VxWorks的可裁剪性特点是开发者可以根据自己应用程序的需要来选择操作系统中的部件,用户没用到的功能模块都可以去掉。VxWorks之所以具有良好的可裁剪性和可扩展性,是因为 VxWorks采用了精心设计的三层结构:最小内核、基本内核和基本操作系统,以简洁的微内核作为最底层,逐层扩展到完整的VxWorks配置。
随着层次的上升,相应配置所支持的功能逐渐复杂多样,这些配置工作可以采用风河公司Workbench或者vxpri实现。其原因是VxWorks的设计是以构件和参数的形式进行的,只是其中的构件都是以预先编译库的形式存在,通过符号参照表与系统连接起来。例如,VxWorks允许软件开发人员剔除操作系统中当前应用软件不会用到的部分,甚至可以用其它第三方的模块来取代操作系统中的某个模块。除了部件和部件捆绑,VxWorks中还有“Profile”可以用来对VxWorks进行配置,这是一个重要的特色。Profile提供了一种便捷的方式,来构成操作系统的不同配置基础,以便适应不同的物联网设备产品开发。
(2)Windows CE系统
Windows CE是微软开发的一个紧凑的、高效和可扩展的操作系统。WinCE的可剪裁特点是利用模块化设计方法。Wince的模块化设计使得它能够在大量的平台上定制使用,开发者可以使用满足平台系统需求的最小软件模块和组件集合来设计嵌入式系统平台,从而使内存用量最小并最大可能地提供操作系统的性能。它的模块化设计允许开发者对设备进行定制。但从技术角度上讲,Windows CE作为嵌入式操作系统有很多的缺陷:没有开放源代码,使应用开发人员很难实现产品的真正定制;在效率、功耗方面的表现并不出色,而且和Windows一样占用过多的系统内存。另外,版权许可费也是厂商不得不考虑的因素。
(3)嵌入式Linux系统
Linux是 Unix操作系统的克隆,遵循 GPL声明可以自由修改和传播,是一个自由的操作系统。因此,Linux能在嵌入式系统方面大放光芒,这与 Linux具有良好的内核可剪裁开源特性是分不开的。例如,Linux在内核结构的设计中就考虑适应系统的可裁减性的要求,而Windows CE在内核结构的设计中并未考虑适应系统的高度可裁减性的要求。加上Linux源代码是公开的,它让你能够深入到系统底层,可以任意修改以满足自己的应用,并且查错也很容易,如果你愿意并且有这个能力的话。这为开发者编写和剪裁属于自己专有硬件的程序带来很大的方便。
但在运行 Linux时的一个缺点是Linux体系提供实时性能时需要添加实时软件模块,而这些模块运行的内核空间正是操作系统实现调度策略、硬件中断异常和执行程序的部分。由于这些实时软件模块是在内核空间运行的,因此代码错误可能会破坏操作系统从而影响整个系统的可靠性,这对于物联网嵌入式设备在可剪裁应用时将是一个非常严重的弱点。
据国际电信联盟(ITU)提出的一个设备互联概念,可分成四个阶段:第一个阶段是大型机、主机;第二个阶段是台式机、笔记本跟互联网相联;第三个阶段是近年的新现象,手机联上移动互联网;而第四个阶段则是更多样化的设备都可以联网,它们联网以后会是一个新的嵌入式设备互联网时代,也就是目前风靡一时的“物联网”的概念。
一.物联网概念已落地,核心技术有待突破
(1)什么是“物联网”时代?
对于大多数人来说,物联网是一个较为新鲜的概念。物联网(The Internet of Thing),就是“物物相连的互联网”。它是指通过射频识别(RFID)、红外感应器、全球定位系统、激光扫描器等信息传感设备,把任何物品与互联网连接起来,进行信息交换和通讯,以实现智能化识别、定位、跟踪、监控和管理的一种网络。据美国咨询机构FORRESTER预测,物联网将会是继计算机、互联网与移动通信网之后的世界信息产业第四次浪潮。目前物联网产业已被中国正式列为国家五大新兴战略性产业之一。
据有关资料介绍,发展物联网的关键在于射频标签、传感器、嵌入式系统及传输数据计算等领域。其中,嵌入式系统是以应用为中心,以计算机技术为基础,软硬件可裁剪,适用于应用系统对功能、可靠性、成本、体积、功耗有严格要求的专用计算机系统。因此,嵌入式系统一般指非PC系统,它包括硬件和软件两部分。硬件包括微处理器、存储器及外设器件和I/O端口等。软件部分包括操作系统软件(OS)和应用程序,应用过程控制着系统的运作和行为,而操作系统控制着应用程序与硬件的交互作用。
(2)物联网设备操作系统的特点
随着物联网应用的普及,智能化、网络化将会无所不在。随着价格低廉、结构小巧的CPU和连接稳定可靠的外设硬件大量使用,限制嵌入式系统发展的瓶颈就突出表现在软件方面。因此,一旦嵌入式处理器和外围硬件选定了,那么工作最多的就集中在嵌入式软件的选择和研发,嵌入式软件的嵌入式操作系统和应用软件就成了重中之中。而嵌入式操作系统是与应用环境密切相关的,因此物联网设备需要的是一套高度简练、界面友善、质量可靠、易开发、多任务,并且价格低廉的操作系统。
在嵌入式软件只中最核心的莫过于RTOS(Real Time Operating System,实时操作系统)。所以,无论是嵌入式Linux、VxWorks系统或者Windows CE操作系统,想要在物联网嵌入式操作系统市场大展身手,首先必须是要强化可裁剪性。就是因为物联网设备的硬件和软件都必须要更高效率地设计,量体裁衣、去除冗余,力争在小型设备上实现更高的性能,才能更具有竞争力。
二.为什么嵌入式系统关注可剪裁性?
嵌入式技术之所以能够快速发展,一个重要的原因就是嵌入式技术具有技术可剪裁的灵活性。无论是软件嵌入可剪裁还是硬件嵌入可剪裁,采用可剪裁技术都可以把复杂的系统设计变为独立模块的设计。但也正因为可剪裁技术的飞速发展,使得现有嵌入式系统设计平台面临着各种不同的挑战。
(1)量体裁衣,轻松应对设备软件的特殊挑战
一般来说,软件与硬件必须相辅相成的。但对于服务器、桌面或者笔记本PC来说,软件与硬件的协调是比较容易做到的,因为这些设备的硬件环境都是标准化的;而对于物联网设备来说,硬件环境则是千差万别的,因此也造成了软件环境的千差万别。因此,物联网嵌入式系统被描述为:以应用为中心、软件硬件可裁剪的、适应应用系统对功能、可靠性、成本、体积、功耗等严格综合性需要的专用电脑系统。它由嵌入式硬件和嵌入式软件两部分组成。嵌入式操作系统位于硬件和应用软件之间,为上层应用提供基础服务,是嵌入式系统的核心和灵魂。
例如,从硬件环境来看,桌面操作系统具有标准化的CPU、存储和I/O架构,而嵌入式环境中的RTOS硬件环境只有标准化的CPU,没有标准化的存储、I/O和显示器架构,因此许多模块在特定的硬件中并不会用到。从应用环境来看,桌面操作系统面向复杂多变的应用,而RTOS面向单一设备的单一应用,操作系统中的许多部件因此可以裁剪掉,以便节省内存,在降低成本的同时提高可靠性。因此,考虑到物联网设备的多样性,为适应不同的要求,无论在硬件方面还是在软件方面,嵌入式系统必须具有很强的可裁剪性,并且便于修改。
(2)什么是操作系统的可裁剪性?
由于物联网设备目标系统的多样性,致使在设计中经常出现需要通过裁剪来获得一个满意的操作系统。因为可裁剪性带给用户的一个最直接的好处是硬件成本降低,这对于成本敏感的应用具有重要的现实意义。由于设备中只包含应用程序用到的那部分操作系统功能,这就使得系统变得简单、易把握,从而提高系统的可靠性。但有人认为,嵌入式开发者如果拥有了软件的源代码,就可以按照自己的需求对其进行任意裁剪,就等于拥有了可裁剪性,这是一个很大的误解。删掉部分源代码之后,将会给整个系统带来什么影响,这是很难预估的,也可能会给系统的可靠性带来极大的隐患。所以如果一个软件平台只能依靠手工的方式去掉一些源代码,这根本就不是可裁剪性。
因此,操作系统的可裁剪性是指一个规模大且功能齐全的操作系统,在结构上保证了用户可在其中有选择地保留某些模块,而删减掉一些模块的性能。简单的说,是指以优秀的模块化设计为基础,随时利用软件配置方法实现软件构件的“即插即用”。因此,操作系统的可裁剪性也常被叫做操作系统的可配置性。配置方法一般有两种:一种是在系统进行编译连接时进行配置;另一种是在系统运行时进行配置。
在编译连接时的配置方法一般都是通过条件编译来实现的,即在操作系统中都有一个配置文件,在这个文件中系统的设计者可通过对一些配置常数的设置来选择使用或不使用的模块。也就是说,在对系统编译连接时,编译系统会按配置常数的设置值对与之对应的模块进行编译或不编译;那些不被编译的模块就自然地不包含在系统中而被删掉了,这样可以大大减小系统所占用的内存。条件编译是实现系统裁剪的有效手段,但这需要一个前提条件,即用户要获得待裁剪的操作系统的源代码。
在运行时对系统进行配置,是指依靠系统在初始化运行阶段执行一些条件转移语句来实现的。只不过这些条件语句是根据事先由目标系统开发人员编写的配置文件中的一些参数来跳转的。这样就可实现了系统功能上的裁剪,但不是物理上的裁剪。也就是说,被裁剪的模块的代码仍然还存在,只不过未被执行。所以,这种方法不能减少系统所占用的内存,只是使运行速度有某种程度的提高。但这种裁剪方法的优点是,目标系统开发人员可以没有源代码,并且操作起来很方便,因此是商品软件经常采用的方法。
三.主流嵌入式操作系统可剪裁性的比较
物联网嵌入式操作系统 EOS(Embedded Operating System)并不是简单嵌入的操作系统,它除了具有通用操作系统的基本特点外,在小巧、可装卸等方面必须要有突出的特点。作为在嵌入式操作系统市场上通用的三种系统:Linux、VxWorks、Windows CE在可剪裁性方面有自己的特点。下面在这里对这几种系统的特点做一一分析。
(1)VxWorks操作系统
VxWorks操作系统是风河公司开发的一种嵌入式实时操作系统。VxWorks的可裁剪性特点是开发者可以根据自己应用程序的需要来选择操作系统中的部件,用户没用到的功能模块都可以去掉。VxWorks之所以具有良好的可裁剪性和可扩展性,是因为 VxWorks采用了精心设计的三层结构:最小内核、基本内核和基本操作系统,以简洁的微内核作为最底层,逐层扩展到完整的VxWorks配置。
随着层次的上升,相应配置所支持的功能逐渐复杂多样,这些配置工作可以采用风河公司Workbench或者vxpri实现。其原因是VxWorks的设计是以构件和参数的形式进行的,只是其中的构件都是以预先编译库的形式存在,通过符号参照表与系统连接起来。例如,VxWorks允许软件开发人员剔除操作系统中当前应用软件不会用到的部分,甚至可以用其它第三方的模块来取代操作系统中的某个模块。除了部件和部件捆绑,VxWorks中还有“Profile”可以用来对VxWorks进行配置,这是一个重要的特色。Profile提供了一种便捷的方式,来构成操作系统的不同配置基础,以便适应不同的物联网设备产品开发。
(2)Windows CE系统
Windows CE是微软开发的一个紧凑的、高效和可扩展的操作系统。WinCE的可剪裁特点是利用模块化设计方法。Wince的模块化设计使得它能够在大量的平台上定制使用,开发者可以使用满足平台系统需求的最小软件模块和组件集合来设计嵌入式系统平台,从而使内存用量最小并最大可能地提供操作系统的性能。它的模块化设计允许开发者对设备进行定制。但从技术角度上讲,Windows CE作为嵌入式操作系统有很多的缺陷:没有开放源代码,使应用开发人员很难实现产品的真正定制;在效率、功耗方面的表现并不出色,而且和Windows一样占用过多的系统内存。另外,版权许可费也是厂商不得不考虑的因素。
(3)嵌入式Linux系统
Linux是 Unix操作系统的克隆,遵循 GPL声明可以自由修改和传播,是一个自由的操作系统。因此,Linux能在嵌入式系统方面大放光芒,这与 Linux具有良好的内核可剪裁开源特性是分不开的。例如,Linux在内核结构的设计中就考虑适应系统的可裁减性的要求,而Windows CE在内核结构的设计中并未考虑适应系统的高度可裁减性的要求。加上Linux源代码是公开的,它让你能够深入到系统底层,可以任意修改以满足自己的应用,并且查错也很容易,如果你愿意并且有这个能力的话。这为开发者编写和剪裁属于自己专有硬件的程序带来很大的方便。
但在运行 Linux时的一个缺点是Linux体系提供实时性能时需要添加实时软件模块,而这些模块运行的内核空间正是操作系统实现调度策略、硬件中断异常和执行程序的部分。由于这些实时软件模块是在内核空间运行的,因此代码错误可能会破坏操作系统从而影响整个系统的可靠性,这对于物联网嵌入式设备在可剪裁应用时将是一个非常严重的弱点。