嵌入式系统架构设计理论与实践-软考架构师

一、嵌入式系统基础核心考点

1.1 嵌入式系统定义与八大特性

官方定义:以应用为中心、以计算机技术为基础、软硬件可裁剪、适用于对功能、可靠性、成本、体积、功耗严格要求的专用计算机系统

逐条解析 8 个关键属性:

  1. 专用性强:面向特定业务,例如洗衣机控制器、车载 ECU,不会像通用电脑运行各类软件;硬件软件都是定制适配业务。
  2. 资源受限:RAM、Flash 存储空间小、CPU 算力有限、供电受限;所有程序必须轻量化、组件裁剪。
  3. 实时性:很多场景需要立刻响应外部硬件信号,分为硬实时、软实时。
  4. 软硬件紧密耦合:软件高度适配硬件寄存器、外设,更换芯片通常需要修改底层驱动。
  5. 高可靠、长时间连续运行:工业、车载、医疗设备常年上电,不能随意死机崩溃。
  6. 软硬件可裁剪:不需要的驱动、协议栈、组件可以移除,节省资源。
  7. 固件固化存储:程序烧录在 Flash,不像 PC 依靠硬盘装载系统。
  8. 交叉开发模式 宿主机(Windows/Linux 电脑)编写编译代码;目标机是嵌入式硬件;需要交叉工具链,代码不能直接在开发电脑运行。

1.2 5 类嵌入式处理器深度辨析

处理器 结构特点 适用场景
MCU 微控制器(单片机) CPU + 闪存 + RAM+GPIO、定时器全部集成单芯片,外设齐全 家电、传感器、低成本控制板
MPU 通用微处理器 仅 CPU 核心,需要外接内存、Flash 芯片 安卓开发板、嵌入式 Linux 设备
DSP 数字信号处理器 哈佛总线结构,数据总线和程序总线分开;擅长批量数值运算 音频编码、图像识别、信号滤波
SoC 片上系统 单芯片集成 CPU、GPU、NPU、外设控制器、硬件加速器 手机芯片、车载主控、AI 硬件
FPGA 现场可编程门阵列 硬件逻辑可通过软件重新编程修改 通信设备、高速控制、定制硬件加速器

哈佛结构 vs 冯诺依曼结构

  1. 冯诺依曼:指令、数据共用一条总线,取指令和读取数据不能同时;通用 CPU
  2. 哈佛结构:程序存储器、数据存储器独立总线,可以并行读写;DSP、单片机常用,速度更快。

1.3 三大总线详解

  1. 片内总线(芯片内部) AMBA(ARM 芯片标准总线,分为 AHB 高速总线、APB 低速外设总线)、Wishbone;用来连接 CPU、DMA、外设控制器。
  2. 板级总线:电路板芯片之间通信 PCI、PCI‑e。
  3. 设备现场总线(工业外设)
  • I2C:低速、两根线,多个从设备,传感器;短距离
  • SPI:高速四线通信,Flash、显示屏
  • CAN‑BUS:汽车、工业总线,抗干扰强、多节点、故障隔离;车载必考
  • UART 串口:异步串行收发

二、嵌入式软件架构

2.1 四种软件架构演进深度解析

(1)前后台架构(裸机架构)

  1. 工作原理
  • 后台:while (1) 主循环,顺序执行任务;
  • 前台:硬件中断服务函数,外部信号触发中断立刻抢占主循环。
  1. 优点:简单、无操作系统开销、占用内存极小、成本低
  2. 致命缺点 ① 主循环任务顺序执行,高优先级任务必须等前面循环任务跑完,实时性差; ② 业务复杂之后循环臃肿,很难维护; ③ 中断函数不能做耗时操作。
  3. 使用场景:简易遥控器、普通小家电、简单传感器。

(2)BSP 板级支持包分层架构

BSP 就是主板硬件适配层,介于硬件和操作系统中间。 功能:

  1. CPU 初始化、时钟、看门狗、外设初始化;
  2. 实现设备驱动;
  3. 屏蔽不同硬件平台差异,操作系统不需要关心具体芯片;
  4. 实现操作系统硬件可移植。

HAL 硬件抽象层:比 BSP 层级更高,提供标准化统一 API,更换硬件只需要修改 HAL 层,上层应用代码完全不动,提升可移植性。

(3)抢占式 RTOS 多任务架构

操作系统把应用拆分成多个独立任务;每个任务拥有独立栈空间;内核调度器决定当前哪个 CPU 获得运行权限;高优先级任务可以抢占低优先级任务 CPU 使用权。

绝大多数工业控制、智能设备的主流架构。

(4)微内核架构

  1. 宏内核(普通 RTOS、Linux):调度、驱动、文件系统、网络协议全部运行在内核态; 优点运行速度快;缺点某个驱动出错,整个内核直接崩溃。
  2. 微内核原理 内核只保留最基础最小功能:任务调度、进程间通信 IPC、中断管理。 驱动、文件系统、网络、GUI 全部作为用户态独立服务进程
  • 优点:故障隔离,一个驱动崩溃不会导致整机死机、安全性高、可移植性强;
  • 缺点:进程之间消息通信开销大,速度比宏内核慢;
  • 适用场景:航空航天、轨道交通、医疗等高安全等级设备,例如 QNX。

2.2 嵌入式五层分层架构

自下至上顺序,答题严格按照顺序:

  1. 硬件层:处理器、存储器、各类外设、电源、时钟电路;
  2. BSP 板级支持包 + HAL 硬件抽象层;
  3. RTOS 操作系统内核层(调度、内存管理、设备驱动、协议栈、文件系统);
  4. 中间件层(通信组件、数据库、图形组件);
  5. 上层业务应用层。

2.3 嵌入式常用架构模式

  1. 事件驱动架构 依靠中断、消息事件触发任务;适合传感器、告警设备;优点响应速度快。
  2. 状态机架构 设备所有工作状态(待机、工作、告警、休眠),根据输入事件切换状态;非常适合工业控制器。
  3. 管道‑过滤器:数据流处理,音视频编码。
  4. 组件化架构(AUTOSAR 汽车电子):各个功能做成独立组件,组件之间标准化接口,可以插拔替换。

三、实时操作系统 RTOS 核心难点

3.1 硬实时与软实时

  1. 硬实时系统 任务截止时间是硬性指标,如果任务超时,直接引发灾难性故障;响应时间必须可预测。 例子:飞机飞控、汽车刹车控制系统、高压电网控制器、手术医疗设备。
  2. 软实时系统 尽可能满足时限,偶尔超时只会降低用户体验,不会发生事故; 例子:视频播放器、音频设备、人机显示屏。

关键概念:WCET 任务最坏情况下执行时间 架构设计的时候,必须计算每个任务最长运行耗时,用来做任务调度分析,硬实时系统必须分析 WCET。

3.2 五大任务调度算法

1、静态抢占式优先级调度

人为提前设置任务优先级;一旦有更高优先级任务就绪,立刻抢占 CPU。 缺点:容易出现优先级反转

2、时间片轮转 RR

同等优先级任务,轮流分配固定时长 CPU 时间;适合多个人机交互任务。

3、RMS 速率单调调度【固定周期任务最优静态调度算法】

规则:任务周期越短,优先级越高 适用:周期性采集、定时控制任务;硬实时系统首选静态调度方案; 前提:CPU 总的任务利用率≤69%。

4、EDF 最早截止时间优先(动态优先级)

谁的任务截止时间最近,谁优先级最高,优先级运行过程动态变化; CPU 利用率理论上限可以到达 100%;硬实时动态调度首选。

5、LST 最低松弛度优先

松弛度 = 截止剩余时间 − 任务还需要运行的时长;松弛度越小优先级越高;多用于周期性任务。

3.3 优先级反转

1. 现象还原

  1. 现在有三个任务:高优先级 H、中优先级 M、低优先级 L
  2. L 正在运行,占用互斥锁;
  3. H 就绪需要获取同一把互斥锁,于是 H 被 L 阻塞;
  4. 此时 M 就绪;M 优先级高于 L,抢占 CPU 开始运行;

结果:最高优先级 H,被优先级更低的 M 无限期延后执行,就是优先级反转。

2. 两种标准解决方案(背诵)

  1. 优先级继承协议:当低优先级任务拿着锁的时候,临时将它的优先级提升到正在等待该锁的最高优先级任务;L 不会被 M 抢占;L 尽快释放锁,H 即可运行。
  2. 优先级天花板(上限)协议:每一把互斥锁设置天花板优先级(所有会竞争该锁任务的最高优先级);任务拿到锁之后立刻提升到天花板优先级。

答题万能话术:硬实时项目一定要使用优先级天花板协议规避优先级反转。

3.4 RTOS 任务同步通信方式对比

  1. 全局变量:最简单;缺点多任务并发访问会产生数据错乱,只适合简单标记;
  2. 互斥锁 mutex:专门保护临界区资源,禁止多个任务同时访问;
  3. 信号量:用于任务之间同步、资源计数;
  4. 消息队列:任务之间传递大数据,最主流通信方式;
  5. 事件标志组:等待多个事件触发;
  6. 管道、socket:用于流式数据、网络通信。

3.5 死锁

死锁四个必要条件(全部满足才会死锁)

  1. 互斥条件:资源同一时刻只能被一个任务占用;
  2. 请求保持:任务已经占有一把锁,再请求另一把锁;
  3. 不可剥夺:别人不能强行拿走已经占用的锁;
  4. 环路等待:A 等 B 资源,B 等 C 资源,C 等 A 资源,形成闭环。

破解死锁:破坏任意一条条件即可; 工程最常用:规定所有任务获取锁的固定顺序,破坏环路等待。

3.6 内存管理考点

  1. 静态内存分配(安全设备强制使用) 系统启动的时候一次性分配好内存,运行期间不再申请释放; 优点:没有内存碎片、运行时间确定、无内存泄漏;航空、汽车功能安全设备必须静态内存。
  2. 动态内存分配 malloc 运行时申请释放;隐患:内存碎片、执行时长不确定、内存泄漏;硬实时系统禁止频繁动态申请内存。
  3. 栈溢出:每个任务拥有独立栈,局部变量过大、递归太深栈溢出,直接造成程序崩溃; 解决:计算任务最大栈深度、设置栈检测、增大栈空间。

四、嵌入式架构‑六大非功能属性设计策略

1、实时性优化手段

  1. 合理划分任务,拆分为细粒度任务;
  2. 使用抢占式调度,EDF/RMS 调度算法;
  3. 缩短中断服务程序,中断里面只做标记,耗时业务交给普通任务;
  4. 关闭无关外设中断;
  5. 计算 WCET 最坏执行时间,评估 CPU 负载;
  6. 硬件加速,把计算交给 NPU、DMA 外设。

2、低功耗设计(软硬件双向措施)

软件层面

  1. CPU 使用休眠模式,空闲时进入低功耗档位;
  2. DVFS 动态电压频率调节:负载低的时候降低 CPU 主频和供电电压;
  3. 将轮询查询改成中断触发,CPU 不用循环检测外设;
  4. 闲置外设断电关闭;传感器定时唤醒,其余时间休眠;
  5. 优化算法,减少循环运算次数。

硬件层面

选用低功耗芯片、电源分区控制、降低总线时钟速率。

3、可靠性设计

  1. 看门狗 Watch‑Dog:程序卡死没有喂狗,硬件自动硬件复位;
  2. 软硬件冗余,关键控制使用双备份硬件;
  3. 上电自检、故障检测、异常复位;
  4. 数据校验 CRC、防止 Flash 存储数据出错;
  5. 冷热复位区分。

4、功能安全 & 信息安全

(1)功能安全(防止设备硬件软件故障引发危险)

  • 汽车电子标准 ISO‑26262,ASIL‑A~ASIL‑D,D 等级最高安全;
  • 航空标准 DO‑178C;
  • 手段:FMECA 故障模式与影响分析、故障树分析、冗余、安全机制。

(2)信息安全(防止黑客攻击、固件篡改)

固件加密、程序分区只读、调试端口上锁、通信报文加密、访问权限管控、OTA 升级包签名校验,防止恶意升级固件。

5、可移植性

  1. BSP、HAL 硬件抽象层隔离硬件相关代码;
  2. 硬件相关代码集中封装,上层业务不直接操作寄存器;
  3. 使用标准统一 API。

6、可裁剪性

组件化模块化设计、条件编译、动态加载组件,不需要的功能直接编译阶段移除,节省内存。

五、嵌入式开发环境重点知识

  1. 交叉开发环境 宿主机(PC)、目标机(嵌入式硬件); 交叉编译器:专门生成对应嵌入式芯片机器码;普通编译器只能生成电脑 CPU 指令。
  2. BootLoader(U‑Boot) 启动流程:硬件初始化 → 初始化 RAM → 加载操作系统内核到内存 → 设置启动参数、跳转启动内核。
  3. 调试方式
  • JTAG/SWD 硬件调试:断点调试、查看寄存器;硬件调试最高级;
  • 串口打印日志;模拟器仿真调试。
  1. OTA 远程固件升级:设备在线更新程序,需要做升级校验、断电保护,升级中途断电不能变砖。

六、行业嵌入式架构标准

  1. AUTOSAR 汽车电子架构
  • CP 经典平台:面向传统 ECU,OSEK 实时操作系统;分层、组件化;
  • AP 自适应平台:面向车载高性能主控,支持 POSIX、服务化软件架构。
  1. DDS:分布式嵌入式实时数据分发服务,多用于军工、机器人多设备通信;
  2. 轻量化物联网协议:MQTT(发布订阅)、CoAP,适用于低带宽传感器设备。

七、论文题嵌入式架构

如果论文题目:论嵌入式系统架构设计 分段落结构

  1. 项目简介,说明硬件资源约束、实时性、功耗、安全需求;
  2. 需求分析,分析功能需求与非功能需求(实时、功耗、可靠、成本);
  3. 架构选型:对比前后台、宏内核 RTOS、微内核架构,说明为什么选用当前架构;
  4. 分层架构设计,逐层讲解 HAL、操作系统、中间件、业务层;
  5. 重点难点解决:例如解决优先级反转、低功耗优化、栈溢出、固件安全;
  6. 架构评估,使用 ATAM 架构权衡分析法评估架构优缺点;
  7. 总结不足和后续优化方向。
相关推荐
国科安芯7 小时前
低轨卫星姿态与轨道控制系统中高可靠MCU的选型研究——基于AS32S601的抗辐照性能试验数据分析
分布式·科技·单片机·嵌入式硬件·系统架构
智造ERP规划14 小时前
项目型制造成本核算:WBS成本归集、变更冲击量、完工百分比,三个逻辑讲透
数据库·系统架构·软件工程·制造
智造ERP规划16 小时前
项目型制造财务核算全流程:收入什么时候确认、成本怎么归集、开票≠收款,一条链讲透
大数据·系统架构·软件工程·制造
星蓝_starblue1 天前
零服务器、零数据库!开源growth-board,利用GitHub自动管理刷题/学习/求职全流程
服务器·数据库·程序人生·系统架构·node.js·github·改行学it
画中有画1 天前
RAG 大模型应用系统架构设计
系统架构
微三云 - 廖会灵 (私域系统开发)1 天前
消费返物业费系统架构设计与技术实现:智慧社区消费返利平台全链路方案
系统架构
Sam_Deep_Thinking2 天前
用Java 17从0到1写一个mini版RPC,理解远程调用的本质
java·面试·rpc·程序员·系统架构
Sam_Deep_Thinking2 天前
如何维持缓存的一致性?
java·缓存·面试·程序员·系统架构
youngerwang3 天前
【系统架构案例分析每日深耕 Day 5】解释器/规则引擎架构在风控系统中的应用
系统架构·解释器模式·案例分析·风控系统