8. 术语表
在开始这章之前,需要读者好好阅读这个术语表,避免网上流毒缩写产生的歧义
1. 实时操作系统 (Real-Time Operating System, RTOS)
实时操作系统是专门为满足实时计算需求而设计的操作系统。它必须在规定的时间内完成特定任务,以保证系统的正确性和可靠性。实时系统通常分为硬实时 (Hard Real-Time) 和软实时 (Soft Real-Time) 两类。
RTOS 的任务调度是确定性的 (Determinism),能保证任务在预定的时限内完成。它通常采用基于优先级的抢占式调度 (Preemptive Scheduling),能快速响应中断等外部事件,从事件发生到系统响应的延迟很低。RTOS 还负责管理 CPU 时间、内存等系统资源,以支持实时任务。
RTOS 广泛用于工业控制、汽车电子、医疗设备、航空航天等嵌入式系统,路由器、交换机等网络设备,以及数字电视、智能手机等消费电子。一些知名的 RTOS 包括:
- VxWorks
- QNX
- RTLinux
- FreeRTOS
- eCos
- RT-Thread
- µC/OS
在不引起歧义的情况下,本教程的 RTOS 一般是指 FreeRTOS
2. 板级支持包 (Board Support Package, BSP)
板级支持包是用于特定硬件平台的一组软件。它在该硬件平台上提供硬件抽象层,使操作系统或应用程序能够在这个平台上运行,而不必关心底层硬件的具体细节。基本的 BSP 包含以下两部分:
- 硬件初始化代码:在系统启动时配置 CPU、内存、外设接口等硬件组件,使它们处于正确的状态。
- 设备驱动程序:把硬件组件向上抽象为面向应用的 API,供操作系统和应用程序与硬件设备交互。
更完善的 BSP 还包括引导加载程序 (Bootloader) 等负责启动操作系统的系统启动代码、按特定的硬件配置和操作系统需求定制 BSP 的配置工具和脚本,以及调试和测试硬件与软件接口的工具。
在不引起歧义的情况下,本教程所说 BSP 是指包含最基本的两个功能
3. 统一可扩展固件接口 (Unified Extensible Firmware Interface, UEFI)
UEFI 是电脑启动时使用的固件接口标准,用来取代传统的基本输入输出系统 (Basic Input/Output System, BIOS),提供更现代、可扩展且安全的固件接口。UEFI 的主要特点有:
- 启动管理:启动过程更灵活、更易管理,支持从多个存储设备启动操作系统。
- 驱动支持:启动过程中可以加载和使用各种设备驱动程序,因此能更好地支持大容量磁盘和新的文件系统。
- 图形用户界面:支持图形化的设置界面,配置固件更直观。
- 安全启动 (Secure Boot):启动过程中只加载经过数字签名的软件,防止恶意软件在启动阶段运行。
- 网络功能:可以在启动过程中访问网络,例如从网络安装操作系统。
- 兼容性:可以兼容传统的 BIOS 系统,但要充分利用 UEFI 的功能,操作系统和硬件需要明确支持 UEFI。
- 可扩展性:可以方便地添加新功能,以适应今后的硬件和软件需求。
UEFI 的组成部分包括主板上负责初始化硬件并提供启动服务的 UEFI 固件、在 UEFI 环境中操作硬件的 UEFI 驱动程序,以及用于执行固件级操作的命令行界面 UEFI Shell。
4. 交叉编译工具链 (Cross-Compilation Toolchain)
交叉编译工具链是在一种平台上编译出另一种目标平台代码的一套工具。有了它,开发者可以在自己的电脑上编译目标硬件的程序,而不需要在目标硬件上运行编译器。
5. 处理器架构 (Processor Architecture)
处理器架构是计算机硬件设计的基础,它规定了处理器的内部结构、指令集、数据路径、寄存器模型、中断和异常处理机制、内存管理单元 (Memory Management Unit, MMU) 以及系统总线接口等。软件如何与硬件通信和操作硬件,由处理器架构决定。
常见的处理器架构有:
- x86:由 Intel 和 AMD 公司开发,是最常见的桌面和服务器处理器架构之一,属于复杂指令集计算机 (Complex Instruction Set Computer, CISC),支持虚拟化技术。
- ARM:由 ARM Holdings 公司开发,属于精简指令集计算机 (Reduced Instruction Set Computer, RISC),以低功耗和高能效著称,主要用于移动设备和嵌入式系统。
- MIPS:由 MIPS Technologies 公司开发的 RISC 架构,曾在许多工作站和服务器中使用,现在更多地用于嵌入式系统。
- PowerPC:由 IBM、Motorola 和 Apple 公司共同开发的 RISC 架构,主要用于服务器和工作站。
- SPARC:由 Sun Microsystems 开发,现在由 Oracle 公司维护,是一种高性能的 RISC 架构,主要用于服务器和超级计算机。
- RISC-V:开源的 RISC 指令集架构,以模块化和可扩展性受到关注。
6. 指令集 (Instruction Set)
指令集是处理器架构的一部分,它定义了处理器可以理解和执行的机器指令的集合。指令集是软件和硬件之间的接口,它规定了处理器可以执行哪些操作,以及如何通过操作码和操作数来执行这些操作。
指令集主要分为以下两种类型:
- 复杂指令集计算机 (CISC):包含大量指令,每条指令可以执行多个操作。CISC 处理器的指令解码器比较复杂。它的优点是每条指令能完成更多的操作,从而减少总的指令数量,但复杂的解码和执行可能影响性能。
- 精简指令集计算机 (RISC):包含较少的指令,每条指令只执行一个简单的操作。RISC 处理器的指令解码器比较简单,解码和执行速度快,但完成复杂的操作需要更多的指令。
桌面和服务器中常见的 x86 属于 CISC,移动设备和嵌入式系统中常见的 ARM 属于 RISC。也有一些处理器结合了 CISC 和 RISC 的特点,同时包含一定数量的复杂指令和简单指令。
7. CMSIS (Cortex Microcontroller Software Interface Standard)
CMSIS 是 Arm 为 Cortex-M 系列微控制器制定的标准化软件接口,目的是让软件在不同的 Cortex-M 微控制器之间更容易移植和复用。

CMSIS 包括以下几个部分:
- CMSIS-Core:用于启动、中断处理、内存管理和异常处理的通用函数。
- CMSIS-DSP:数字信号处理 (Digital Signal Processing, DSP) 函数库。
- CMSIS-RTOS:实时操作系统的通用接口,开发者可以选择并集成不同的 RTOS 实现。
- CMSIS-Device:为每种 Cortex-M 微控制器定义寄存器映射和中断向量表。
- CMSIS-Driver:访问微控制器通用外设的驱动程序接口。
CMSIS 统一的主要是内核部分(如 NVIC、SysTick)的访问方式。各厂商外设的寄存器布局互不相同,更换芯片厂商时,直接操作外设寄存器的代码仍要重写。
8. 寄存器 (Register)
寄存器本来指 CPU 内部的高速存储单元,用于临时存放数据和指令,访问速度比内存快得多。例如 Cortex-M 内核有通用寄存器 R0~R12、栈指针 SP、链接寄存器 LR 和程序计数器 PC。这些内核寄存器由编译器分配和使用,C 程序不能直接访问。
在 MCU 开发中,“寄存器”更多指外设寄存器。GPIO、UART、定时器等片上外设各有一组寄存器,分别用于配置工作方式、读取状态和收发数据。这些寄存器与 Flash、SRAM 位于同一个地址空间,每个寄存器有固定的地址,CPU 用普通的读写指令访问它们,这种方式称为内存映射 I/O (Memory-Mapped I/O, MMIO)。详见 2.2 内存映射 I/O、寄存器与 volatile。