软件架构师-第五章 嵌入式系统
嵌入式系统⭐⭐
嵌入式系统概述⭐
嵌入式系统概述
- 定义:嵌入式系统是以应用为核心,基于计算机技术,将可灵活配置和裁剪的软件、硬件集成在一起的专用计算机系统。它要在功能、可靠性、成本、体积和功耗等方面满足严格要求,比如智能家居设备,既要保证实现控制功能,又要考虑成本和功耗。
- 从计算机角度理解:嵌入式系统是嵌入到各种设备和应用产品内部的计算机系统,主要用于信号控制,具有体积小、结构紧凑的特点,常作为一个部件隐藏在所控制的装置中,像汽车的电子控制系统就是典型的嵌入式系统。
- 组成部分:一般由嵌入式处理器(如单片机)、相关支撑硬件(像传感器、存储器等)、嵌入式操作系统(例如 Linux 的嵌入式版本)、支撑软件以及应用软件组成,各部分协同工作,实现系统的特定功能。
嵌入式系统软件组成架构及初始化过程:
- 软件组成架构:
- 硬件层:包含 A/D(模拟 / 数字转换)、D/A(数字 / 模拟转换)、I/O(输入 / 输出)设备、微嵌入式处理器、通用接口、ROM(只读存储器)和 SDRAM(同步动态随机存储器)等人机交互接口硬件,是系统运行的物理基础。
- 抽象层:有硬件抽象(HAL)和板级支持包(BSP),通过对硬件进行抽象,使上层软件不依赖于具体硬件,易于移植。
- 操作系统层:基于嵌入式(实时)操作系统(E (RT) OS),涵盖任务管理、存储管理、通信管理、时间管理等基本功能模块,还包括文件系统、图形用户接口等可配置组件。
- 中间件层:包含 DDS/CORBA、Hadoop 等分布式计算和大数据处理相关技术,以及数据库(DB)、OpenGL、JAVA、虚拟机等,为上层应用提供通用服务。
- 应用层:面向工业控制、军事、物联网、移动设备等不同领域的应用。
- 初始化过程:依次为
- 片级初始化(对芯片内部资源初始化)
- 板级初始化(初始化板上硬件设备)
- 系统级初始化(加载和初始化操作系统及应用程序) 。
嵌入式系统的组成部件
- 嵌入式微处理器(MCU):是嵌入式系统的核心,负责执行程序和处理数据,如同系统的 “大脑” 。
- 存储器(RAM/ROM):随机存取存储器(RAM)用于临时存储运行中的数据和程序;只读存储器(ROM)则用于存储固定的程序和数据,如系统启动代码。
- 内(外)总线逻辑:内部总线用于连接嵌入式系统内部的各个部件,实现数据、地址和控制信号的传输;外部总线用于与外部设备进行通信和数据交换。
- 定时 / 计数器:用于实现定时和计数功能,比如控制某个操作在特定时间执行,或统计事件发生的次数。
- 看门狗电路:起到监控系统运行状态的作用。如果定时器溢出,说明系统可能出现了故障或死机,此时会触发中断,使系统进行复位处理,恢复正常运行。
- I/O 接口:包括串口(用于串行通信)、网络接口(实现网络连接)、USB 接口(用于连接外部设备)、JTAG 接口(常用于 CPU 调试,方便对芯片内部进行访问和测试) 。
- 外部设备:如通用异步收发传输器(UART,用于异步串行通信)、发光二极管(LED,可用于指示系统状态等) 。
- 其他部件:除上述列举的主要部件外,嵌入式系统还可能包含其他各种部件,以满足不同的应用需求。
嵌入式软件开发⭐
嵌入式软件开发与传统软件开发的差异
- 开发环境与运行方式:嵌入式软件开发需在宿主机(如 PC 机或工作站)上利用专门的嵌入式工具进行,生成二进制代码后,再卸载到目标机上,或固化在目标机的存储器中运行。
- 协同工作要求:更注重软件与硬件协同工作的效率和稳定性,因为嵌入式系统中软硬件紧密结合,二者协同效果直接影响系统性能。
- 结果存储:开发成果通常要固化在目标系统的存储器或处理器内部存储资源中,以保证系统运行时软件的可用性和稳定性。
- 开发资源需求:一般需要专门的开发工具、目标系统和测试设备,这些工具和设备针对嵌入式系统的特点设计,与传统软件开发不同。
- 性能要求:对实时性、安全性和可靠性要求更高,比如在汽车电子、航空航天等领域的嵌入式软件,需及时响应并确保准确无误。
- 代码规模:开发时要充分考虑代码规模,因为嵌入式系统的存储资源和计算资源有限,需优化代码以减少资源占用。
- 特殊要求:在安全攸关系统中的嵌入式软件,开发还需满足特定领域的设计和代码审定要求,以确保系统安全可靠。
- 设计方法:采用模块化设计,将大程序按功能划分成多个模块,每个模块实现特定功能,便于开发、维护和调试。
嵌入式软件开发工具
- 交叉编译器:在宿主机上把高级语言编写的嵌入式软件源代码编译成目标机可执行的二进制代码。
- 交叉链接器:将多个目标文件和库文件链接成一个可执行文件,适应目标机的运行环境。
- 调试器:用于在开发过程中查找和修复软件中的错误。
- 动态装载器:可以在程序运行时动态加载所需的模块或库。
- 链接装载器:负责将链接后的可执行文件装载到目标机的内存中。
- 调试监视器:监控目标机上软件的运行状态,提供调试信息。
- 调试代理:作为宿主机调试器和目标机之间的桥梁,协助调试过程。
开发环境架构
宿主机系统和目标机系统通过仿真器和以太网连接。宿主机运行驻留软件,利用各种开发工具生成目标代码(如 COFF、ELF 格式)和调试信息,通过仿真器传输到目标机。目标机也运行驻留软件,接收并运行目标代码。
JTAG 协议
JTAG(联合测试工作组)是一种国际标准测试协议(兼容 IEEE 1149.1 ),主要用于芯片内部测试和调试,可对嵌入式芯片进行边界扫描测试、程序下载和调试等操作 。
嵌入式软件设计层面的功耗控制方法
- 软硬件协同设计:强调软件设计要与硬件相匹配,充分考虑硬件特性和限制,例如根据硬件的处理能力、存储容量等,合理安排软件的功能模块和运行逻辑,避免软件对硬件资源的过度占用,从而降低功耗。
- 编译优化:采用低功耗优化的编译技术,在编译过程中对代码进行优化处理,生成更高效的机器码,减少运行时的能耗。比如通过优化指令集的使用、减少内存访问次数等方式,降低系统整体功耗。
- 减少系统持续运行时间:从算法角度进行优化,设计更高效的算法,缩短程序执行时间,进而减少系统持续运行所消耗的电量。例如,采用更优的排序算法,能在更短时间内完成数据排序任务,降低功耗。
- 用 “中断” 代替 “查询”:“查询” 方式下,CPU 需要不断主动检查设备状态,消耗较多资源和电量;而 “中断” 方式是设备准备好时主动向 CPU 发送信号,CPU 再进行处理,这种方式可减少 CPU 的无效等待时间,降低功耗。
- 进行电源的有效管理:合理规划电源的供应和分配,例如对暂时不使用的硬件模块进行电源关闭或进入低功耗模式,对不同功耗需求的组件进行差异化供电管理等,以实现整体功耗的降低。
嵌入式硬件⭐⭐
嵌入系统的发展历程,将其大致分为五个阶段:
- 第一阶段:单片微型计算机(SCM)阶段:也就是单片机时代,此时的嵌入式系统以单片机为核心,单片机内部集成了 CPU、存储器、I/O 接口等基本部件,可独立完成一些简单的控制任务,常用于早期的工业控制、智能仪表等领域。
- 第二阶段:微控制器(MCU)阶段:在单片机的基础上进行了功能扩展和优化,集成了更多的外设和功能模块,如定时器、串口、A/D 转换器等,增强了系统的控制能力和应用范围,广泛应用于各类电子产品中。
- 第三阶段:片上系统(SoC) :将整个计算机系统的大部分功能集成在一个芯片上,包括 CPU、存储器、各种外设接口等,具有更高的集成度、更低的功耗和更小的体积,极大地提高了系统的性能和可靠性,在消费电子、通信等领域得到大量应用。
- 第四阶段:以 Internet 为基础的嵌入式系统 :随着互联网技术的发展,嵌入式系统与互联网相结合,具备了网络通信能力,实现了设备之间的数据传输和远程控制,推动了智能家居、工业物联网等领域的发展。
- 第五阶段:在智能化、云技术推动下的嵌入式系统 :借助人工智能、云计算等新兴技术,嵌入式系统具备了更强大的数据分析、处理和决策能力,实现智能化的功能,广泛应用于智能交通、智能医疗等前沿领域。
嵌入式微处理器分类:
- 微处理器(MPU):把微处理器装配在专门设计的电路板上,仅保留与嵌入式应用相关的母板功能。其以某种微处理内核为核心,不同衍生产品的处理器内核相同,差异在于存储器和外设的配置及封装方式。比如在一些对性能要求较高的工业控制终端中,可能会用到 MPU。
- 微控制器(MCU):也就是单片机。相较于 MPU,MCU 最大的优势是单片化,这使得其体积大幅减小,进而降低了功耗和成本,同时提高了可靠性。像常见的智能小家电、玩具等产品中,常常会使用 MCU 来实现简单的控制功能。
- 信号处理器(DSP) :DSP 对系统结构和指令进行了特殊设计,通常采用哈佛结构。这种结构使它适合执行 DSP 算法,具有编译效率高、指令执行速度快的特点,常用于音频、视频信号处理,以及通信领域中的数字信号处理任务 。
嵌入式硬件中的图形处理器(GPU)
- 基本定义:GPU 是图形处理单元的英文缩写,本质上是一种半导体芯片(处理器),能够执行 3D 图形渲染等图像处理任务。
- 应用领域:广泛应用于个人电脑、工作站、游戏机以及部分移动设备,主要负责处理图像和图形相关的运算工作 ,比如在游戏中渲染逼真的 3D 场景和角色模型。
- 性能优势 :可以减少设备对 CPU 的依赖,分担原本由 CPU 承担的部分工作。特别是在 3D 图形处理方面,通过硬件 T&L(几何转换与光照处理)、纹理压缩等核心技术,具备快速的 3D 渲染能力。
- 发展现状 :如今 GPU 已在众多行业广泛使用,它集成了数以千计能在 GHz 频率下同时运行的核心,能够高速处理图像数据。最新的 GPU 峰值性能可达 100 TFLOps(每秒万亿次浮点运算)以上,展现出强大的运算能力。
片上系统(SoC,System on Chip)解析:
- 基础定义:SoC 是追求系统高度集成的器件,既是具有专用目标的集成电路(包含完整系统及嵌入软件),也是一种技术,涵盖从系统功能确定、软硬件划分到设计实现的全流程。
- 核心特点:
- 软硬件无缝结合:直接在微处理器芯片内嵌入操作系统代码模块,实现高效协同。
- 集成优势:通过集成化设计,减小系统体积与功耗,提升可靠性和生产设计效率。
- 定义延伸:
- 狭义:聚焦信息系统核心芯片集成,将关键部件整合于单块芯片。
- 广义:视 SoC 为微型系统,不仅包含 CPU(类比 “大脑”),还集成如心脏、眼睛、手等功能模块(即多类功能组件)。
- 行业共识:国内外普遍认为 SoC 是将微处理器、模拟 / 数字 IP 核、存储器(或片外存储控制接口)集成于单一芯片的产品,具有定制化或面向特定用途的标准化特征。
人工智能芯片
- 定义:
- 广义:能运行人工智能算法的芯片均称为 AI 芯片。
- 通常意义:特指针对人工智能算法(现阶段以深度学习算法为主,也包含其他机器学习算法)做特殊加速设计的芯片。
- 技术架构分类:
- GPU:图形处理器,常用于人工智能计算加速。
- FPGA(现场可编程门阵列):具有可编程特性,灵活适配多种 AI 算法。
- ASIC(专用集成电路):为特定 AI 应用定制设计,性能高效专用。
- 类脑芯片:模仿人脑神经结构设计,实现类脑智能计算。
AI 芯片的关键特征
- 新型的计算范式:AI 计算既基于传统计算,又具备区别于传统计算的新特质,形成独特的计算模式。
- 训练和推断:AI 系统运行通常包含 “训练”(模型学习过程)与 “推断”(模型应用过程)两个核心环节。
- 大数据处理能力:需满足高效能机器学习对海量数据的处理需求,确保数据处理的效率与性能。
- 数据精度:采用降低精度的设计,在保证 AI 任务执行效果的同时,优化计算资源消耗。
- 可重构的能力:针对特定领域(如 AI 通用场景)设计,而非局限于某一特定应用,通过重新配置,适配新的 AI 算法、架构及任务。
- 开发工具:依赖 “软件工具链” 支持,包括编译、调试、优化等工具,以实现芯片与 AI 软件的协同开发。
[!NOTE]
如果考试说4种的关键特征:新型的计算范式,训练和推断,大数据处理能力,可重构的能力
嵌入式微处理器的两种体系结构
- 冯・诺依曼结构
- 定义:将程序指令存储器和数据存储器合并,也称普林斯顿结构。
- 特点:指令与数据存储合并,通过相同数据总线传输。
- 典型应用:常见于 PC 处理器(如 i3、i5、i7),常规计算机多采用该结构。
- 哈佛结构
- 定义:并行体系结构,程序和数据存储在不同空间,程序存储器与数据存储器独立编址、独立访问。
- 特点:指令与数据分开存储,可并行读取,数据吞吐率高,配备 4 条总线(指令数据总线、地址总线,数据数据总线、地址总线)。
- 典型应用:多用于嵌入式系统处理器,如 DSP(数字信号处理器)属于哈佛结构。
总线
基本概念
总线是一组能为多个部件 分时共享 的信息传送线,用于连接多个部件并提供信息交换通路。其特性通常为 半双工(同一时刻只能单向传输)。
特点
- 数据传输规则:挂接在总线上的多个部件,只能 分时向总线发送数据,但可 同时从总线接收数据。
- 总线复用优势:通过总线复用技术,减少总线中信号线数量,实现用更少信号线传输更多信息。
总线分类
-
按功能划分:
- 数据总线:传输数据信息。
- 地址总线:传输地址信息,定位存储单元或设备。
- 控制总线:传输控制信号(如读写指令、时钟信号等)。
-
按数据传输方式划分:
- 并行总线:
- 多个数据位同时传输,速度快但布线复杂。
- 短距离传输
- 利用多线并行提升数据传输速度
- 但布线复杂度随数据线数量增加。
- 串行总线:
- 数据位依次传输,布线简单但速度相对较低
- 适合长距离传输,通过调整传输波特率适应不同场景;
- 数据传输正确性依赖校验码(如奇偶校验、CRC 校验等);
- 支持多种数据传输方式(如同步传输、异步传输),灵活性高。
- 并行总线:
嵌入式操作系统⭐⭐⭐
嵌入式操作系统的定义及特点
定义:
- 嵌入式操作系统(Embedded Operating System,EOS)是应用于嵌入式系统的系统软件,负责管理嵌入式系统的全部软、硬件资源,包括任务调度、控制、协调并行活动等。
组成内容:
- 通常包含与硬件相关的底层驱动软件、系统内核、设备驱动接口、通信协议、图形界面、标准化浏览器等。
分类(按时间敏感程度):
- 嵌入式非实时系统:未特别强调时间约束的嵌入式系统。
- 嵌入式实时系统:核心特点是能在 指定或确定的时间内 完成系统功能,并对外部或内部、同步或异步事件做出及时响应,注重时间确定性与及时性。
嵌入式实时操作系统
核心属性与特点
- 属性:兼具嵌入式操作系统与实时操作系统的特点。
- 嵌入式操作系统特点:
- 微型化:系统轻量级,适配嵌入式设备资源有限的特性。
- 代码质量高:代码高效、可靠,保障系统稳定运行。
- 专业化:针对特定嵌入式场景设计,功能专注。
- 实时性强:对事件及时响应,满足时间约束。
- 可裁减、可配置:根据需求灵活调整系统组件,优化资源占用。
- 实时操作系统核心:以 “实时性强” 为最关键特征,确保系统在规定时间内完成任务。
实时性评价指标
- 中断响应和延迟时间:系统对中断事件的响应速度及处理延迟,反映紧急事件处理效率。
- 任务切换时间:不同任务间切换的耗时,影响系统多任务处理的流畅性。
- 信号量混洗时间:信号量操作(如同步、互斥)的处理时间,衡量系统资源协调能力。
嵌入式实时操作系统调度算法
-
优先级调度算法
- 定义:系统为每个任务分配一个 相对固定 的优先顺序。任务优先级预先设定,在执行过程中不动态改变,按固定优先级顺序调度任务。
-
抢占式优先级调度算法
-
定义:根据任务的 紧急程度确定 其优先级。当高优先级任务就绪时,可中断正在执行的低优先级任务(即 “可剥夺” 方式),确保紧急任务优先处理。
-
应用:大多数实时操作系统(RTOS)采用此调度方式,以满足实时性需求。
-
-
最早截止期调度算法(EDF 算法)
- 定义:基于任务的截止时间 “头端” 确定优先级,将最高优先级分配给 时间期限最近的任务。通过优先处理截止时间紧迫的任务,保障系统实时响应。
-
最晚截止期调度算法
- 定义:根据任务截止时间的 “末端” 确定优先级,对时间期限最近的任务分配最高优先级,与 EDF 算法从不同时间端维度进行任务优先级判定。
[!NOTE]
截至时间是一个区间之存在最早和最晚,如果说接近自己的截止期,说的是末端,也就是最晚截止期调度算法
嵌入式操作系统内核架构
内核定义
- 内核是操作系统的核心,负责管理系统资源,作为连接应用程序与硬件的桥梁,是直接运行于硬件之上的基础软件实体。
- 内核分为 “用户态” 和 “核心态”。用户态包含客户进程、各类服务器(如进程服务器、文件服务器等),通过 “进程间通信” 向核心态发送请求并获取回答。
内核架构分类
-
宏内核(Monolithic Kernel)(单体内核)
-
结构:
- 内核空间:集成进程管理、内存管理、设备管理、文件管理、驱动程序等功能代码。
- 用户空间:运行应用程序进程,通过系统 API 调用内核功能。
-
特点:
- 功能高度集中在内核空间,,效率高但灵活性与安全性较差。
- 各模块间直接交互,减少进程间通信与状态切换的系统开销,运行效率高。
- 内核体积庞大,占用资源多且不易剪裁;
- 某一模块故障可能影响整个系统
-
-
微内核(Micro Kernel)
-
结构:
- 内核空间:仅保留最核心功能,如进程调度代码、内存空间映射代码、中断处理代码、进程间通信代码。
- 用户空间:将内存管理、文件管理、设备管理等功能以 “服务进程” 形式实现,与应用程序进程共同存在于用户空间。
-
特点:
- 内核空间精简,功能分散到用户空间,
- 提升系统灵活性、可扩展性与安全性。
- 用户态与内核态频繁切换,进程间通信开销大,系统效率低于单体内核,性能相对偏低。
-
嵌入式数据库⭐
嵌入式数据库特点
- 嵌入式:嵌入式数据库直接嵌入到应用程序或设备中运行,无需独立的数据库服务器,紧密结合硬件环境,节省系统资源,适用于资源受限的嵌入式设备。
- 实时性:强调对数据的及时处理与响应,满足实时性要求高的场景(如工业控制、实时监测系统),确保数据处理的时效性。
- 移动性:支持在移动设备(如手机、便携终端)中使用,适配移动场景下的数据管理需求,保障设备移动过程中数据的有效存储与访问。
- 伸缩性:具备灵活的适配能力,可根据嵌入式设备的硬件资源(如内存、存储容量)动态调整,既能在资源有限的设备上轻量级运行,也能在资源较充裕的环境中扩展功能。
数据存储位置的分类方法
- 基于内存方式(MMDB,Main Memory Database System):数据存储于内存中,利用内存高速读写特性,实现数据快速处理,适合对实时性要求极高的场景。
- 基于文件方式(FDB,File Database):通过文件系统存储数据,借助文件存储的通用性和稳定性,适用于对存储灵活性有需求的嵌入式设备。
- 基于网络方式(NDB,Netware Database):数据存储于网络环境中,支持通过网络进行数据的访问与管理,适用于分布式或联网的嵌入式系统场景。
嵌入式数据库进行分类,基于存储位置划分为三类,具体内容如下:
基于内存的数据库(MMDB)
- 定义:实时系统与数据库系统的有机结合,数据主要存储于内存。
- 特点:
- 以 “主拷贝” 或 “工作版本” 常驻内存,活动事务直接与内存拷贝交互,是支持实时事务的最佳技术,突出实时性。
基于文件的数据库(FDB)
- 定义:数据以文件形式按特定格式存储在磁盘中,应用程序通过驱动程序或直接读写数据文件。
- 特点:
- 访问方式被动,任何程序了解文件格式即可读取,安全性低;
- 虽存在弊端,但能满足嵌入式系统在空间、时间等方面的特殊需求(如资源有限场景)。
基于网络的数据库(NDB)
- 定义:基于手机 4G/5G 移动通信构建,嵌入式设备在逻辑上作为远程服务器的客户端。
- 特点:
- 无需解析 SQL 语句,支持更多 SQL 操作;
- 客户端轻量,无需支持可剪裁性,利于代码重用,适配网络环境下的嵌入式应用。
- 规范客户端与远程服务器的通信,解决多客户端并发问题,确保通信稳定性。
- 负责维护服务器端的数据库数据,实现数据存储与管理。
- 组成部分:
- 客户端:为嵌入式程序提供数据交互接口。
- 通信协议:规范客户端与远程服务器的通信,解决多客户端并发问题,确保通信稳定性。
- 远程服务器:负责维护服务器端的数据库数据,实现数据存储与管理。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 DIUDIU 小菜鸟!
评论