第一章 嵌入式系统概述
做嵌入式开发这么多年,经常有人问我:到底什么是嵌入式系统?
我的回答很简单——凡是那些藏在设备里面、用户看不见的计算机系统,基本都属于嵌入式。你手里的路由器、车上的ECU、智能手表的芯片,都是嵌入式系统。它不像你的台式机那样有个显眼的机箱,但它无处不在。
核心定义:嵌入式系统是以应用为中心,以计算机技术为基础,软硬件可裁剪,对功能、可靠性、成本、体积、功耗有严格要求的专用计算机系统。
1.1 嵌入式系统的组成
一个完整的嵌入式系统,说白了就三块:硬件平台、软件栈、开发工具链。我习惯把它们拆成下面这张图来看——
这张图我画了很多遍。每次给新人讲嵌入式,我都先让他们看这个结构。硬件是骨架,软件是血肉,工具链是手术刀——缺一不可。
1.2 主流嵌入式处理器架构
目前市面上主流的架构就三个:ARM、RISC-V、MIPS。我挨个说说我的实际感受。
| 架构 | 特点 | 典型应用 | 我的评价 |
|---|---|---|---|
| ARM | 生态成熟、功耗低、性能强 | 手机SoC、路由器、MCU | 目前最主流,资料最多,新手首选 |
| RISC-V | 开源、指令集精简、可定制 | AI加速器、IoT、学术研究 | 未来趋势,但生态还在建设中 |
| MIPS | 历史悠久、设计优雅 | 网络设备、机顶盒 | 逐渐边缘化,但存量市场很大 |
个人建议:如果你刚入门嵌入式,从ARM Cortex-M系列开始。我在带团队时,新人上手最快的就是STM32。等ARM玩熟了,再去看RISC-V,你会发现很多设计理念是相通的。
1.3 嵌入式开发流程
嵌入式开发不是写写代码就完事的。我总结了一套标准流程,这些年一直在用——
- 需求分析:搞清楚产品要什么功能、跑多快、功耗多少、成本上限。
- 硬件选型:选处理器、存储器、外设芯片。这一步很关键,选错了后面全白干。
- 原理图与PCB设计:硬件工程师画板子,软件工程师开始搭开发环境。
- Bootloader移植:也就是我们这门课的核心——U-Boot。让板子先跑起来。
- Linux内核移植:裁剪内核、配置设备树、调试驱动。
- 根文件系统构建:用BusyBox或Buildroot做一套能用的文件系统。
- 应用开发与调试:写业务代码,联调测试。
- 生产与烧录:生成固件,批量烧录,出厂测试。
避坑提醒:我曾经在一个项目里跳过硬件选型评审,直接拿现成的开发板改。结果量产时发现Flash容量不够,OTA升级根本做不了。最后只能重新改板,损失了两个月工期。所以——硬件选型阶段,软件工程师一定要参与。
你想想看,整个流程里,U-Boot移植和内核启动调试是最容易卡住人的环节。板子点不亮、内核起不来、驱动加载失败——这些问题我几乎每个项目都遇到过。这也是为什么我要做这门课的原因。
1.4 本章小结
嵌入式系统没那么神秘。它就是一台专为特定任务设计的计算机。硬件、软件、工具链三部分组成了它的全部。ARM、RISC-V、MIPS是当前三大主流架构,各有各的战场。开发流程虽然步骤多,但只要按部就班,就不会出大乱子。