一、嵌入式系统是什么1. 通俗理解你可以把嵌入式系统理解成藏在设备里面的“专用小电脑”。它不是像 PC 那样什么都能干而是专门为了完成某个任务而设计的。比如智能空调里的控制系统 汽车里的发动机控制单元 智能手环里的计步和心率系统 洗衣机里的控制板 路由器里的系统 工业设备里的控制器这些设备内部都有“嵌入式系统”。2. 标准定义嵌入式系统是以特定应用为中心以计算机技术为基础软硬件可裁剪、可配置集成在一起的专用计算机系统。关键词特定应用 计算机技术 软硬件一体 可裁剪 可配置 专用系统也就是说它不是通用计算机而是“专机专用”。二、嵌入式系统由哪些部分组成嵌入式系统一般由 5 个部分组成1. 嵌入式处理器 2. 相关支撑硬件 3. 嵌入式操作系统 4. 支撑软件 5. 应用软件1. 嵌入式处理器处理器相当于嵌入式系统的“大脑”。它负责执行程序、处理数据、控制设备。嵌入式处理器通常要求体积小 功耗低 可靠性高 适应恶劣环境处理器的三个等级根据使用环境和工艺嵌入式处理器可以分为等级工作温度范围应用场景民用级0℃70℃普通消费电子产品工业级-40℃85℃工业控制设备军用级-55℃150℃军工、航天、特殊装备为什么分等级因为嵌入式系统经常工作在恶劣环境中例如高温 寒冷 电磁干扰 震动 烟尘 潮湿比如家用路由器民用级即可 工厂控制器工业级更合适 导弹、卫星、军用雷达军用级2. 相关支撑硬件除了处理器以外还需要很多硬件支持。例如存储器 定时器 总线 I/O 接口 电源 时钟 传感器 通信接口如果把处理器比作大脑那么这些支撑硬件就是记忆器官存储器 时间器官定时器 神经系统总线 手脚接口I/O 接口 能量来源电源 心跳节律时钟3. 嵌入式操作系统嵌入式操作系统是管理硬件和软件资源的系统软件。它和 Windows、Linux 这类通用操作系统不同通常要求实时性 可裁剪性 安全性 可靠性 低功耗例如FreeRTOS RT-Thread uC/OS VxWorks QNX 嵌入式 Linux4. 支撑软件支撑软件是帮助应用开发的软件层。它通常运行在操作系统之上以“库”的形式被应用软件调用。例如通信协议栈 图形库 数据库 文件库 网络库 算法库通俗理解支撑软件就是给应用软件提供现成能力的“工具箱”。5. 应用软件应用软件是为了完成某个具体任务而开发的程序。例如空调温度控制程序 汽车刹车控制程序 智能手环心率检测程序 无人机飞控程序 医疗仪器数据采集程序嵌入式系统最终的价值主要体现在应用软件上。三、嵌入式系统有什么特点可以记成下面几个关键词专用 融合 软硬一体 资源少 固化 专用工具 小便宜快 安全可靠1. 专用性强嵌入式系统通常不是通用的而是面向特定应用。例如电饭煲嵌入式系统专门控制煮饭 汽车 ABS 系统专门控制刹车 智能电表专门采集电量它往往还会连接多种传感器例如温度传感器 压力传感器 加速度传感器 光传感器 湿度传感器2. 技术融合嵌入式系统不是单一技术而是多种技术的结合。它融合了计算机技术 通信技术 半导体技术 电子技术 自动控制技术 具体行业应用技术例如一辆智能汽车里面就涉及发动机控制 刹车控制 车载网络 传感器融合 通信模块 显示屏 操作系统这些技术紧密结合很难拆开。3. 软硬一体软件为主嵌入式系统既有硬件也有软件。但现代嵌入式系统越来越依赖软件来实现功能。例如同样一块硬件 通过不同软件配置 可以实现不同功能所以嵌入式设计强调在通用版本基础上裁剪冗余 高效设计 按需配置4. 资源受限嵌入式系统通常资源很少。可能只有很小的 RAM 很小的 Flash 较低的 CPU 频率 有限的功耗预算例如PC 内存可能是 16GB 嵌入式设备内存可能只有 64KB 或 1MB所以嵌入式开发必须非常节省资源。5. 程序代码固化在 ROM 中嵌入式系统的程序通常不放在硬盘里而是固化在ROM Flash EEPROM中。这样做的好处是上电即可运行 执行速度快 可靠性高 不容易被随意修改比如洗衣机一通电就开始运行程序不需要像电脑一样先加载操作系统很久。6. 需要专门开发工具和环境嵌入式系统开发不是直接在目标设备上写代码。通常是在电脑上写代码 编译成目标设备能运行的程序 下载到设备中运行调试所以需要专门开发工具。7. 体积小、价格低、实时性强嵌入式系统通常要求体积小 价格低 功耗低 性能价格比高 系统配置要求低 实时性强例如智能手表必须小 轻 省电 便宜 响应快8. 对安全性和可靠性要求高很多嵌入式系统一旦出错后果很严重。例如汽车刹车系统失效 飞机控制系统故障 医疗设备停止工作 工业机械失控所以嵌入式系统必须高度重视安全性 可靠性 稳定性 容错能力四、嵌入式系统怎么分类1. 按是否要求实时性分类可以分为嵌入式实时系统 嵌入式非实时系统2. 什么是实时系统实时系统是指必须在规定时间内完成功能并做出响应的系统。注意实时不等于“快”。实时的关键是必须按时完成 超时就算失败例如汽车安全气囊必须在碰撞后几毫秒内弹出 如果晚了几秒即使最终弹出了也没有意义3. 强实时和弱实时实时系统又可以分为类型含义例子强实时系统 Hard Real-Time必须严格在规定时间内完成超时会导致严重后果安全气囊、飞行控制、刹车系统弱实时系统 Weak Real-Time尽量及时响应但偶尔延迟可以接受视频播放、网页响应、普通交互系统强实时系统例子汽车 ABS 飞机飞控 导弹制导 工业运动控制如果超时可能发生事故。弱实时系统例子智能音箱响应 视频播放 电子相册 普通触摸屏界面稍微慢一点通常不会造成严重后果。4. 按安全性要求分类可以分为安全攸关系统 非安全攸关系统5. 什么是安全攸关系统安全攸关系统是指如果系统功能不正确或者失效会导致人员伤亡、财产损失等严重后果的系统。例如飞机控制系统 汽车刹车系统 医疗监护设备 核电站控制系统 轨道交通信号系统这些系统出错可能造成生命危险所以属于安全攸关系统。五、嵌入式软件的组成和特点1. 目标机和宿主机这是嵌入式开发中非常重要的概念。1. 目标机目标机就是最终运行程序的设备。例如开发一个智能手表程序 智能手表就是目标机2. 宿主机宿主机就是用来开发程序的电脑。例如你在 Windows 或 Linux 电脑上写代码 这台电脑就是宿主机3. 两者关系通常宿主机开发程序 目标机运行程序它们之间可以通过串口 网络 JTAG 接口 USB连接。4. 为什么需要交叉开发因为宿主机和目标机的处理器架构往往不同。例如宿主机是 x86 架构电脑 目标机是 ARM 架构设备电脑不能直接运行 ARM 程序所以需要交叉编译器 交叉链接器 源代码调试器交叉编译器把源代码编译成目标机可以运行的程序。例如在 x86 电脑上编译出 ARM 程序交叉链接器把多个目标文件链接成可执行程序。源代码调试器用于调试目标机上的程序。六、嵌入式软件的层次结构嵌入式系统从细节上可以分为 5 层1. 硬件层 2. 抽象层 3. 操作系统层 4. 中间件层 5. 应用层1. 硬件层硬件层是最底层。包括处理器 存储器 总线 I/O 接口 电源 时钟它是整个系统的物理基础。2. 抽象层抽象层的作用是把底层硬件封装起来让上层不用直接操作复杂硬件。主要包括HAL硬件抽象层 BSP板级支持包HAL硬件抽象层HAL 是 Hardware Abstraction Layer。它为上层提供统一的硬件访问接口。例如上层只需要调用“读温度” 不用关心温度传感器接在哪个 I2C 地址BSP板级支持包BSP 是 Board Support Package。它是一种硬件驱动软件为操作系统提供硬件管理支持。例如初始化 CPU 初始化内存 初始化串口 初始化中断 初始化时钟可以理解为BSP 是让操作系统在这块具体板子上跑起来的“适配包”。3. 操作系统层操作系统层包括嵌入式操作系统 文件系统 图形用户接口 网络系统 通用组件这些模块通常可以配置。例如一个简单设备可能只需要内核 任务调度 定时器而一个复杂设备可能需要文件系统 网络协议栈 图形界面 USB 支持4. 中间件层中间件是连接不同应用或不同系统组件的桥梁。常见中间件有嵌入式数据库 OpenGL 消息中间件 Java 中间件 虚拟机 VM DDS/CORBA Hadoop通俗理解中间件就是“公共功能平台”让应用不用重复造轮子。5. 应用层应用层是最终完成业务功能的软件。例如温度控制程序 电机控制程序 图像识别程序 通信管理程序七、嵌入式软件的主要特点可以记成可剪裁 可配置 强实时 安全性 可靠性 高确定性1. 可剪裁性嵌入式系统资源有限不能把所有功能都放进去。所以系统功能必须能剪裁。例如不需要图形界面就去掉 不需要网络功能就去掉 不需要文件系统就去掉实现方法包括静态编译 动态库 控制函数流程2. 可配置性系统应该可以根据不同产品需求进行配置。例如同一套软件 通过不同配置表 适配不同型号设备实现方法包括数据驱动 静态编译 配置表3. 强实时性很多嵌入式系统必须及时响应。例如电机控制必须在固定周期内完成 刹车系统必须立即响应实现方法包括表驱动 配置 静态和动态结合 汇编语言优化4. 安全性 Safety安全性是指系统不能造成危险。例如医疗设备不能误输出高电压 汽车系统不能错误刹车或错误加速设计方法包括编码标准 安全保障机制 FMECA 故障模式、影响及危害性分析FMECA 是什么FMECA 是故障模式、影响及危害性分析简单说就是提前分析哪里可能坏 坏了有什么影响 危害有多严重 怎么预防5. 可靠性可靠性是指系统长时间稳定工作的能力。例如工业设备连续运行一年不出错 汽车电子系统多年稳定工作设计方法包括容错技术 余度技术 鲁棒性设计容错技术系统出现部分错误时仍能继续工作。余度技术关键部分做备份。例如双控制器 三模冗余一个坏了另一个还能接管。鲁棒性设计系统在异常输入、异常环境下也不容易崩溃。6. 高确定性高确定性是指系统行为可预测。例如什么情况下做什么响应 多长时间完成 结果是否一致设计方法包括静态分配资源 越界检查 状态机 静态任务调度八、嵌入式系统低功耗设计嵌入式设备经常由电池供电所以低功耗很重要。例如智能手表 传感器节点 远程监测设备低功耗设计主要技术有编译优化技术 软硬件协同设计 算法优化1. 编译优化通过编译器优化代码让程序执行更快、更省电。例如减少指令数 优化循环 减少内存访问2. 软硬件协同设计有些功能用软件做很慢、很耗电可以用硬件加速。例如加密算法用硬件加密模块 图像处理用 GPU 或专用加速器3. 算法优化算法本身要高效。例如减少不必要计算 降低采样频率 使用更简单但够用的算法九、嵌入式系统硬件体系结构传统嵌入式系统主要由以下部件组成嵌入式微处理器 存储器 总线逻辑 定时/计数器 看门狗电路 I/O 接口 外部设备十、嵌入式微处理器分类这一部分考试很容易考。可以分为MPU MCU DSP GPU SoC1. MPU微处理器MPU 是 Microprocessor Unit。它通常只是处理器芯片需要外接存储器和外设。特点集成度相对较低 需要外围电路 可靠性高 功能较强常见例子Am186/88 386EX SC-400 PowerPC 68000 MIPS ARM 系列可以理解为MPU 更像“通用处理器芯片”需要搭配电路板使用。2. MCU微控制器MCU 是 Microcontroller Unit也叫单片机。它把很多东西集成在一个芯片里。例如CPU RAM ROM/Flash 定时器 I/O 接口 ADC UART SPI I2C特点单片化 体积小 功耗低 成本低 可靠性高常见例子MCS-51 系列 MCS-96/196/296 MC68HC05/11/12/16 ARM Cortex-M 系列可以理解为MCU 是一个“芯片级的小电脑”。MPU 和 MCU 的简单区别类型集成度外部器件适合场景MPU较低需要较多外围芯片复杂系统、高性能控制MCU很高外围较少即可工作小型控制、低成本设备3. DSP数字信号处理器DSP 是 Digital Signal Processor。它专门用于高速数字信号处理。特点采用哈佛结构 适合大量数据运算 适合乘加运算 适合实时信号处理常见应用音频处理 语音处理 图像处理 通信信号处理 雷达信号处理常见系列TMS320C2000 TMS320C5000 TMS320C6000 TMS320C8000 DSP56000可以理解为DSP 是专门做数学运算的“高速计算处理器”。4. GPU图形处理器GPU 是 Graphics Processing Unit。它最初用于图形处理现在也大量用于 AI 和深度学习。特点浮点运算能力强 多核并行计算能力强 适合大规模数据并行处理常见应用图形渲染 游戏 图像处理 深度学习 人工智能训练和推理可以理解为GPU 是擅长“同时做很多简单计算”的处理器。5. SoC片上系统SoC 是 System on Chip。它把很多功能集成在一个芯片里。例如CPU GPU DSP 内存控制器 存储器 接口控制器 IP 核还可能包含操作系统 用户软件常见例子手机芯片 智能电视芯片 车载芯片 树莓派使用的 Broadcom 芯片可以理解为SoC 是“一个芯片就是一个完整系统”。十一、存储器分类存储器是嵌入式系统的重要组成部分。主要分为RAM随机存取存储器 ROM只读存储器1. RAM随机存取存储器RAM 的特点可读可写 掉电后数据丢失 需要持续供电RAM 分为DRAM SRAM1. DRAM动态随机存取存储器DRAM 用电容存储信息。特点集成度高 容量大 成本低 速度较慢 需要定期刷新常用作主存例如电脑内存条很多就是 DRAM。2. SRAM静态随机存取存储器SRAM 用晶体管自锁方式保存状态。特点速度快 不需要刷新 集成度低 容量小 成本高常用作高速缓存 CacheDRAM 和 SRAM 对比类型速度容量成本是否刷新常见用途DRAM较慢大低需要刷新主存SRAM快小高不需要刷新Cache2. ROM只读存储器ROM 的特点掉电后数据不丢失 通常用于存放固件、程序、常量教材中提到ROM 读取速度比 RAM 快这里考试按教材理解即可。ROM 常见类型MROM PROM EPROM EEPROM Flash1. MROM掩膜型只读存储器特点制造时通过掩膜写入数据 适合大批量生产 成本低 数据不可修改缺点一旦做出来就不能改适合程序固定、大批量生产的产品2. PROM可编程只读存储器特点可以用专用设备一次性烧录 适合少量制造缺点只能写一次3. EPROM可擦可编程只读存储器特点可以写入 可以用紫外线擦除 然后重新写入缺点擦除不方便4. EEPROM电可擦可编程只读存储器特点可以通过电压擦除和重写 比 EPROM 方便缺点擦除速度较慢5. Flash快闪存储器Flash 是现在非常常见的存储器。特点可以联机擦写 擦写次数较多 速度较快缺点相对其他 ROM读取速度可能较慢常见应用U 盘 固态硬盘 嵌入式程序存储 手机存储ROM 类型速记类型是否可改擦除方式特点MROM不可改不能改出厂固定大批量便宜PROM一次写入不能擦少量制造EPROM可擦写紫外线可重复写但不方便EEPROM可擦写电压电擦除速度较慢Flash可擦写电压擦写快应用广十二、总线逻辑总线是各个硬件之间传输信息的公共通道。1. 按传输信息种类分类总线可以分为数据总线 地址总线 控制总线数据总线传输实际数据。例如CPU 读取传感器数值 CPU 向存储器写入数据地址总线指定访问哪个存储单元或哪个设备。例如CPU 要访问 RAM 中地址 0x1000 的数据控制总线传输控制信号。例如读信号 写信号 中断请求 时钟信号 复位信号2. 按连接部件分类可以分为片内总线 系统总线/板级总线 局部总线 通信总线片内总线连接芯片内部各元件。例如CPU 内部 ALU、寄存器、Cache 之间的连接系统总线或板级总线连接计算机系统的核心组件。例如CPU 内存 I/O 控制器局部总线连接局部少数组件。例如某些高速外设接口。通信总线主机连接外设的总线。例如USB UART SPI I2C CAN3. 按数据传输方向分类可以分为单工总线 双工总线双工总线又分为半双工 全双工单工总线只能一个方向传输。例如A → B不能反向。半双工总线可以双向传输但不能同时。例如对讲机一方说话时另一方不能同时说。全双工总线可以同时双向传输。例如电话双方可以同时说话。4. 按信号类型分类可以分为并行总线 串行总线并行总线同时传输多位数据。例如8 位、16 位、32 位数据线同时传优点一次传输数据多缺点线多 一致性要求高 传输距离较近串行总线一位一位传输数据。例如USB UART SPI I2C优点线少 距离可以较远 成本低缺点同一时刻传输位数少但现代高速串行总线速度也可以非常高。十三、看门狗电路看门狗是嵌入式系统中非常重要的安全机制。1. 看门狗是什么看门狗是一种系统恢复机制。它的作用是防止程序跑飞、死锁或卡死。2. 通俗理解你可以把看门狗想象成一只“值班狗”。程序正常运行时必须定期去“喂狗”。如果程序卡死了忘记喂狗看门狗就会叫。看门狗叫了以后通常会重启 MCU 或者触发中断3. 看门狗组成看门狗主要由输入端 寄存器 计数器 狗叫模块组成。输入端程序通过输入端“喂狗”。寄存器用于设置看门狗参数。例如超时时间 复位方式 中断方式计数器计算是否超时。狗叫模块超时后决定如何处理。常见处理方式产生中断 系统复位 重启 MCU4. 看门狗工作流程正常情况程序运行 定期喂狗 计数器清零 不会超时异常情况程序死锁 忘记喂狗 计数器超时 触发复位 系统重启十四、安全攸关软件的安全性设计1. 什么是安全攸关软件IEEE 定义安全攸关软件是“用于一个系统中可能导致不可接受的风险的软件”。通俗说如果这个软件出错可能造成严重事故那它就是安全攸关软件。例如飞机飞控软件 汽车刹车软件 医疗设备控制软件 核电控制软件2. DO-178B 标准DO-178B 是机载软件相关标准。它的目的是为机载系统和设备的软件提供指导使软件能够在满足适航安全性要求的情况下完成预期功能。简单说飞机上的软件不能随便写 必须按照严格流程开发、验证和管理3. DO-178B 的软件生命周期DO-178B 将软件生命周期分为三大过程1. 软件计划过程 2. 软件开发过程 3. 软件综合过程1. 软件计划过程主要解决怎么做 按什么标准做 谁来做 如何验证2. 软件开发过程软件开发过程又分为 4 个子过程软件需求过程 软件设计过程 软件编码过程 集成过程可以理解为先明确需求 再进行设计 然后写代码 最后集成3. 软件综合过程软件综合过程又分为 4 个子过程软件验证过程 软件配置管理过程 软件质量保证过程 审定联络过程软件验证过程验证软件是否满足需求是否正确。软件配置管理过程管理版本、修改、文档和代码变更。软件质量保证过程保证开发过程符合规范。审定联络过程与审查、认证机构进行沟通和审定。4. DO-178B 软件安全等级DO-178B 根据软件在系统中的重要程度将软件安全等级分为 AE 五级。等级影响程度含义A灾难级软件失效可能导致灾难性后果B危害级软件失效可能造成严重危害C严重级软件失效会造成较严重后果D不严重级软件失效影响较小E没有影响级软件失效没有影响举例理解系统可能等级飞机飞行控制系统A发动机控制系统A 或 B机载导航显示B 或 C客舱娱乐系统D 或 E十五、整体知识框架总结可以把这一章内容整理成一张大图嵌入式系统 │ ├── 定义 │ └── 以特定应用为中心的专用计算机系统 │ ├── 组成 │ ├── 嵌入式处理器 │ ├── 支撑硬件 │ ├── 嵌入式操作系统 │ ├── 支撑软件 │ └── 应用软件 │ ├── 特点 │ ├── 专用性强 │ ├── 技术融合 │ ├── 软硬一体 │ ├── 资源受限 │ ├── 程序固化 │ ├── 专门开发工具 │ ├── 小、便宜、实时性强 │ └── 安全可靠要求高 │ ├── 分类 │ ├── 实时系统 │ │ ├── 强实时 │ │ └── 弱实时 │ └── 非实时系统 │ ├── 安全性分类 │ ├── 安全攸关系统 │ └── 非安全攸关系统 │ ├── 嵌入式软件 │ ├── 硬件层 │ ├── 抽象层 │ ├── 操作系统层 │ ├── 中间件层 │ └── 应用层 │ ├── 硬件体系结构 │ ├── 处理器 │ │ ├── MPU │ │ ├── MCU │ │ ├── DSP │ │ ├── GPU │ │ └── SoC │ ├── 存储器 │ │ ├── RAM │ │ │ ├── DRAM │ │ │ └── SRAM │ │ └── ROM │ │ ├── MROM │ │ ├── PROM │ │ ├── EPROM │ │ ├── EEPROM │ │ └── Flash │ ├── 总线 │ │ ├── 数据总线 │ │ ├── 地址总线 │ │ ├── 控制总线 │ │ ├── 片内总线 │ │ ├── 系统总线 │ │ ├── 局部总线 │ │ └── 通信总线 │ └── 看门狗 │ └── 安全攸关软件 ├── IEEE 定义 └── DO-178B ├── 软件计划过程 ├── 软件开发过程 ├── 软件综合过程 └── AE 安全等级十六、考试高频重点如果这是为了考试可以重点记下面这些1. 嵌入式系统定义关键词特定应用 计算机技术 软硬件可裁剪 专用计算机系统2. 嵌入式系统组成处理器 支撑硬件 操作系统 支撑软件 应用软件3. 处理器等级温度民用级070℃ 工业级-4085℃ 军用级-55150℃4. 实时系统定义在规定时间内完成功能并做出响应5. 强实时和弱实时强实时超时会导致严重后果 弱实时偶尔延迟可以接受6. 安全攸关系统失效会导致人员伤亡或财产损失7. 宿主机和目标机宿主机开发环境 目标机运行环境8. 交叉开发工具交叉编译器 交叉链接器 源代码调试器9. 嵌入式软件层次硬件层 抽象层 操作系统层 中间件层 应用层10. HAL 和 BSPHAL硬件抽象层 BSP板级支持包11. 处理器分类MPU MCU DSP GPU SoC12. 存储器分类RAMDRAM、SRAM ROMMROM、PROM、EPROM、EEPROM、Flash13. 总线分类数据总线 地址总线 控制总线以及片内总线 系统总线 局部总线 通信总线14. 看门狗作用防止程序跑飞或死锁 超时不喂狗就复位15. DO-178B 等级A灾难级 B危害级 C严重级 D不严重级 E没有影响级十七、最简记忆版你可以用下面这段话快速记住整段内容嵌入式系统是面向特定应用的专用计算机系统由处理器、支撑硬件、操作系统、支撑软件和应用软件组成。它的特点是专用性强、资源受限、软硬件结合、程序固化、可靠性高并常具有实时性。嵌入式系统可分为实时系统和非实时系统实时系统又分为强实时和弱实时从安全性看可分为安全攸关系统和非安全攸关系统。嵌入式软件开发通常在宿主机上完成通过交叉编译工具生成目标机可执行程序。软件结构包括硬件层、抽象层、操作系统层、中间件层和应用层。硬件体系结构包括处理器、存储器、总线、定时器和看门狗等。处理器包括 MPU、MCU、DSP、GPU、SoC存储器包括 RAM 和 ROM总线按功能分为数据、地址和控制总线。看门狗用于程序异常时自动恢复。安全攸关软件失效可能导致严重后果DO-178B 将软件安全等级分为 AE 五级A 级最严重E 级无影响。