在梳理不断演化和丰富的嵌入式系统理论、方法、技术及应用脉络的基础上,本书致力于构建自架构、原理到设计,由宏观特性到微观原理,硬件与软件、理论与实践相融合的多维知识体系。开篇首先以经典的嵌入式系统概念、内涵以及必要的基础知识作为铺垫进行导入,进而从嵌入式硬件、嵌入式软件以及设计与验证方法三个方面展开论述。其中,硬件部分深入地阐述了嵌入式处理器、存储器等子系统以及*小系统外围电路和I/O接口扩展等硬件组件的体系结构、工作原理、设计方法与示例。软件部分重点阐述了嵌入式软件系统的组成结构与基础组件,嵌入式(实时)操作系统共性的功能模型、服务机制、设计方法和典型系统示例,以及嵌入式图形库、文件系统、数据库等典型的嵌入式软件组件。设计与验证方法部分则分析和阐述了嵌入式软件与系统的开发机制以及常见调试、测试、仿真方法的技术原理。全书写作采用了整体体系贯穿与局部深度剖析相结合、共性机理归纳与设计示例分析相呼应的思路,力求系统、生动又深入浅出地阐述嵌入式系统技术涉及的体系结构、技术原理与设计机制,并在突出技术性、新颖性的同时又注重内容的易读性和实用性。
本书适合供高等院校计算机科学与技术、物联网、自动化、电子信息及电气工程等相关专业的高年级本科生、研究生学习,尤其适合作为嵌入式(计算机)系统类课程的授课教材或参考教材,同时也适合作为专业设计人员的技术参考用书。
嵌入式系统作为信息技术领域的重要技术发展方向,已广泛融入到军事国防、工业装备、智能交通、医疗电子、信息通信等诸多领域。在经历网络化发展阶段之后,嵌入式系统技术的发展已经开始步入微型化、信息物理融合以及智能化的时代,是互联网 、物联网、智能制造等众多领域进行技术变革和跨越式发展的重要支撑。随着相关技术的飞速发展,嵌入式系统技术完备、庞大的知识体系也在不断演化和丰富,对嵌入式系统技术的学习随之迈入更为深化和高级的阶段。在总结嵌入式系统知识特点的基础上,本书全面地梳理了嵌入式系统技术的知识结构,并以构建自架构、原理到设计,由宏观特性到微观原理,以及硬件与软件、理论与实践相融合的多维、立体知识体系为总目标,以整体体系贯穿与局部深度剖析相结合、共性机理归纳与设计示例分析相呼应的方法展开相关内容的阐述和讨论。全书内容总体分为嵌入式系统概述、硬件、软件及设计方法四个大的部分,共11章,知识结构如图1所示。其中,第1章为概述,第2章至第6章为嵌入式硬件部分,第7章至第10章为嵌入式软件相关内容,第11章为开发与验证方法,具体内容安排如下。图1本书的知识架构第1章,从计算技术、通信与网络技术的发展导入,分析了计算装置的可嵌入发展历程,并重点讨论了嵌入式系统的内涵、组成、特点及其趋势。第2章,总结、论述了与本书后续内容密切相关的硬件电路知识;进而阐述了嵌入式硬件的架构模型与子系统组成、典型嵌入式系统的硬件形式以及基本的硬件设计方法。第3章,由嵌入式处理器的组成模型和典型逻辑架构出发,总结、阐述了不同类型嵌入式处理器的体系、组成、特点及其差异,在此基础上分析了几种典型嵌入式处理器体系的机制和特性。第4章,归纳、讨论了嵌入式存储器子系统的体系与模型,重点分析了不同类型存储器的架构、原理、特性以及微观的电路机制,并简要阐述了存储器的测试与验证方法。第5章,围绕最小系统硬件设计,阐述了电源、复位、时钟等外围电路的基本工作原理与设计机制,并对相关知识进行了延伸讨论。第6章,面向完整的嵌入式系统硬件设计需要,分析、讨论了常见和典型I/O接口与总线的原理、特性及应用机制。第7章,在分析嵌入式系统启动与运行过程的基础上,总结了嵌入式软件系统的典型架构,重点对系统软件中基础软件组件的机制与特性进行了分析和讨论。第8章,系统地讨论了嵌入式(实时)操作系统的相关内容。本章首先归纳了嵌入式操作系统的架构与功能模型,进而分析了不同嵌入式操作系统中的共性服务机制和方法,最后给出了几个典型嵌入式操作系统的分析实例。第9章,结合嵌入式软件系统的设计需要,分析、阐述了嵌入式图形库、文件系统、数据库、协议栈等嵌入式软(硬)件组件的原理与机制。第10章,综合阐述了嵌入式应用软件的相关设计方法,包括嵌入式应用软件结构、中断程序与数据共享问题、典型的嵌入式软件设计机制以及软件工程方法等。第11章,根据嵌入式系统特点,总结了嵌入式软件与系统开发过程中调试、测试及仿真等验证技术的基本原理、工作机制和实施方法。在本书内容的组织和编写过程中,作者以构建多维度的知识体系为目标,力求实现模型到实现、宏观到微观、硬件到软件、高级语言到低级语言的单点纵向穿透和多点横向融合。这一方面将有助于读者系统、深入地理解和掌握相关的知识原理、机制和方法,另一方面也有助于消除知识盲点,促进整个知识体系的融会贯通。阅读过程中,读者将发现本书的知识体系还实现了嵌入式系统技术到电子、物理、材料等学科知识以及经典示例的延伸与融合,这也使得本书内容更为丰富和生动。按照上述方式组织本书内容的另一个目的在于,尝试引导读者建立从多个角度来分析嵌入式系统设计问题的综合能力以及多维度的思维方式,在阅读本书内容的过程中读者将会有深刻体会。嵌入式系统知识体系的体量较大且软硬件高度融合。作者虽致力于在本书中构建一个完整的知识体系,但因篇幅有限,对部分相关内容的细节未能进行深入讨论,请读者根据兴趣和实际工作需要进行延伸阅读与学习。同时,作者本人知识水平有限,虽在近一年半的写作中已尽全力,但书中谬误之处在所难免,虚心接受各位读者的意见和建议。
张凯龙
2016年1月13日于西安
张凯龙,工学博士,法国Mines Paristech博士后,西北工业大学计算机学院副教授,第二届中国嵌入式系统十大杰出青年(2011)。现为IEEE、ACM、ACIS会员,中国计算机学会高级会员、嵌入式系统专委会委员、系统软件专委会委员。主要研究方向为网络化嵌入式计算领域的多形态自适应嵌入式实时计算、智能化嵌入式系统与服务软件、多机器人协同调度与协作、嵌入式系统仿真验证技术,主要承担嵌入式系统方向的专业课程教学及人才培养工作。作为课程负责人,自2005年起在西北工业大学计算机学院开设并主讲本科生嵌入式系统,2008年起在软件与微电子学院开设本科生嵌入式计算机系统课程,并负责嵌入式系统课程的教学方案与大纲制定,教学实验室建设等工作;自2014年起在计算机学院面向硕士生开设高级嵌入式系统课程实时智能系统。从事嵌入式系统系列课程教学过程中,注意探索教学模式和教学方法,以第一作者发表嵌入式系统课程教学研究论文1篇;参加建设的操作系统课程获*精品课程、嵌入式人才培养模式获陕西省优秀教学成果一等奖1项。指导研究生、本科生参加全国物联网大赛、中国开源软件大赛、微软全球ImagineCUP大学生挑战赛、西安市大学生软件设计大赛等多项,获作品创新奖、金奖、优秀论文奖、团体季军奖等多项。在国际学术会议、国内核心学术期刊等发表学术论文50余篇,三大索引26篇次,获得国家发明专利5项、国家计算机软件著作权11项。近年来,主持国家自然基金课题2项,陕西省重大科技创新计划、航空院所合作课题等5项;2011年起与法国勃艮第大学LE2I实验室、巴黎第十二大学LISSI实验室、巴黎高科Mines机器人研究中心CAOR等建立学术合作关系,并联合承担中法合作交流项目1项。
目录
第1章概述/1
1.1计算技术延伸/1
1.1.1从开尔文设想到现代计算技术出现/1
1.1.2计算机技术的发展/2
1.1.3通信与网络技术发展/4
1.2理解嵌入式(计算)系统/6
1.2.1计算装置的可嵌入发展过程/6
1.2.2嵌入式(计算)系统的内涵/8
1.2.3相关术语辨析/10
1.3嵌入式系统的组成与特点/12
1.3.1体系结构与组成/12
1.3.2应用及技术特点/13
1.4发展趋势/16
1.5知识体系小结/18
习题/19
第2章嵌入式硬件基础/20
2.1硬件基础/20
2.1.1器件术语/20
2.1.2电路术语与符号/23
2.1.3基本元件与逻辑/25
2.2嵌入式系统硬件组成/30
2.2.1硬件基本架构模型/30
2.2.2核心逻辑与子系统/32
2.3典型嵌入式系统硬件形式/38
2.3.1基于通用计算机扩展的嵌入式硬件/38
2.3.2基于领域标准模块集成的嵌入式硬件/39
2.3.3针对具体应用设计的嵌入式硬件/41
2.4硬件设计基本方法/42
2.4.1Protel EDA软件/42
2.4.2电路设计基本流程/45
2.4.3电磁兼容性问题/47
2.4.4低功耗问题/512.4.5嵌入式硬件设计示例/52
2.5小结/60
习题/61
第3章嵌入式处理器/62
3.1处理器模型与逻辑体系/62
3.1.1处理器基本组成模型/62
3.1.2处理器的基本逻辑体系/65
3.2嵌入式处理器类型及特点/70
3.2.1嵌入式微控制器/70
3.2.2嵌入式微处理器/72
3.2.3数字信号处理器/73
3.2.4可编程逻辑器件/77
3.2.5片上系统/84
3.2.6多核、众核处理器/88
3.3典型嵌入式处理器体系/95
3.3.1ARM架构/95
3.3.2MIPS架构/110
3.3.3PowerPC架构/115
3.4性能评价指标/124
3.5小结/126
习题/126
第4章嵌入式存储技术/127
4.1基本存储体系与模型/127
4.1.1嵌入式系统存储体系/127
4.1.2存储器结构模型/128
4.1.3存储器基本操作流程/129
4.1.4存储器技术指标/130
4.2存储器分类及特性/131
4.2.1随机访问存储器/132
4.2.2只读存储器/145
4.2.3混合存储器/150
4.3存储器测试与验证/165
4.3.1可读写存储器的测试/166
4.3.2只读存储器测试/167
4.4小结/169
习题/169
第5章最小系统外围电路设计/170
5.1电源电路/170
5.1.1电源电路设计方法/170
5.1.2延伸: 电源管理与低功耗设计/174
5.2复位电路/179
5.2.1上电复位/179
5.2.2手动复位/184
5.2.3看门狗复位/186
5.2.4软件复位/187
5.3时钟电路/191
5.3.1信号源: 振荡电路原理/191
5.3.2多时钟管理/196
5.3.3延伸: 时钟管理与低功耗设计/201
5.4电路抖动与消抖/202
5.4.1抖动现象与危害/202
5.4.2优化硬件消除抖动/203
5.4.3软件消抖方式/205
5.5小结/208
习题/208
第6章接口、总线与网络扩展/209
6.1通用I/O与串行总线/209
6.1.1GPIO/209
6.1.2SPI/213
6.1.3SDIO/222
6.1.4I2S/IIS/226
6.1.5I2C/IIC/232
6.1.6UART与USART/237
6.2典型工业总线、背板总线及网络/249
6.2.1CAN总线/249
6.2.2实时工业以太网/259
6.2.3VPX总线/264
6.3无线接口与网络/274
6.3.1ZigBee/274
6.3.2蓝牙/280
6.3.3WiFi/292
6.3.4NFC/295
6.4小结/300
习题/300
第7章嵌入式软件结构与基础软件/302
7.1计算系统的启动与运行过程/302
7.1.1通用计算机的引导和启动过程/302
7.1.2嵌入式系统的引导与启动过程/303
7.2嵌入式软件体系与结构/305
7.2.1基于裸机的嵌入式软件/306
7.2.2基于嵌入式操作系统的软件结构/307
7.3基础软件组件/308
7.3.1ROM Monitor/308
7.3.2Boot Loader/313
7.3.3BSP/320
7.3.4虚拟机监控程序/332
7.4小结/339
习题/339
第8章嵌入式操作系统及其服务机制/341
8.1架构与模型/341
8.1.1微内核、超微内核架构/341
8.1.2功能模型/343
8.2服务机制与特性/346
8.2.1基本概念/346
8.2.2关于实时/357
8.2.3内核服务机制/362
8.3典型嵌入式操作系统/379
8.3.1RTX51/379
8.3.2C/OS/380
8.3.3嵌入式Linux系列/382
8.3.4VxWorks/387
8.3.5Windows嵌入式操作系统/389
8.3.6其他嵌入式操作系统/396
8.4小结/401
习题/402
第9章嵌入式软件组件/403
9.1嵌入式图形库与图形组件/403
9.1.1C/GUI与emWin/403
9.1.2NanoX Window/405
9.1.3MiniGUI/407
9.1.4QT/413
9.1.5可编程图形界面硬件模块/418
9.2嵌入式文件系统/419
9.2.1JFFS/JFFS2/420
9.2.2Yaffs/Yaffs2/422
9.2.3UBIFS/425
9.2.4只读文件系统/428
9.2.5RAM文件系统/430
9.3嵌入式数据库/432
9.3.1SQLite/432
9.3.2Berkeley DB/434
9.3.3eXtremeDB/435
9.4嵌入式网络协议栈/437
9.5小结/438
习题/438
第10章嵌入式应用软件设计方法/439
10.1嵌入式软件典型结构/439
10.1.1轮转结构/439
10.1.2前后台软件结构/442
10.1.3函数队列调度结构/444
10.1.4基于嵌入式操作系统的软件结构/445
10.2中断与数据共享问题/447
10.2.1中断服务程序设计/447
10.2.2消除数据共享问题/451
10.3嵌入式软件设计机制/458
10.3.1可重入代码设计/458
10.3.2软件看门狗方法/462
10.3.3避免频繁地创建、取消任务/465
10.3.4基于状态机方法设计软件逻辑/466
10.3.5FPGA IP核开发流程/466
10.3.6生成可执行的嵌入式软件/469
10.4软件工程方法/477
10.4.1模型驱动的开发方法: 从V模型到
Y模型/477
10.4.2软硬件协同设计/479
10.4.3制定编码规范/480
10.5小结/482
习题/482
第11章调试、测试与仿真方法/483
11.1嵌入式软件调试/483
11.1.1基于宿主机的调试/484
11.1.2ROM Monitor软件调试/486
11.1.3ROM仿真器/487
11.1.4ICE在线仿真器/488
11.1.5JTAG调试/490
11.2嵌入式软件测试/492
11.2.1基本测试方法与指标/493
11.2.2测试工具的使用/498
11.3系统仿真验证技术/502
11.3.1计算机仿真方法及其原理/503
11.3.2可视化技术/505
11.4小结/507
习题/507
参考文献/508
后记/513附路遥先生《个人小结(草稿)》/515