第一章:嵌入式系统基础与体系结构¶
1. 处理器核心 (CPU/MCU/MPU)¶
- 概念
嵌入式系统的“大脑”,按复杂度分为三类: - MCU(微控制器):单芯片集成CPU+存储+外设(如STM32F103、Arduino的ATmega328P)。
- MPU(微处理器):需外接存储(如树莓派的ARM Cortex-A72)。
-
专用CPU:如DSP(数字信号处理)、FPGA软核(如Xilinx MicroBlaze)。
-
典型架构
- ARM Cortex-M:低功耗实时控制(Cortex-M0+/M3/M4/M7)。
- RISC-V:开源指令集(如GD32V103)。
-
x86:工控机(如Intel Quark)。
-
应用场景
- 智能手环(Cortex-M0+休眠电流<2μA)。
-
工业机器人(Cortex-M7+实时操作系统)。
-
关键点
- 功耗-性能权衡:M4带DSP指令,适合音频处理;M0+无FPU,成本极低。
- 实时性:中断延迟(Cortex-M的NVIC硬件优先级仲裁)。
2. 存储器分层模型¶
- ROM(BootROM/掩膜ROM)
- 固化启动代码(如STM32的System Memory用于ISP下载)。
- Flash(主存储)
- NOR Flash:XIP(就地执行),如ESP32的4MB外部NOR。
- NAND Flash:大容量存储(如车载娱乐系统的eMMC)。
- RAM(易失性)
- SRAM:高速(STM32F4的192KB Core-Coupled SRAM)。
-
DRAM:MPU外接DDR3(树莓派1GB LPDDR2)。
-
关键技术
- 磨损均衡:Flash的10万次擦写限制(需文件系统如LittleFS)。
- 内存保护单元(MPU):防止任务越界(FreeRTOS的heap_4方案)。
3. 输入/输出接口(物理层到协议层)¶
- 低速接口
- GPIO:驱动LED(灌电流/拉电流设计)。
- ADC:STM32的12位逐次逼近型ADC,采样率2.4Msps。
- 中速接口
- I²C:传感器总线(BMP280气压传感器),上拉电阻计算(3.3V/4.7kΩ)。
- SPI:TFT屏幕(ILI9341驱动),时钟极性/相位模式0-3。
- 高速接口
- USB OTG:STM32F4作为Device(CDC虚拟串口)。
-
Ethernet:LAN8720 PHY芯片+RMII接口(需50MHz时钟)。
-
隔离与保护
- 光耦:PLC输入隔离(TLP281-4)。
- TVS二极管:防ESD(USB端口的USBLC6-2SC6)。
4. 总线系统(芯片级与板级)¶
- 片内总线
- AMBA(ARM):
- AHB:高速总线(DMA访问SRAM)。
- APB:低速外设总线(UART寄存器)。
- 板级总线
- CAN:汽车ECU通信(差分信号+120Ω终端电阻)。
-
RS-485:Modbus工业协议(MAX3485收发器)。
-
时序分析
- 建立/保持时间:STM32的SPI在30MHz时,MISO需满足4ns建立时间。
5. 专用硬件单元(SoC的“加速器”)¶
- 定时器(TIM)
- PWM生成:舵机控制(50Hz频率,1-2ms占空比)。
- 输入捕获:超声波测距(HC-SR04的回波时间测量)。
- DMA控制器
- 双缓冲模式:STM32的ADC+DMA连续采样,CPU零介入。
- DAC
- 音频输出:ESP32的8位DAC生成正弦波(DMA+定时器触发)。
6. 冯·诺依曼 vs. 哈佛架构¶
| 特性 | 冯·诺依曼 | 哈佛(改进型) | 实例 |
|---|---|---|---|
| 指令/数据存储 | 同一空间 | 独立空间 | STM32(Flash+SRAM) |
| 性能 | 低(总线冲突) | 高(并行访问) | AVR的LPM指令读Flash |
| 典型应用 | 通用PC | 微控制器 | Cortex-M0+的ICode总线 |
- 关键点:现代MCU采用“改进哈佛”——虽物理分离,但统一地址空间(如STM32的0x08000000映射Flash)。
7. 系统级设计实例(整合以上模块)¶
- 案例:智能温室控制器
- 传感器层:SHT30(I²C)采集温湿度,BH1750(I²C)光照。
- 执行层:PWM驱动MOS管(IRLZ44N)控制风扇,DAC输出0-10V调光。
- 通信层:ESP8266(UART)上传MQTT数据到阿里云。
-
低功耗:STM32L031的STOP模式(1.5μA),RTC定时唤醒。
-
调试技巧:
- SWD接口:用ST-Link调试,观察CoreSight的ETM跟踪数据流。
8. 资源受限下的优化策略¶
- 代码优化:
- Linkerscript:将中断向量表重定位到RAM(加快响应)。
- -Os编译:GCC的
__attribute__((section(".noinit")))避免清零.bss。 - 功耗优化:
- 时钟门控:关闭APB2总线上的UART1(RCC->APB2ENR &= ~USART1EN)。
处理器核心(Processor Core)
| 类型 | 特点 | 典型代表 |
|---|---|---|
| MCU | CPU+内存+外设但芯片集成 | STM32(Cortex-M),ESP32 |
| MPU | 高性能CPU,需外扩内存/外设 | i.MX RT(Cortex-A),RPi SoC |
| DSP | 硬件加速浮点/滤波运算 | TI C2000系列 |
| FPGA | 可编程硬件逻辑,并行处理 | Xilinx Zynq-7000 |
存储器
| 类型 | 作用 | 技术指标 |
|---|---|---|
| ROM | 存储固件(不可修改) | 掩膜ROM(量产固化) |
| Flash | 存储可更新代码/配置数据 | - NOR Flash:XIP执行;- NAND Flash:高密度存储 |
| RAM | 运行时数据缓存 | - SRAM:零延迟(Cache/L1); - DRAM:主内存(需刷新电路) |
总结¶
嵌入式系统的体系结构设计需在专用性、资源、成本、实时性之间权衡。 理解硬件组成是开发可靠固件的基础,尤其在资源受限场景下(如用DMA降低CPU负载、WDT抗干扰等)。 后续章节将深入处理器选型与外设驱动开发。