标题：嵌入式系统:体系结构、编程与设计
基本信息
  作者:(印度)(Kamal.R.)卡玛尔
出版社：清华大学出版社
页码：667 页
出版日期：2009年
ISBN：9787302197942
装帧：平装
开本：16
丛书名：大学计算机教育国外著名教材系列
定价：66.00
内容简介
《嵌入式系统:体系结构、编程与设计(第2版)》是关于嵌入式系统开发与设计的一部最新力作，介绍了嵌入式系统的硬件、操作系统、开发过程以及编程。全书系统地阐述了嵌入式系统的基本概念、处理器和存储器、设备与总线、设备驱动与中断服务、基本的C与C++、编程模型、软件工程的思想、进程间通信与同步、实时操作系统以及软硬件协同设计。附录中包含了CISC与RISC指令集特征，并详细阐述了几种高性能的嵌入式处理器、微控制器、数字信号处理器以及总线和设备。《嵌入式系统:体系结构、编程与设计(第2版)》提供了大量案例，这对读者的实践开发具有非常好的指导意义。
《嵌入式系统:体系结构、编程与设计(第2版)》适合于嵌入式系统的软硬件开发人员，以及接受嵌入式系统课程教育的本科生和研究生。
编辑推荐
《嵌入式系统:体系结构、编程与设计(第2版)》为大学计算机教育国外著名教材系列之一。
图书信息
书 名: 嵌入式系统:体系  结构、编程与设计
作　者：卡莫尔(RajKamal)
出版社： 清华大学出版社
出版时间： 2010年3月1日
ISBN: 9787302218944
开本： 16开
定价: 98.00元
内容简介
《嵌入式系统:体系结构、编程与设计》第1版获得了读者的一致好评和热销，第2版在此基础上进行了修订，并且结合新技术给予了补充，采用软硬件相结合的方式介绍嵌入式系统开发。全书从基础知识开始入手，逐步介绍嵌入式处理器体系结构、网络设备、驱动程序、进程间通信以及程序建模与编程方面的相关知识。《嵌入式系统:体系结构、编程与设计》是嵌入式系统初学人员的理想学习资料，也可以作为嵌入式系统设计人员非常好的参考资枓。
《嵌入式系统:体系结构、编程与设计》特色：
自底向上的方法——结合案例研究讨论了硬件和软件问题
详细讨论了两种流行的新实时操作系统(RTOS)——Windows CE和RTLinux
嵌入式系统设计过程中的新主题、系统设计的形式化方法、无线通信设备、支持Internet的系统、无线和移动系统协议
全新的案例研究：数码相机、机器人管弦乐队以及移动电话SMS创建和发送
贯穿全书的设计过程和示例
面向实践：两章专门介绍案例研究。
作者简介
Raj Kamal，在无线电子、微处理器、微控制器、计算机组成和体系结构以及嵌入式系统和计算机网络等领域有40年的研究和教学经验。他已经著作了10本教科书，涉及计算机、电子学及通信和信息技木等领域，如《嵌入式系统》、《计算机体系结构》等书，并在印度、美国、新加坡、韩国及中国出版。由于其做研究的坚持不懈及对最新知识的渴求，Raj被一些大学亲切地冠以“学习机器”和“人类发电机”的美誉。
图书目录
第1章 嵌入式系统简介1
1.1 嵌入式系统2
1.1.1 系统2
1.1.2 嵌入式系统3
1.2 嵌入系统中的处理器5
1.2.1 系统中的处理器5
1.2.2 微处理器6
1.2.3 微控制器7
1.2.4 专用处理器9
1.3 系统中的嵌入式硬件单元和设备10
1.3.1 电源10
1.3.2 时钟振荡电路和时钟单元11
1.3.3 系统定时器和实时时钟11
1.3.4 复位电路、加电复位和Watchdog定时器复位11
1.3.5 存储器12
1.3.6 输入、输出和I/O端口，IO总线和IO接口14
1.3.7 DAC(使用PWM)和ADC15
1.3.8 LCD、LED和触摸屏显示17
1.3.9 小键盘或键盘18
1.3.10 脉冲拨号电路、调制解调器和收发器18
1.3.11 中断处理器18
1.4 嵌入式系统中的软件19
1.4.1 系统的最终机器可实现软件19
1.4.2 用机器码编写软件20
1.4.3 用特定于处理器的汇编语言编写软件21
1.4.4 用高级语言编写软件22
1.4.5 软件设计的程序模型24
1.4.6 并行处理、多任务调度和使用RTOS的ISR的软件24
1.4.7 使用操作系统的设备驱动程序和设备管理软件25
1.4.8 设计嵌入式系统的软件工具26
1.4.9 示例中需要的软件工具27
1.5 示例嵌入式系统28
1.6 嵌入式片上系统(SoC)和VLSI电路30
1.6.1 专用IC(ASIC)31
1.6.2 IP核32
1.6.3 具有一个或者多个处理器的FPGA核32
1.7 复杂系统设计和处理器32
1.7.1 嵌入式系统中的微处理器32
1.7.2 嵌入式系统中的微控制器33
1.7.3 嵌入式系统中的DSP33
1.7.4 嵌入式系统中的RISC34
1.7.5 嵌入式系统中的ASIP34
1.7.6 嵌入式系统中的多处理器或者GPP双核处理器34
1.7.7 嵌入式处理器和嵌入式微控制器35
1.7.8 嵌入式系统中的ARM处理器37
1.7.9 嵌入式系统中的ASSP37
1.8 嵌入式系统的设计过程38
1.8.1 设计指标39
1.8.2 设计过程中的抽象步骤39
1.8.3 嵌入式系统设计中的挑战：优化设计指标42
1.9 系统设计的形式化方法43
1.10设计过程和设计案例44
1.10.1 系统设计过程案例44
1.10.2 巧克力自动售卖机(ACVM)44
1.10.3 智能卡46
1.10.4 数码相机49
1.10.5 移动电话51
1.10.6 便携式计算机52
1.10.7 一组机器人52
1.11 嵌入式系统的分类54
1.12 嵌入式系统设计者需要具备的技能55
本章小结56
关键词及其定义57
问题回顾61
实践练习62
第2章 8051和高级处理器体系结构、存储器组织和现实中的接口65
2.1 8051的体系结构66
2.1.1 8051微控制器体系结构66
2.1.2 指令集67
2.1.3 IO端口、电路以及IO编程70
2.1.4 外部存储器接口电路72
2.1.5 计数器和定时器73
2.1.6 串行数据通信输入/输出74
2.1.7 8051的中断75
2.2 现实世界中的接口76
2.2.1 基于系统总线和基于IO总线的现实世界接口IO76
2.2.2 现实接口中的端口和设备的IO地址80
2.2.3 现实接口中的设备地址82
2.2.4 中断和IO83
2.2.5 总线仲裁84
2.2.6 键盘、显示器、A/D和D/A转换设备接口示例86
2.3 高级体系结构介绍88
2.3.1 高级处理器体系结构90
2.3.2 80x86体系结构92
2.3.3 ARM93
2.3.4 SHARC99
2.3.5 DSP101
2.4 处理器和存储器组织102
2.4.1 处理器的组织102
2.4.2 存储器的组织105
2.5 指令级并行109
流水线和超标量单元109
2.6 性能指标111
2.7 存储器类型、存储器映射和地址111
2.7.1 系统中的存储器111
2.7.2 存储地址分配115
2.8 处理器选择119
2.9 存储器选择123
本章小结126
关键词及其定义127
问题回顾132
实践练习132
第3章 设备网络的设备和通信总线135
3.1 I/O的类型和示例136
3.1.1 同步串行输入136
3.1.2 同步串行输出138
3.1.3 同步串行输入/输出138
3.1.4 异步串行输入138
3.1.5 异步串行输出139
3.1.6 并行端口139
3.1.7 半双工与全双工139
3.1.8 串行和并行端口I/O示例140
3.2 串行通信设备140
3.2.1 串行设备的同步、准同步和异步通信140
3.2.2 RS232C/RS485通信143
3.2.3 UART144
3.2.4 HDLC协议145
3.2.5 使用SPI、SCI和SI端口的串行数据通信146
3.2.6 安全数字输入输出(SDIO)149
3.3 并行设备端口150
3.3.1 与开关和小键盘连接的并行端口153
3.3.2 与编码器连接的并行端口154
3.3.3 与步进电机连接的并行端口154
3.3.4 与LCD控制器连接的并行端口155
3.3.5 与触摸屏连接的并行端口156
3.4 设备端口的复杂接口特性157
3.5 无线设备158
3.6 定时器和计数设备159
3.6.1 定时设备159
3.6.2 计数设备159
3.6.3 带计数设备的定时器160
3.7 watchdog定时器164
3.8 实时时钟165
3.9 网络中的嵌入式系统166
3.10 串行总线通信协议168
3.10.1 I2C总线168
3.10.2 CAN总线169
3.10.3 USB总线171
3.10.4 FireWire——IEEE1394总线标准172
3.10.5 先进的串行高速总线173
3.11 并行总线设备协议——使用ISA、PCI、PCI-X和高级总线的并行通信网络173
3.11.1 ISA总线175
3.11.2 PCI和PCI/X总线176
3.11.3 ARM总线177
3.11.4 高级并行高速总线178
3.12 支持Internet的系统——网络协议178
3.12.1 超文本传输协议(HTTP)179
3.12.2 传输控制协议(TCP)181
3.12.3 用户数据报协议(UDP)181
3.12.4 Internet协议(IP)182
3.12.5 Ethernet(以太网)183
3.13 无线和移动系统协议184
3.13.1 红外数据协会(IrDA)184
3.13.2 蓝牙185
3.13.3 802.1 1186
3.13.4 ZigBee187
本章小结187
关键词及其定义189
问题回顾192
实践练习193
第4章 设备驱动程序和中断服务机制195
4.1 不使用中断服务机制的程序查询式I/O忙/等待方法196
4.2 ISR的概念199
4.2.1 端口或设备中断及ISR示例199
4.2.2 软件中断和ISR示例202
4.2.3 作为级中断处理程序的中断服务线程205
4.2.4 设备驱动程序205
4.3 中断源206
4.4 中断服务(处理)机制210
4.4.1 中断向量210
4.4.2 根据可屏蔽和不可屏蔽的中断分类213
4.4.3 可屏蔽中断源的启用(未屏蔽)和禁用(屏蔽)214
4.4.4 状态寄存器或中断挂起寄存器214
4.5 多中断215
4.5.1 多中断调用215
4.5.2 硬件分配的优先级216
4.6 上下文和上下文切换周期、中断延迟和最终期限217
4.6.1 中断延迟219
4.6.2 中断服务的最终期限221
4.6.3 硬件优先级的软件覆盖以满足服务的最终期限223
4.7 从上下文保存的角度对处理器中断服务机制的分类223
4.8 直接存储器访问224
4.8.1 DMAC的使用225
4.8.2 同一中断源产生多个快速连续中断时的DMA通道使用226
4.9 设备驱动程序编程226
4.9.1 编写系统中的物理设备驱动ISR227
4.9.2 虚拟设备驱动程序229
4.9.3 系统中的并行端口驱动程序230
4.9.4 系统中的串行端口驱动程序232
4.9.5 内部可编程定时设备的设备驱动程序234
4.9.6 作为设备驱动和网络函数的Linux内幕235
本章小结236
关键词及其定义237
问题回顾239
实践练习240
第5章 编程概念及C、C++和Java的嵌入式编程241
5.1 用汇编语言(ALP)和高级语言C进行软件编程242
5.1.1 汇编语言编程242
5.1.2 高级语言编程242
5.2 C程序中的元素：头文件、源文件以及预处理指令244
5.2.1 用于包含文件的include指令244
5.2.2 源文件245
5.2.3 配置文件246
5.2.4 预处理指令246
5.3 程序元素：宏与函数246
5.4 程序元素：数据类型、数据结构、修饰符、语句、循环和指针248
5.4.1 数据类型248
5.4.2 指针和NULL指针249
5.4.3 使用数据结构：队列、堆栈、链表和树250
5.4.4 修饰符的使用258
5.4.5 条件语句、循环语句以及无限循环语句259
5.4.6 函数调用264
5.4.7 按照循环顺序进行的多函数调用266
5.4.8 函数指针、函数队列和ISR队列267
5.4.9 发生中断时函数的排列268
5.5 面向对象编程271
5.6 C++嵌入式编程271
5.6.1 C++的优点271
5.6.2 C++的缺点272
5.6.3 嵌入式C++程序的代码优化以消除缺点272
5.7 用Java进行嵌入式编程273
5.7.1 Java编程基础273
5.7.2 使用Java编程的优点275
5.7.3 Java的缺点275
5.7.4 J2ME276
5.7.5 JavaCard和嵌入式Java277
本章小结277
关键词及其定义278
问题回顾281
实践练习281
第6章 程序建模的概念283
6.1 程序模型284
6.2 DFG模型286
6.2.1 数据流图286
6.2.2 控制数据流图模型289
6.2.3 同步数据流图(SDFG)模型290
6.3 用于事件控制程序流的状态机编程模型291
6.3.1 有限状态机(FSM)模型293
6.3.2 FSM状态表294
6.4 多处理器系统的建模298
6.4.1 多处理器系统298
6.4.2 展开SDFG的同构SDFG模型301
6.4.3 展开HSDFG的APEG模型302
6.4.4 图在多处理器系统中的应用：划分和调度303
6.5 UML建模305
本章小结309
关键词及其定义310
问题回顾311
实践练习311
第7章 进程间通信与进程、任务和线程的同步313
7.1 应用程序中的多个进程314
7.2 应用程序中的多线程316
7.3 任务317
7.4 任务的状态318
7.5 任务和数据320
任务控制块321
7.6 通过函数、ISR和任务的特征进行区分321
7.6.1 无限事件等待循环的任务编码321
7.6.2 函数、ISR和任务之间的区别322
7.7 信号量的概念325
7.7.1 作为事件信号变量或通报变量的信号量的使用325
7.7.2 作为资源键的信号量以及信号量在临界段中的使用327
7.7.3 使用多个信号量同步任务329
7.7.4 计数信号量332
7.7.5 P和V信号量333
7.8 共享数据339
7.8.1 多任务和多例程的数据共享问题339
7.8.2 共享数据问题的解决方法340
7.8.3 信号量的应用与共享数据问题341
7.8.4 共享数据问题的消除341
7.8.5 优先级反转问题和死锁情况342
7.9 进程间通信343
7.1 0信号函数345
7.1 1信号量函数347
7.1 2消息队列函数348
7.1 3邮箱函数350
7.1 4管道函数353
7.1 5套接字函数355
7.1 6远程过程调用(RPC)函数359
本章小结359
关键词及其定义360
问题回顾362
实践练习362
第8章 实时操作系统365
8.1 OS服务366
8.1.1 目标366
8.1.2 用户和管态结构366
8.1.3 结构367
8.1.4 内核368
8.2 进程管理369
8.2.1 进程的创建369
8.2.2 已创建进程的管理370
8.3 定时器函数371
8.4 事件函数373
8.5 存储器管理374
8.5.1 存储器分配374
8.5.2 初始分配后的存储管理374
8.6 设备、文件及IO子系统管理376
8.6.1 设备管理376
8.6.2 文件系统的组织和实现378
8.6.3 I/O子系统380
8.7 RTOS环境中的中断例程和中断源调用处理381
8.7.1 通过中断源以及ISR发送ISR输入消息直接调用ISR382
8.7.2 RTOS首先响应中断，接着OS调用相应的ISR383
8.7.3 RTOS首先响应中断，之后初始化ISR并运行ISR384
8.8 实时操作系统385
8.9 使用RTOS进行基本设计387
8.9.1 原则387
8.9.2 使用信号量和队列进行封装394
8.9.3 硬实时的考虑396
8.9.4 节约存储器和功耗397
8.10 RTOS任务调度模型，作为性能指标的中断延迟和任务响应时间400
8.10.1 协作调度模型401
8.10.2 循环和时间片轮转调度模型404
8.10.3 抢占式调度模型408
8.10.4 抢占式调度程序提供的临界段服务模型413
8.10.5 最早时限优先(EDF)优先级和速率单调调度(RMS)模型414
8.10.6 固定(静态)实时调度模型415
8.10.7 周期、突发以及非周期任务的调度模型中延迟和最后期限的性能指标416
8.10.8 使用CPU负载作为性能指标416
8.10.9 突发任务模型作为性能指标417
8.1 1操作系统的安全问题417
本章小结418
关键词及其定义419
问题回顾420
实践练习421
第9章 实时操作系统编程-I：MicroC/OS-II和VxWorks423
9.1 RTOS的基本函数和类型424
9.1.1 基于宿主机-目标机和基于自主主机的开发方法425
9.1.2 RTOS的类型426
9.2 RTOSμCOS-II427
9.2.1 系统级函数429
9.2.2 任务服务和时间函数及其使用范例433
9.2.3 时间延迟函数439
9.2.4 存储器分配相关的函数442
9.2.5 信号量相关函数444
9.2.6 邮箱相关函数456
9.2.7 队列相关函数465
9.3 RTOSVxWorks474
9.3.1 基本特性475
9.3.2 系统库头文件中的任务管理库477
9.3.3 VxWorks系统函数和系统任务481
9.3.4 IPC函数483
本章小结496
关键词及其定义498
问题回顾499
实践练习499
第10章 实时操作系统编程-II：WindowsCE、OSEK和实时Linux函数501
10.1 WindowsCE502
10.1.1 WindowsCE的特点502
10.1.2 WindowsCE编程504
10.1.3 窗口和窗口管理505
10.1.4 内存管理506
10.1.5 文件和注册表507
10.1.6 WindowsCE数据库508
10.1.7 进程、线程和IPC509
10.1.8 按键、触摸屏、鼠标的输入512
10.1.9 通信和网络514
10.1.10 设备间套接字通信函数516
10.1.11 Win32API编程517
10.1.1 2创建窗口518
10.2 OSEK519
10.3 Linux2.6.x和RTLinux521
10.3.1 实时Linux函数521
10.3.2 RTLinux527
本章小结531
关键词及其定义533
问题回顾536
实践练习537
第11章 RTOS编程和程序建模设计示例与案例研究-1539
11.1 嵌入式系统设计的案例研究以及使用MUCOSRTOS对巧克力自动售卖机(ACVM)编码540
11.1.1 需求540
11.1.2 系统规范541
11.1.3 使用UML为系统规范建模543
11.1.4 ACVM的硬件体系结构546
11.1.5 软件体系结构546
11.1.6 创建任务列表、函数和IPC550
11.1.7 编码步骤示例551
11.2 数码相机硬件和软件体系结构的案例研究559
11.2.1 需求560
11.2.2 类图562
11.2.3 数码相机的硬件体系结构563
11.2.4 数码相机的软件体系结构564
11.3 使用RTOSVxWorks将应用层字节流发送到TCP/IP网络的编码案例研究566
11.3.1 需求567
11.3.2 类图、类和对象567
11.3.3 TCP栈的硬件和软件体系结构570
11.3.4 编码步骤实例574
本章小结596
关键词及其定义597
问题回顾598
实践练习599
第12章 RTOS编程和程序建模设计示例与案例研究-2601
12.1 管弦乐队机器人之间通信的案例研究601
12.1.1 需求604
12.1.2 类和类图605
12.1.3 状态图607
12.1.4 机器人管弦乐队MIDI通信的硬件和软件体系结构607
12.1.5 通信任务的同步模型608
12.2 汽车中的嵌入式系统609
12.3 汽车中自适应巡航控制(ACC)系统的嵌入式系统案例研究611
12.3.1 需求612
12.3.2 类图616
12.3.3 ACC硬件体系结构617
12.3.4 ACC软件体系结构618
12.3.5 ACC软件任务的同步模型618
12.3.6 ACC软件实现620
12.4 智能卡中的嵌入式系统案例研究629
12.4.1 需求630
12.4.2 类图631
12.4.3 硬件和软件体系结构632
12.4.4 同步模型633
12.4.5 示例代码634
12.5 移动电话键输入软件案例研究641
12.5.1 需求642
12.5.2 类和类图646
12.5.3 状态图648
12.5.4 SMS按键硬件648
12.5.5 SMS创建和发送应用程序的软件体系结构649
12.5.6 软件任务和同步模型651
本章小结652
关键词及其定义653
问题回顾655
实践练习656
第13章 嵌入式软件开发过程和工具657
13.1 嵌入式软件开发过程和工具概述658
13.1.1 开发过程和软硬件658
13.1.2 软件工具659
13.1.3 源代码工程管理工具660
13.1.4 集成开发环境(IDE)661
13.2 宿主机和目标机662
13.2.1 宿主系统662
13.2.2 目标系统664
13.3 链接和定位软件665
13.3.1 文件、寻址和地址解决方法的区别666
13.3.2 MotorolaS-record和IntelHex二进制映像格式的定位器输出文件667
13.3.3 用于定位器编码的存储器映射669
13.4 将嵌入式软件植入目标系统671
13.4.1 设备PROM或者闪存编程器671
13.4.2 设备编程器的编程方式672
13.5 硬件/软件设计和协同设计中的问题674
13.5.1 选择合适的平台674
13.5.2 存储器敏感和处理器敏感软件677
13.5.3 存储器、程序段和设备地址分配678
13.5.4 嵌入式平台中OS的移植问题681
13.5.5 性能和性能加速器682
本章小结684
关键词及其定义685
问题回顾687
实践练习687
第14章 测试、模拟和调试技术与工具689
14.1 在宿主机上进行测试689
14.2 模拟器691
14.2.1 模拟器的特性692
14.2.2 模拟器的局限性692
14.2.3 模拟工具软件693
14.2.4 嵌入式系统的原型开发、测试和调试工具693
14.3 试验工具694
14.3.1 简单的伏特-欧姆表694
14.3.2 简单的LED测试和逻辑探测器695
14.3.3 示波器695
14.3.4 位率测量仪696
14.3.5 逻辑分析仪696
14.3.6 电路内置仿真器(ICE)697
14.3.7 监视器699
本章小结700
关键词及其定义701
问题回顾701
实践练习702
附录A 不同读者的学习路线图703
附录B 参考文献705