1、异常与中断 

一、核心总纲

异常 = CPU 正常执行流被强制打断的事件,核心分 2 大类:

  • 同步异常:由 CPU 当前执行的指令直接触发,和指令强绑定
  • 异步异常(中断):由外部事件触发,和当前执行指令无关

二、同步异常(3 类,速记:陷、故、终)

表格

类型 核心特点 记忆点
陷阱 主动触发、可恢复,返回下一条指令 主动调用,如系统调用、断点调试
故障 被动出错、可修复,返回当前指令重跑 指令跑错,如缺页、权限违规
终止 致命错误、不可恢复,直接终止程序 硬件崩了,救不回来

三、异步异常(中断)2 大类

  1. 可屏蔽中断(IRQ):可通过开关关闭,绝大多数普通外设中断(串口、定时器、按键等)都属于这类
  2. 不可屏蔽中断(NMI):关不掉、优先级最高,仅用于掉电、致命硬件错误等极端紧急事件

四、中断核心规则(2 个)

  1. 中断优先级:给中断分等级,多中断同时触发时,优先级高的先响应
  2. 中断嵌套:高优先级中断可打断正在执行的低优先级中断,前提是开启了总中断

2、嵌入式系统存储体系 

一、核心总纲

嵌入式存储体系的核心目标:平衡速度、容量、成本三大矛盾,解决 CPU 运算快、存储访问慢的性能瓶颈,核心由 3 部分构成:存储器层级结构、Cache、MMU。


二、存储器系统的层次结构

核心金字塔层级(从上到下)

表格

层级 核心特点 记忆点
CPU 寄存器 速度最快、容量最小、成本最高 离 CPU 最近,随取随用
Cache(高速缓存)(SRAM) 速度极快、容量极小 CPU 和主存之间的高速中转站
主存(RAM/SDRAM) 速度中等、容量中等,掉电丢数据 程序运行时的临时存放地
外存(Flash/EMMC/SD 卡) 速度最慢、容量最大、成本最低,掉电不丢数据 固件、程序、数据的永久仓库

一句话记忆:越靠近 CPU,越快越小越贵;层级互补,用最低成本拉满整体访问性能。

三、高速缓存 Cache

  1. 核心作用:填平 CPU 运算速度和主存访问速度的巨大差距,大幅提升系统运行效率。
  2. 核心原理:基于局部性原理
    • 时间局部性:刚用过的数据,大概率很快会再用
    • 空间局部性:用到一个数据,它相邻的数据大概率也会用到
  3. 记忆点:提前把 CPU 常用的数据缓存起来,让 CPU 不用每次都去慢的主存里找;硬件自动管理,对程序员透明,无需手动操作。

四、内存管理单元 MMU

  1. 核心定位:操作系统内存管理的核心硬件支撑,是跑 Linux 等复杂 OS 的必备硬件。
  2. 两大核心功能
    • 地址翻译:完成虚拟地址→物理地址的转换,让每个程序都有独立的虚拟地址空间,互不干扰,不用关心物理内存的实际分布。
    • 内存保护:给内存块设置读写执行权限,防止程序越界、非法访问,避免一个程序崩溃搞垮整个系统。
  3. 记忆点:MMU 是虚拟内存、多进程隔离的硬件基石,没有它,复杂操作系统根本跑不起来。

3、ROM 的种类与选型

ROM(Read-Only Memory,只读存储器)是非易失性存储器,断电后数据不丢失,主要用于存储固定程序 / 参数。

联想记忆法

 ROM 类(手机存储空间)

  PROM:一次性可编程,谐音记「P = 碰一次,终身定」

  EPROM:紫外线擦除,记「E = 紫外线 Erase,要晒才能擦」

  EEPROM:电可擦除,支持字节级读写

常见 ROM 类型对比

类型 典型特征 关键区别
PROM 可编程只读存储器,出厂时为空白,用户可一次性写入数据,写入后无法修改 只能烧录一次,不可擦除,成本低但灵活性差
EPROM 可擦除可编程只读存储器,需用紫外线照射芯片窗口擦除数据,擦除后可重新编程 擦除需要外部紫外线设备,操作不便,且擦除次数有限
E²PROM(EEPROM) 电可擦除可编程只读存储器,可通过电信号按字节擦除和改写数据,无需专用设备 可在线擦写,支持单字节操作,擦写次数远高于 EPROM,成本相对较高

4、Flash Memory 的种类与选型

Flash Memory(闪存)是基于浮栅晶体管的非易失性存储器,兼具 ROM 的断电保存和 RAM 的可擦写特性,分为 NOR 和 NAND 两种主流架构。

联想记忆法:

NOR:Read not wait :读不需要等,说明读快

NOR vs NAND Flash 对比

特性 NOR Flash  NAND Flash
读写方式 支持随机地址访问,可直接执行代码(XIP),读速度快 按页 / 块读写,不支持直接执行代码,需先加载到 RAM
擦写粒度 以扇区为单位擦除,擦除速度慢 以块为单位擦除,擦除速度快,写入效率高
存储密度 单元结构复杂,密度低,单芯片容量小 单元结构简单,密度高,单芯片容量大,成本低
典型应用 存储启动代码、固件(如 BIOS、嵌入式系统 Bootloader) 大容量数据存储(如 U 盘、SSD、手机存储)
可靠性 无坏块管理,稳定性高 存在坏块,需 ECC 校验和坏块管理算法

5、RAM 的种类与选型

RAM(Random Access Memory,随机存取存储器)是易失性存储器,断电后数据丢失,主要用于临时运行程序和缓存数据。

常见 RAM 类型对比

• RAM 类(手机运行内存)

  SRAMS:静态随机存储器,无需刷新,速度快,成本高

  DRAM(D:动):动态随机存储器,需定时刷新,容量大,成本低

  DDRAM(DD:double):双倍速率 DRAM

  NVRAM(N:牛不丢):非易失性 RAM,掉电不丢数据

类型 典型特征 关键区别
SRAM 静态随机存储器,用触发器存储数据,无需刷新,速度极快 无需刷新,功耗高、成本高,容量小,常用于 Cache、寄存器
DRAM 动态随机存储器,用电容存储数据,需定期刷新维持电荷 结构简单、成本低、容量大,需刷新电路,速度比 SRAM 慢
DDRAM(DDR SDRAM) 双倍数据率 DRAM,在时钟上升沿和下降沿各传输一次数据 是 DRAM 的升级,数据传输率翻倍,是 PC / 手机的主流内存
NVRAM 非易失性 RAM,兼具 RAM 的高速读写和 ROM 的断电保存特性 断电不丢数据,常用于掉电需保存关键数据的场景(如实时时钟)

6、外存

外存(辅助存储器)属于非易失性存储,断电后数据不丢失,核心作用是长期存储程序、数据和文件,特点是容量大、成本低,但读写速度远低于内存(RAM)。

一、常见外存种类核心对比

以下是磁盘、光盘、CF 卡、SD 卡的关键特征对比:

表格

外存类型 核心原理 典型容量范围 读写速度 抗震动性 成本 典型应用场景
磁盘(机械硬盘 HDD) 磁记录,通过磁头读写盘片磁信号 500GB ~ 20TB 中等(顺序读写约 100~200MB/s) 差(机械结构怕摔、怕震动) 低(单位容量成本最低) 台式机 / 笔记本存储、服务器数据备份
光盘(CD/DVD/ 蓝光) 光学记录,激光读取盘片凹坑 / 平面信号 CD:700MBDVD:4.7GB蓝光:25~100GB 慢(数倍速,如 DVD 8 倍速≈10MB/s) 中(防磁但怕刮花) 极低(空白盘片几分~几元) 早期软件分发、档案归档、音视频存储
CF 卡(CompactFlash) 基于 NAND Flash 的固态存储,并行接口 128MB ~ 2TB 快(支持 UDMA 模式,可达 160MB/s+) 优(无机械结构,抗震动性强) 中高 专业相机、工业设备、嵌入式工控机
SD 卡(Secure Digital) 基于 NAND Flash 的固态存储,串行接口 128MB ~ 2TB(含 microSD) 中~快(Class10/UHS-I 可达 10~100MB/s+) 优(无机械结构,抗震动性强) 消费类相机、手机、行车记录仪、嵌入式设备

二、关键区别与选型要点

1. 机械 vs 固态(磁盘 vs CF/SD)

  • 磁盘(HDD):依赖机械部件(盘片 + 磁头),速度受物理限制,怕震动但容量大、成本低,适合非移动场景的大容量存储。
  • CF/SD 卡:纯电子结构,无机械部件,抗震动、耐高低温,速度快,适合移动设备、工业 / 嵌入式场景。

2. CF 卡 vs SD 卡(固态外存的核心差异)

表格

对比维度 CF 卡 SD 卡
接口类型 并行接口(早期 IDE 协议) 串行接口(SPI/SDIO 协议)
体积 较大(标准卡尺寸约 43×36mm) 小(标准 SD 32×24mm,microSD 仅 15×11mm)
稳定性 工业级设计,抗干扰、抗震动能力更强 消费级为主,工业级型号稳定性提升,但弱于 CF
功耗 较高 低(适合便携 / 低功耗设备)
成本 较高 低,普及度广
嵌入式适配 部分老设备直接支持 IDE 协议,兼容性好 主流嵌入式设备多支持 SDIO 接口,驱动成熟

3. 光盘的特殊定位

光盘的核心优势是防磁、防潮、保存时间长(理论可达百年),但容量小、速度慢,现在仅用于档案归档、少量数据备份,已不再是主流存储介质。

7、嵌入式系统知识

二、3.2.1 嵌入式操作系统体系结构

嵌入式 OS 的 3 种经典架构,核心差异在于内核功能的拆分、模块间的耦合度,以及适用场景。

表格

架构类型 核心设计 核心特点 优缺点 典型代表
单体结构(宏内核) 所有 OS 核心功能(进程管理、内存管理、文件系统、驱动等)都运行在内核态的同一个地址空间 模块间直接函数调用,耦合度高,无用户态 / 内核态的频繁切换 优点:执行效率高、响应快缺点:可维护性差、扩展性弱,一个模块崩溃会导致整个内核宕机 早期 Linux、uC/OS-II、FreeRTOS 经典版本
分层结构 将 OS 功能按依赖关系分层,上层只能调用下层的接口,单向依赖 分层解耦,每层只和相邻层交互,逻辑清晰 优点:可维护性、可扩展性优于单体结构,便于调试和移植缺点:层级调用会有一定的性能损耗,分层设计难度高 早期 Windows、TCP/IP 协议栈、部分嵌入式 RTOS
微内核结构 仅将最核心的功能(任务调度、中断管理、进程间通信)放在内核态,其余功能(文件系统、驱动、网络协议栈)都放在用户态独立服务进程 内核极简,服务间通过消息通信,隔离性强 优点:高可靠性、高扩展性,单个服务崩溃不影响内核和其他服务,适合高安全场景缺点:用户态 / 内核态频繁切换,性能开销大 QNX、VxWorks 微内核版本、Minix、鸿蒙微内核

三、3.2.2 任务管理(嵌入式 OS 核心考点)

任务管理是 RTOS / 嵌入式 OS 的灵魂,核心是实现多任务的并发执行、资源分配与有序调度。

1. 多道程序技术
  • 核心定义:内存中同时存放多道相互独立的程序,在 OS 的控制下交替在 CPU 上运行,宏观上并行,微观上串行。
  • 核心价值:解决单道程序 CPU 空闲等待的问题,大幅提升 CPU 利用率和系统吞吐量,是多任务 / 多进程系统的基础。
  • 嵌入式场景:是实现多任务并发的底层基础,让 MCU/MPU 可以同时执行传感器采集、电机控制、数据上传等多个任务。
2. 进程、线程、任务的核心概念

表格

概念 核心定义 核心特点 嵌入式场景定位
进程 资源分配的最小单位,拥有独立的地址空间、内存、文件句柄等资源 进程间相互隔离,切换开销大,稳定性高 带 MMU 的嵌入式 Linux/Android 等通用嵌入式 OS,用于隔离不同的应用程序
线程 程序执行的最小单位,隶属于进程,共享进程的地址空间和资源 线程间切换开销极小,通信成本低,但一个线程崩溃会导致整个进程崩溃 通用嵌入式 OS 中,进程内的并发执行单元;部分 RTOS 也支持线程模型
任务 嵌入式 RTOS 中的核心执行单元,等价于「线程」,是 RTOS 调度的最小单位 每个任务有独立的栈、优先级、状态,共享系统的内存和硬件资源,切换开销极低 无 MMU 的 MCU(STM32 等)的 RTOS(FreeRTOS、uC/OS)中,最核心的并发执行单元
3. 任务的实现

核心是 OS 如何管理和描述一个任务,包含 4 个核心部分:

  1. 任务的层次结构:嵌入式 OS 中,任务通常按优先级分层,高优先级任务优先调度;部分 OS 支持任务嵌套、父子任务结构。
  2. 任务控制块(TCB):OS 用于描述和管理任务的核心数据结构,是任务存在的唯一标志。存储任务的所有信息:任务优先级、任务栈指针、任务状态、PC 寄存器值、资源持有情况等,OS 通过 TCB 链表管理所有任务。
  3. 任务的状态及状态转换(高频考点)嵌入式 RTOS 中,任务的 4 种核心状态:
    • 就绪态:任务已经具备运行条件,等待 CPU 调度执行
    • 运行态:任务正在 CPU 上执行
    • 阻塞态(挂起态):任务因等待某一事件(信号量、消息、延时)而放弃 CPU,不参与调度
    • 休眠态 / 停止态:任务被终止,或未被启动,不参与调度核心转换逻辑:
    • 就绪态 → 运行态:任务被调度器选中,获得 CPU 使用权
    • 运行态 → 就绪态:高优先级任务抢占、时间片用完,主动放弃 CPU
    • 运行态 → 阻塞态:任务主动调用延时、等待信号量 / 消息等接口
    • 阻塞态 → 就绪态:等待的事件到达,任务具备运行条件
  4. 任务队列:OS 为了管理不同状态的任务,建立的对应链表,常见的有:就绪队列(按优先级排序)、阻塞队列(按等待事件分类)、挂起队列。
4. 任务调度

任务调度是 OS 的核心,决定哪个任务获得 CPU 的使用权。

  1. 调度核心分类
    • 不可抢占调度(非抢占式):任务一旦获得 CPU,就会一直执行,直到任务主动放弃 CPU(主动阻塞、任务结束),即使有更高优先级任务就绪,也不能抢占 CPU。优点:实现简单,缺点:实时性差。
    • 可抢占调度(抢占式):只要有更高优先级的任务就绪,调度器会立即暂停当前正在执行的低优先级任务,将 CPU 分配给高优先级任务。是嵌入式 RTOS 的默认调度方式,核心优势是实时性强,响应快。
  2. 通用调度算法

    表格

    算法 核心逻辑 特点 适用场景
    先来先服务(FCFS) 按任务就绪的先后顺序调度,先就绪的先执行,直到任务主动放弃 CPU 公平、实现简单,属于不可抢占调度,短任务可能被长任务阻塞,响应性差 批处理系统,极少用于嵌入式 RTOS
    短作业优先(SJF) 优先调度执行时间最短的任务 平均周转时间最短,吞吐量高;缺点是长任务可能饥饿,无法预估任务执行时间 批处理系统,不适合实时嵌入式场景
    时间片轮转算法(RR) 给每个就绪任务分配固定的时间片,任务用完时间片后,回到就绪队列尾部,等待下一轮调度 公平,每个任务都能获得均等的 CPU 时间,属于可抢占调度,响应性好 通用 OS 的分时系统,嵌入式 GUI、非实时任务调度
    优先级调度算法 给每个任务分配优先级,调度器始终选择就绪队列中优先级最高的任务执行 实时性强,是 RTOS 的核心算法;分为静态优先级(固定不变)和动态优先级(可动态调整) 绝大多数嵌入式 RTOS(FreeRTOS、uC/OS、VxWorks)
  3. 调度算法的核心性能指标:CPU 利用率、系统吞吐量、任务周转时间、带权周转时间、响应时间(实时系统最核心指标)。
5. 实时系统及任务调度(硬实时嵌入式系统核心考点)

实时系统的核心要求:任务必须在规定的截止时间内完成,分为硬实时(截止时间绝对不能错过,否则会产生严重后果,如汽车电子、航空航天)和软实时(允许偶尔错过截止时间,如音视频播放)。两个经典实时调度算法:

  1. RMS(速率单调调度)
    • 核心逻辑:静态优先级调度算法,任务的优先级由任务的周期决定,周期越短(执行频率越高),优先级越高。
    • 核心前提:任务是周期性的、独立的,任务的执行时间固定,截止时间等于周期。
    • 特点:实现简单,稳定性强,是工业界最常用的硬实时调度算法,可调度性有理论保障。
  2. EDF(最早截止时间优先)
    • 核心逻辑:动态优先级调度算法,任务的优先级由任务的截止时间决定,截止时间越早,优先级越高,动态调整。
    • 特点:CPU 利用率理论上可以达到 100%,比 RMS 的 CPU 利用率更高;缺点是实现复杂,过载时会出现任务多米诺骨牌式超时,稳定性弱于 RMS。
6. 任务间通信

多任务系统中,任务之间需要传递数据、交换信息,核心通信方式如下:

表格

通信方式 核心原理 特点 适用场景
共享内存 多个任务共享同一块内存区域,通过读写内存实现数据交换 速度最快,无数据拷贝;缺点是需要配合同步互斥机制,否则会出现数据竞争 大量数据的高速传输,同进程内的线程 / 任务间通信
消息队列 任务之间通过内核提供的队列,以「消息」为单位进行数据收发,异步通信 解耦性强,支持多发送者 / 多接收者,自带同步机制,FIFO 顺序;缺点是有数据拷贝,开销比共享内存大 RTOS 中最常用的任务间通信方式,适合中等数据量的异步通信
管道 单向的字节流通信通道,分为匿名管道和命名管道 面向字节流,自带同步机制,实现简单;缺点是只能单向通信,半双工 父子进程间通信,Linux 嵌入式系统常用
信号(软中断) 异步通知机制,内核 / 任务向目标任务发送信号,目标任务中断当前执行,处理对应的信号处理函数 异步、响应快;缺点是不适合传递大量数据,处理函数有严格的限制 异常处理、事件通知,如任务超时、硬件中断通知
7. 同步与互斥

多任务系统中,多个任务会竞争共享资源,同步与互斥就是为了解决资源竞争的问题,保证系统的正确性。

  1. 核心基础概念
    • 竞争条件:多个任务同时访问共享资源,最终的执行结果取决于任务的执行顺序,导致结果不可预期,出现数据错误。
    • 临界区:访问共享资源的代码片段,同一时间只能有一个任务进入临界区执行。
    • 互斥:保证同一时间,只有一个任务进入临界区,访问共享资源,解决竞争条件的核心手段。
    • 同步:多个任务按照约定的顺序执行,保证任务间的协作逻辑正确,如生产者 - 消费者模型。
  2. 核心实现手段:信号量信号量是 OS 提供的核心同步互斥机制,分为两类:
    • 二值信号量(互斥信号量):取值只有 0 和 1,用于实现互斥,保证临界区的独占访问,可解决优先级反转问题。
    • 计数信号量:取值可以是 0~N,用于实现同步,如生产者 - 消费者模型、资源计数。
  3. 死锁
    • 核心定义:多个任务互相等待对方持有的资源,导致所有任务都无法继续执行,永远阻塞的状态。
    • 死锁产生的 4 个必要条件:互斥条件、请求与保持条件、不剥夺条件、循环等待条件。
    • 死锁的处理:预防(破坏 4 个必要条件之一)、避免(银行家算法)、检测与解除。
Logo

智能硬件社区聚焦AI智能硬件技术生态,汇聚嵌入式AI、物联网硬件开发者,打造交流分享平台,同步全国赛事资讯、开展 OPC 核心人才招募,助力技术落地与开发者成长。

更多推荐