Chapter1 第1章

认识嵌入式操作系统

操作系统和物联网是今天大众熟悉的二个专业技术词汇。人们拿起智能手机就想到绿色小机器人—谷歌的Android操作系统;使用电脑的时候就想到了Windows操作系统;当人们驾驶汽车时,使用ETC可以自动交费通过高速路的收费站;人们使用小米手环每天记录自己的运动步数,到了晚上,微信运动应用会自动将这些数据同步到云端,运动爱好者们在那里一决胜负。这些都是物联网应用。但是对于嵌入式系统和嵌入式操作系统的认识,人们的观点是不一致的。

什么是嵌入式系统

到底什么是嵌入式系统?什么又是嵌入式操作系统?这些概念不为大众所深入了解。既使我们这些专业人士对于嵌入式系统定义的理解也不尽相同,但概括起来,嵌入式系统的定义应该是这样两种:第一,嵌入式系统是专用的计算机系统,比如有这样的定义,以应用为中心,以计算机技术为基础,软件硬件可裁剪,对功能、可靠性、成本、体积、功耗严格要求的专用计算机系统;第二,嵌入式系统是软件和硬件的综合体,最经典的解释出自美国CMP Books出版的Embedded Systems Dictionary的中译本的定义,嵌入式系统是一种计算机硬件和软件的组合,也许还有机械装置或其他部件,用于实现一个特定功能。在某些情况下,嵌入式系统是一个大系统或产品的一部分,例如汽车中的防抱死制动系统。简练一点的定义还有IEEE的定义:嵌入式系统是软件和硬件的综合体,可以涵盖机电等附属装置。从以上的定义我们不难看出,嵌入式系统具备两个最显著的特点:一个是软硬结合;一个是计算功能。因此最近Intel和微软公司也把嵌入式系统称为智能系统,这样的说法也有其道理。

今天,嵌入式系统无处不在,从厨房里的电饭煲、冰箱,到我们每天使用的智能手机、智能手环和手表,它们都是嵌入式系统。还有我们驾驶的汽车和乘坐的高铁、飞机,里面含有许多嵌入式处理器和系统设备;保证我们互联网通信的网络中也有许多路由器、交换机和网关,它们都是嵌入式系统设备。

什么是嵌入式操作系统

每一个嵌入式系统至少有一个嵌入式微处理器(或微控制器和DSP),运行在这些嵌入式微处理器中的软件就称为嵌入式软件,也称为固件(firmware)。初期这些软件都不是很复杂。随着嵌入式微处理器和微控制器从8位发展到16位和32位,整个嵌入式计算机系统也变得越来越庞大和复杂,这就需要有一个操作系统对微处理器进行管理和提供应用编程接口(API)。于是,实时多任务内核(real-time kernel)在20世纪70年代末应运而生。进入20世纪80年代,嵌入式系统应用开始变得更加复杂,仅仅只有实时多任务内核的嵌入式操作系统已无法满足以通信设备为代表的嵌入式开发需求。最初的实时多任务内核开始发展成一个包括网络、文件、开发和调试环境的完整的实时多任务操作系统(称为RTOS)。到了20世纪90年代,嵌入式微处理器技术已经成熟,除了传统的x86处理器,以ARM7/9为代表的嵌入式处理器开始流行起来,这也让以Linux为代表的通用操作系统进入了嵌入式系统应用这个领域,一些针对资源受限硬件的Linux发行版本开始出现,也就是我们所说的嵌入式Linux。进入2000年以后,Android开始被广泛地应用在具有人机界面的嵌入式设备中。近来,物联网操作系统又以崭新的面貌进入了人们的视野。

所有可用于嵌入式系统的操作系统都可以称为嵌入式操作系统(国外称为Embedded Operating System或者Embedded OS,中文简称为嵌入式OS)。既然它是一个操作系统,那就必须具备操作系统的功能—任务(进程)、通信、调度和内存管理等内核功能,还需要具备内核之外的文件、网络、设备等服务能力。为了适应技术发展,嵌入式操作系统还应具备多核、虚拟化和安全的机制,以及完善的开发环境和生态系统。嵌入式OS必须能支持嵌入式系统特殊性的需求,如实时性、可靠性、可裁剪和固化(嵌入)等特点。这里不一一细说。

Labrosse和Noergaard在《Embedded Software》中的“Embedded Operating System”一章中对嵌入式操作系统有这样的描述:每一种嵌入式操作系统所包含的组件可能有所不同,但至少都要有一个内核,这个内核应具备操作系统的基本功能。嵌入式操作系统可以运行在任何移植好的CPU上,可以在设备驱动程序之上运行,也可以通过BSP(板支持软件包)来支持操作系统运行。

20世纪70年代末,嵌入式操作系统的商业产品开始在北美出现。进入20世纪90年代,嵌入式操作系统的数量呈井喷式增加,最鼎盛的时候有数百种之多,经过30多年的市场发展和淘汰,如今依然有数十种。但是,真正在市场上具有影响力并有一定的客户数量和成功的应用产品的嵌入式操作系统并不多,常见的有:eCos、C/OS-II和III、VxWorks、pSOS、Nucleus、ThreadX、Rtems、QNX、INTEGRITY、OSE、C Executive、CMX、SMX、emOS、Chrous、VRTX、RTX、FreeRTOS、LynxOS、ITRON、Symbian、RT-thread,以及Linux家族的各种版本,比如Clinux、Android和Meego等,还有微软家族的WinCE、Windows Embedded、Windows Mobile等。其中有些产品已经因为公司被收购而消失,比如pSOS、VRTX和Chrous等;还有的开源嵌入式操作系统因为缺少维护而逐渐被放弃,比如eCos和Meego等。关于这些操作系统的情况,本书后面的章节将会有更多的介绍。

嵌入式操作系统分类

通用的操作系统按照应用可分成桌面和服务器两种版本,近年随着智能终端(手机和平板电脑)的兴起,又增加了一个移动版本,而服务器版本随着云计算的发展,又出现了云操作系统这一“新贵”。但是,嵌入式操作系统分类却是一件很困难的事情。原因是什么呢?因为嵌入式系统没有一个标准的平台。从实时性角度看,嵌入式操作系统可分为硬实时和软实时,RTOS是硬实时操作系统,而Linux是软实时的操作系统;从商业模式看可分为开源和闭源(私有);从应用角度看可分为通用的嵌入式操作系统和专用的嵌入式操作系统。比如,VxWorks就是硬实时、私有和专用的操作系统,而嵌入式Linux就是软实时、开源和通用的嵌入式操作系统。Android是一个有趣的例子,它主要应用在智能手机和平板电脑中,不是一个典型的嵌入式操作系统。但是最近几年,它也开始广泛应用在消费电子产品中,比如智能电视、智能手表,甚至是工业电子应用中,这说明它正在逐渐变成为一个嵌入式操作系统。

从内核技术看,嵌入式操作系统有3种架构:单片(monolithic)、分层(layer)和微内核(microkernel)。单片架构是将设备驱动、中间件和内核功能模块集成在一起。单片架构的操作系统因为结构上很难裁剪和调试,后期发展成模块化单片架构,典型的单片架构的操作系统有C/OS-II和Linux等。分层架构是指操作系统分成不同级别的层,上层的功能依赖底层提供的服务。这种架构的好处是易于开发和维护,但是每层都有自己的API,所带来的附加开销会使操作系统的尺寸增加和性能降低,VRTX32是一个典型分层架构的嵌入式操作系统。模块化的进一步发展,最小内核功能压缩成只有存储和进程管理,设备驱动变成一个更小内核模块的操作系统,称为微内核操作系统。这个操作系统的附件模块因为可以动态地加载,使得系统的可伸缩和可调试性更强,独立的内存空间又使得系统的安全性更好,模块化的架构更容易移植到不同的处理器上。比较前面两种架构,微内核的操作系统的整体开销更大,性能和效率要低。目前商业的嵌入式操作系统多数都是微内核架构,比如CMX-RTX、VxWorks、Nucleus plus、QNX和VRTXsa。

嵌入式操作系统的应用

可以说,哪里有嵌入式的应用,哪里就有嵌入式操作系统的身影。今天的嵌入式应用已经无处不在,嵌入式操作系统更是随处可见。但是必须强调,嵌入式操作系统对于系统的处理器和其他资源均有一定要求和占用,商业嵌入式操作系统要收取一定的开发和使用费用,即使是开源的嵌入式操作系统,你在开发中也或许要向商业公司购买技术服务。这些都将是最终的电子产品的成本因素,如果你想降低成本,对于那些开发者不多且易于维护的简单应用,就可以选择不使用操作系统。哪些应用适合而且必须使用嵌入式操作系统呢?笔者根据自己20多年的实践经验,认为下面所列出的各项是市场上嵌入式操作系统应用的热点。

无线通信产品:比如手机、基站和无线交换机等无线通信设备大量使用嵌入式操作系统和中间件(通信协议等)。

网络产品:比如路由器、交换机、接入设备和信息安全产品等大量使用RTOS和开源的Linux。

智能家电:比如智能电视、IP机顶盒、智能冰箱等产品大量使用包括Android在内的嵌入式操作系统。

航空航天和军事装备:包括飞机、宇航器、舰船和武器装备等在内,都在使用经过认证的RTOS,这个领域也是嵌入式操作系统最早开发的市场之一。

汽车电子:现代汽车和运输工具大量使用嵌入式处理器技术,正在从采用私有的RTOS转向采用标准和开放的RTOS和通用的嵌入式操作系统技术。随着智能交通和车联网的发展,汽车电子将给嵌入式操作系统发展带来一个新的春天。

物联网应用:物联网和云计算是IT产业技术发展的两大推手,其中物联网的发展对嵌入式操作系统的需要和影响更大。物联网应用需要嵌入式操作系统来支持低功耗无线网络技术、物联网网关、物联网安全,以及动态的升级和维护功能。

嵌入式操作系统风云录:历史演进与物联网未来Chapter1 第1章相关推荐

  1. 嵌入式操作系统风云录:历史演进与物联网未来导读

    Preface 前 言 我是在1994年正式进入嵌入式系统这个领域的,之前10年,我虽然参与过工业自动化和通信设备开发项目,但在当时,它们还不能算是真正意义上的嵌入式系统.可以这样讲,1994年之前我 ...

  2. 嵌入式操作系统风云录:历史演进与物联网未来Chapter3 第3章

    Chapter3 第3章 开源的嵌入式操作系统 今天开源软件正大行其道,从服务器.云计算.桌面到手机和嵌入式设备,到处都可以见到开源软件和开源的操作系统.本章介绍对嵌入式系统发展具有重要影响的几种开源 ...

  3. 嵌入式操作系统风云录:历史演进与物联网未来第2章 Chapter2

    第2章 Chapter2 嵌入式操作系统的历史 20世纪70年代末,嵌入式操作系统商业产品开始在北美出现,20世纪90年代末嵌入式OS的数量呈井喷式增加,最鼎盛的时候有数百种之多,即使经过30多年的发 ...

  4. 嵌入式操作系统风云录

    嵌入式操作系统风云录 历史演进与物联网未来__何小庆著_北京:机械工业出版社 https://pan.baidu.com/s/1rMcyqgma-SHQJ3X_9Cmhpg

  5. 嵌入式操作系统与物联网演进之路

    文/屠敏 物联网是新一代信息技术的重要组成部分,回顾其发展,其中不得不提的必然是嵌入式系统.传统的嵌入式系统与互联网的发展衍生出物联网,而在如今的物联网热潮之下,嵌入式系统也面临着全新的机遇与挑战.那 ...

  6. 国产嵌入式操作系统发展思考

    点击上方"大鱼机器人",选择"置顶/星标公众号" 福利干货,第一时间送达! 作者 | 何小庆 责编 | 屠敏 出品 | CSDN(ID:CSDNnews) 嵌入 ...

  7. 国产嵌入式操作系统发展思考 | 何小庆

    国产嵌入式操作系统发展思考 偶然翻到了这篇老文章,出自何小庆(<嵌入式操作系统风云录:历史演进与物联网未来>作者),写的很好,汇总了当下国产 OS 的状态,遂分享出来.本文源自微博&quo ...

  8. 国产嵌入式操作系统任重道远,未来着实可期!

    国际政经环境日益复杂,国产芯片风起云涌,国产操作系统受到国内产业界.学术研究机构和政府部门高度重视.伴随人工智能物联网(AIoT)快速发展,嵌入式操作系统在智能系统中发挥越来越大的作用,为了应对日益复 ...

  9. 学python与嵌入式操作系统_嵌入式操作系统那么多,哪一个适合你?

    原标题:嵌入式操作系统那么多,哪一个适合你? 物联网.人工智能的发展都离不开嵌入式系统,而嵌入式操作系统又是其中不容忽视的重要部分,工程师对其要求也由过去的简单易用上升到既要简单易用又安全可靠.嵌入式 ...

最新文章

  1. public void DeleteT(ListT EntityList) where T : class, new() 这是什么意思
  2. Jupyter Notebook插入图片的4种方法
  3. thinkphp5.0 使用paginate 分页后 foreach 循环体内不能处理数据的解决办法
  4. [JS]string.substr(start,length)str.slice(begin, end)
  5. mysql全表重命名备份_MySQL数据库重命名的快速且安全方法(3种)
  6. python正则匹配字符串中的数字_Python正则表达式匹配字符串中的数字
  7. (140)FPGA面试题-FPGA IP简介
  8. 快手员工泄露10亿元公司机密 被开除并收回期权,官方暂未回应...
  9. 计算机组成原理简答题第二章
  10. 按钮 加加加 减减减
  11. PHP从基础到高级总结
  12. 计算机用手机的网络,台式电脑如何使用手机网络上网
  13. 软件解耦(decouple)
  14. 解决Latex编译报错 Font shape `TU/ptm/b/n‘ undefined (Font) using ‘TU/ptm/bx/n‘ instead
  15. 洛谷 P4200 千山鸟飞绝平衡树
  16. 傅里叶Fourier变换fft-python-scipy-幅值-辐角-相位(一)
  17. Tensorflow2.0之用循环神经网络生成周杰伦歌词
  18. Faster R-CNN论文翻译笔记
  19. python123不能登录_python入门:最基本的用户登录用户登录,三次错误机会
  20. java 创建对象的init_Java 对象创建过程。init 方法和 clinit方法。

热门文章

  1. psv摇杆测试软件,adrenaline专用右摇杆控制视角插件发布, 转
  2. Java代码来实现-经典排序算法
  3. 《网页设计与制作项目教材》-Chapter06千年之恋 -20210605
  4. 瑞幸咖啡完成债务重组:陆正耀出局 股东大钲资本成实控方
  5. mysql索引需要注意什么意思_mysql索引需要了解的几个注意
  6. python catia harness_介绍一些CATIA汽车线束设计模块的常用命令
  7. protobuf_name_conflict问题解决
  8. 【Linux】练习---创建用户以及组、管理用户密码、简单用户身份切换
  9. 动真格了!苹果下架超5万款游戏App, 辛好我有企业签
  10. 快讯:今日一颗小行星2014 RC掠过地球轨道