《设备固件安全升级方案实战课程》
第2章 固件基础

📦 2、固件基础:什么是固件、固件在嵌入式系统中的角色、常见固件格式

🔍 2.1 什么是固件

固件(Firmware) 是嵌入在硬件设备中的软件程序,它位于硬件与操作系统(或应用程序)之间,是设备运行的“灵魂”。与普通软件不同,固件通常存储在非易失性存储器(如 Flash、ROM、EEPROM)中,断电后不会丢失。

💡 核心特点:
  • 固化性:写入后不易修改,升级需专用工具或协议
  • 紧耦合:与硬件寄存器、外设地址直接交互
  • 实时性:通常运行在裸机或 RTOS 环境下,响应时间确定
  • 资源受限:RAM/Flash 容量小,代码需高度优化
🖥️ 硬件层 (CPU / Flash / RAM / 外设) ⚙️ 固件 (Firmware) 引导加载程序 | 硬件抽象层 | 驱动 | 应用逻辑 📱 应用层 / 操作系统 (可选) 调用接口 操作寄存器

▲ 图1:固件在嵌入式系统中的层次位置

🎯 2.2 固件在嵌入式系统中的角色

角色 说明 示例
硬件初始化 配置时钟、GPIO、中断向量表 STM32 启动文件 startup.s
设备驱动 控制外设(UART、I2C、SPI、ADC) 传感器读取、电机控制
协议栈 实现通信协议(TCP/IP、BLE、CAN) Wi-Fi 固件、蓝牙协议栈
安全引导 校验签名、解密、防回滚 安全启动 (Secure Boot)
应用逻辑 业务功能实现 智能锁密码验证、温控算法
固件 核心调度 硬件 初始化 设备 驱动 协议 栈 安全 引导 配置 控制 通信 保护

▲ 图2:固件在嵌入式系统中的核心角色

📄 2.3 常见固件格式 (BIN / HEX / ELF)

固件以不同格式存储和分发,每种格式适用于不同阶段(开发、调试、量产)。以下是三种最常用的格式:

📦 BIN

纯二进制,无地址信息,从起始地址连续存储。

✅ 适合量产烧录
✅ 体积最小

📋 HEX (Intel HEX)

文本格式,包含地址、数据、校验和,可分段。

✅ 支持非连续地址
✅ 可读性强

🔧 ELF

可执行与链接格式,包含符号表、调试信息、段表。

✅ 用于开发调试
✅ 支持动态链接

BIN 0x08000000 0x08000014 0x08000028 ... 连续数据 无地址信息 HEX :10000000FF... :10001000AA... :04002000BB :00000001FF 地址 + 数据 + 校验 可分段烧录 ELF ELF Header Program Header .text 段 .data 段 符号表 / 调试信息

▲ 图3:BIN / HEX / ELF 格式结构对比

📝 示例:HEX 文件片段解析

:10000000FF0123456789ABCDEF0123456789ABCDEF00
:10001000AABBCCDDEEFF0011223344556677889900
:04002000DEADBEEF
:00000001FF

🔹 每行以 : 开头,包含长度、地址、类型、数据、校验和。
🔹 最后一行 :00000001FF 表示文件结束。

📌 本节要点

  • 固件 是嵌入式设备的底层软件,负责硬件初始化、驱动、协议和安全。
  • BIN 是纯二进制,适合量产;HEX 带地址和校验,适合编程器;ELF 带调试信息,适合开发。
  • 升级固件时,通常将 BIN/HEX 通过 Bootloader 写入 Flash,并校验完整性。
专注课程资料整理