第 16 章 嵌入式系统架构设计理论与实践
对应大纲:科目 1-15 嵌入式系统架构设计理论与实践|教材 P541–P598|优先级 ★★★|综合知识估分 2~4 分
读法:把本章当「受限环境下的架构设计」,一切取舍围绕四个约束:实时、可靠、体积、功耗。先背硬件五件套与两种模式,再把 RM/EDF 与 ADD 步骤背成条件反射。
一、知识框架
嵌入式系统架构
├─ 16.1 概述
│ ├─ 定义:以应用为中心,软硬件可裁剪,受功能/可靠/成本/体积/功耗约束
│ ├─ 发展:单片机→微控制器→SoC→网络化智能化
│ ├─ 硬件:处理器|存储器|总线|I/O 与外围|电源时钟复位
│ └─ 软件:硬件层|BSP/HAL|OS|中间件|应用
├─ 16.2 原理与特征
│ ├─ 两种模式:分层模式|微内核(客户-服务器)模式
│ ├─ 嵌入式 OS:可裁剪|可移植|实时|可靠|低功耗
│ │ └─ 调度:优先级抢占|RM|EDF|时间片
│ ├─ 嵌入式数据库:轻量|可裁剪|实时事务|掉电安全
│ ├─ 中间件:屏蔽异构|通信消息|DDS/MQTT
│ └─ 开发环境:交叉编译|仿真器|JTAG/SWD|Bootloader
├─ 16.3 设计方法
│ ├─ ABSD:架构为中心,质量与资源预算双驱动
│ ├─ ADD:输入→驱动因子→模式→实例化→评审
│ └─ 实时设计三要点:并发性|可预测性|可靠性
└─ 16.4 案例:鸿蒙分布式|GENESYS|物联网 OS
二、必背要点
16.1 概述
定义三句:以应用为中心;以计算机技术为基础,软硬件可裁剪;对功能、可靠性、成本、体积、功耗有严格要求的专用系统。
发展四段:单片微型机(8 位、无 OS)→ MCU(集成外设、前后台程序)→ SoC(CPU+DSP+GPU+NPU,跑 RTOS 或嵌入式 Linux)→ 网络化智能化(联网、边缘计算、端侧 AI)。
| 部件 | 形态 | 关注点 |
|---|---|---|
| 处理器 | MCU、DSP、SoC、FPGA | 主频低、外设多、中断快、低功耗 |
| 存储器 | 片内 Flash/SRAM,片外 NAND/eMMC/DRAM | 容量小;NOR 可片内执行,NAND 便宜但需坏块管理 |
| 总线 | 片内 AMBA(AHB/APB),片外 I2C/SPI/UART/CAN/USB | 带宽、实时性、外设挂接能力 |
| I/O 与外围 | GPIO、ADC/DAC、定时器、PWM、DMA、中断控制器 | 采样精度、中断时延、DMA 减轻 CPU 负担 |
| 电源与复位 | 电源管理、看门狗、复位电路 | 低功耗模式、掉电保护、可靠复位 |
常考点:嵌入式处理器多用哈佛结构(程序与数据分开,取指取数并行),通用 CPU 多用冯·诺依曼结构。
软件五层:硬件 → BSP/HAL → OS → 中间件 → 应用。分层的意义:换硬件只改 BSP,换 OS 只改适配层,应用可复用。
16.2 软件架构原理与特征
| 维度 | 分层模式 | 微内核(客户-服务器)模式 |
|---|---|---|
| 结构 | 按抽象层次纵向切分,上层调下层 | 内核只留调度/中断/IPC,其余为用户态服务 |
| 优点 | 清晰、易移植、易分工 | 高可靠(服务崩溃不拖垮内核)、易裁剪扩展 |
| 缺点 | 跨层调用难、逐层穿越有性能损耗 | 服务间靠 IPC,开销大、时延不确定 |
| 适用 | 功能稳定、强调可移植 | 高可靠、需按需裁剪与动态加载 |
嵌入式 OS 特点:可裁剪、可移植(依赖 HAL)、实时性(中断时延与调度确定性)、高可靠(长期无人值守)、低功耗、可配置、多任务与优先级。形态三类:前后台裸机、RTOS(VxWorks、µC/OS、FreeRTOS、RT-Thread)、嵌入式 Linux。
| 调度算法 | 优先级 | 思想 | 特点 |
|---|---|---|---|
| 优先级抢占 | 静态/动态 | 高优先级就绪即抢占 | 时延小,需防优先级反转(优先级继承) |
| RM 速率单调 | 静态 | 周期越短优先级越高 | 简单可分析;利用率上限约 69%(n 大时) |
| EDF 最早截止期 | 动态 | 截止期越近优先级越高 | 利用率可达 100%,过载时抖动大 |
嵌入式数据库:体量小(几百 KB)、可裁剪、支持实时事务(事务带截止期,用优先级继承避免阻塞)、掉电安全(WAL 日志)、支持嵌入式 SQL、可与上位机同步。
嵌入式中间件:位于 OS 与应用之间,屏蔽硬件与网络异构,提供通信、消息、分布式对象、数据分发能力;典型 DDS(以数据为中心的发布订阅,QoS 丰富)、MQTT 代理(轻量物联网协议)、CORBA 类分布式对象中间件。选型看时延、QoS、代码体积、协议互通。
| 开发环节 | 内容 | 考点 |
|---|---|---|
| 交叉编译 | 宿主机编译、目标机运行,用 arm-none-eabi 类工具链 | 目标机资源不足,无法自举编译 |
| 构建与启动 | 镜像、链接脚本、Bootloader | 启动流程:Bootloader→内核→应用 |
| 调试 | JTAG/SWD、串口打印、逻辑分析仪 | JTAG 可断点、单步、读寄存器 |
| 仿真 | 在线仿真器 ICE、指令集模拟器(QEMU) | 无硬件时做早期验证 |
16.3 设计方法
ABSD 应用:仍以架构为中心、质量与业务需求共同驱动、自顶向下递归细化;差别是质量属性权重不同——实时、可靠、功耗、存储占用常压过可维护性。六步(需求→设计→文档化→复审→实现→演化)不变,但每步加一道资源预算检查:CPU 利用率、RAM/Flash 占用、最坏中断时延。
ADD 五步(可迭代)
- 确认输入:功能需求、质量属性场景(含度量,如「中断响应 ≤50 μs」)、约束(芯片、功耗、认证)。
- 选驱动因子:挑对架构影响最大的场景(ASR),排优先级,本轮只解决 1~2 个。
- 选模式与策略:实时选优先级抢占+RM;可靠选看门狗+双备份;功耗选事件驱动+休眠唤醒。
- 实例化与分责:落成构件、定义接口与数据流,分配任务、中断与内存分区。
- 记录与评审:写设计决策与理由,用原场景回验,不达标进入下一轮。
| 实时设计要点 | 含义 | 手段 |
|---|---|---|
| 并发性 | 多任务与中断并存,需正确同步 | 任务划分、优先级设计、信号量/消息队列、临界区短 |
| 可预测性 | 时间与行为可分析,而非仅「快」 | WCET 分析、静态优先级、禁动态分配、避免长中断 |
| 可靠性 | 长期无人值守仍正确 | 看门狗、CRC、双机/双备份、故障安全态、DO-178 |
16.4 案例分析
鸿蒙 OS 分布式架构
| 能力 | 作用 |
|---|---|
| 分布式软总线 | 设备自动发现、自组网、统一通信,多设备像一台 |
| 分布式数据管理 | 跨设备同步与访问,按权限隔离,本地优先 |
| 分布式任务调度 | 按能力、负载、时延把任务分到合适设备,支持流转接续 |
| 弹性部署 | 组件化按需裁剪,一套代码适配 KB 到 GB 级设备 |
配套:微内核+形式化验证提升安全,一次开发多端部署(ArkUI、方舟编译器),Stage 模型与 Ability 组件。
GENESYS:通用嵌入式参考架构,核心是分层+构件化+与处理器/OS 解耦;自下而上为硬件层、硬件抽象层、内核层、OS 层、中间件层、应用层,层间标准接口交互。价值:上层构件可跨芯片与 OS 复用,缩短移植周期,便于按实时性/可靠性等级裁剪。
物联网 OS:极小内核(KB 级)、低功耗多级休眠、硬实时、多协议接入(BLE/LoRa/ZigBee/NB-IoT)、组件化、云端协同与 OTA、内置安全启动。代表:FreeRTOS、RT-Thread、LiteOS、Zephyr。
三、易混淆概念对比
| A | B | 关键区别 |
|---|---|---|
| 分层模式 | 微内核模式 | 分层靠层次调用、性能好;微内核靠 IPC、可靠可裁剪但开销大 |
| 硬实时 | 软实时 | 硬实时超截止期即失败(刹车、飞控);软实时只降体验 |
| RM | EDF | RM 静态、周期短者优先、上限约 69%;EDF 动态、截止期近者优先、可达 100% |
| 优先级抢占 | 时间片轮转 | 抢占按优先级立即切换、保实时;轮转按片公平、保响应 |
| 嵌入式 OS | 通用 OS | 嵌入式强调可裁剪、实时、低功耗;通用强调吞吐与生态 |
| 交叉编译 | 本地编译 | 交叉编译在宿主机生成目标机代码;本地编译同平台 |
| 在线仿真器 ICE | 指令集模拟器 | ICE 接真实目标板、可实时调试;模拟器纯软件、无需硬件 |
| JTAG/SWD | 串口打印 | JTAG 可断点单步读寄存器;串口只能输出日志 |
| 嵌入式数据库 | 通用数据库 | 嵌入式轻量可裁剪、实时事务;通用功能全、体积大 |
| ABSD | ADD | ABSD 是全局方法(六步含文档、复审、演化);ADD 是其中设计环节的具体方法 |
四、常见考法与出题角度
| 题型 | 出题角度 | 典型问法 | 答题要点 |
|---|---|---|---|
| 单选 | 模式识别 | 「内核只留调度与 IPC 属于」 | 微内核,服务在用户态 |
| 单选 | 调度算法 | 「周期越短优先级越高是」 | RM;EDF 看截止期 |
| 单选 | 硬件结构 | 「嵌入式处理器常用结构」 | 哈佛结构,取指取数并行 |
| 单选 | 开发环境 | 「为什么要交叉编译」 | 目标机资源不足,无法自举 |
| 单选 | 数据库特性 | 「嵌入式数据库不一定具备」 | 排除大规模并发 OLAP |
| 简答 | 三要点 | 「实时系统设计关注什么」 | 并发性、可预测性、可靠性 |
| 简答 | 鸿蒙 | 「分布式软总线的作用」 | 发现、组网、统一通信 |
案例题角度(四步骨架)
- 抓约束定风格:提取实时性、内存/Flash、功耗、可靠性、是否需动态加载,选分层(可移植)或微内核(可靠可裁剪),各给一条理由。
- 画分层与任务:写出硬件—BSP/HAL—OS—中间件—应用,再拆任务并标注优先级、周期、WCET,说明调度算法选择依据。
- 逐项回应质量要求:实时→中断时延与最坏响应;可靠→看门狗、双备份、CRC、安全态;功耗→事件驱动、休眠唤醒、外设关断;体积→组件裁剪、静态分配。
- 补工程落地:交叉编译与 Bootloader、JTAG 调试与仿真、OTA 与回滚、安全启动与固件签名。
论文可用角度:写「工业物联网边缘网关」可写:「网关采用分层+微内核混合架构,硬件层经 HAL 抽象,内核只留调度与 IPC,协议解析、规则引擎以用户态服务加载;采集任务用 RM 调度,最坏响应 8 ms,配合看门狗与双分区 OTA,现场连续运行 18 个月无宕机。」
五、速记与自测
速记
- 五层:硬、BSP、OS、中、应
- 四约束:实时、可靠、体积、功耗
- 两模式:分层可移植、微内核高可靠
- 三调度:抢占保实时、RM 看周期、EDF 看截止
- 三要点:并发、可预测、可靠
- ADD:入、因、式、例、审
- 鸿蒙四件套:软总线、数据管理、任务调度、弹性部署
自测
- 嵌入式软件为何普遍分层?代价是什么?
- RM 与 EDF 在优先级确定上有何本质区别?
- 实时系统中「可预测性」与「高性能」为何常冲突?
答案:1. 硬件与 OS 差异大,分层后换硬件只改 BSP、换 OS 只改适配层,便于移植复用;代价是逐层调用的性能损耗,跨层访问会破坏结构。2. RM 按任务周期静态定优先级(周期短者高),运行期不变;EDF 按当前截止期动态调整。3. 高性能常引入缓存、动态分配、乱序执行等不确定因素,使最坏执行时间难界定;可预测性要求时间可静态分析,只能牺牲平均性能换确定性。