基于IPv6的家居物联网开发与应用技术
上QQ阅读APP看书,第一时间看更新

1.3.1 嵌入式技术

随着计算机技术和微电子技术的不断进步,嵌入式技术以应用为中心,具有专用性、低成本、低功耗、高性能和高可靠性等特点,在后PC时代得到了空前发展,尤其作为硬件核心的ARM处理器成为当前智能电子产品的主流CPU,与x86架构和power架构形成了竞争局面。嵌入式技术是指针对某个特定的功能或应用环境设计“专用”计算机系统的技术。从学术的角度,嵌入式系统是以应用为中心,以计算机技术为基础,并且软硬件可裁剪,适用于应用系统对功能、可靠性、成本、体积、功耗有严格要求的专用计算机系统[16]。它包含3个基本要素,即“专用性”“嵌入性”和“计算机系统”。也就是说,首先,它是相对于通用计算机系统而言的专用计算机系统;其次,嵌入宿主系统之中是其主要的存在方式;最后,表现形式与性能的不断发展是其显著特征。嵌入式系统一般分为4层:硬件层、驱动层、操作系统层和应用层。

依据嵌入式系统的发展历史,从软件角度,可将嵌入式系统分为无操作系统阶段、简单操作系统阶段和实时操作系统阶段;从硬件角度,嵌入式系统可分成以单片机/单板机为核心、以嵌入式微处理器/微控制器为核心和以SoC为核心的系统;按数据宽度,嵌入式系统可分成8位、16位、32位及64位系统等。嵌入式系统从应用的角度可划分为两大类:低端(应用)嵌入式系统,以传统的单片机系统为主体,处理器以8/16位为主,无操作系统或带有较简单的操作系统,完成功能较为单一的控制任务;高端(应用)嵌入式系统,以32位或更高位处理器为主,由功能更强的操作系统管理,能完成更多功能的嵌入式系统应用。在系统组成上,嵌入式系统一般由嵌入式微处理器、嵌入式操作系统、外围设备和应用程序4个部分组成,如图1-6所示。其中外设一般包括存储器、I/O端口及定时器等辅助设备。随着芯片集成度的提高,一些外设被集成到处理器芯片上(如MCU),称为片内外设;反之则被称为片外外设。尽管MCU片上已经包含了外设,但对于需要更多I/O端口和更大存储能力的大型系统来说,还必须连接额外的I/O端口和存储器。

图1-6 嵌入式系统结构

(1)嵌入式处理器

处理器是嵌入式系统硬件的核心,早期嵌入式系统的处理器(甚至包含几个芯片的)由CPU(中央处理单元)来担任,而如今的嵌入式处理器一般是IC芯片形式,它也可以是ASIC或者SOC中的一个核。当前,ARM嵌入式处理器是一种32位高性能、低功耗的RISC芯片,它由英国ARM公司设计,世界上几乎所有的主要半导体厂商都生产基于ARM体系结构的通用芯片,或在其专用芯片中嵌入ARM的相关技术。自1983年以来,ARM内核共有ARMx系列近10种,以及新定义的CortexM/R/A系列。M系列主要面向传统微控制器(MCU/单片机)应用,这类应用面很广,要求处理器有丰富的外设,并且各方面比较均衡,如基于CortexM3的STM32系列。R系列强调实时性,主要用于实时控制,如汽车引擎。A系列面向高性能、低功耗应用系统,如智能手机,目前主要有Cortex A5、A8、A9、A15核芯,以及基于以上架构的MPCore多核架构硬件核芯等。与国际上的发展相比,国内ARM芯片主要的IC公司还有一些差距,主要的生产厂商包括威盛、瑞芯微、华为海思、联发科、新岸线等。目前ARM芯片广泛应用于工业控制、无线通信、网络产品、消费类电子产品、安全产品等领域,如交换机、路由器、数控设备、机顶盒及智能卡等。

在物联网应用领域,如图1-3所示,根据其功能的不同,可分为一般传感器节点和网关节点。一般传感器节点如温湿度传感器、烟雾传感器等节点,这类节点具有数据传输少、需要资源有限和低功耗等特点,一般选择8/16位MCU即可满足要求,但目前32位MCU技术已经成熟,价格与8/16位MCU接近,在要求有操作系统的传感节点开始使用这类MCU。在MCU市场,ARM Cortex-M系列(M0/M3/M4)的MCU占有最大的份额。网关节点一般起到内外网的桥梁作用,进行不同协议或标准间的转换,甚至要运行两个或多个协议栈,并且要连接多种外围设备。这类节点多选用功能强大的高端MCU,如ARM Cortex-A系列,但目前市场上Cortex-M系列部分产品也能满足这方面的需求。

(2)操作系统

操作系统(Operating System,OS)在嵌入式软件中起着承上启下的作用。向上提供标准的API函数给应用程序,使应用程序不再需要关心硬件的实现细节,使开发变得更加容易;同时使专用性很强的嵌入式应用程序能比较容易地运行于其他系统之上(前提是这个系统的硬件支持此应用需求),提高了代码的重用性。向下通过板级支持包(Board Support Package,BSP)实现对系统硬件的访问和管理,使软件可以运行于不同硬件之上。嵌入式操作系统需要具有可裁剪性和伸缩性,以适应不同的硬件平台和软件应用——这一过程叫作移植。可移植性、高可靠性和实时性是嵌入式操作系统的几个主要指标。BSP是介于硬件和操作系统之间的一层,可以认为是操作系统的一部分,主要任务是初始化硬件,并为操作系统提供一个良好的运行环境。

不同的嵌入式应用对操作系统的实时性要求差别很大,根据对时间要求的严格程度,可分成硬实时、软实时和非实时系统。一个好的RTOS不仅要提供有效的机制和服务来执行好实时调度和资源管理策略,也要使其自身和资源消耗是可预知和可计算的。常用的硬实时操作系统主要有RTLinux、μC/OS-II和VxWorks,软实时操作系统有嵌入式uCLinux、Windows CE、Palm OS等。

当前,无论是传统嵌入式的OS还是通用的OS,都无法满足物联网的需求,因为物联网需要一个从端到云的整套解决方案。2016年,风河公司曾列出物联网设备要具有八大需求:模块可升级的架构,不同级别的设备软件可伸缩,物联网设备安全,虚拟化,性能和可靠性,连接性,丰富的UI和认证。这说明需要一种新型操作系统,或者需要在现有的嵌入式操作系统上进行改造,来满足物联网操作系统的需求。目前市面上多数产品能够部分满足这八大需求。《嵌入式操作系统风云录》一书对物联网操作系统做出了一个基本定义[17],就是具备低功耗、实时性和安全性的传感、连接、云端管理服务软件平台。前3个(低功耗、实时性和安全性)是技术,后3个(传感、连接和云端管理)是指从端到云的一套方案。

物联网OS最初起源于传感网的两个开源OS[18],一个是TinyOS,另一个是Contiki。TinyOS项目是由加州大学伯克利分校、Intel和Crossbow技术等公司2000年发起的开源项目,2012年2.1.2版本以后就停止更新。Contiki项目的作者是Dam Dunkels博士,Dunkels博士原来在瑞典工学院计算机研究所工作,现为Thingsqure创始人,也是uIP/LWIP作者,这个项目现在一直是他在维护,欧洲一些高校关于传感网的课程仍在介绍该系统。Contiki项目目前依然还很活跃,尤其是网络协议方面,Contiki采用uIP协议,已经扩充支持IPv6和低功耗6LoWPAN路由协议。

这两种传感器OS只是在学术界稍有影响,在产业界没有太多的反响。物联网OS在2014年开始出现,直到2016—2017年才得到广泛的关注,目前物联网OS可以分成两类[18]。一类是为物联网而生的OS,即针对物联网去做的OS,代表产品是Mbed OS、MiCO OS、Android Things等,它们还可以再分成支持MCU和支持MPU(嵌入式处理器)的两种系统,如图1-7所示。Mbed OS是ARM在2014年推出的一个专为基于ARM Cortex-M的设备所设计的免费操作系统。Windows10IoT是微软Windows10家族中IoT版本,但缺点是不能支持在物联网系统占领主流地位的MCU,代码不开源。MiCO OS是国内庆科公司推出的一个面向智能硬件优化设计的、运行在微控制器上的、高度可移植的操作系统和中间件平台,它的最大亮点是MiCO OS、移动App和云服务全部免费。2015年,谷歌把Brilo OS改名为Android Things,同年,华为也发布了Lite OS。Zephry是由Linux基金会于2016年推出的。另一类是以嵌入式OS为基础,把它扩展成支持物联网应用的,这一类占据最大市场份额的是Linux和Android。除此之外,FreeRTOS经过加固、改造也能用于物联网应用,最近亚马逊推出Amazon FreeRTOS,uC/OS-Ⅲ、ThreadX也可以应用,例如瑞萨的ARM MCU平台——Synergy就是基于ThreadX推出的。Vxwork也有自己的嵌入式OS。Nucleus和RTThread3.0等也都是适合物联网的OS。但是目前市场上十余种物联网OS都处于发展初期,例如ARM Mbed OS已出了3个版本——1.0/2.0、3.0和5.0版本,但Mbed操作系统仍处于开发阶段,还在摸索和发展中。

图1-7 当前基于物联网专用的OS分类