一、嵌入式系统基础核心考点
1.1 嵌入式系统定义与八大特性
官方定义:以应用为中心、以计算机技术为基础、软硬件可裁剪、适用于对功能、可靠性、成本、体积、功耗严格要求的专用计算机系统
逐条解析 8 个关键属性:
- 专用性强:面向特定业务,例如洗衣机控制器、车载 ECU,不会像通用电脑运行各类软件;硬件软件都是定制适配业务。
- 资源受限:RAM、Flash 存储空间小、CPU 算力有限、供电受限;所有程序必须轻量化、组件裁剪。
- 实时性:很多场景需要立刻响应外部硬件信号,分为硬实时、软实时。
- 软硬件紧密耦合:软件高度适配硬件寄存器、外设,更换芯片通常需要修改底层驱动。
- 高可靠、长时间连续运行:工业、车载、医疗设备常年上电,不能随意死机崩溃。
- 软硬件可裁剪:不需要的驱动、协议栈、组件可以移除,节省资源。
- 固件固化存储:程序烧录在 Flash,不像 PC 依靠硬盘装载系统。
- 交叉开发模式 宿主机(Windows/Linux 电脑)编写编译代码;目标机是嵌入式硬件;需要交叉工具链,代码不能直接在开发电脑运行。
1.2 5 类嵌入式处理器深度辨析
| 处理器 | 结构特点 | 适用场景 |
|---|---|---|
| MCU 微控制器(单片机) | CPU + 闪存 + RAM+GPIO、定时器全部集成单芯片,外设齐全 | 家电、传感器、低成本控制板 |
| MPU 通用微处理器 | 仅 CPU 核心,需要外接内存、Flash 芯片 | 安卓开发板、嵌入式 Linux 设备 |
| DSP 数字信号处理器 | 哈佛总线结构,数据总线和程序总线分开;擅长批量数值运算 | 音频编码、图像识别、信号滤波 |
| SoC 片上系统 | 单芯片集成 CPU、GPU、NPU、外设控制器、硬件加速器 | 手机芯片、车载主控、AI 硬件 |
| FPGA 现场可编程门阵列 | 硬件逻辑可通过软件重新编程修改 | 通信设备、高速控制、定制硬件加速器 |
哈佛结构 vs 冯诺依曼结构
- 冯诺依曼:指令、数据共用一条总线,取指令和读取数据不能同时;通用 CPU
- 哈佛结构:程序存储器、数据存储器独立总线,可以并行读写;DSP、单片机常用,速度更快。
1.3 三大总线详解
- 片内总线(芯片内部) AMBA(ARM 芯片标准总线,分为 AHB 高速总线、APB 低速外设总线)、Wishbone;用来连接 CPU、DMA、外设控制器。
- 板级总线:电路板芯片之间通信 PCI、PCI‑e。
- 设备现场总线(工业外设)
- I2C:低速、两根线,多个从设备,传感器;短距离
- SPI:高速四线通信,Flash、显示屏
- CAN‑BUS:汽车、工业总线,抗干扰强、多节点、故障隔离;车载必考
- UART 串口:异步串行收发
二、嵌入式软件架构
2.1 四种软件架构演进深度解析
(1)前后台架构(裸机架构)
- 工作原理
- 后台:while (1) 主循环,顺序执行任务;
- 前台:硬件中断服务函数,外部信号触发中断立刻抢占主循环。
- 优点:简单、无操作系统开销、占用内存极小、成本低
- 致命缺点 ① 主循环任务顺序执行,高优先级任务必须等前面循环任务跑完,实时性差; ② 业务复杂之后循环臃肿,很难维护; ③ 中断函数不能做耗时操作。
- 使用场景:简易遥控器、普通小家电、简单传感器。
(2)BSP 板级支持包分层架构
BSP 就是主板硬件适配层,介于硬件和操作系统中间。 功能:
- CPU 初始化、时钟、看门狗、外设初始化;
- 实现设备驱动;
- 屏蔽不同硬件平台差异,操作系统不需要关心具体芯片;
- 实现操作系统硬件可移植。
HAL 硬件抽象层:比 BSP 层级更高,提供标准化统一 API,更换硬件只需要修改 HAL 层,上层应用代码完全不动,提升可移植性。
(3)抢占式 RTOS 多任务架构
操作系统把应用拆分成多个独立任务;每个任务拥有独立栈空间;内核调度器决定当前哪个 CPU 获得运行权限;高优先级任务可以抢占低优先级任务 CPU 使用权。
绝大多数工业控制、智能设备的主流架构。
(4)微内核架构
- 宏内核(普通 RTOS、Linux):调度、驱动、文件系统、网络协议全部运行在内核态; 优点运行速度快;缺点某个驱动出错,整个内核直接崩溃。
- 微内核原理 内核只保留最基础最小功能:任务调度、进程间通信 IPC、中断管理。 驱动、文件系统、网络、GUI 全部作为用户态独立服务进程。
- 优点:故障隔离,一个驱动崩溃不会导致整机死机、安全性高、可移植性强;
- 缺点:进程之间消息通信开销大,速度比宏内核慢;
- 适用场景:航空航天、轨道交通、医疗等高安全等级设备,例如 QNX。
2.2 嵌入式五层分层架构
自下至上顺序,答题严格按照顺序:
- 硬件层:处理器、存储器、各类外设、电源、时钟电路;
- BSP 板级支持包 + HAL 硬件抽象层;
- RTOS 操作系统内核层(调度、内存管理、设备驱动、协议栈、文件系统);
- 中间件层(通信组件、数据库、图形组件);
- 上层业务应用层。
2.3 嵌入式常用架构模式
- 事件驱动架构 依靠中断、消息事件触发任务;适合传感器、告警设备;优点响应速度快。
- 状态机架构 设备所有工作状态(待机、工作、告警、休眠),根据输入事件切换状态;非常适合工业控制器。
- 管道‑过滤器:数据流处理,音视频编码。
- 组件化架构(AUTOSAR 汽车电子):各个功能做成独立组件,组件之间标准化接口,可以插拔替换。
三、实时操作系统 RTOS 核心难点
3.1 硬实时与软实时
- 硬实时系统 任务截止时间是硬性指标,如果任务超时,直接引发灾难性故障;响应时间必须可预测。 例子:飞机飞控、汽车刹车控制系统、高压电网控制器、手术医疗设备。
- 软实时系统 尽可能满足时限,偶尔超时只会降低用户体验,不会发生事故; 例子:视频播放器、音频设备、人机显示屏。
关键概念:WCET 任务最坏情况下执行时间 架构设计的时候,必须计算每个任务最长运行耗时,用来做任务调度分析,硬实时系统必须分析 WCET。
3.2 五大任务调度算法
1、静态抢占式优先级调度
人为提前设置任务优先级;一旦有更高优先级任务就绪,立刻抢占 CPU。 缺点:容易出现优先级反转。
2、时间片轮转 RR
同等优先级任务,轮流分配固定时长 CPU 时间;适合多个人机交互任务。
3、RMS 速率单调调度【固定周期任务最优静态调度算法】
规则:任务周期越短,优先级越高 适用:周期性采集、定时控制任务;硬实时系统首选静态调度方案; 前提:CPU 总的任务利用率≤69%。
4、EDF 最早截止时间优先(动态优先级)
谁的任务截止时间最近,谁优先级最高,优先级运行过程动态变化; CPU 利用率理论上限可以到达 100%;硬实时动态调度首选。
5、LST 最低松弛度优先
松弛度 = 截止剩余时间 − 任务还需要运行的时长;松弛度越小优先级越高;多用于周期性任务。
3.3 优先级反转
1. 现象还原
- 现在有三个任务:高优先级 H、中优先级 M、低优先级 L
- L 正在运行,占用互斥锁;
- H 就绪需要获取同一把互斥锁,于是 H 被 L 阻塞;
- 此时 M 就绪;M 优先级高于 L,抢占 CPU 开始运行;
结果:最高优先级 H,被优先级更低的 M 无限期延后执行,就是优先级反转。
2. 两种标准解决方案(背诵)
- 优先级继承协议:当低优先级任务拿着锁的时候,临时将它的优先级提升到正在等待该锁的最高优先级任务;L 不会被 M 抢占;L 尽快释放锁,H 即可运行。
- 优先级天花板(上限)协议:每一把互斥锁设置天花板优先级(所有会竞争该锁任务的最高优先级);任务拿到锁之后立刻提升到天花板优先级。
答题万能话术:硬实时项目一定要使用优先级天花板协议规避优先级反转。
3.4 RTOS 任务同步通信方式对比
- 全局变量:最简单;缺点多任务并发访问会产生数据错乱,只适合简单标记;
- 互斥锁 mutex:专门保护临界区资源,禁止多个任务同时访问;
- 信号量:用于任务之间同步、资源计数;
- 消息队列:任务之间传递大数据,最主流通信方式;
- 事件标志组:等待多个事件触发;
- 管道、socket:用于流式数据、网络通信。
3.5 死锁
死锁四个必要条件(全部满足才会死锁)
- 互斥条件:资源同一时刻只能被一个任务占用;
- 请求保持:任务已经占有一把锁,再请求另一把锁;
- 不可剥夺:别人不能强行拿走已经占用的锁;
- 环路等待:A 等 B 资源,B 等 C 资源,C 等 A 资源,形成闭环。
破解死锁:破坏任意一条条件即可; 工程最常用:规定所有任务获取锁的固定顺序,破坏环路等待。
3.6 内存管理考点
- 静态内存分配(安全设备强制使用) 系统启动的时候一次性分配好内存,运行期间不再申请释放; 优点:没有内存碎片、运行时间确定、无内存泄漏;航空、汽车功能安全设备必须静态内存。
- 动态内存分配 malloc 运行时申请释放;隐患:内存碎片、执行时长不确定、内存泄漏;硬实时系统禁止频繁动态申请内存。
- 栈溢出:每个任务拥有独立栈,局部变量过大、递归太深栈溢出,直接造成程序崩溃; 解决:计算任务最大栈深度、设置栈检测、增大栈空间。
四、嵌入式架构‑六大非功能属性设计策略
1、实时性优化手段
- 合理划分任务,拆分为细粒度任务;
- 使用抢占式调度,EDF/RMS 调度算法;
- 缩短中断服务程序,中断里面只做标记,耗时业务交给普通任务;
- 关闭无关外设中断;
- 计算 WCET 最坏执行时间,评估 CPU 负载;
- 硬件加速,把计算交给 NPU、DMA 外设。
2、低功耗设计(软硬件双向措施)
软件层面
- CPU 使用休眠模式,空闲时进入低功耗档位;
- DVFS 动态电压频率调节:负载低的时候降低 CPU 主频和供电电压;
- 将轮询查询改成中断触发,CPU 不用循环检测外设;
- 闲置外设断电关闭;传感器定时唤醒,其余时间休眠;
- 优化算法,减少循环运算次数。
硬件层面
选用低功耗芯片、电源分区控制、降低总线时钟速率。
3、可靠性设计
- 看门狗 Watch‑Dog:程序卡死没有喂狗,硬件自动硬件复位;
- 软硬件冗余,关键控制使用双备份硬件;
- 上电自检、故障检测、异常复位;
- 数据校验 CRC、防止 Flash 存储数据出错;
- 冷热复位区分。
4、功能安全 & 信息安全
(1)功能安全(防止设备硬件软件故障引发危险)
- 汽车电子标准 ISO‑26262,ASIL‑A~ASIL‑D,D 等级最高安全;
- 航空标准 DO‑178C;
- 手段:FMECA 故障模式与影响分析、故障树分析、冗余、安全机制。
(2)信息安全(防止黑客攻击、固件篡改)
固件加密、程序分区只读、调试端口上锁、通信报文加密、访问权限管控、OTA 升级包签名校验,防止恶意升级固件。
5、可移植性
- BSP、HAL 硬件抽象层隔离硬件相关代码;
- 硬件相关代码集中封装,上层业务不直接操作寄存器;
- 使用标准统一 API。
6、可裁剪性
组件化模块化设计、条件编译、动态加载组件,不需要的功能直接编译阶段移除,节省内存。
五、嵌入式开发环境重点知识
- 交叉开发环境 宿主机(PC)、目标机(嵌入式硬件); 交叉编译器:专门生成对应嵌入式芯片机器码;普通编译器只能生成电脑 CPU 指令。
- BootLoader(U‑Boot) 启动流程:硬件初始化 → 初始化 RAM → 加载操作系统内核到内存 → 设置启动参数、跳转启动内核。
- 调试方式
- JTAG/SWD 硬件调试:断点调试、查看寄存器;硬件调试最高级;
- 串口打印日志;模拟器仿真调试。
- OTA 远程固件升级:设备在线更新程序,需要做升级校验、断电保护,升级中途断电不能变砖。
六、行业嵌入式架构标准
- AUTOSAR 汽车电子架构
- CP 经典平台:面向传统 ECU,OSEK 实时操作系统;分层、组件化;
- AP 自适应平台:面向车载高性能主控,支持 POSIX、服务化软件架构。
- DDS:分布式嵌入式实时数据分发服务,多用于军工、机器人多设备通信;
- 轻量化物联网协议:MQTT(发布订阅)、CoAP,适用于低带宽传感器设备。
七、论文题嵌入式架构
如果论文题目:论嵌入式系统架构设计 分段落结构
- 项目简介,说明硬件资源约束、实时性、功耗、安全需求;
- 需求分析,分析功能需求与非功能需求(实时、功耗、可靠、成本);
- 架构选型:对比前后台、宏内核 RTOS、微内核架构,说明为什么选用当前架构;
- 分层架构设计,逐层讲解 HAL、操作系统、中间件、业务层;
- 重点难点解决:例如解决优先级反转、低功耗优化、栈溢出、固件安全;
- 架构评估,使用 ATAM 架构权衡分析法评估架构优缺点;
- 总结不足和后续优化方向。