💡 一、嵌入式系统基本概念
1.1 核心特点
- 专用性强:面向特定应用,功能专一
- 可裁剪性:软硬件可根据需求精简
- 强实时性:对时间响应有严格要求
- 高可靠性:长时间稳定运行,故障率低
- 体积小:结构紧凑,嵌入到设备中
- 功耗低:适合电池供电场景
- 成本敏感:批量生产,价格敏感
- 软硬一体:软件为主,硬件为辅
1.2 嵌入式系统分类
按实时性分类
| 类型 | 特点 | 典型应用 | 响应时间要求 |
|---|---|---|---|
| 硬实时系统 | 必须在严格时限内完成响应,超时即失败 | 飞行控制、汽车ABS、核电站控制 | 微秒~毫秒级 |
| 软实时系统 | 允许偶尔超时,系统整体性能可接受 | 视频播放、网络通信、手机 | 毫秒~秒级 |
| 非实时系统 | 无严格时间约束 | 平板电脑、智能电视 | 无硬性要求 |
按安全性分类
故障可能导致人员伤亡、重大财产损失或环境破坏。需要严格的安全认证(如DO-178B航空软件标准、IEC 61508功能安全标准)。
例:航空电子、医疗设备、轨道交通信号系统
故障后果相对可控,不涉及生命安全。开发流程相对灵活。
例:家用电器、消费电子、娱乐设备
1.3 与通用计算机对比
| 对比项 | 嵌入式系统 | 通用计算机 |
|---|---|---|
| 设计目标 | 面向特定应用,专用性强 | 通用计算,功能全面 |
| 硬件资源 | 资源受限(CPU、内存、存储) | 资源丰富,可扩展 |
| 软件形态 | 代码固化在ROM/Flash中 | 安装在硬盘上 |
| 开发方式 | 交叉开发,需要专门工具 | 本地开发,工具丰富 |
| 人机交互 | 简单或无人机界面 | 丰富的GUI |
| 功耗要求 | 低功耗设计,电池供电 | 持续供电,功耗要求低 |
| 可靠性 | 高可靠性,长时间运行 | 一般可靠性 |
| 成本 | 成本敏感,批量优化 | 成本相对不敏感 |
🔧 二、嵌入式硬件基础
2.1 硬件系统组成
2.2 存储体系
| 层次 | 存储类型 | 特点 | 用途 |
|---|---|---|---|
| 第一层 | 寄存器 | 速度最快,容量最小(字节级) | CPU内部数据暂存 |
| 第二层 | Cache(高速缓存) | 速度快,容量小(KB~MB级) | 缓解CPU与主存速度差异 |
| 第三层 | 主存(SDRAM/SRAM) | 速度中等,容量中等(MB~GB级) | 程序运行空间 |
| 第四层 | Flash/ROM | 非易失,读快写慢 | 存储程序代码和常量 |
| 第五层 | 外存(SD卡/eMMC) | 容量大,速度慢 | 大容量数据存储 |
- 易失性存储器(RAM):断电后数据丢失。包括SRAM(静态,快但贵)和DRAM(动态,慢但便宜)
- 非易失性存储器(ROM/Flash):断电后数据保持。包括ROM、EPROM、EEPROM、NOR Flash、NAND Flash
2.3 常见总线
| 总线类型 | 全称 | 特点 | 应用场景 |
|---|---|---|---|
| I2C | Inter-Integrated Circuit | 两线制(SDA+SCL),半双工,速率100K~3.4Mbps | 传感器、EEPROM、RTC |
| SPI | Serial Peripheral Interface | 四线制,全双工,高速(可达50Mbps+) | Flash、LCD、ADC |
| UART | Universal Asynchronous Receiver/Transmitter | 异步串行,两线制(TX+RX) | 调试接口、模块通信 |
| USB | Universal Serial Bus | 高速串行,支持热插拔 | 外设连接、数据传输 |
| CAN | Controller Area Network | 多主结构,差分信号,可靠性高 | 汽车电子、工业控制 |
| Ethernet | 以太网 | 高速(10M~1Gbps+),标准化程度高 | 网络通信、工业以太网 |
⚙️ 三、嵌入式处理器分类
特点:功能强大的独立处理器芯片,需要外接存储器和外设接口。
典型代表:ARM Cortex-A系列、MIPS、PowerPC、x86
应用:智能手机、路由器、工控机、服务器
优势:处理能力强,可运行复杂操作系统(Linux、Android)
特点:将CPU、存储器、I/O接口集成在单一芯片上,即"单片化"。
典型代表:STM32、51单片机、PIC、AVR、ESP32
应用:家电控制、传感器节点、小型设备
优势:体积小、功耗低、成本低、开发简单
特点:针对数字信号处理优化,采用哈佛架构,支持MAC运算。
典型代表:TI TMS320系列、ADI SHARC
应用:音频处理、图像处理、雷达、通信基带
优势:编译效率高,执行速度快,适合实时信号处理
特点:大规模并行计算架构,擅长大批量简单计算。
典型代表:NVIDIA Jetson、Mali、Adreno
应用:图像渲染、AI推理、自动驾驶
优势:减少CPU依赖,加速图形和并行计算任务
3.1 片上系统(SoC)
信息系统核心的芯片集成,将关键部件集成在一块芯片上。如手机SoC集成CPU+GPU+Modem+ISP。
一个微小型系统,从确定系统功能开始,完成软硬件划分和设计的整个过程。强调系统级设计方法学。
| 芯片 | 厂商 | 架构 | 特点 | 典型应用 |
|---|---|---|---|---|
| 骁龙8 Gen3 | 高通 | ARM | 集成5G基带、AI引擎 | 旗舰手机 |
| Apple M系列 | 苹果 | ARM | 统一内存架构,高能效 | Mac、iPad |
| 瑞芯微RK3588 | 瑞芯微 | ARM | 8K视频、NPU集成 | 边缘AI、智能终端 |
| 全志V853 | 全志 | RISC-V+ARM | 低功耗、集成NPU | 智能摄像头 |
💻 四、嵌入式操作系统
4.1 EOS核心特点
- 可剪裁性:根据应用需求,移除不需要的功能模块
- 可移植性:支持多种硬件平台,BSP抽象层设计
- 强实时性:中断响应快,任务调度确定
- 强紧凑性:内核小(几KB~几百KB),资源占用少
- 高质量代码:经过严格测试,可靠性高
- 强定制性:可根据产品需求深度定制
- 标准接口:提供POSIX等标准API
4.2 常见嵌入式操作系统
| 操作系统 | 类型 | 特点 | 应用领域 |
|---|---|---|---|
| FreeRTOS | RTOS | 开源、小巧、可裁剪、支持多平台 | IoT、传感器、小型设备 |
| RT-Thread | RTOS | 国产开源、组件丰富、社区活跃 | IoT、消费电子、工业控制 |
| μC/OS | RTOS | 可抢占、代码开放、确定性好 | 工业控制、医疗设备 |
| VxWorks | RTOS | 商用、高可靠性、安全性高 | 航空航天、军事、通信 |
| QNX | RTOS | 微内核架构、高可靠性 | 汽车电子、医疗、轨道交通 |
| 嵌入式Linux | 非实时/软实时 | 开源、生态丰富、功能强大 | 智能手机、路由器、工控 |
| Android | 非实时 | 基于Linux、应用生态丰富 | 手机、平板、智能电视、车机 |
| HarmonyOS | 微内核RTOS | 分布式、微内核、跨设备 | 手机、IoT、智能穿戴、车机 |
⏱️ 五、实时操作系统(RTOS)
5.1 实时性指标
从中断发生到开始执行中断服务程序的时间。越短越好。
从一个任务切换到另一个任务所需的时间。通常微秒级。
从事件发生到系统完成响应的总时间。硬实时系统必须有上限。
5.2 调度算法
| 算法 | 原理 | 特点 | 适用场景 |
|---|---|---|---|
| 速率单调调度(RMS) | 静态优先级,周期越短优先级越高 | 开销小、可预测、理论成熟 | 周期性任务、硬实时系统 |
| 最早截止时间优先(EDF) | 动态优先级,截止时间越近优先级越高 | CPU利用率可达100% | 混合周期/非周期任务 |
| 最短空闲时间优先(LLF) | 动态优先级,空闲时间越短优先级越高 | 与EDF类似,但切换频繁 | 复杂实时系统 |
| 时间片轮转调度 | 同优先级任务轮流执行 | 公平、简单 | 同优先级多任务 |
| 抢占式优先级调度 | 高优先级任务可抢占低优先级 | 响应快、实时性好 | 大多数RTOS默认 |
🎯 考点提示
RMS调度可调度性判断:对于n个周期性任务,若总CPU利用率 U = Σ(Ci/Ti) ≤ n(2^(1/n) - 1),则可调度。当n→∞时,极限值约为0.693(即69.3%)。
EDF调度:只要CPU利用率≤100%,任务集就可调度。但实现复杂度高于RMS。
5.3 实时系统任务模型
Ready
Running
Blocked
↕ 挂起态(Suspended):任务被暂停,不在调度队列中
- 信号量(Semaphore):用于同步和互斥,分二值信号量和计数信号量
- 消息队列(Message Queue):任务间传递数据的异步机制
- 邮箱(Mailbox):单条消息的快速传递
- 事件标志组(Event Flags):多个事件的组合等待
- 共享内存:最高效的通信方式,需配合互斥机制
- 管道(Pipe):类似Unix管道,流式数据传递
5.4 优先级反转问题
✅ 解决方案一:优先级继承
当高优先级任务等待资源时,提升持有资源的低优先级任务的优先级到等待者的优先级。
优点:实现简单,开销小
缺点:只能解决单级反转
✅ 解决方案二:优先级天花板
任务获取资源时,立即提升优先级到可能使用该资源的所有任务中的最高优先级。
优点:预防性解决,避免死锁
缺点:需要预先知道资源使用情况
🏗️ 六、嵌入式软件架构
6.1 软件层次架构
| 层次 | 职责 | 关键组件 |
|---|---|---|
| 硬件层 | 提供物理计算资源 | CPU、内存、外设、总线 |
| BSP/HAL | 屏蔽硬件差异,提供统一接口 | 驱动程序、初始化代码、硬件配置 |
| 操作系统层 | 资源管理、任务调度、提供系统服务 | 内核、文件系统、网络协议栈、设备驱动框架 |
| 中间件层 | 提供通用服务,简化应用开发 | 数据库、GUI框架、通信协议、AI推理引擎 |
| 应用软件层 | 实现具体业务逻辑 | 用户应用程序、业务功能模块 |
6.2 嵌入式系统初始化流程
CPU核心、时钟、中断控制器
外设、GPIO、总线控制器
OS内核、任务调度、应用启动
初始化CPU核心,配置时钟系统,设置中断控制器,初始化内存控制器。这是最底层的初始化,直接操作硬件寄存器。
初始化板载外设(UART、SPI、I2C等接口),配置GPIO,初始化存储设备。通常由BSP完成。
加载操作系统内核,初始化文件系统和网络协议栈,创建任务并启动调度器,最后启动应用程序。
6.3 嵌入式软件设计要点
- 静态编译:编译时移除未使用代码
- 动态库:运行时按需加载模块
- 控制函数流程:条件编译、配置宏
- 数据驱动:通过配置文件控制行为
- 静态编译:编译时参数化配置
- 配置表:运行时查表执行
- 表驱动:查表代替计算,减少运行时开销
- 配置:预先计算,运行时直接使用
- 汇编优化:关键路径使用汇编语言
- 编码标准:MISRA C、CERT C等规范
- 安全保障:看门狗、内存保护、栈溢出检测
- 容错技术:冗余设计、错误检测与恢复
🛠️ 七、嵌入式系统开发
7.1 开发模型
7.2 开发工具链
| 工具类型 | 功能 | 常用工具 |
|---|---|---|
| 交叉编译器 | 在宿主机上生成目标机代码 | arm-none-eabi-gcc、arm-linux-gnueabihf-gcc |
| 调试器 | 远程调试目标机程序 | GDB + OpenOCD、J-Link、ST-Link |
| 仿真器 | 模拟目标机运行环境 | QEMU、Renode |
| IDE | 集成开发环境 | Keil MDK、IAR、STM32CubeIDE、VS Code + PlatformIO |
| 烧录工具 | 将程序写入目标机Flash | J-Flash、STM32 ST-LINK Utility |
| 版本控制 | 代码管理 | Git、SVN |
| 构建系统 | 自动化编译链接 | Make、CMake、SCons |
7.3 调试方法
通过硬件调试接口,实现断点、单步、变量查看等。最常用的调试方式。
通过UART输出调试信息。简单有效,是最基础的调试手段。
分析总线时序、协议数据。用于调试通信接口问题。
观察模拟信号波形。用于调试电源、时钟、信号完整性。
在PC上模拟目标环境。适合早期开发和算法验证。
保存崩溃现场,离线分析。用于定位难以复现的问题。
🌏 八、鸿蒙操作系统(HarmonyOS)
8.1 系统架构
Ability、UI框架、应用服务
Ability框架、UI框架、多媒体框架
分布式服务、安全服务、AI服务
微内核 + Linux内核(多内核架构)
8.2 核心特性
- 分布式软总线:设备自动发现、组网
- 分布式数据管理:跨设备数据同步
- 分布式任务调度:任务跨设备迁移
- 一次开发,多端部署:统一开发框架
- 安全性:内核攻击面小,形式化验证
- 可靠性:服务隔离,故障不扩散
- 可扩展性:模块化,易于移植
- 确定性:任务调度可预测
8.3 微内核 vs 宏内核对比
| 对比项 | 宏内核(Linux) | 微内核(鸿蒙) |
|---|---|---|
| 内核结构 | 所有服务在内核空间运行 | 仅基本服务在内核,其他在用户空间 |
| 性能 | 高,系统调用开销小 | 相对低,进程间通信开销大 |
| 稳定性 | 内核崩溃导致系统崩溃 | 服务崩溃可恢复,不影响内核 |
| 安全性 | 攻击面大 | 攻击面小,形式化验证可行 |
| 可移植性 | 移植复杂 | 移植容易,仅需适配微内核 |
| 开发难度 | 调试相对简单 | 分布式调试复杂 |
| 典型代表 | Linux、Windows | QNX、鸿蒙、seL4、Fuchsia |
🎯 九、考试重点与易错点
📝 高频考点
- 嵌入式系统定义与特点:专用性、可裁剪性、实时性、可靠性
- 处理器分类:MPU、MCU、DSP、GPU、SoC的区别与应用
- 实时操作系统:RTOS特点、调度算法(RMS、EDF)、优先级反转
- 微内核 vs 宏内核:结构、优缺点、典型代表
- 嵌入式软件架构:层次结构、BSP/HAL作用、初始化流程
- 鸿蒙操作系统:微内核架构、分布式能力
- MCU vs MPU:MCU是单片机,集成度高;MPU需要外接存储和外设
- 硬实时 vs 软实时:硬实时必须满足时限,软实时允许偶尔超时
- RMS vs EDF:RMS静态优先级,EDF动态优先级;RMS利用率上限约69%,EDF可达100%
- 优先级继承 vs 优先级天花板:继承是被动提升,天花板是主动提升
- 片级→板级→系统级初始化:顺序不能颠倒
- MPU = Main Processing Unit:主处理器,功能强
- MCU = Micro Controller Unit:微控制器,集成高
- DSP = Digital Signal Processor:数字信号处理专用
- SoC = System on Chip:系统级芯片,集成全
- RMS = Rate Monotonic:速率(周期)单调
- EDF = Earliest Deadline First:最早截止时间
💡 公式速记
RMS可调度性条件:U = Σ(Ci/Ti) ≤ n(21/n - 1)
- n=1: U ≤ 100%
- n=2: U ≤ 82.8%
- n=3: U ≤ 78.0%
- n→∞: U ≤ 69.3%
EDF可调度性条件:U = Σ(Ci/Ti) ≤ 100%
| 题型 | 考点 | 解题要点 |
|---|---|---|
| 选择题 | 嵌入式系统特点 | 抓住"专用"、"可裁剪"、"实时"关键词 |
| 选择题 | 处理器类型选择 | MCU适合简单控制,MPU适合复杂系统,DSP适合信号处理 |
| 选择题 | 调度算法判断 | 计算CPU利用率,对比RMS上限或检查EDF条件 |
| 案例题 | 系统架构设计 | 画出层次架构图,说明各层职责和接口 |
| 案例题 | 实时性分析 | 分析任务周期、执行时间、截止时间,判断可调度性 |
| 论文题 | 嵌入式系统开发经验 | 结合项目,说明架构选型、实时性保证、可靠性设计 |