软考-系统架构师-嵌入式系统(二)

五、嵌入式微处理器分类与选型

5.1、基础分类

5.1.1、微处理器

MPU - Micro Processor Unit

将微处理器装配在专门设计的电路板上,只保留与嵌入式应用有关的母板功能。

一般以某种微处理内核为核心,内核一致,区别在于存储器和外设的配置和封装。

5.1.2、微控制器

MCU - Micro Control Unit

又称单片机。

最大优点 :单片化。体积大大减小,从而使功耗和成本下降,可靠性提高。

5.1.3、信号处理器

DSP - Digital Signal Processor

对系统结构和指令进行了特殊设计(通常采用哈佛结构)。

特点:适合执行DSP算法,编译效率高,指令执行速度也高。

5.1.4、图形处理器

GPU - Graphics Processing Unit

定义:可执行渲染3D图形等图像的半导体芯片。

作用:减少对CPU的依赖,进行部分原本CPU的工作(如硬件T&L、纹理压缩)。

性能:集成成千上万个Core,峰值性能高达100 TFlops以上。

5.1.5、片上系统

SoC - System on Chip

定义 :追求产品系统最大包容的集成器件。既是一个有专用目标的产品,也是一种设计技术(从确定功能到软/硬件划分)。

核心特征 :成功实现了软硬件的无缝结合 ,直接在片内嵌入操作系统的代码模块。

广义比喻:如果CPU是大脑,SoC就是包括大脑、心脏、眼睛和手的系统。

组成:MPU + 模拟IP核 + 数字IP核 + 存储器。

5.2、MPU vs MCU

1)MCU (单片机):

特点 :片内自带Flash和RAM。上电即跑,无需复杂外部总线。

场景:电饭煲、汽车电子(车窗控制)、工业仪表。

OS :通常运行RTOS (uC/OS, FreeRTOS) 或裸机跑。

2)MPU (微处理器):

特点 :片内无Flash/RAM(或很小),必须外挂DDR和NAND Flash。性能强,主频高。

场景:智能手机、路由器、智能网关。

OS :通常运行复杂OS (Linux, Android, Windows)。

5.3、DSP 的"哈佛结构"

冯·诺依曼结构 (Von Neumann) :程序指令和数据存储在同一个存储器中,共用一条总线。瓶颈在于取指和取数不能同时进行。

哈佛结构 (Harvard) :程序指令和数据存储在两个独立的存储器 中,有两条独立总线。允许同时取指和取数,极大提高了数字滤波、FFT等算法的效率。

5.4、SoC 的核心理念

软硬协同与IP核

5.4.1、IP核

SoC 设计就像搭积木,这些积木就是 IP 核。

软核 (Soft Core):代码形式(HDL),灵活性高,性能不可预测。

硬核 (Hard Core):版图形式,性能最好,无法修改。

固核 (Firm Core):门级网表,介于两者之间。

5.4.2、软硬件划分

设计 SoC 的第一步是决定哪些功能用硬件(速度快、功耗低、不可改)实现,哪些用软件(灵活、易升级、速度慢)实现。

5.5、五大处理器选型指南

嵌入式处理器选型
MPU 微处理器
MCU 微控制器
DSP 信号处理器
GPU 图形处理器
SoC 片上系统
特征: 性能强, 需外挂存储
场景: 手机, 复杂网关, 跑Linux
特征: 单片化, 低成本, 功耗低
场景: 家电, 传感器, 工业控制
特征: 哈佛结构, 算法快
场景: 音视频编解码, 雷达信号
特征: 并行计算, 3D渲染
场景: 游戏, 自动驾驶AI, 图像识别
特征: 软硬协同, IP核复用
场景: 定制化高端设备, 极致集成

5.6、SoC的广义定义

包含
<<System on Chip 片上系统>>
SoC_System
心脏 : 电源管理 / 时钟
眼睛 : 摄像头 / 传感器接口
手脚 : 执行器 / IO接口
大脑 : CPU(控制核心)
<<底层物理组成>>
Components
核心 : MPU Core
硬件 : Analog IP(模拟核)
硬件 : Digital IP(数字核)
软件 : Embedded SW(嵌入式软件)
🔴 核心考点:

(1) 软硬件无缝结合

(2) 直接嵌入OS代码模块

六、嵌入式操作系统 (EOS)

6.1、定义与职责

定义:用于嵌入式系统的操作系统。它是用途广泛的系统软件。

职责:负责嵌入式系统的全部软、硬件资源分配、任务调度、控制、协调并发活动等。

组成:通常包括与硬件相关的底层驱动软件、系统内核、设备驱动接口、通信协议、图形界面、标准化浏览器等。

6.2、分类

6.2.1、按时间敏感程度划分

嵌入式非实时系统:如早期的PDA、消费电子。

嵌入式实时系统 (RTOS) :能够在指定或者确定的时间内完成系统功能和外部或内部、同步或异步时间做出响应的系统。

6.2.2、按安全性要求划分

安全攸关系统 (Safety-Critical) :也称安全生命关键系统。其不正确的功能或者失效会导致人员伤亡、财产损失等严重后果(如航空航天、医疗设备、核工业)。

非安全攸关系统。

6.3、核心特点

微型化:占用资源少。

代码质量高:系统稳定可靠。

专业化:针对特定领域优化。

实时性强 :最核心特点。

可裁剪、可配置、可定制 ,与 BSP, HAL 相关,意味着 可移植。

6.4、"实时性"的深度辨析

快速 (Speed/Throughput):指处理得快(如高性能服务器)。

实时 (Real-Time) :指确定性 (Determinism) 。即系统必须在规定的时间窗口内做出反应,"准时"比"快"更重要。

硬实时 (Hard Real-Time):超时即失败(如安全气囊、飞行控制)。

软实时 (Soft Real-Time):超时会降低体验,但不会导致灾难(如视频播放掉帧)。

6.5、"可裁剪性"与架构设计

嵌入式硬件千差万别。

可裁剪:为了省钱、省电、省空间,不需要的模块(如网络协议栈、GUI)必须能去掉。

可配置/可移植 :通过 BSP (板级支持包) 和 HAL (硬件抽象层) 隔离硬件差异,使得同一个 OS 内核可以跑在不同的芯片上。这是层次化架构的最佳实践。

6.6、安全攸关系统的设计策略

冗余设计:双机热备、三模冗余 (TMR)。

异构性:主控制器用 ARM,备份控制器用 FPGA,防止同一个软件Bug导致两者同时挂掉。

看门狗 (Watchdog):必须配备,防止死锁。

6.7、嵌入式操作系统的分类体系图

嵌入式操作系统

EOS
按时间特性
RTOS
Hard RT
Soft RT
note: 核心是"确定性"
非实时系统
消费电子
早期PDA
按安全特性
安全攸关系统
航空航天
医疗/核能
note: 故障=灾难
非安全攸关
智能家居
娱乐设备

6.8、五大特征与架构支撑

技术/架构支撑
EOS 五大核心特点
(1) 微型化
(2) 代码质量高
(3) 专业化
(4) 实时性强
(5) 可裁剪/可配置
资源受限/成本控制
固化代码/难升级
特定领域算法
抢占式调度/中断低延迟
BSP & HAL 层
最核心特点
手写重点: 易移植

七、操作系统内核架构

7.1、架构定义

7.1.1、宏内核

实质 :将图形、设备驱动及文件系统等功能全部在内核中实现,运行在内核状态和同一地址空间。

7.1.2、微内核

实质 :只实现基本功能(如IPC、调度),将图形系统、文件系统、设备驱动及通信功能放在内核之外(即用户态)。

典型代表 :鸿蒙操作系统 (HarmonyOS)。

7.2、优缺点深度对比

维度 宏内核 (单体内核) 微内核 (鸿蒙/Minix)
执行效率 高。减少了进程间通信 (IPC) 和状态切换的系统开销。 偏低 。用户态和内核态需要频繁切换,且服务间通信需通过 IPC,导致系统效率不如单体内核。
稳定性/安全性 不好。内核庞大,任何驱动故障可能导致整个系统崩溃。 较高。服务运行在用户地址空间,故障隔离,单个服务崩溃不影响系统核心。
可裁剪/可移植 不易剪裁。内核庞大,占用资源多。 便于剪裁和移植 。内核精练,具有很好的灵活性和可扩展性。
开发维护 耦合度高。 结构清晰,有利于协作开发。
适用场景 传统高性能通用计算 (服务器/PC)。 分布式系统、高可靠嵌入式系统。

7.3、鸿蒙为什么选择微内核?

分布式软总线:微内核的"服务化"架构天然适应分布式。在微内核眼里,调用本地的"相机服务"和调用隔壁手机的"相机服务",机制是一样的(都是发个 IPC 消息)。这就实现了鸿蒙的**"超级终端"**理念。

高可靠性:物联网设备(如智能门锁、车机)对死机是零容忍的。微内核的驱动挂了重启即可,不会导致整个系统"变砖"。

7.4、性能瓶颈的本质:上下文切换

宏内核 :应用程序调用驱动 →\rightarrow→ 系统调用 (1次切换) →\rightarrow→ 内核干活 →\rightarrow→ 返回 (1次切换)。共2次切换。

微内核 :应用程序请求服务 →\rightarrow→ IPC发送 (切换进内核) →\rightarrow→ 内核转发给驱动服务 (切换回用户态) →\rightarrow→ 驱动干活 →\rightarrow→ IPC回复 (切换进内核) →\rightarrow→ 内核转发给应用 (切换回用户态)。共4次切换。

如果题目问"微内核最大的劣势是什么?",答案就是**"频繁的用户态/内核态切换导致的性能损耗"**。

7.5、协作开发

因为文件系统、网络协议栈都是独立的用户态进程,互不干扰。

A团队 可以专心开发文件服务,B团队专心开发网络服务,只要定义好 IPC 接口,大家可以并行工作,不用担心改了一行代码导致全内核编译报错。

7.6、两种架构的内部构造与通信路径

微内核架构 (Microkernel)
宏内核架构 (Monolithic)
硬件平台
内核空间 (精简)
用户空间
(1) 请求
(2) 转发
(3) 操作硬件
(4) 执行
系统调用 (快)
内核空间 (All-in-One)
文件系统
设备驱动
IPC/调度
网络协议
CPU / 内存 / 外设
应用程序
应用程序
文件服务进程
设备驱动进程
IPC消息转发

地址映射/调度
考点: 路径长, 切换多

7.7、决策矩阵

内核架构选型决策矩阵
Y轴: 低灵活性 Low Flexibility
Y轴: 高灵活性 High Flexibility
象限2: 混合内核 (Hybrid)

代表: Win / Mac

特点: 兼容性强
象限1: 微内核 (Micro)

代表: 鸿蒙 / QNX

(1) 分布式支持: 极高

(2) 易于裁剪: 极高
象限3: 宏内核 (Mono)

代表: Linux / Android

(1) 高性能计算: 强

(2) 代码规模: 庞大
象限4: 裸机 / 库OS

代表: RTOS / Library

特点: 极致简单
X轴: 低可靠性
X轴: 高可靠性

八、鸿蒙操作系统

8.1、四大技术特性

分布式架构 :首次用于终端 OS,实现跨终端无缝协同体验(如:手机和电视无缝流转)。

天生流畅 :通过确定时延引擎 和高性能 IPC 技术实现。

可信安全 :基于微内核架构重塑终端设备可信安全(TEE)。

生态共享 :通过统一 IDE 支撑一次开发,多端部署,实现跨终端生态共享。

8.2、整体架构设计 (分层模型)

8.2.1、内核层 (Kernel Layer)

内核子系统:支持 Linux Kernel 和 LiteOS(多内核设计)。

KAL (内核抽象层):屏蔽不同内核差异。

驱动子系统:HDF (HarmonyOS Driver Framework) 驱动框架。

8.2.2、系统服务层 (System Service Layer)

核心能力 :分布式任务调度 、分布式数据管理 、分布式软总线。

其他:基础软件服务、增强软件服务、硬件服务子系统等。

8.2.3、框架层 (Framework Layer)

用户程序框架、Ability 框架、UI 框架。

8.2.4、应用层 (Application Layer)

系统应用、扩展应用/三方应用。

8.2、核心设计理念

系统功能按照**"系统" - "子系统" - "功能/模块"** 逐级展开。支持根据实际需求裁剪某些非必要的子系统或功能模块(对应嵌入式系统的可裁剪性)。

8.3、为什么要搞 "KAL (内核抽象层)"?

问题:手机需要强大的 Linux,但智能台灯只需要极简的 LiteOS。如果开发两套系统,生态就分裂了。

解决 :KAL (Kernel Abstraction Layer) 的作用就是把底层内核(无论是 Linux 还是 LiteOS)封装成统一的接口。

这体现了**"屏蔽异构性"的架构思想。上层服务层不需要知道底下跑的是什么内核,从而实现了"一次开发,多端部署"**。

8.4、核心黑科技:分布式软总线

这是鸿蒙最核心的考点,位于系统服务层。

传统方式:手机连打印机,要搜蓝牙、配对、输密码,很麻烦。

软总线 :在软件层面虚拟出一条总线,让不同设备(手机、电视、手表)只要在同一个网络下,发现、连接、组网就像连在同一根物理总线上一样简单。

架构价值:它是实现"超级终端"的基石,让多设备融合为一个逻辑设备。

8.5、确定时延引擎

对应考点 :RTOS 的实时性。

原理 :通过对任务优先级的精准调度,确保高优先级任务(如界面滑动、点击响应)在确定的时间内得到执行,解决安卓系统"越用越卡"的问题。

8.6、鸿蒙四层架构全景图

鸿蒙操作系统架构
内核层 Kernel
系统服务层 System Service
分布式核心能力
多内核设计
Linux Kernel
LiteOS
框架层 Framework
Ability 框架
UI 框架
应用层 Application
系统应用 / 第三方应用
分布式软总线
分布式数据管理
分布式任务调度
基础软件服务 / 硬件服务
KAL 内核抽象层
HDF 驱动框架
考点: 设备发现与互联
考点: 屏蔽内核差异

8.7、四大特性思维导图

鸿蒙OS

四大特性
分布式架构
跨终端无缝协同
虚拟超级终端
天生流畅
确定时延引擎
高性能IPC
可信安全
微内核架构
可信执行环境
生态共享
统一IDE
一次开发, 多端部署

九、嵌入式数据库系统

9.1、主要特点

嵌入式:集成在应用程序中。

实时性:需满足受限的时间约束。

移动性:支持移动计算环境。

伸缩性:可根据资源裁剪。

9.2、三大分类

9.2.1、基于内存方式

定义:数据库的"工作版本"常驻内存,活动事务只与内存拷贝打交道。

特点 :支持实时事务的最佳技术。

9.2.2、基于文件方式

定义:数据按一定格式存储在磁盘(或Flash)的文件中。

特点:访问是被动式的(通过驱动读写),安全性低,但能满足特定的空间要求。

9.2.3、基于网络方式

定义 :基于 4G/5G 移动通信,逻辑上把嵌入式设备看作远程服务器的一个客户端。

特点 :无需解析 SQL 语句,客户端小,有利于代码重用。

9.3、嵌入式网络数据库详解

实质 :把功能强大的远程数据库映射到本地数据库,让访问远程就像访问本地一样方便。

组成:

1)客户端:提供接口给嵌入式程序。

2)通信协议:规范通信,解决多客户端并发。

3)远程服务器:维护实际数据。

综合系统 :通常由 网络数据库 + 本地数据库 + Web服务器 构成综合信息系统。

9.4、选型策略

场景需求 推荐类型 原因分析 典型代表
高频交易、飞行控制 MMDB (内存) 实时性第一。磁盘I/O太慢,必须在内存操作。 FastDB, eXtremeDB
手机通讯录、日志记录 FDB (文件) 数据量不大,需要持久化,断电不丢,资源占用极小。 SQLite (最著名)
物流追踪、外卖骑手 NDB (网络) 数据需要实时同步到云端,本地只做简单展示。 各种 RESTful API 客户端

9.5、为什么 NDB "无需解析 SQL"?

传统 DB :客户端发 SQL →\rightarrow→ 数据库引擎词法分析 →\rightarrow→ 语法分析 →\rightarrow→ 查询优化 →\rightarrow→ 执行。这套流程对嵌入式 CPU 压力很大。

嵌入式 NDB :嵌入式客户端只负责打包请求(比如封装成二进制流或 JSON),繁重的 SQL 解析和执行全部扔给性能强大的远程服务器去做。这体现了**"胖服务器,瘦客户端"**的架构思想。

9.6、移动数据库的关键挑战

断网处理 (Disconnection):移动信号不稳定,必须支持"离线操作,联网同步"。

数据一致性:多终端同时修改数据,如何解决冲突?(通常采用时间戳或版本号机制)。

9.7、嵌入式数据库分类决策树

嵌入式数据库选型
(1) 基于内存 (MMDB)
特征: 常驻内存, 无I/O瓶颈
优点: 实时性极强
(2) 基于文件 (FDB)
特征: 磁盘文件存储, 被动访问
优点: 持久化, 资源占用低
缺点: 安全性低
(3) 基于网络 (NDB)
特征: 客户端-服务器模式, 4G/5G
优点: 本地无需解析SQL, 代码复用
典型: SQLite
考点: 实时性最佳

9.8、嵌入式网络数据库架构 (NDB)

远程数据库服务器 NDB 客户端 (本地) 嵌入式应用程序 远程数据库服务器 NDB 客户端 (本地) 嵌入式应用程序 特点: 瘦客户端 不解析SQL 解析SQL ->> 执行 ->> 获取结果 看起来像在访问本地数据库 (映射机制) 调用接口 (如: query_data) 封装请求 (Protocol) 发送请求 (通过 4G/5G) 返回结果数据 数据解包并呈现

十、嵌入式开发环境与低功耗设计

10.1、嵌入式软件开发特点

宿主机-目标机模式 :开发在宿主机 (Host) (PC/工作站)上进行,生成二进制代码后,下载到目标机 (Target) 运行。

固化:代码通常需要固化在目标机的存储器(ROM/Flash)中。

专用性:需要专用的开发工具、目标系统和测试设备。

软硬件协同:强调软/硬协同工作的效率和稳定性。

严格约束 :对实时性、安全性、可靠性 要求更高,且需充分考虑代码规模(资源受限)。

10.2、交叉开发环境与调试

10.2.1、交叉开发工具链

交叉编译器 (Cross Compiler):在宿主机上生成目标机可执行代码。

交叉链接器:链接目标代码。

调试器/代理:用于远程调试。

10.2.2、调试接口 (JTAG)

全称:Joint Test Action Group (联合测试工作组)。

标准:IEEE 1149.1 标准测试协议。

作用 :主要用于芯片内部测试 和调试(设置断点、查看寄存器)。

10.2.3、目标代码格式

COFF, ELF。

10.3、低功耗设计

软硬件协同设计:软件设计要匹配硬件特性(如:关闭闲置外设的电源)。

编译优化:采用低功耗优化的编译技术(如:指令重排减少总线翻转)。

算法优化:减少系统持续运行时间(让系统尽快处理完,尽快休眠)。

用"中断"代替"查询":查询(Polling)会让CPU一直空转耗电;中断(Interrupt)允许CPU在无事时休眠。

电源有效管理:动态电源管理 (DPM)。

10.4、为什么要"交叉开发"?

因为目标机资源不够。嵌入式设备(如智能手环)的 CPU 和内存无法运行庞大的编译器(GCC/Visual Studio)。

异构性 :宿主机通常是 x86 架构(Intel/AMD),而目标机通常是 ARM/MIPS/RISC-V 架构。所以在 PC 上编译出来的 .exe 是不能在单片机上跑的,必须用交叉编译器 (如 arm-none-eabi-gcc)翻译成目标机能懂的机器码。

10.5、JTAG 的双重身份

调试 (Debug):开发阶段,用来单步执行、看变量。

边界扫描 (Boundary Scan):生产阶段,在不焊下芯片的情况下,通过扫描链测试芯片引脚有没有虚焊。

安全警示 :在最终量产的高安防产品中,必须禁用 JTAG 接口,防止黑客通过它读取固件或篡改内存。

10.6、"中断 vs 查询"的功耗本质

1)查询 (Polling):

代码逻辑 :while(1) { if(event) handle(); }

功耗 :CPU 占用率 100%,一直全速跑,功耗极大。

2)中断 (Interrupt):

代码逻辑 :CPU 进入 Sleep/Idle 模式 →\rightarrow→ 硬件产生信号 →\rightarrow→ 唤醒 CPU 处理 →\rightarrow→ 处理完继续睡。

功耗 :CPU 大部分时间在睡觉,功耗极低。

10.7、交叉开发工作流

目标机 (Target: Embedded Device)
连接通道
宿主机 (Host: PC/Workstation)
加载符号表
下载/固化
调试指令
IEEE 1149.1
源代码 C/C++
交叉编译/链接器
目标二进制代码

ELF/COFF
调试器 Host端
以太网/串口/USB

(下载代码)
JTAG 仿真器

(控制/调试)
存储器 ROM/Flash
目标操作系统
调试代理 Agent

10.8、低功耗软件设计策略金字塔

软件优化策略
低功耗设计目标: 延长电池寿命
(1) 算法级: 减少运行时间
(2) 机制级: 中断代替查询
(3) 编译级: 低功耗指令优化
(4) 架构级: 软硬协同 (关外设)
核心技巧: 让CPU多睡觉

相关推荐
佛祖让我来巡山6 天前
系统架构师基础知识点概览汇总
软考高级·软考·系统架构师
无心水9 天前
22、数学与经济管理(运筹学) 核心考点与学习笔记
人工智能·笔记·学习·架构师·软考·软考架构师·软考系统架构师
无心水9 天前
20、大数据架构设计理论与实践 核心考点与学习笔记
大数据·笔记·学习·架构师·系统架构设计师·软考系统架构设计师·架构设计师
无心水13 天前
15、云原生架构设计理论与实践 核心考点与学习笔记
笔记·学习·云原生·架构师·软考·系统架构设计师·软考系统架构设计师
东城居士14 天前
理解Linux RTC驱动
linux·嵌入式系统
无心水15 天前
6、软件工程 核心考点与学习笔记
笔记·学习·软件工程·软考高级·架构师·软考·软考系统架构设计师
无心水15 天前
5、信息安全技术基础知识 核心学习笔
人工智能·学习·软考高级·架构师·软考·高级架构师·软考架构师
无心水15 天前
8、系统架构设计基础知识 核心考点与学习笔记
笔记·学习·系统架构·架构师·软考·软考架构师·软考高级架构师
Misnearch17 天前
第7章 面向对象技术
java·开发语言·软考
东城居士18 天前
理解Linux LCD驱动编程
linux·嵌入式系统·1024程序员节