当前位置:   article > 正文

从基础到前沿:Linux嵌入式系统开发与市场趋势_嵌入式什么时候要用linux

嵌入式什么时候要用linux

嵌入式系统

Linux嵌入式系统整合了嵌入式硬件平台和Linux操作系统,多应用于处理复杂度较高、任务数较多的系统中。Linux嵌入式系统兼顾了硬件平台的差异性和软件系统良好的可移植性,在一些高端应用领域,如路由器、POS机、工业主机等嵌入式行业中,有着其他嵌入式系统无可比拟的优势。

嵌入式系统的应用和发展

嵌入式系统自计算机诞生以来,逐渐渗透到人们生活的衣、食、住、行、用等各个方面,从当下流行的智能穿戴产品,如智能手环、谷歌眼镜等,到购买饮料的自助售货机,再到越来越火的智能家居系统、自驾游的车载终端以及自动驾驶系统……不难发现,在人们日常生活中越来越离不开嵌入式系统。人们熟知的单片机系统多应用在智能小家电、电机驱动、自动化控制以及自然资源勘测等领域,这种系统功能单一、任务少,不需要复杂的时间调度。而像手机、路由器、POS机、多功能自助售货机以及智能机器人里面的嵌入式系统,由于系统复杂、架构分层明确,普通的裸机程序已经不能满足用户的需求,因此嵌入式操作系统渐渐发展壮大起来。

那么未来嵌入式系统发展趋势如何?下面从以下4个方面进行说明

  • 1.嵌入式系统的生态化

    嵌入式系统包含硬件系统和软件系统,硬件系统平台化、软件系统模块化,采用整体封装的思想,将嵌入式系统看成一个生态系统,就是要求系统供应商在提供硬件系统的同时,也要提供与之配套的软件、工具链等。

  • 2.嵌入式系统的专用性

    嵌入式系统在某个领域长时间积累经验后,会将技术经验封装在芯片里,或将程序固化在芯片里,比如现在的WiFi模块、蓝牙模块、电量芯片等专用化程度非常高的芯片,降低了嵌入式系统的复杂度。

  • 3.嵌入式系统的精简化

    目前的嵌入式系统伴随着处理器向片上系统(SOC)的发展,指令集也越来越精简。硬件模组化也是目前芯片厂商的一个重要发展方向,而且硬件的模块化设计,使得接口逐渐统一,嵌入式系统的开发也变得越来越简单。加上程序运行调试工具越来越精细化,未来的嵌入式系统势必要将软硬件精简化,从而提高产品的开发速度。

  • 4.嵌入式系统的人性化

    人性化要求嵌入式系统在设计之初就要深入调查市场需求,设计友好的人机交互界面,重视用户的体验感。这就要求嵌入式系统的开源化。开源的嵌入式系统,更有利于工程师之间的交流,也有利于问题的检查。国家新基建的方向着重向着人工智能、大数据以及5G基站方向发展,这些技术背后不是单独一个芯片裸机就能支持的,而是需要强大芯片以外的另一个强大的操作系统。因此,学习嵌入式Linux系统开发就是我们“后浪”乐此不疲、迎难而上的表现。嵌入式系统市场巨大的需求量,导致大部分IT公司(无论大小)都要组建自己的嵌入式系统开发团队,因此我们应该深刻领悟嵌入式系统于个人、家庭、国家的意义。

嵌入式系统与嵌入式操作系统

啥是嵌入式系统

嵌入式系统是指嵌入到一个设备或产品中的专用计算机系统。这些系统通常执行特定的任务,并且优化以满足特定的功能需求、功耗、性能或成本等要求。嵌入式系统通常包括微控制器或微处理器、存储器、输入输出设备等组件,广泛应用于汽车、家用电器、医疗设备、工业控制系统等领域。

在这里插入图片描述
在这里插入图片描述

嵌入式系统是区别于通用计算机系统的,它是内嵌在设备或者机器内部、对用户无感交互的计算机系统。嵌入式系统的硬件和软件都必须高效率地进行设计,量体裁衣、去除冗余。由于嵌入式系统的相关产品通常需要进行大批量生产,所以单个产品的成本能否节省,会随着产量的增加形成千百倍放大的效果。因此,嵌入式系统开发的专用性和灵活度都很高。

你看这两组图用户都看不到电路板、芯片以及软件系统,这部分内容都被整机设备内嵌在内部。其次,用户对两组产品的侧重点不同,

第一张图用户只关注使用的效果和稳定性;

第二张图用户更多关注的是系统的交互性,要方便用户操作使用。

我们可以简单给嵌入式系统做个总结:嵌入式系统是一种内嵌在机器(设备)内部、能够独自运行的计算机系统单元。嵌入式系统就是计算机系统在各个领域对系统剪裁使之适用于某个领域或者行业的计算机处理单元。

何为嵌入式操作系统

嵌入式操作系统(Embedded Operating System)是专门为嵌入式系统设计的操作系统。这类操作系统优化以满足嵌入式系统的资源限制(如内存、处理能力等),通常具有实时性、确定性和可靠性等特性。常见的嵌入式操作系统包括FreeRTOS、VxWorks、嵌入式Linux、ThreadX等。

需要注意的是嵌入式系统要内嵌在专用的应用设备中,从而实现对设备的智能化控制,所以它在技术上和普通计算机系统发展方向是不尽相同的。普通的计算机系统更注重娱乐功能和快速的数据处理能力,嵌入式系统的技术发展方向总是提高计算机处理能力和速度,因此迭代速度比较快。嵌入式系统技术发展方向是应用领域细分化、功能专用化、智能化以及高可靠性。

这里要提到剪裁的概念,它指的是硬件以及软件上的剪裁。硬件检查主要根据应用领域对嵌入式系统板卡的硬件功能需求,比如温湿度记录仪,用户只关心对温、湿度环境参数的感知,没有过多延伸的需求,这在设计电路板卡时,只需要处理单元、显示单元以及传感器,其他系统单元比如存储单元、网络处理单元就可以剪裁掉。软件剪裁是指根据设备的使用场景,定制软件功能,比如POS主要定制联网刷卡购物的功能,可以忽略它的娱乐功能。嵌入式系统灵活自由的剪裁功能,能够降低劳动成本,提高工作效率。

嵌入式系统的分类和特点

嵌入式系统分类


嵌入式系统大致可以从处理器、系统性能、系统软件复杂度以及嵌入式系统的行业应用领域四大维度看

  • 处理器:

    • 单片微型计算机系统(SCM): 这玩意包含一个微控制器,适用于简单的应用,如电子玩具、传感器。早期的4位和8位微处理器,如Intel 4004和Intel 8080。
    • 微控制器(MCU):强调集成度和低功耗。如 Atmel AVR系列、Microchip PIC系列。适用于适用于低成本、低功耗的应用,如家用电器、简单的传感器.
    • 微处理器(MPU):适用于需要更高处理能力的应用,如智能手机、平板电脑。
    • 数字信号处理器(DSP):专门用于处理实时信号处理任务,如音频处理、通信设备。
    • 现场可编程门阵列(FPGA):适用于需要硬件加速和高性能计算的应用,如航空航天、军工领域。
  • 系统性能:

    • 实时嵌入式系统:需要在严格的时间约束下执行任务,如工业控制、医疗设备。
    • 非实时嵌入式系统:不要求严格的时间约束,主要用于消费电子产品,如家庭娱乐系统。
  • 系统软件复杂度:

    • 简单嵌入式系统:通常使用简单的操作系统或没有操作系统,如电子玩具、简单传感器。

    • 复杂嵌入式系统:使用复杂的操作系统(如嵌入式Linux)和更多的软件层次,如智能电视、智能家居设备。

  • 行业应用领域:

    • 消费电子:智能手机、平板电脑、家用电器。
    • 汽车电子:车载信息娱乐系统、发动机控制单元(ECU)。
    • 工业控制:可编程逻辑控制器(PLC)、工业机器人。
    • 医疗设备:便携式诊断设备、生命体征监测系统。
    • 通信设备:路由器、基站设备。

嵌入式系统的特点

  • 嵌入式系统层次结构明确,软硬件可以灵活剪裁,系统开销小,有专用性强、统一的接口、实时性高,可以移植各种操作系统,以及开发环境方便搭建的优点,但也有硬件复用度低、软件可移植性差等缺点。
  • 嵌入式系统可以灵活剪裁,从而降低生产成本,提高企业和个人经济效益。例如GPS定位系统并不像POS机一样需要高性能处理器和复杂的板卡,因此工程师就可以选择性能匹配的处理器和功能匹配的板卡。软件工程师也没有必要非要移植操作系统,直接前后台的模式就能实现GPS系统的正常工作。这在降低研发费用的同时,还提高了研发的
  • 嵌入式系统专用性很强,一个嵌入式系统一般都是专门为处理某项工作而设计的,和普通的笔记本或台式计算机相比,系统开销小,从而降低了生产成本。嵌入式系统一般工作都使用统一的接口,比如串口、IIC、SPI、CAN接口,便于统一接口标准。
  • 嵌入式系统在硬件复用度和软件移植性上显得有些不足,比如前文提到的GPS定位系统,一旦板卡设计完成,硬件板卡就只能做GPS定位功能使用,不能再做其他的应用了;同样软件也是,很难再移植到别的应用平台。但是嵌入式本来就是专用性系统,因此工程师在设计产品阶段应该配合产品工程师提前预计市场需求,避免生产过剩等问题。

嵌入式操作系统架构

在这里插入图片描述

操作咱家系统的傻瓜们永远都想不到,他随便一个点击打开文件夹就直接牵扯到系统精心设计的五层结构


嵌入式操作系统的层次结构

常用的操作系统体系结构包括层次结构和微内核结构两种。这里将对层次结构做展开 。
操作系统整个体系结构设计是指选择合适的结构,通过分层、分模块或分资源等方式对操作系统功能进行划分,

层次结构特点
  1. 分层组织:操作系统被分成多个层次,每层实现特定的功能。例如,最底层通常处理硬件相关的操作,而上层则处理用户接口和应用程序。
  2. 抽象与封装:每一层提供一组抽象接口,隐藏其内部实现细节。上层通过这些接口与下层交互,而不直接访问下层的具体实现。
  3. 模块化设计:每一层都是相对独立的模块,这使得系统的设计、实现和维护变得更加简单。
  4. 逐层调用:上层调用下层的服务,而下层不能调用上层。层次之间的调用通常通过函数调用或消息传递来实现。
典型的层次结构

** 假设我们要在一台计算机上运行一个文本编辑器(如Notepad),来编辑并保存一个文本文件**

用户层 用户打开文本编辑器(如Notepad),在界面中输入文字,并点击“保存”按钮来保存文件。用户层包括所有用户交互的应用程序和界面,文本编辑器应用程序通过系统调用接口与操作系统交互,完成文件的读取和保存操作。

系统调用接口层:文本编辑器通过系统调用接口请求操作系统打开一个文件(如调用open()系统调用),读取文件内容(如调用read()系统调用),以及保存编辑后的内容(如调用write()系统调用)。系统调用接口层提供了一组API,允许应用程序请求操作系统执行底层操作。

内核层: 操作系统内核管理进程的调度,如文本编辑器进程的创建与运行;内存管理,确保文本编辑器有足够的内存使用;文件系统管理,确保硬盘上的文件可以正确读写。 内核负责系统资源的管理和分配,确保各个进程能有效运行并且能访问硬件资源。

硬件抽象层(HAL):键盘输入被键盘驱动程序通过HAL处理,屏幕显示通过显示驱动程序通过HAL处理,硬盘读写操作也通过硬盘驱动程序通过HAL处理。HAL提供了统一的接口,允许操作系统与这些硬件设备进行交互,而无需考虑具体的硬件实现细节。

硬件层: 用户将通过键盘输入文字,屏幕显示输入的内容,硬盘用于存储文件。键盘、显示器和硬盘是直接参与操作的物理设备。

通过这种方式,我们可以看到每一层级是如何协同工作,共同完成用户操作的。

所以层次结构通常包括以下几个层次: 硬件层、硬件抽象层(HAL)、内核层、系统调用接口层、用户层。

对于硬件层这是实际的物理设备所在层,如CPU、内存、硬盘、显示器、网卡。这一层直接涉及物理硬件设备的操作和管理,处理硬件信号和低级指令。

硬件抽象层(HAL)是操作系统中的硬件抽象模块,如Android中的HAL模块,或Windows中的WDDM(Windows Display Driver Model)。

HAL通过提供统一的接口,让操作系统和应用程序可以独立于具体的硬件设备工作。比如,在Android系统中,HAL模块使得不同的硬件能够通过相同的API被系统调用。

内核层就是 Linux内核、Windows内核(NT内核)。 是操作系统的核心部分,负责管理系统资源,包括进程调度、内存管理、设备驱动、文件系统等。

系统调用接口层有个标准叫POSIX标准其规定了的系统调用的接口,如fork(), read(), write(), open()。 这一层提供了一组系统调用API,供用户态程序调用,以便执行诸如文件操作、进程控制和通信等任务。

用户层是用户运行的应用程序,如Microsoft Word、Google Chrome、手机上的微信APP。 用户层包括所有用户运行的应用程序和用户接口,应用程序通过系统调用接口层来请求操作系统服务。

Linux系统版本

Linux系统版本主要指的是Linux发行版,这些发行版由不同的个人、团队、商业机构和志愿者组织编写,通常包括了系统软件、应用软件,以及用于简化初始安装的工具和软件安装升级的包管理器。以下是一些典型的Linux发行版及其特点:

一般来说发行版包括以下几个主要组成:

  • Linux内核:负责系统资源和硬件管理。
  • GNU程序库和工具:提供基本的系统功能和编译环境。
  • 命令行shell:用户与系统交互的命令行接口。
  • 图形界面:提供图形用户界面,通常基于X Window系统。
  • 包管理器:用于安装、更新和管理软件包。

换句话说是 这五个组件凑起来了一个功能齐全的操作系统,至于其发行版我们都是根据其应用场景结合发行版本的特点来做选择使用


1. Ubuntu

  • 描述:这个系统由Canonical公司维护,是最流行的Linux发行版之一,特别在桌面用户中受欢迎。
  • 组成部分
    • Linux内核:Ubuntu使用Linux内核来管理系统资源和硬件。
    • GNU程序库和工具:包括基本的系统工具和库,例如GCC编译器、glibc库等。
    • 命令行shell:默认使用Bash作为命令行解释器。
    • 图形界面:使用X Window系统作为图形界面基础,桌面环境通常为GNOME或KDE。
    • 包管理器:使用APT(Advanced Package Tool)来管理软件包。

Ubuntu以其易于使用和良好的硬件兼容性著称,特别适合初学者和桌面用户。它有定期的LTS(长期支持)版本,提供五年的安全更新。

2. Fedora

  • 描述:由Red Hat公司社区维护,定位为最新技术的测试平台,常用于开发和测试。
  • 组成部分
    • Linux内核:Fedora使用最新版本的Linux内核。
    • GNU程序库和工具:包括GCC编译器、glibc库等基础工具。
    • 命令行shell:默认使用Bash,但也支持其他shell如Zsh。
    • 图形界面:使用X Window系统,默认桌面环境为GNOME。
    • 包管理器:使用DNF(Dandified Yum)来管理软件包。

:Fedora常被用作新技术的试验平台,提供最前沿的软件和功能。它的快速发布周期(约每六个月)意味着用户可以快速获取最新的软件。

3. Debian

  • 描述:社区驱动的Linux发行版,以其稳定性和自由软件哲学著称,是许多其他发行版(如Ubuntu)的基础。
  • 组成部分
    • Linux内核:Debian使用稳定版本的Linux内核。
    • GNU程序库和工具:提供广泛的系统工具和库。
    • 命令行shell:默认使用Bash。
    • 图形界面:使用X Window系统,支持多种桌面环境如GNOME、KDE、Xfce等。
    • 包管理器:使用APT来管理软件包。

Debian以其稳定性和严格的开源政策闻名,适合服务器和需要高度可靠性的环境。Debian的软件仓库非常庞大,包含超过50,000个软件包。

4. Arch Linux

  • 描述:以极简和高度可定制化为特点,用户需要自行配置和安装各种组件,适合高级用户。
  • 组成部分
    • Linux内核:使用最新稳定版本的Linux内核。
    • GNU程序库和工具:提供基本的系统工具和库。
    • 命令行shell:默认使用Bash,但也支持其他shell如Zsh。
    • 图形界面:用户可以选择安装和配置X Window系统以及任何桌面环境。
    • 包管理器:使用Pacman来管理软件包。

Arch Linux采用滚动更新模式,用户可以随时获得最新的软件和功能。它强调简洁性和用户控制,安装和配置需要较高的技术水平。

5. Red Hat Enterprise Linux (RHEL)

  • 描述:由Red Hat公司维护,主要用于企业环境,注重稳定性和长期支持。
  • 组成部分
    • Linux内核:使用稳定且经过充分测试的Linux内核。
    • GNU程序库和工具:包括企业级的系统工具和库。
    • 命令行shell:默认使用Bash。
    • 图形界面:使用X Window系统,默认桌面环境为GNOME。
    • 包管理器:使用YUM(Yellowdog Updater, Modified)来管理软件包。

RHEL是商业发行版,提供企业级的技术支持和服务,适合企业和关键任务环境。Red Hat的支持和认证使其在企业中广受欢迎。

6. CentOS

  • 描述:由社区维护,是一个基于RHEL源码的发行版,提供与RHEL兼容的功能,但不包含Red Hat的商标和专有软件。CentOS旨在提供一个免费的RHEL替代品,具有相同的稳定性和企业级特性。
  • 组成部分
    • Linux内核:使用RHEL的内核源码。
    • GNU程序库和工具:提供与RHEL兼容的系统工具和库。
    • 命令行shell:默认使用Bash。
    • 图形界面:支持多种桌面环境,如GNOME、KDE、Xfce等。
    • 包管理器:使用YUM或DNF来管理软件包。

:CentOS是Red Hat Enterprise Linux的社区版,提供企业级的稳定性和长生命周期支持,适合服务器和企业环境。

不同的发行版可能会有不同的目标用户群体和使用场景,例如Ubuntu适合桌面用户,RHEL适合企业环境,而Arch Linux则面向高级用户和开发者。

嵌入式系统的一般开发流程

[ 产品市场定位 ] -> [ 产品需求分析 ] -> [ 产品规范说明 ] -> [ 产品整体设计 ] -> [ 产品详细设计 ] -> [ 产品调试与验证 ] -> [ 产品检测 ] -> [ 产品定型 ]

嵌入式系统的一般开发流程有点复杂,原因在于嵌入式系统一般在设计时要分为硬件设计和软件设计,所以涉及的知识面较广。并且嵌入式系统的测试也比较复杂,除了常规的单元测试项目以外,还需要软硬件综合测试,在这个阶段测试工程师也需要比较高的技术水平。
嵌入式产品系统开发需要遵循一定的开发流程,一般从需求分析到总体设计再到最终的嵌入式产品,大致经历8个阶段。

  • 阶段1:产品市场定位

在产品市场定位阶段主要是考虑产品的消费群体和产品最终的技术状态。这有别于产品需求分析,这个阶段主要是从产品整体的定位上制定产品目标。

  • 阶段2:产品需求分析、市场调研

此阶段是在产品有了初步的市场定位、大致的产品功能以后进行的工作,主要是对人和物的分析。人指的是消费者群体,分析他们的喜好、习惯、经济接受能力等;物则是指产品,分析产品的功能类型、技术特点以及产品可行性等。

  • 阶段3:产品的规范说明

产品有了需求分析,就能确定产品的功能、外观、技术特点、可行性分析报告,这些都应以文档的形式规范下来,有利于研发工程师在产品开发过程中不偏离研发路线,或者忽略某些关键功能。这些规范和标准在产品开发过程中起着非常重要的作用,甚至是产品成败的关键。

  • 阶段4:产品的整体设计

产品整体设计阶段主要参与者就是产品经理和研发人员了,产品经理需要将产品整体功能和研发人员交流讨论,将产品的系统架构、平台选择、功能体系、功能框图等体系架构制定下来。根据研发的分工,硬件工程师负责硬件整体设计、软件工程师负责软件整体设计、产品经理统筹协调工作。

  • 阶段5:产品的详细设计

产品的详细设计阶段,根据产品上一阶段制定的总体方案,研发工程师负责细化体系架构,将整体功能分散细化,硬件工程师负责硬件功能的实现、软件工程师负责软件功能的实现。

  • 阶段6:产品的调试与验证

产品形成工程样机后,需要将样机交给测试人员测试,测试人员首先要制定测试计划和测试用例,在样机测试的过程中遇到测试问题要记录,在最终测试报告中要突出体现,防止类似问题再次发生。产品测试阶段,研发工程师需要配合测试人员对样机不断优化,如果需要,研发人员应该配合测试。

  • 阶段7:产品检测

到这个阶段,已经是产品定型了,需要对产品做一些认证、性能试验、功能可靠性试验。这个阶段是产品品质和可靠性检测最后一关,因此研发人员在做需求分析的时候,这个阶段的工作要提前考虑。

  • 阶段8:产品定型

产品定型阶段属于产品生产阶段的一部分工作,研发测试人员将相应的技术文件、测试文件、装配文件移交生产部门,生产部门先小批量试生产,最后量产。我们可以通过图1-31的流程图,来了解一下嵌入式系统的开发流程。嵌入式产品开发流程大体就是按照以上八个阶段开发。开发流程不是一成不变的,需要根据嵌入式产品的特点进行适当调整,但是总体开发流程不会差别太大。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/神奇cpp/article/detail/1003980
推荐阅读
相关标签
  

闽ICP备14008679号