小明的奶茶店开到了汽车上——一台会自己跑的智能奶茶车。这车里的"大脑"就是嵌入式系统:体积小、专用、实时、资源受限。本章是全书最厚的一章,从概念到设计全流程讲透"藏在小物件里的计算机"。
🎭 本章导读:三个核心要素
📌 12.1 嵌入式系统概论
7大特点:①系统专用性强 ②系统实时性强 ③软硬件依赖性强 ④处理器专用 ⑤多种技术紧密结合 ⑥系统透明性(用户可能感觉不到它的存在) ⑦系统资源受限。
🧱 12.2 嵌入式系统的组成
12.2.1 硬件架构
4类嵌入式处理器:
| 类型 | 缩写 | 特点 | 代表 |
|---|---|---|---|
| 嵌入式微处理器 | EMPU | 由通用CPU演变,体积小功耗低,单板计算机 | ARM/POWER PC/MIPS |
| 嵌入式微控制器(单片机) | EMCU | 单片化,体积更小功耗更低,占市场70% | 8051/MCS-96/MC68HC |
| 嵌入式DSP | EDSP | 哈佛结构,硬件乘法器,专门信号处理 | — |
| 嵌入式片上系统 | SOC | 一块芯片集成多功能模块,体积最小 | Trocore/M-Core/ARM |
3种总线:①AMBA(ARM公司,AHB高性能/ASB系统/APB外设) ②PCI(地址数据复用32/64位,CPCI工业控制) ③Avalon(Altera,SOPC)。
3种存储器:高速缓存Cache(片内,数据/指令/混合)、主存(ROM/EPROM/NOR flash/SRAM/DRAM)、外存(Flash为主,非易失)。
I/O接口:RS-232串行(20kbps,15米)、USB(即插即用,480Mbps)、IEEE1394火线(对等网络,不需主控,支持热插拔)。
12.2.2 软件架构
自底向上3层:①嵌入式OS(微内核,负责进程调度/通信/内存/中断) ②应用支撑软件(窗口/网络/数据库/JVM,用于浅度嵌入如智能手机) ③应用软件(系统功能集中体现,不可没有)。
🛠️ 12.3 嵌入式开发平台与调试环境
12.3.1 交叉编译环境
3部分:①宿主机和目标机上的交叉开发工具 ②目标机上的可裁剪实时OS ③宿主机与目标机的通信(以太网/串口/ICE/ROM仿真器)。
目标文件格式:COFF(公共对象)和ELF(可执行链接)。目标文件含:通用信息、二进制指令数据、符号表和重定位表、调试信息。
12.3.2 嵌入式开发调试5种方法
| 方法 | 原理 | 优缺点 |
|---|---|---|
| 直接调试法 | 下载代码到目标机执行,看指示灯判断 | 最原始最低效 |
| 调试监控法(插桩法) | 目标机加"桩"模块与宿主机调试器通信 | 提高效率,但占用资源、不能响应中断 |
| ROM仿真器法 | 替代目标机ROM芯片,改良插桩法 | 不占资源、不需开发监控器 |
| 在线仿真法(ICE) | 替代目标机CPU,有自己的CPU/内存 | 最强调试(实时跟踪/硬件断点),但昂贵 |
| 片上调试法(ICD) | CPU芯片内部调试模块(BDM/JTAG/OnCE) | 不占资源、环境一致,但标准不统一 |
| 模拟器法 | 宿主机纯软件模拟目标机指令/系统调用 | 不需硬件,但实时性差、不能模拟所有外设 |
🌐 12.4 嵌入式网络系统
现场总线(FCS):工业自动化领域的局域网,全数字化、分散、双向、多分支。将控制功能下放到现场,是开放的、互操作的、彻底分散的分布式控制系统。
家庭信息网:连接家电/水电气仪表/照明/安防/网络设备。控制子网(低带宽,类似现场总线)+数据子网(高带宽)。
无线数据通信网:短程(802.11/蓝牙/IrDA/HomeRF)+无线Internet(移动接入GSM/GPRS/CDPD,固定接入微波/扩频/卫星)。
嵌入式Internet两种接入:①直接接入(集成TCP/IP栈,需IP,性能要求高) ②网关接入(瘦设备方案,如EMIT,不需完整TCP/IP)。
嵌入式TCP/IP协议栈4特点:①API不标准(为效率简化) ②可裁剪(模块化) ③平台兼容性好(对OS依赖小) ④高效率(占用空间少)。
💾 12.5 嵌入式数据库管理系统
使用环境4特点:设备随时移动、网络频繁断接、网络条件多样化、通信能力不对称(下行带宽远大于上行)。
系统组成:嵌入式DBMS(独立单用户)+同步服务器(连接枢纽)+数据服务器(主库)+连接网络。
应用关键3问题:
- 数据一致性:弱连接下采用乐观复制方法,允许操作本地副本,重连后交换修改+冲突检测协调
- 高效事务处理:按连接速度定优先级、长时间事务迁移到服务器、按数据量定上载/下载、完善日志、断接处理机制、位置属性实时更新
- 数据安全性:终端认证、无线通信加密、下载副本加密存储
移动DBMS 8特性:微核结构、支持SQL92子集、事务管理、完善数据同步(上载/下载/完全3种+冲突检测+快速同步+水平垂直分割+异构数据源+主动同步)、多连接协议、完备管理功能、平台无关性、零管理(自动恢复)。
⏱️ 12.6 实时系统与嵌入式操作系统
12.6.1 实时概念
按响应时间强弱:强实时(毫秒/微秒)→一般实时(秒级)→弱实时(可随负载变化)。
按错失时限容忍度:硬实时(时限必须满足,否则灾难性后果,结果零级无用) vs 软实时(有灵活性,错失不致系统失败)。
12.6.2 嵌入式OS概述
5特点:微型化、代码质量高、专业化、实时性强、可裁剪可配置。
分类:商业型(VxWorks/pSOS/Palm OS,稳定但贵) vs 免费型(嵌入式Linux/uC/OS,免费但支持差);实时型(控制通信为主) vs 非实时型(消费电子)。
12.6.3 实时嵌入式OS关键特性
8特性:高可靠性、可裁剪、内存需求少、运行可预测性、实时调度策略、规模紧凑、支持ROM/RAM引导、可移植性。
3类时间性能指标:
- 任务切换时间:保存恢复上下文+调度时间
- 中断相关:中断延迟(中断发生到系统获知)、中断处理执行、中断响应(到开始执行用户ISR)、中断恢复(ISR结束回到被中断代码)、最大关中断时间(内核+应用)
- 系统响应时间:发出请求到系统应答(调度延迟)
📐 12.7 嵌入式系统开发设计
12.7.1 设计特点与11项技术指标
8特点:软硬件协同并行、处理器多样、实时OS多样、资源少、应用支持少、需特殊工具、软硬件都要健壮、调试困难。
11项指标:NRE成本(一次性)、单位成本、大小、性能(响应时间/完成量)、功率、灵活性、样机建立时间、上市时间、可维护性、正确性、安全性。各指标互相竞争,改良一个常致其他恶化。
8设计挑战:需多少硬件、如何满足时限、如何减功耗、如何保证可升级性、如何保证可靠性、测试复杂性、可视可控性有限、开发环境受限。
12.7.2 开发模型与设计流程
4种开发模型:瀑布(理想自顶向下)、螺旋(多版本逐步求精)、逐步求精(原型迭代)、层次(从整体到模块逐层展开)。
嵌入式软件开发过程:项目计划→可行性→需求→概设→详设→程序建立(宿主机编译链接)→下载→调试→固化→测试→运行。每步都要考虑"交叉"进行。
12.7.3 三大核心技术
1. 处理器技术(3类):
- 通用处理器:存储程序+通用数据路径,灵活性高,NRE低,但数量大时单位成本高
- 单用途处理器(协处理器/加速器):性能好体积小,但灵活性差
- 专用指令集处理器:针对特定类型优化(单片机/DSP)
2. IC技术(3类):全定制/VLSI(NRE高,性能最优)、半定制/ASIC(门阵列/标准单元,性价比高)、可编程/ASIC(实验室可烧制,NRE低但单位成本高)。
3. 设计/验证技术:硬件(芯片级编译综合/库IP/测试验证 + 电路板级)、软件(语言从低级到高级,汇编/分析/编译解释)。
12.7.5 嵌入式软件设计6种计算模型
| 模型 | 特点 | 适用 |
|---|---|---|
| 状态机FSM | 六元组S/I/O/F/H/S0,状态+转移 | 纯控制系统 |
| 数据流模型 | 结点=变换,边=数据流,令牌触发 | 数据处理转换 |
| 并发进程模型 | 进程间通信(共享变量+消息传递) | 最广泛,多任务系统 |
| 面向对象模型 | 隐式(对象建模为主) vs 显式(进程+对象) | 并发+对象结合 |
FSM扩展:FSMD(带数据路径)、HCFSM(分级并发)。OCTOPUS方法是面向对象+实时系统的典型设计方法。
12.7.7 系统设计
协同合成工具:POLIS(UC-Berkeley,FSM,小型控制)、COSYMA(IDA,软件合成,自动分割)、Chinook(控制系统,多处理器,定时限制)。
协同模拟工具:PTOLEMY(混合计算模型)、TSS(硬件模拟,C语言,支持多核)。
处理器选择6考虑:速度、技术指标(集成外设)、熟悉程度、I/O功能、软件支持工具、调试功能、制造商支持、低功耗。
OS选择7考虑:功能、配套开发工具、移植难易、内存需求、附加软件包、实时性、灵活性(可裁剪)。
编程语言:Ada(国防航空)、C(最广泛)、C++(面向对象但代码大)、Java。汇编移植性差但效率高。
🏆 本章总结:嵌入式全流程
- 概念:3要素(嵌入/专用/计算机)+7特点
- 组成:4类处理器(EMPU/EMCU/EDSP/SOC)+3总线(AMBA/PCI/Avalon)+3存储+软件3层
- 开发平台:交叉开发(CPD)+5种调试(直接/插桩/ROM仿真/ICE/片上/模拟器)
- 网络:现场总线+家庭网+无线+嵌入式Internet(TCP/IP栈4特点)
- 数据库:移动数据库,乐观复制,8特性(微核/SQL/事务/同步/多协议/管理/平台无关/零管理)
- 实时OS:硬/软实时,5特点,3类时间指标(任务切换/中断/系统响应)
- 开发设计:11指标、4模型、3核心技术(处理器/IC/设计验证)、6计算模型、系统设计(处理器6选/OS7选/语言)