本文主要讲述了嵌入式系统的组以及功能设计原理。同时,本文也会介绍嵌入式系统的基本情况、设计思想、组成部分和实时操作系统等特点,以及微内核、宏内核架构和嵌入式数据库等相关知识。

一、嵌入式系统概述

  • 嵌入式系统是以应用为中心、以计算机技术为基础,并将可配置与可裁剪的软、硬件集成于一体的专用计算机系统,需要满足应用对功能、可靠性、成本、体积和功耗等方面的严格要求。
  • 从计算机角度看,嵌入式系统是指嵌入各种设备及应用产品内部的计算机系统。它主要完成信号控制的功能,体积小、结构紧凑,可作为一个部件埋藏于所控制的装置中。
  • 一般嵌入式系统由嵌入式处理器、相关支撑硬件、嵌入式操作系统、支撑软件以及应用软件组成。

嵌入式系统软件组成架构
图1 嵌入式系统软件组成架构图
嵌入式系统由硬件层、抽象层、操作系统及相关软件、中间件及应用层构成。由于硬件支撑具有硬件无关性、易移植性等特点,并通过硬件抽象层和板级支撑包实现易移植的特性。

嵌入式系统初始化过程

片级初始化(芯片级)——>板级初始化——>系统级初始化

  • 片级初始化:主要完成微处理器的初始化,包括设置微处理器的核心寄存器和控制寄存器、微处理器的核心工作模式及其局部总线模式等。片级初始化把微处理器从上电时的默认状态逐步设置成系统所要求的工作状态。这是一个纯硬件的初始化过程。
  • 板级初始化: 通过正确地设置各种寄存器的内容来完成微处理器以外的其他硬件设备的初始化。例如,初始化LED显示设备、初始化定时器、设置中断控制寄存器、初始化串口通信、初始化内存控制器、建立内存空间的地址映射等。在此过程中,除了要设置各种硬件寄存器以外,还要设置某些软件的数据结构和参数。因此,这是一个同时包含有软件和硬件在内的初始化过程。
  • 加载内核(系统级初始化):操作系统和应用程序的映像从Flash存储器复制到系统的内存当中,然后跳转到系统内核的第一条指令处继续执行。

一般来说,大多数的设备驱动程序都会具备以下的一些基本功能:

  • 硬件启动:在开机上电或系统重启的时候,对硬件进行初始化。
  • 硬件关闭:将硬件设置为关机状态。
  • 硬件停用:暂停使用这个硬件,
  • 硬件启用:重新启用这个硬件。
  • 读操作:从硬件中读取数据。
  • 写操作:往硬件中写入数据。

嵌入式系统组成

一般嵌入式系统由嵌入式处理器相关支撑硬件嵌入式操作系统、以及应用软件组成。从传统意义上讲,嵌入式系统主要由以下部件组成:

  • 嵌入式微处理器(控制器(MCU))
  • 存储器(RAM/ROM)
  • 内(外)总线逻辑
  • 定时/计数器
  • 看门狗电路:定时器溢出则中断,系统复位处理。
  • I/0接口(串口、网络、USB、JTAG接口–用来进行CPU调试的常用接口)
  • 外部设备(UART、LED等)
  • 其他部件

二、嵌入式系统设计

嵌入式系统应具备以下特性:

  • 1. 专用性强。 嵌入式系统面向特定应用需求,能够把通用CPU 中许多由板卡完成的任务集成在芯片内部,从而有利于嵌入式系统的小型化。嵌入式系统将先进的计算机技术、通信技术、半导体技术和电子技术与各个行业的具体
  • 2. 技术融合。 应用相结合,是个技术密集、资金密集、高度分散、不断创新的知识集成系统。
  • 3. 软件一体软件为主。 软件是嵌入式系统的主体,有IP核。嵌入式系统的硬件和软件都可以高效地设计软硬,可以在同样的硅片面积上实现更高的性能。
  • 4. 比通用计算机资源少。由于嵌入式系统通常只完成少数几个任务。设计时考虑到其经济性,不能使用通用CPU,这就意味着管理的资源少,成本低,结构更简单。
  • 5. 程序代码固化在非易失存储器中。为了提高执行速度和系统可靠性,嵌入式系统中的软件一般都固化在存储器芯片或单片机本身中,而不是存在磁盘中。
  • 6. 需专门开发工具和环境。 嵌入式系统本身不具备开发能力,即使设计完成以后,用户通常也不能对其中的程序功能进行修改,必须有一套开发工具和环境才能进行开发。
  • 7. 体积小、价格低、工艺先进、性能价格比高、系统配置要求低、实时性强。
  • 8. 安全性和可靠性的要求高。

交叉开发环境

典型的交叉平台开发环境,包含三高度集成的部分:

  1. 运行在宿主机和目标机上的强有力的交又开发工具和实用程序
  2. 运行在目标机上的高性能、可裁剪的实时操作系统
  3. 连接宿主机和目标机的多种通信方式,例如,以太网、USB、串口等。
    嵌入式开发

交叉编译: 嵌入式软件开发所采用的编译为交叉编译。所谓交叉编译就是在个平台上生成可以在另一个平台上执行的代码。编译的最主要的工作就在将程序转化成运行该程序的CPU所能识别的机器代码,由于不同的体系结构有不同的指令系统。因此,不同的CPU需要有相应的编译器,而交又编译就如同翻译一样,把相同的程序代码翻译成不同CPU的对应可执行二进制文件。嵌入式系统的开发需要借助宿主机(通用计算机)来编译出目标机的可执行代码。

交叉调试: 嵌入式软件经过编译和链接后即进入调试阶段,调试是软件开发过程中必不可少的一个环节,嵌入式软件开发过程中的交叉调试与通用软件开发过程中的调试方式有很大的差别,在嵌入式软件开发中,调试时采用的是在宿主机和目标机之间进行的交叉调试,调试器仍然运行在宿主机的通用操作系统之上,但被调试的进程却是运行在基于特定硬件平台的嵌入式操作系统中,调试器和被调试进程通过串口或者网络进行通信,调试器可以控制、访问被调试进程,读取被调试进程的当前状态并能够改变被调试进程的运行状态。

◆ 嵌入式软件的开发可以分为几个阶段:编码、交叉编译、交叉调试。
JTAG (Joint Test Action Group,联合测试工作组)是一种国际标准测试协议(IEEE1149.1兼容),主要用于芯片内部测试调试
嵌入式软件设计层面的功耗控制主要可以从以下方面展开:

  • 软硬件协同设计,即软件的设计要与硬件的匹配,考虑硬件因素。
  • 编译优化,采用低功耗优化的编译技术。
  • 减少系统的持续运行时间,可从算法角度进行优化。
  • 用“中断”代替“查询”。
  • 进行电源的有效管理。

三、嵌入式硬件

嵌入式微处理器通常嵌入式处理器需要根据不同的使用场景选择不同类型的处理器,从处理器分类看,大致可分为MPU、MCU、DSP、GPU、SoC:
微处理器(MicroProcessorUnit,MPU): 将微处理器装配在专门设计的电路板上,只保留与嵌入式应用有关的母板功能。微处理器一般以某一种微处理内核为核心,每一种衍生产品的处理器内核都是一样的,不同的是存储器和外设的配置及封装。
微控制器(Micro ControlUnit,MCU): 又称单片机。与MPU相比MCU的最大优点在于单片化,体积大大减小,从而使功耗和成本下降,可靠性提高。
信号处理器(DigitalSignalProcessor,DSP): DSP 处理器对系统结构和指令进行了特殊设计(通常,DSP采用一种哈佛结构),使其适合于执行 DSP算法编译效率较高,指令执行速度也较高。

嵌入式微处理器

图形处理器(Graphics Processing Unit,GPU)

  • GPU 是图形处理单元的缩写,是一种可执行3D图形渲染等图像的半导体芯片(处理器)。
  • GPU 可用于个人电脑、工作站、游戏机和一些移动设备上做图像和图形相关运算工作的微处理器,即并行处理的矩阵等向量相关运算,而CPU适用于标量运算。
  • 它可减少对 CPU的依赖,并执行部分原本属于CPU的工作,尤其是在3D图形处理中,GPU 采用了核心技术(如:硬件T&L、纹理压缩等)保证了3D快速渲染的能力。
  • GPU目前已广泛应用于各行各业,GPU中集成了同时运行在GHz的频率上的成千上万个core,可以高速处理图像数据。最新的GPU峰值性能可高达100 TFlops以上

片上系统(System on Chip,Soc)

  • 追求产品系统最大包容的集成器件。
  • 它是一个产品,是一个有专用目标集成电路,其中包含完整系统并有嵌入软件的全部内容。
  • 同时它又是一种技术,用以实现从确定系统功能开始,到软/硬件划分,并完成设计的整个过程。
  • 成功实现了软硬件的无缝结合,直接在微处理器片内嵌入操作系统的代码模块。
  • 减小了系统的体积和功耗、提高了可靠性和设计生产效率。
  • 狭义角度:信息系统核心的芯片集成,是将系统关键部件集成在一块芯片上;
  • 广义角度:SoC是一个微小型系统,如果说中央处理器(CPU)是大脑,那么SoC就是包括大脑、心脏、眼睛和手的系统。
  • 国内外学术界一般倾向将SoC定义为将微处理器、模拟IP核、数字IP核和存储器(或片外存储控制接口)集成在单一芯片上,它通常是客户定制的,或是面向特定用途的标准产品

嵌入式微处理器体系结构

微处理器分类:

  • 根据嵌入式微处理器的字长宽度,可分为4位、8位、16 位、32 位和64 位。一般把16 位及以下的称为嵌入式微控制器(Embedded Micro Controller);32 位及以上的称为嵌入式微处理器
  • 如果按系统集成度划分,可分为两类:一种是微处理器内部仅包含单纯的中央处理器单元,称为一般用途型微处理器;另一种则是将CPU、ROM、RAM及1/0 等部件集成到同一个芯片上,称为单芯片微控制器(Single chipMicrocontroller)。
  • 如果根据用途分类,一般分为嵌入式微控制器MCU、嵌入式微处理器MPU、嵌入式数字信号处理器DSP、嵌入式片上系统SOC等。

嵌入式数字信号处理器DSP:是专门用于信号处理方面的处理器,其在系统结构和指令算法方面进行了特殊设计,具有很高的编译效率和指令的执行速度。采用哈佛结构,流水线处理,其处理速度比最快的CPU还快10-50倍。在数字滤波、FFT、谱分析等各种仪器上DSP获得了大规模的应用。
嵌入式片上系统S0C:是追求产品系统最大包容的集成器件。SOC最大的特点是成功实现了软硬件无缝结合,直接在处理器片内嵌入操作系统的代码模块,是一个有专用目标的集成电路,其中包含完整系统并有嵌入软件的全部内容。

多核指多个微处理器内核,是将两个或更多的微处理器封装在一起,集成在一个电路中。多核处理器是单枚芯片,能够直接插入单一的处理器插槽中。多核与多CPU相比,很好地降低了计算机系统的功耗和体积。在多核技术中,由操作系统软件进行调度,多进程,多线程并发都可以。
2个或多个内核工作协调实现方式
对称多处理技术SMP:将2颗完全一样的处理器封装在一个芯片内,达到双倍或接近双倍的处理性能,节省运算资源。
非对称处理技术AMP:2个处理内核彼此不同,各自处理和执行特定的功能,在软件的协调下分担不同的计算任务。

AI芯片

人工智能(ArtificialIntelligence,Al)芯片的定义:从广义上讲只要能够运行人工智能算法的芯片都叫作“AI芯片”。但是通常意义上的AI芯片指的是针对人工智能算法做了特殊加速设计的芯片。现阶段,这些人工智能算法一般以深度学习算法为主,也可以包括其他机器学习算法。
人工智能芯片四大类(按技术架构分类):

  • GPU
  • FPGA(现场可编程门阵列)
  • ASIC(专用集成电路)
  • 类脑芯片

AI芯片的关键特征:
新型的计算范式:AI计算既不脱离传统计算,也具有新的计算特质。
训练和推断:AI系统通常涉及训练和推断过程。
大数据处理能力:满足高效能机器学习的数据处理要求。
数据精度降低精度的设计。
可重构的能力针对特定领域而不针对特定应用的设计,可以通过重新配置,适应新的AI算法、架构和任务。
开发工具:AI芯片需要软件工具链的支持

嵌入式微处理器体系结构

嵌入式微处理器体系结构
图示 嵌入式微处理器体系结构
冯诺依曼结构:
传统计算机采用冯·诺依曼(Von Neumann)结构,也称“普林斯顿结构”,是一种将程序指令存储器数据存储器合并在一起的存储器结构。
冯诺依曼结构

  • 冯·诺依曼结构的计算机程序和数据共用一个存储空间,程序指令存储地址和数据存储地址指向同一个存储器的不同物理位置。
  • 采用单一的地址及数据总线,程序指令和数据的宽度相同。
  • 处理器执行指令时,先从储存器中取出指令解码,再取操作数执行运算,即使单条指令也要耗费儿个甚至几十个周期,在高速运算时,在传输通道上会出现瓶颈效应。

哈佛结构
哈佛结构是一种并行体系结构,它的主要特点是将程序和数据存储在不司的存储空间中,即程序存储器和数据存储器是两个相互独立的存储器每个存储器独立编址、独立访问。
哈佛结构

  • 与两个存储器相对应的是系统中的两套独立的地址总线和数据总线。
  • 这种分离的程序总线和数据总线可允许在一个机器周期内同时获取指令字(来自程序存储器)和操作数(来自数据存储器),从而提高了执行速度,使数据的吞吐率提高了1倍。

总线

基本概念:
总线是一组能为多个部件分时共享的信息传送线,用来连接多个部件并为之提供信息交换通路。【总线通常是半双工的】
总线类型分为:全双工、单工、半双工。其中,半双工表示只有一个设备发送信息,可以有多台设备接受信息。
特点:

  • 挂接在总线上的多个部件只能分时向总线发送数据,但可同时从总线接收数据。

  • 通过总线复用方式可以减少总线中信号线的数量,以较少的信号线传输更多的信息。

  • 总线通常分为以下几类:

    • 芯片内总线。用于集成电路芯片内部各部分的连接元件级总线。用于一块电路板内各元器件的连接。同时,从行业角度解释为:CPU内部部件连接线即为芯片内总线
    • 系统总线,又称内总线。用于计算机各组成部分(CPU、内存和接口等)的连接。
    • 外总线,又称通信总线。用于计算机与外设或计算机与计算机之间的连接或通信。
  • 功能上将总线划分为数据总线地址总线控制总线

  • 数据传输的方式将总线划分为并行总线串行总线

    • 并行总线:将数据字节的各位用多条数据线同时进行传送。【距离】
    • 串行总线:数据是一位一位地进行传输的,在传输中每一位数据都占据一个固定的时间长度。【距离,传输波特率可调整,正确性依赖于校验码,数据传输方式可以使用多种】

四、嵌入式操作系统

嵌入式操作系统的定义及特点:
嵌入式操作系统(EmbeddedOperatingSystem,EOS)是指用于嵌入式系统的操作系统。嵌入式操作系统是一种用途广泛的系统软件,负责嵌入式系统的全部软、硬件资源分配、任务调度、控制、协调并行活动等工作。通常包括与硬件相关的底层驱动软件、系统内核、设备驱动接口、通信协议、图形界面、标准化浏览器等。
根据系统对时间的敏感程度可将嵌入式系统划分为:

  • 嵌入式非实时系统
  • 嵌入式实时系统:能够在指定或者确定的时间内完成系统功能和外部或内部同步或异步时间做出响应的系统。

嵌入式实时操作系统

嵌入式实时系统是一种完全嵌入受控器件内部,为特定应用而设计的专用计算机系统。在嵌入式实时系统中,要求系统在投入运行前即具有确定性和可预测性。
◆ 可预测性: 是指系统在运行之前,其功能、响应特性和执行结果是可预测的;
◆ 确定性: 是指系统在给定的初始状态和输入条件下,在确定的时间内给出确定的结果。
嵌入式实时操作系统兼具嵌入式操作系统的特点和实时操作系统的特点。
嵌入式操作系统主要有以下特点

  • (1) 微型化
  • (2) 代码质量高
  • (3) 专业化
  • (4) 实时性强
  • (5) 可裁减、可配置。

实时操作系统有硬实时和软实时之分,硬实时要求在规定的时间内必须完成操作,这是在操作系统设计时保证的;软实时则只要按照任务的优先级,尽可能快地完成操作即可。实时操作系统的特征

  • (1) 高精度计时系统
  • (2) 多级中断机制
  • (3) 实时调度机制

实时操作系统的最核心特点实时性强高可靠性
嵌入式实时操作系统实时性的评价指标

  • (1) 中断响应和延迟时间
  • (2) 任务切换时间
  • (3) 信号量混洗时间

嵌入式实时操作系统调度算法:

  • 优先级调度算法:系统为每个任务分配一个相对固定的优先顺序。
  • 抢占式优先级调度算法:根据任务的紧急程度确定该任务的优先级。大多数RTOS调度算法都是抢占方式(可剥夺方式)。
  • 最早截止期调度算法(EDF算法):根据任务的截止时间头端来确定其优先级,对于时间期限最近的任务,分配最高的优先级。
  • 最晚截止期调度算法:根据任务的截止时间末端来确定其优先级,对于时间期限最近的任务,分配最高的优先级。【目前除真题无相关资料支持这类说法】

操作系统内核架构

内核是操作系统的核心部分,它管理着系统的各种资源。内核可以看成连接应用程序和硬件的座桥梁,是直接运行在硬件上的最基础的软件实体。目前从内核架构来划分,可分为宏内核(MonolithicKernel)和微内核(MicroKernel)。
内核架构对比
操作系统内核架构:
操作系统内核架构
鸿蒙(HarmonyOs)整体采用分层的层次化设计,从下向上依次为: 内核层、系统服务层、框架层和应用层。系统功能按照“系统”-“子系统”-“功能/模块”逐级展开,在多设备部署场景下,支持根据实际需求裁剪某些非必要的子系统或功能/模块,如下图所示。
鸿蒙操作系统架构
鸿蒙(HarmonyOs)操作系统架构具有4个技术特性

  • 分布式架构首次用于终端 OS,实现跨终端无缝协同体验
    Harmony Os的“分布式OS 架构”具有分布式软总线、分布式数据管理、分布式任务调度和虚拟外设等4大能力,将相应分布式应用的底层技术实现难点对应用开发者屏蔽,使开发者能够聚焦自身业务逻辑,像开发同一终端一样开发跨终端分布式应用,也使最终消费者享受到强大的跨终端业务协同能力为各使用场景带来的无缝体验。
  • 确定时延引擎和高性能IPC 技术实现系统天生流畅
    时延引擎可在任务执行前分配系统中的任务执行优先级和时限,优先保障高优先级任务的调度,从而降低应用响应时延25.7%。鸿蒙微内核的小巧特性显著提高了IPC(进程间通信)性能,使进程通信效率比现有系统提升了5倍。
  • 基于微内核架构重塑终端设备可信安全
    Harmony 0S采用全新的微内核设计,拥有更强的安全特性和低时延等特点。
    Harmony0S架构的系统安全性主要体现在搭载HarmonyO的分布式终端上,可以保证“正确的人,通过正确的设备,正确地使用数据”。这里通过“分布式多端协同身份认证”来保证“正确的人”,通过“在分布式终端上构筑可信运行环境”来保证“正确的设备”,通过“分布式数据在跨终端流动的过程中,对数据进行分类分级管理”来保证“正确地使用数据”。
  • 通过统一IDE支撑一次开发,多端部署,实现跨终端生态共享。

嵌入式软件

嵌入式软件是指应用在嵌入式计算机系统当中的各种软件,除了具有通用软件的一般特性,还具有一些与嵌入式系统相关的特点,包括:规模较小、开发难度大、实时性和可靠性要求高、要求固化存储。
嵌入式软件分类
◆系统软件:控制和管理嵌入式系统资源,为嵌入式应用提供支持的各种软件,如设备驱动程序、嵌入式操作系统、嵌入式中间件等。
◆应用软件:嵌入式系统中的上层软件,定义了嵌入式设备的主要功能和用途,并负责与用户交互,一般面向特定的应用领域,如飞行控制软件、手机软件地图等。
◆支撑软件:辅助软件开发的工具软件,如系统分析设计工具、在线仿真工具、交叉编译器等。

板级支持包(BSP):是介于主板硬件和操作系统中驱动层程序之间的一层,一般认为它属于操作系统一部分,主要是实现对操作系统的支持,为上层的驱动程序提供访问硬件设备寄存器的函数包,使之能够更好的运行于硬件主板。
具体功能包括:

  1. 单板硬件初始化,主要是CPU的初始化,为整个软件系统提供底层硬件支持
  2. 为操作系统提供设备驱动程序和系统中断服务程序
  3. 定制操作系统的功能,为软件系统提供一个实时多任务的运行环境
  4. 初始化操作系统,为操作系统的正常运行做好准备。

主要具有以下两个特点
硬件相关性,因为嵌入式实时系统的硬件环境具有应用相关性,而作为上层软件与硬件平台之间的接口,BSP需为操作系统提供操作和控制具体硬件的方法。
操作系统相关性,不同的操作系统具有各自的软件层次结构,因此不同操作系统具有特定的硬件接口形式。
一般来说,BSP主要包括两个方面的内容:引导加载程序BootLoader和设备驱动程序。

五、嵌入式数据库(EDBMS)

使用环境的特点:

  • 设备随时移动性
  • 网络频繁断接
  • 网络条件多样化
  • 通信能力不对称

系统组成
一个完整的EDBMS由若干子系统组成,包括主数据库同步服务器嵌入式数据库连接网络等几个子系统:
嵌入式移动数据库在实际应用中必须解决好数据的一致性(复制性)高效的事务处理和数据的安全性等关键问题。
嵌入式数据库系统组成

与传统数据库相比,嵌入式数据库系统有以下几个主要特点

  • 嵌入式
  • 实时性
  • 移动性
  • 伸缩性

嵌入式数据库分类

按照数据库存储位置的不同而进行分类是目前广泛采用的分类方法,它可以划分为三类:

  • 基于内存方式(Main Memory Database System,MMDB)
  • 基于文件方式(File Database,FDB)
  • 基于网络方式(Netware Database,NDB)

嵌入式数据库分类
嵌入式网络数据库

  • 实际上,嵌入式网络数据库是把功能强大的远程数据库映射到本地数据库,使嵌入式设备访问远程数据库就像访问本地数据库一样方便。
  • 嵌入式网络数据库主要由三部分组成:客户端通信协议远程服务器。客户端主要负责提供接口给嵌入式程序,通信协议负责规范客户端与远程服务器之间的通信,还需要解决多客户端的并发问题,远程服务器负责维护服务器上的数据库数据。
  • 这里要说明的是,由嵌入式网络数据库嵌入式本地数据库(内存或文件)和嵌入式Web服务器等构成了综合的嵌入式综合信息系统
Logo

技术共进,成长同行——讯飞AI开发者社区

更多推荐