具体描述
内容简介
本书是一本系统讲解嵌入式系统架构的书,讲述了板级和FPGA级两种典型架构。全书分为三部分。第壹部分主要介绍了嵌入式系统;第二部分介绍嵌入式系统的硬件开发;第三部分介绍嵌入式系统的软件开发;第四部分介绍软硬件协同开发。 目录
出版者的话
第1版推荐序
致谢
关于作者
第一部分 嵌入式系统简介
第1章 嵌入式系统设计的系统化方法 2
1.1 什么是嵌入式系统 2
1.2 嵌入式系统的体系结构简介 3
1.3 嵌入式系统模型 5
1.4 为什么使用整体化、体系结构化的系统工程方法?黄金法则是什么 6
1.5 小结 11
习题 11
尾注 13
第2章 了解设计标准 14
2.1 编程语言概述及其标准示例 20
2.1.1 影响嵌入式系统体系结构的编程语言示例:脚本语言、Java和.NET 22
2.1.2 垃圾回收机制 25
2.1.3 处理Java字节码 27
2.2 标准与网络 30
2.2.1 互连设备间的距离 30
2.2.2 物理介质 31
2.2.3 网络架构 33
2.2.4 OSI模型 33
2.3 基于多种标准的设备示例:数字电视(DTV) 43
2.4 小结 55
习题 56
尾注 57
第二部分 嵌入式硬件
第3章 嵌入式硬件的组件和嵌入式系统板 60
3.1 学习硬件的第一节课:学习读懂原理图 60
3.2 嵌入式系统板和冯·诺依曼模型 63
3.3 给硬件供电 65
3.4 基础硬件材料:导体、绝缘体和半导体 67
3.5 电路板上和芯片中常见的无源元件:电阻器、电容器和电感器 70
3.5.1 电阻器 70
3.5.2 电容器 73
3.5.3 电感器 74
3.6 半导体以及处理器和存储器的有源构建模块 75
3.6.1 二极管 75
3.6.2 晶体管 76
3.6.3 从基本的门电路构建出更复杂的电路 80
3.6.4 时序逻辑和时钟 81
3.7 全部整合到一起:集成电路 83
3.8 小结 85
习题 85
尾注 89
第4章 嵌入式处理器 90
4.1 ISA体系结构模型 92
4.1.1 功能 92
4.1.2 ISA模型 97
4.2 处理器内部设计 102
4.2.1 中央处理单元 104
4.2.2 片上存储器 115
4.2.3 处理器I/O 124
4.2.4 处理器总线 141
4.3 处理器性能 142
4.4 阅读处理器的数据手册 144
4.5 小结 153
习题 153
尾注 155
第5章 板载存储器 156
5.1 ROM 159
5.2 RAM 162
5.3 辅助存储器 168
5.4 外部存储器的存储管理 171
5.5 板载存储器及其性能 172
5.6 小结 173
习题 173
尾注 174
第6章 板载 I/O 175
6.1 数据管理:串行I/O与并行I/O 177
6.1.1 串行I/O 177
6.1.2 并行I/O 184
6.2 互连I/O组件 191
6.2.1 互连I/O设备和嵌入式系统板 191
6.2.2 互连I/O控制器和主CPU 193
6.3 I/O与性能 193
6.4 小结 194
习题 194
尾注 197
第7章 板载总线 198
7.1 总线仲裁和时序 199
7.2 将总线与其他板载组件集成 206
7.3 总线性能 207
7.4 小结 207
习题 208
尾注 209
第三部分 嵌入式软件介绍
第8章 设备驱动程序 213
8.1 示例1:中断处理的设备驱动程序 216
8.1.1 中断优先级 218
8.1.2 上下文切换 221
8.1.3 中断设备驱动程序伪代码示例 222
8.1.4 中断处理及其性能 228
8.2 示例2:存储器设备驱动程序 229
8.3 示例3:板载总线设备驱动程序 246
8.4 板载I/O驱动程序示例 251
8.4.1 示例4:初始化以太网驱动程序 251
8.4.2 示例5:初始化RS-232驱动程序 264
8.5 小结 268
习题 268
尾注 270
第9章 嵌入式操作系统 271
9.1 什么是进程 274
9.2 多任务和进程管理 276
9.2.1 进程实现 276
9.2.2 进程调度 285
9.2.3 任务间通信和同步 294
9.3 内存管理 299
9.3.1 用户存储空间 300
9.3.2 内核存储空间 308
9.4 I/O和文件系统管理 309
9.5 操作系统标准示例:POSIX 310
9.6 操作系统性能指南 312
9.7 选择正确的嵌入式操作系统以及BSP 312
9.8 小结 313
习题 314
尾注 316
第10章 中间件和应用软件 317
10.1 什么是中间件 317
10.2 什么是应用程序 319
10.3 中间件示例 319
10.4 应用层软件示例 345
10.4.1 FTP客户端应用软件示例 346
10.4.2 SMTP和电子邮件示例 348
10.4.3HTTP客户端和服务器示例 352
10.4.4 对应用整合的简要说明 354
10.5 小结 358
习题 358
尾注 360
第四部分 系统整合:设计与开发
第11章 定义系统:创建体系结构和设计文档化 362
11.1 创建嵌入式系统体系结构 363
11.1.1 阶段1:打好坚实的技术基础 364
11.1.2 阶段2:了解嵌入式系统的体系结构业务周期 364
11.1.3 阶段3:详细描述体系结构的模式和参考模型 372
11.1.4 阶段4:创建体系结构的框架 378
11.1.5 阶段5:体系结构的文档化 380
11.1.6 阶段6:对体系结构进行分析和评估 381
11.2 小结 382
习题 383
尾注 384
第12章 嵌入式系统设计的最后阶段:实现和测试 385
12.1 设计的实现 385
12.1.1 主要的软件实用工具:在编辑器或IDE中编写代码 386
12.1.2 CAD和硬件 387
12.1.3 翻译工具:预处理器、解释器、编译器和链接器 388
12.1.4 调试工具 390
12.1.5 系统启动 396
12.2 对设计的质量保证和测试 403
12.3
《嵌入式系统:硬件、软件及软硬件协同》(原书第2版) 深入探索嵌入式系统的核心技术与前沿实践 嵌入式系统,作为现代科技的基石,渗透在我们生活的方方面面,从智能手机、可穿戴设备到汽车电子、工业自动化,再到航空航天和医疗设备,无处不在。它们是高度集成、功能专用的计算系统,将硬件与软件紧密结合,为特定应用提供高效、可靠的服务。理解嵌入式系统的运作原理、设计方法以及软硬件协同的精髓,对于任何希望在科技领域深入发展或创新的人来说,都至关重要。 本书,《嵌入式系统:硬件、软件及软硬件协同》(原书第2版),正是为读者提供一个全面、深入且实用的学习平台。它不仅仅是一本理论书籍,更是一份指导实践的宝典,旨在帮助读者系统地掌握嵌入式系统设计和开发的方方面面,从而能够独立地设计、实现和优化复杂的嵌入式解决方案。 核心内容纵览: 本书的内容设计兼顾了理论深度和实践广度,力求为读者构建一个扎实而全面的知识体系。主要涵盖以下几个关键领域: 一、 嵌入式系统基础与架构 定义与概念: 深入阐述嵌入式系统的定义、特征(如实时性、可靠性、功耗、体积、成本等)及其与通用计算系统的区别。理解嵌入式系统在不同应用场景下的多样化需求。 系统架构: 剖析嵌入式系统的典型架构,包括处理器(CPU/MCU)、内存(RAM, ROM, Flash)、外设接口(GPIO, UART, SPI, I2C, USB, Ethernet等)、传感器、执行器以及电源管理单元。重点讲解不同处理器类型(如ARM, RISC-V, DSP等)的架构特点与选型考量。 硬件组件详解: 细致讲解构成嵌入式系统的关键硬件组件。例如,微控制器(MCU)的核心功能,存储器的类型与工作原理,不同通信接口的协议细节和应用场景,以及ADC/DAC在数据采集与控制中的作用。 嵌入式硬件设计流程: 介绍从需求分析到原理图设计、PCB布局布线、原型制作、调试与验证的完整硬件设计流程。强调设计中的关键考虑因素,如功耗优化、电磁兼容性(EMC)、信号完整性等。 二、 嵌入式软件开发 编程语言与工具链: 详细介绍嵌入式开发常用的编程语言,如C/C++,以及汇编语言在特定场景下的应用。深入讲解嵌入式开发工具链,包括交叉编译器、链接器、调试器(如GDB)、仿真器以及集成开发环境(IDE)。 裸机编程与驱动开发: 掌握直接操作硬件的裸机编程技术,理解硬件寄存器的读写方法,以及如何编写设备驱动程序以控制各类外设。这是深入理解硬件工作机制的基础。 实时操作系统(RTOS): 深入探讨实时操作系统在嵌入式系统中的核心作用,包括任务管理、进程间通信(IPC)、中断处理、内存管理、时间管理等关键概念。详细介绍主流RTOS(如FreeRTOS, RT-Thread, Zephyr等)的设计理念、API接口和应用技巧。学习如何设计和调度多任务系统,以满足实时性要求。 嵌入式Linux开发: 详细介绍在嵌入式设备上使用Linux操作系统进行开发的完整流程。包括嵌入式Linux的构建系统(如Buildroot, Yocto Project)、文件系统、内核配置与裁剪、设备树(Device Tree)的使用、应用程序的开发与部署,以及用户空间与内核空间的交互。 嵌入式软件架构设计: 探讨不同嵌入式软件架构模式,如分层架构、面向对象设计等,以及如何根据项目需求选择合适的架构。关注代码的可读性、可维护性、可重用性和扩展性。 调试与测试技术: 强调嵌入式软件调试的挑战与技巧,介绍使用硬件调试器、逻辑分析仪、示波器等工具进行问题定位。讲解单元测试、集成测试和系统测试的方法,确保软件的质量和稳定性。 三、 软硬件协同设计与优化 系统级建模与仿真: 介绍使用模型驱动设计(MDD)和仿真工具(如MATLAB/Simulink)进行软硬件协同设计的方法。通过模型在早期阶段验证系统行为,减少实际硬件开发中的迭代次数。 接口与通信协议: 深入研究不同硬件接口(如UART, SPI, I2C, USB, Ethernet, CAN, PCIe等)的通信协议细节,以及软件层如何与之交互。理解中断驱动、DMA(直接内存访问)等高效数据传输机制。 中断与异常处理: 详解中断的产生机制、中断向量表、中断服务程序(ISR)的设计与优化。理解异常处理的流程,以及如何编写健壮的代码来应对硬件异常。 功耗管理: 探讨嵌入式系统中的功耗挑战,介绍各种低功耗设计技术,包括硬件层面的低功耗模式(如睡眠、待机)、软件层面的动态电压与频率调整(DVFS)、任务调度优化以及外设电源管理。 实时性保证: 深入分析影响嵌入式系统实时性的因素,如中断延迟、任务切换开销、优先级反转等。介绍实时调度算法、优先级继承、优先级天花板等技术,以确保系统在严格的时间约束下运行。 性能优化: 学习针对嵌入式资源的性能优化策略,包括代码优化、算法选择、缓存利用、内存访问模式优化等,以在有限的硬件资源下实现最佳性能。 固件更新(OTA): 讨论远程固件更新(Over-The-Air)的设计与实现,包括安全更新机制、版本管理、回滚策略等,这对于联网嵌入式设备至关重要。 嵌入式系统安全: 关注嵌入式系统的安全问题,包括硬件安全特性(如安全启动、加密引擎)、软件安全防护(如内存保护、输入验证)、通信安全以及安全更新机制。 四、 前沿技术与应用实例 物联网(IoT)与边缘计算: 探讨嵌入式系统在物联网领域的应用,包括传感器数据采集、通信协议(MQTT, CoAP)、云平台对接以及边缘计算的概念和实现。 人工智能(AI)与机器学习(ML)在嵌入式系统中的应用: 介绍如何将轻量级的AI/ML模型部署到资源受限的嵌入式设备上,实现智能感知、决策和控制。 嵌入式系统在特定领域的应用: 通过丰富的实际案例,展示嵌入式系统在汽车电子(ADAS, Infotainment)、工业控制(PLC, SCADA)、医疗设备、消费电子、智能家居等领域的创新应用。 本书的价值与特点: 《嵌入式系统:硬件、软件及软硬件协同》(原书第2版) 最大的特点在于其理论与实践的高度融合。它不仅仅停留在概念层面,而是通过深入的原理剖析、详尽的代码示例、清晰的流程图以及典型的应用场景,帮助读者将知识转化为实际能力。 系统性与全面性: 涵盖了从基础硬件到高级软件,再到软硬件协同设计的完整知识链条,为读者提供了一个无缝的学习体验。 深度与广度并存: 在深入讲解核心概念的同时,也广泛涉猎了嵌入式领域的热点技术和前沿发展。 注重实际操作: 配备了大量有助于理解和掌握的实例,鼓励读者动手实践,在实践中加深理解。 权威性与前沿性: 作为“原书第2版”,它吸收了前一版本的精华,并根据当前技术发展进行了更新和补充,确保内容的权威性和前沿性。 面向广泛读者群体: 无论您是计算机科学、电子工程、自动化等相关专业的学生,还是已经投身于嵌入式开发领域的工程师,亦或是对嵌入式系统充满好奇的科技爱好者,本书都能为您提供宝贵的学习资源。 掌握嵌入式系统,就是掌握了驱动现代智能世界的核心技术。 《嵌入式系统:硬件、软件及软硬件协同》(原书第2版),将是您踏上这段精彩旅程的最佳伙伴。通过阅读本书,您将能够深刻理解嵌入式系统的运作机制,熟练掌握软硬件协同设计的精髓,并为未来在这一充满机遇的领域中施展才华打下坚实的基础。