嵌入式系统

嵌入式系统

1 嵌入式系统概述

1.1 概念

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

1.2 组成架构

其中,因为嵌入式系统要面向硬件开发,所以多了一层抽象层,由 硬件抽象HAL板级支撑包BSP构成,使得应用程序的开发可以脱离硬件,实现了解耦,提高了硬件无关性和可移植性

系统初始化过程

片级初始化 -> 板级初始化 -> 系统级初始化

从传统意义上来看,嵌入式系统由以下部件组成

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

2 嵌入式软件开发

与传统软件开发有较大差异

  • 嵌入式软件开发是在宿主机(PC机或工作站)上使用专门的嵌入式工具开发,生成二
    进制代码后,需要使用工具卸载到目标机或固化在目标机储存器上运行。
  • 嵌入式软件开发时更强调软/硬件协同工作的效率和稳定性。
  • 嵌入式软件开发的结果通常需要固化在目标系统的储存器或处理器内部储存器资源中。 !
  • 嵌入式软件的开发一般需要专门的开发工具、目标系统和测试设备。 !
  • 嵌入式软件对实时性的要求更高。
  • 嵌入式软件对安全性和可靠性的要求较高。 !
  • 嵌入式软件开发是要充分考虑代码规模。 !
  • 在安全攸关系统中的嵌入式软件,其开发还应满足某些领域对设计和代码审定。
  • 模块化设计即将一个较大的程序按功能划分成若干程序模块,每个模块实现特定的功能。

软件层面的功耗控制

  • 软硬件协同设计,即软件设计要考虑硬件因素
  • 编译优化,采用低功耗的编译计数
  • 算法优化,减少系统持续运行时间
  • 用中断代替查询
  • 使用有效的电源管理

3 嵌入式硬件

嵌入式系统大致的5个阶段

  1. 单片微型计算机SCM,即单片机
  2. 微控制器MCU
  3. 片上系统SOC
  4. 以Internet为基础的嵌入式系统
  5. 在智能化、云技术推动下的嵌入式系统

3.1 嵌入式微处理器

  • 微处理器MPU:将微处理器装配在专门设计的电路板上
  • 微控制器MCU:单片机,与MPU相比优点在于单片化、体积减小、功耗和成本降低、可靠性提高
  • 信号处理器DSP: 哈佛结构,对系统结构和指令进行了特殊设计,使其适合于执行DSP算法,编译效率较高,指令执行效率也较高

3.2 图形处理器

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

3.3 片上系统

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

3.4 人工智能芯片

从广义上讲只要能够运行人工智能算法的芯片都叫作AI芯片。但是通常意义上的AI芯片指的是针对人工智能算法做了特殊加速设计的芯片,现阶段,这些人工智能算法一般以深度学习算法为主,也可以包括其他机器学习算法。

按技术架构分类

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

关键特征

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

3.5 嵌入式微处理器体系结构

体系结构分类 定义 特点 典型应用
冯·诺依曼结构 将程序指令存储器和数据存储器合并在一起的存储器结构 - 指令与数据存储器合并
- 通过相同数据总线传输
PC处理器(如I3/I5/I7)
注:常规计算机属于此结构
哈佛结构 将程序和数据存储在不同存储空间,程序存储器和数据存储器独立编址、访问 - 指令与数据分开存储,可并行读取
- 4条总线(指令/数据的地址+数据总线)
嵌入式系统处理器
注:DSP属于此结构

3.6 总线

总线是一组能为多个部件分时共享*的信息传送线,用来链接多个部件并为之提供信息交换同路,通常是半双工

  • 挂接在总线上的多个部件只能分时向总线发送数据,但可以同时从总线接收数据
  • 通过总线复用的方式,可以减少总线中信号线的数量,以较少的信号线传输更多的信息

通常分为

  • 芯片内总线,用于集成电路芯片
  • 内总线,也叫系统总线,用于计算机内部各个部分的连接
  • 外总线,也叫通信总线,用于计算机和外设、计算机和计算机之间的连接

从功能上划分为

  • 数据总线
  • 地址总线
  • 控制总线
    从数据传输方式上分为
  • 并行总线(短距离)
  • 串行总线(长距离、传输波特率可调整、正确性依赖于校验码、数据传输方式可以使用多种)

4 嵌入式操作系统

嵌入式操作系统(Embedded Operating System,EOS)是指用于嵌入式系统的操作系统。嵌入式操作系统是一种用途广泛的系统软件,负责嵌入式系统的全部软、硬件资源分配、任务调度、控制、协调并行活动等工作。通常包括与硬件相关的底层驱动软件、系统内核、设备驱动接口、通信协议、图形界面、标准化浏览器等。

按时间敏感程度分为

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

4.1 嵌入式实时操作系统

同时具备实时操作系统和嵌入式操作系统的特点
嵌入式操作系统特点

  • 微型化
  • 代码质量高
  • 专业化
  • 实施性强
  • 可裁剪可配置
    实时操作系统的特点
  • 实时性强

实时性评价指标

  • 中断响应和延迟时间
  • 任务切换时间
  • 信号量混洗时间

系统调度算法

  • 优先级调度算法,按照一个相对固定的顺序
  • 抢占式优先级调度算法,根据任务紧急程度确定优先级
  • 最早截止期调度算法EDF,根据截止期的头端(起始时间)确定优先级
  • 最晚截止期调度算法,根据截止期的末端确定优先级

4.2 内核架构

内核是操作系统的核心部分,它管理着系统的各种资源。内核可以看成连接应用程序和硬件的 一座桥梁,是直接运行在硬件上的最基础的软件实体。
目前从内核架构来划分,可分为

  • 宏内核(Monolithic Kernel)
  • 微内核(Micro Kernel)。
类型 实质 优点 缺点
单体内核 将图形、设备驱动及文件系统等功能全部在内核中实现,运行在内核状态和同一地址空间 - 减少进程间通信和状态切换的系统开销
- 运行效率较高
- 内核庞大,占用资源多且不易剪裁
- 稳定性和安全性较差
微内核
(鸿蒙)
仅实现基本功能,图形/文件系统/驱动等放在内核外部 - 系统结构清晰有利于协作开发
- 内核精练,便于剪裁和移植(灵活性/可扩展性)
- 服务程序运行在用户空间,可靠性/稳定性/安全性高
- 支持分布式系统
- 需频繁切换用户/内核状态
- 性能低于单体内核

5 嵌入式数据库

数据库类型 定义 特点
基于内存的数据库 MMDB 实时系统和数据库系统的有机结合 - 支持实时事务
- 主拷贝工作版本常驻内存(活动事务仅与内存拷贝交互)
基于文件的数据库 FDB 以文件方式存储数据(按特定格式储存在磁盘中),应用程序通过驱动程序或直接读写文件 - 被动式访问(任何程序可读取,安全性低
- 满足嵌入式系统在空间、时间等特殊要求
基于网络的数据库 NDB 基于手机4G/5G移动通信,嵌入式设备作为远程服务器的客户端 - 无需解析SQL语句
- 支持更多SQL操作
- 客户端小、可剪裁性强,利于代码重用

关于嵌入式网络数据库:

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