第一章 嵌入式系统概述

做嵌入式开发这么多年,经常有人问我:到底什么是嵌入式系统?

我的回答很简单——凡是那些藏在设备里面、用户看不见的计算机系统,基本都属于嵌入式。你手里的路由器、车上的ECU、智能手表的芯片,都是嵌入式系统。它不像你的台式机那样有个显眼的机箱,但它无处不在。

核心定义:嵌入式系统是以应用为中心,以计算机技术为基础,软硬件可裁剪,对功能、可靠性、成本、体积、功耗有严格要求的专用计算机系统。

1.1 嵌入式系统的组成

一个完整的嵌入式系统,说白了就三块:硬件平台、软件栈、开发工具链。我习惯把它们拆成下面这张图来看——

嵌入式系统组成结构图 硬件平台 处理器 (ARM/RISC-V/MIPS) 存储器 (ROM/RAM/Flash) 外设接口 (GPIO/UART/I2C/SPI) 传感器/执行器 软件栈 应用层 (App) 用户功能代码 操作系统层 (OS) Linux/RTOS/Bare-metal 驱动层 (Driver) BSP/U-Boot/设备树 开发工具链 交叉编译器 (GCC) 调试器 (GDB/JTAG) 烧录工具 (Flash Programmer) 模拟器 (QEMU)

这张图我画了很多遍。每次给新人讲嵌入式,我都先让他们看这个结构。硬件是骨架,软件是血肉,工具链是手术刀——缺一不可。

1.2 主流嵌入式处理器架构

目前市面上主流的架构就三个:ARM、RISC-V、MIPS。我挨个说说我的实际感受。

架构 特点 典型应用 我的评价
ARM 生态成熟、功耗低、性能强 手机SoC、路由器、MCU 目前最主流,资料最多,新手首选
RISC-V 开源、指令集精简、可定制 AI加速器、IoT、学术研究 未来趋势,但生态还在建设中
MIPS 历史悠久、设计优雅 网络设备、机顶盒 逐渐边缘化,但存量市场很大

个人建议:如果你刚入门嵌入式,从ARM Cortex-M系列开始。我在带团队时,新人上手最快的就是STM32。等ARM玩熟了,再去看RISC-V,你会发现很多设计理念是相通的。

1.3 嵌入式开发流程

嵌入式开发不是写写代码就完事的。我总结了一套标准流程,这些年一直在用——

  1. 需求分析:搞清楚产品要什么功能、跑多快、功耗多少、成本上限。
  2. 硬件选型:选处理器、存储器、外设芯片。这一步很关键,选错了后面全白干。
  3. 原理图与PCB设计:硬件工程师画板子,软件工程师开始搭开发环境。
  4. Bootloader移植:也就是我们这门课的核心——U-Boot。让板子先跑起来。
  5. Linux内核移植:裁剪内核、配置设备树、调试驱动。
  6. 根文件系统构建:用BusyBox或Buildroot做一套能用的文件系统。
  7. 应用开发与调试:写业务代码,联调测试。
  8. 生产与烧录:生成固件,批量烧录,出厂测试。

避坑提醒:我曾经在一个项目里跳过硬件选型评审,直接拿现成的开发板改。结果量产时发现Flash容量不够,OTA升级根本做不了。最后只能重新改板,损失了两个月工期。所以——硬件选型阶段,软件工程师一定要参与。

你想想看,整个流程里,U-Boot移植和内核启动调试是最容易卡住人的环节。板子点不亮、内核起不来、驱动加载失败——这些问题我几乎每个项目都遇到过。这也是为什么我要做这门课的原因。

1.4 本章小结

嵌入式系统没那么神秘。它就是一台专为特定任务设计的计算机。硬件、软件、工具链三部分组成了它的全部。ARM、RISC-V、MIPS是当前三大主流架构,各有各的战场。开发流程虽然步骤多,但只要按部就班,就不会出大乱子。