文章目录

  • 嵌入式系统软件
  • 嵌入式系统软件的层次结构
  • 硬件抽象层
  • 嵌入式操作系统
  • 嵌入式操作系统——WinCE
  • 嵌入式操作系统——VxWorks
  • 嵌入式操作系统——Linux
  • 嵌入式Linux OS的特点
  • 嵌入式操作系统——uCOS
  • 嵌入式操作系统—— PalmOS
  • 其他嵌入式操作系统
  • 华为鸿蒙系统


嵌入式系统软件

嵌入式应用层软件架构 嵌入式软件 架构_嵌入式应用层软件架构

嵌入式软件:包括嵌入式操作系统及应用软件

  • 嵌入式操作系统
  • 嵌入式操作系统是嵌入式系统中最基本的软件,它负责分配、回收,控制和协调全部软硬件资源的并发活动,并且提供应用程序的运行环境和接口,是应用程序运行的基础。
  • 嵌入式应用软件
  • 嵌入式应用软件是服务于某种专用应用领域,基于某一特定的嵌入式硬件平台,用来达到用户预期任务的计算机软件。

当设计一个简单的应用程序时,可以不使用操作系统,但是当设计较复杂的程序时,可能就需要一个操作系统(OS)来管理、控制内存、多任务、周边资源等等。依据系统所提供的程序界面来编写应用程序,可以大大的减少应用程序员的负担。

嵌入式系统软件的层次结构

对于使用操作系统的嵌入式系统来说,嵌入式系统软件结构一般包含三个层面:设备驱动层、实时操作系统(RTOS)、实际应用程序层。由于硬件电路的可裁减性和嵌入式系统本身的特点,其软件部分也是可裁减的。

对于功能简单仅包括应用程序的嵌入式系统一般不使用操作系统,仅有应用程序和设备驱动程序。现代高性能嵌入式系统应用越来越广泛,操作系统使用成为必然发展趋势。

操作系统如:Windows、Unix、Linux等,它们的运行平台在通用计算机上都是标准的。但嵌入式系统不然,嵌入式处理器多种多样,目前不下几百种,即使同一种体系的嵌入式处理器,它们的配置仍有不同。操作系统提供商为了屏蔽这些硬件平台的差异,仅仅用标准C语言把操作系统不依赖于具体硬件的共性部分实现了,而把依赖于硬件的部分(如存储器种类、外部设备的配置、地址分配等)留给用户编写,而操作系统仅仅规定了一个标准的规范。

用户编写的这部分代码为用户的具体硬件和标准化的操作系统之间提供了一个接口和支持平台,这部分代码称为板级支持包(Board Support Package,BSP) 或硬件抽象层(Hardware Abstraction Layer,HAL)。

经过不断地发展,嵌入式系统原有的3层结构逐步演化成为4层结构。

嵌入式应用层软件架构 嵌入式软件 架构_Windows_02

嵌入式系统的详细结构

嵌入式应用层软件架构 嵌入式软件 架构_嵌入式应用层软件架构_03

由于引入了一个中间层,屏蔽了底层硬件的多样性,操作系统不再面对具体的硬件环境,而是面对由这个中间层次所代表的、逻辑上的硬件环境,因此,把中间层次叫做硬件抽象层(Hardware Abstraction Layer, HAL)。

HAL的引入大大推动了嵌入式实时系统的通用化,从而为嵌入式系统的广泛应用提供了可能。

硬件抽象层

板级支持包(Board Support Package,BSP)是现有的大多数商用嵌入式操作系统实现可移植性所采用的一种方案,是硬件抽象层的一种实现。

BSP隔离了所支持的嵌入式操作系统与底层硬件平台之间的相关性,是嵌入式操作系统能够通用与BPS所支持的硬件平台,从而实现嵌入式操作系统的可移植性和跨平台性,以及嵌入式操作系统的通用性、复用性。

BSP是相对于操作系统而言的,不同的操作系统对应于不同定义形式的BSP。

例如,对应同一个CPU来说,要实现同样的功能,VxWorks的BSP和Linux的BSP的写法和接口定义却完全不同。

因此,BSP一定要按照具体操作系统BSP的定义形式来写(BSP的编程过程大多数是在某一个成型的BSP模板上进行修改),这样才能与上层操作系统保持正确的接口,良好地支持上层操作系统。

嵌入式应用层软件架构 嵌入式软件 架构_嵌入式硬件_04

嵌入式操作系统

目前流行的嵌入式操作系统可以分为两类:

  • 从运行在个人电脑上的操作系统向下移植到嵌入式系统中, 形成的嵌入式操作系统, 如微软公司的Windows CE 及其新版本,嵌入式Linux 等
  • 实时操作系统,如Wind River 公司的VxWorks,ISI的pSOS,QNX 系统软件公司的QNX,ATI 的Nucleus,中国科学院凯思集团的Hopen 嵌入式操作系统等

嵌入式操作系统——WinCE

Windows CE是微软开发的一个开放的、可升级的32位嵌入式操作系统,是一个基于掌上型电脑类的电子设备的操作系统。

  • Windows CE是精简的Windows 95。Windows CE的图形用户界面相当出色。其中CE中的C代表袖珍(Compact)、消费(Consumer)、通信能力(Connectivity)和伴侣(Companion);E代表电子产品(Electronics)
  • 整体上为有限资源的平台设计的多线程、完整优先权、多任务的操作系统。它的模块化设计允许它对于从掌上电脑到专用的工业控制器的用户电子设备进行定制。操作系统的基本内核需要至少200K的ROM
  • Windows CE不仅继承了传统的Windows图形界面,并且在Windows CE平台上可以使用Windows 95/98/2000上的编程工具(如Visual Basic、Visual C++等)、使用同样的函数、使用同样的界面风格,使绝大多数的应用软件只需简单的修改和移植就可以在Windows CE平台上继续使用
  • 目前主要应用于PDA,跟微软一系列Windows系统一样,Windows CE也承袭了原有的缺点:**耗系统资源、不稳定、效率不佳…**等等。后来将整个架构重新改写后推出Windows CE 3.0 版,或称为Pocket PC。

嵌入式操作系统——VxWorks

VxWorks操作系统是美国WindRiver公司于1983年设计开发的一种嵌入式实时操作系统(RTOS),具有良好的持续发展能力、高性能的内核以及友好的用户开发环境,在嵌入式实时操作系统领域牢牢占据着一席之地。

VxWorks所具有的显著特点是:

  • 可靠性、实时性和可裁减性。
  • 支持多种处理器,如x86、i960、Sun Sparc、Motorola MC68xxx、MIPS 、POWER PC等等。

以其良好的可靠性和卓越的实时性被广泛地应用在通信、军事、航空航天等高精尖技术及实时性要求极高的领域中,如火星探测器(1997年7月4日登陆火星表面)。

嵌入式操作系统——Linux

Linux是一个类似于Unix的操作系统。它起源于芬兰一个名为Linus Torvalds的业余爱好,但是现在已经是最为流行的一款开放源代码的操作系统。

Linux从1991年问世到现在,短短10几年的时间内已发展成为一个功能强大、设计完善的操作系统,伴随网络技术进步而发展起来的Linux OS已成为Microsoft公司Windows 的强劲对手。

Linux系统不仅能够运行于PC平台,还在嵌入式系统方面大放光芒,在各种嵌入式Linux OS
迅速发展的状况下,Linux OS逐渐形成了可与Windows CE等EOS进行抗衡的局面。目前正在开发的嵌入式系统中,50%以上的项目选择Linux作为嵌入式操作系统。Linux现已成为嵌入式操作的理想选择。Linux是开放源码和免费使用的,遍布全球的众多Linux爱好者又是Linux开发的强大技术后盾。

嵌入式Linux(Embedded Linux)是指对Linux经过小型化裁剪后,能够固化在容量只有几百K字节或几兆字节的存储器芯片或单片机中,应用于特定嵌入式场合的专用Linux操作系统。嵌入式Linux的开发和研究是目前操作系统领域的一个热点。主要有RTLinux和μCLinux

  • Linux的内核小、功能强大、API丰富,系统健壮、效率高,易于定制剪裁,在价格上极具竞争力。
  • Linux不仅支持x86 CPU,还可以支持其他数十种CPU芯片。
  • 开放原始码、模块化设计
    Linux采用GPL(General Public License,通用公共许可证)授权,除了把原始码公开以外,任何人都可以自由使用、修改、散布,而Linux核心本身采用模块化设计,让人很容易增减功能,例如我的平台并不需要蓝牙的功能,我只要不把这项功能加入,有需要就加入,不需要就删除,由于这样的高的弹性,我们可以调校出最适合我们硬件平台的核心出来。
    Linux的系统内核最小只有134KB,一个带中文系统和图形用户界面的核心程序也可以做到不到1MB。

相较于Unix,Windows是走封闭原始码路线,所以我们完全无法得知或修改它的核心部份。另外因为是采用GPL授权自然就没有什么权利金或保密协议的约束。

嵌入式Linux OS的特点
  1. 精简的内核,性能高、稳定,多任务。
  2. 良好的可移植性,使得它可以适用于不同的CPU,支持多种体系结构,如X86、ARM、MIPS、ALPHA、SPARC等。
  3. 能够提供完善的嵌入式GUI以及嵌入式X-Windows。
  4. 提供嵌入式浏览器、邮件程序、MP3播放器、MPEG播放器、记事本等多种应用。
  5. 提供完整的开发工具和SDK,同时提供PC上的开发版本。
  6. 非实时专用,要想用于实时性要求高的场合需要添加实时处理模块,进行实时化处理。
  7. 用户可定制,可提供图形化的定制和配置工具。
  8. 支持常用嵌入式芯片的驱动,支持大量的周边硬件设备,驱动丰富。
  9. 针对嵌入式的存储方案,提供实时版本和完善的嵌入式解决方案。
  10. 完善的中文支持,强大的技术支持,完整的文档。
  11. 开放源码,丰富的软件资源,广泛的软件开发者的支持,价格低廉,结构灵活,适用面广。

μClinux

μClinux是一个完全符合GNU/GPL公约的操作系统,完全开放代码。uClinux从Linux 2.0/2.4内核派生而来,沿袭了主流Linux的绝大部分特性。它是专门针对没有MMU的CPU,并且为嵌入式系统做了许多小型化的工作。适用于没有虚拟内存或内存管理单元(MMU)的处理器,例如 ARM7TDMI。它通常用于具有很少内存或Flash的嵌入式系统。它保留了Linux的大部分优点:稳定、良好的移植性、优秀的网络功能、完备的对各种文件系统的支持、以及标准丰富的API等。

嵌入式操作系统——uCOS

μC/OS—Micro Controller O S

μC/OS简介

美国人Jean Labrosse 1992年完成,1998年μC/OS-II,目前的版本μC/OS -II V2.61。应用面覆盖了诸多领域,如照相机、医疗器械、音响设备、发动机控制、高速公路电话系统、自动提款机,甚至航空领域。

是一个源码公开、可移植、可裁减、占用资源少、抢先式的实时多任务操作系统。其绝大部分源码采用ANSI C写的,移植性好。高校教学可免费使用。

  • 可移植性好
    绝大部分μC/OS-II的源码是用移植性很强的ANSI C写的。和微处理器硬件相关的那部分是用汇编语言写的。汇编语言写的部分已经压到最低限度,使得μC/OS-II便于移植到其他微处理器上。μC/OS-II可以在绝大多数8位、16位、32位以至64位微处理器、微控制器、数字信号处理器(DSP)上运行。
  • 实时性好
    μC/OS-II采用可抢占式实时内核,任务切换速度快。并且全部μC/OS-II的函数调用与服务的执行时间具有可确定性。
  • 多任务:μC/OS-II可以管理64个任务,然而,目前这一版本保留8个给系统。应用程序最多可以有56个任务

嵌入式操作系统—— PalmOS

Palm OS是著名的网络设备制造商3COM旗下的PalmComputing掌上电脑公司的产品。

Palm OS是一套专门为掌上电脑编写的操作系统,充分考虑到了掌上电脑内存相对较小的情况,所以Palm操作系统本身所占的内存很小,基于Palm操作系统编写的应用程序所占的空间也很小,通常只有几十KB,因此基于Palm操作系统的掌上电脑虽然只有几兆内存却可以运行众多的应用程序。

Palm OS在PDA市场上占有很大的市场份额,目前主要与WIN CE进行激烈竞争。

代表性的产品有Palm m505、Palm m500、Palm III等。

其他嵌入式操作系统

QNX 的QNX OS 、ISI 的pSOS 、电子科技大学嵌入式实时教研室和科银公司联合研制开发的Delta OS、凯思集团自主研制开发的Hopen OS等等。

华为鸿蒙系统

鸿蒙OS(英文:HarmonyOS)。在2019年8月9日,华为在东莞举行华为开发者大会,正式发布操作系统鸿蒙OS。

鸿蒙OS是一款“面向未来”的操作系统,一款基于微内核的面向全场景的分布式操作系统,它将适配手机、平板、电视、智能汽车、可穿戴设备等多终端设备。

发展历程

2012年,华为开始规划自有操作系统“鸿蒙”。

2019年5月24日,国家知识产权局商标局网站显示,华为已申请“华为鸿蒙”商标,申请日期是

2018年8月24日,注册公告日期是2019年5月14日,专用权限期是从2019年5月14日到2029年5月13日。

2019年5月17日,由某教授领导的华为操作系统团队开发了自主产权操作系统——鸿蒙。[9]

2019年8月9日,华为正式发布鸿蒙系统。同时余承东也表示,鸿蒙OS实行开源。

2019年8月10日,荣耀正式发布荣耀智慧屏、荣耀智慧屏Pro,搭载鸿蒙操作系统。

鸿蒙OS实现模块化耦合,对应不同设备可弹性部署,鸿蒙OS有三层架构,第一层是内核,第二层是基础服务,第三层是程序框架。可用于大屏、PC、汽车等各种不同的设备上。还可以随时用在手机上,但暂时华为手机端依然优先使用安卓。

自打鸿蒙操作系统注册以来,一直有种说法,认为它是安卓系统的一个分支。这是一个误解。中芯国际创始人张汝京博士分析过,鸿蒙不是安卓系统的分支或修改而来的。它是一种全新
的、独立的操作系统。是面向未来5G物联网开发的。

谷歌也有一款面向5G物联网的Fuchsia系统。但鸿蒙基于emui 9.1版本的方舟编译器的优化版本,在性能上,要比安卓原生编译器快很多。

安卓系统是用Java语言编的,这种语言简单易学。可它却有个缺点,即不能直接和系统的底层直接通信。只能在所谓的虚拟机上运行。直白地说虚拟机相当于二传手,先把安卓的应用程序装在虚拟机上,由虚拟机再传给机器的底层。

二传手出问题怎么办?表现在安卓系统就是手机软件卡顿。那么,不要这个二传手是否可以直接和机器的底层直接通信呢?

苹果手机用起来为什么不卡顿,就是它没有那个二传手,直接为机器底层写代码,苹果手机的软件跑起来就比安卓手机顺畅得多。

鸿蒙系统加方舟编译器,就替代了虚拟机这个二传手。

打造一个操作系统说难不难,基于Linux内核的话,很多大学生都可以定制一个操作系统出来,但是打造适应新时代、满足自身业务需求并且有良好生态的操作系统就没那么容易了,数十年来倒在这条路上的国内公司太多了,没有一个能够撑起一片天的。

华为做系统多年前就在进行了,他们挖来了全球操作系统领域的一个大牛,而且是顶级大牛来领导OS系统内核团队。

这个人就是上海交大的陈海波教授,虽然还是个年轻的80后教授,但陈海波教授在操作系统领域的突破太过耀眼了,用他自己的话说就是——截至 2010年底,亚洲学者40年来在SOSP(操作系统原理大会,成立于1967年)上独立发表研究论文的数目仍然为零,2011年陈教授的论文被SOSP接纳,实现了中国乃至亚洲的突破。

系统界的奥斯卡-- OSDI 与SOSP

OSDI 是系统领域和SOSP 并驾齐驱的两个顶级会议之一。第一届OSDI 在1994 年在Menterey, CA 召开。OSDI 上一直不乏中国学术工作者的身影,但国内高校一直没有太强的影响力。直到2016 年,国内高校有三篇论文同时被OSDI 录取,其中清华大学两篇,上海交大一篇。

SOSP 相比OSDI 创办的更早,第一届在1967 年召开。上交大的陈海波老师是国内高校第一篇SOSP 的论文作者(完成工作时是在复旦大学)。上海交大在2015,2017年的SOSP 也各中了一篇。OSDI 和SOSP 每届只录取20 ~ 30 篇论文,平均每个方向3~4 篇。