《国外计算机科学经典教材 嵌入式系统 体系结构、编程与设计 第3版》PDF下载

  • 购买积分:17 如何计算积分?
  • 作  者:(印)RajKamal著;郭俊凤译
  • 出 版 社:北京:清华大学出版社
  • 出版年份:2017
  • ISBN:9787302468806
  • 页数:572 页
图书介绍:全书分为4大部分,第1部分介绍嵌入式系统设计和开发的整个过程以及涉及的相关技术,第2部分介绍8051、ARM微控制器、实时交互、输入与输出等,第3部分介绍架构技术与内存管理,第4部分介绍IO设备、通信总线以及分布式系统架构等。

第1章 嵌入式系统简介 1

1.1嵌入式系统 2

1.1.1系统 2

1.1.2嵌入式系统 2

1.1.3嵌入式系统和通用计算系统 3

1.2嵌入系统中的处理器 5

1.2.1微处理器 5

1.2.2微控制器 6

1.2.3 ARM 8

1.2.4 RISC 8

1.2.5 CISC 9

1.2.6 SoC 9

1.2.7数字信号处理器(DSP) 9

1.2.8专用处理器 9

1.3系统中的嵌入式硬件单元和设备 11

1.3.1构建块 11

1.3.2嵌入板 16

1.4嵌入式系统中的软件和编程语言概述 16

1.4.1嵌入式软件ROM映像 16

1.4.2用机器码编写软件 17

1.4.3用特定于处理器的汇编语言编写软件 18

1.4.4用高级语言编写软件 18

1.5嵌入式系统的设计过程 20

1.6嵌入式系统的体系结构 21

1.7嵌入式系统的模型 22

1.8嵌入式系统的分类 24

1.9嵌入式系统设计者需要具备的技能 25

1.10示例嵌入式系统 26

本章小结 28

关键词及其定义 28

复习题 32

实践练习题 33

第2章 嵌入式系统的设计和开发过程 35

2.1嵌入式片上系统(SoC)和VLSI电路设计技术 36

2.1.1SoC 36

2.1.2 VLSI电路设计技术 38

2.1.3 SoC或VLSI设计中使用的ASIC 38

2.1.4 IP核 38

2.1.5多个处理器 39

2.2复杂系统设计和处理器 39

2.2.1复杂系统和微处理器 39

2.2.2使用嵌入式处理器构建复杂系统 43

2.3嵌入式系统的构建过程 44

2.4嵌入式系统的设计过程 44

2.4.1设计过程中使用的概念 44

2.4.2软件设计过程 45

2.4.3设计指标 46

2.4.4设计过程中的抽象步骤 47

2.5嵌入式系统设计中的挑战 48

2.6嵌入式系统设计中的挑战:优化设计指标 49

2.7嵌入式软件开发的挑战和问题 51

2.8嵌入式系统中软硬件的协同设计 52

2.8.1软硬件的权衡 54

2.8.2嵌入式系统中软硬件协同设计的挑战:优化设计指标 54

2.9嵌入式系统的设计技术 54

2.9.1 IC技术 54

2.9.2 VLSI技术 56

2.10系统设计的形式化 56

2.11设计过程和设计案例 57

2.11.1巧克力自动售卖机(ACVM) 57

2.11.2智能卡 59

2.11.3数码相机 62

本章小结 64

关键词及其定义 65

复习题 66

实践练习题 67

第3章8051、AVR和ARM微控制器、现实中的接口和I/O总线 69

3.1微控制器和微处理器简介 70

3.2嵌入式和外部存储器设备 70

3.3微控制器-8051的体系结构 71

3.3.1 8051微控制器的硬件体系结构 71

3.3.2 ATMEL 89x51系列微控制器硬件体系结构 72

3.3.3 ATMEL 90Sxx系列 73

3.3.4指令集 73

3.3.5 IO端口、电路以及IO编程 76

3.3.6外部存储器接口电路 77

3.3.7计数器和定时器 78

3.3.8串行数据通信输入/输出 79

3.3.9 8051中的中断 80

3.4 ATMEL AVR微控制器 80

3.5 ARM微控制器 82

3.6计算机系统总线 83

3.6.1 CPU/微处理器系统总线 83

3.6.2存储器设备接口 86

3.7现实的接口 88

3.7.1现实接口电路中的设备地址 88

3.7.2 I/O设备和组件的连接 89

3.7.3 I/O:管理数据 90

3.7.4串行和并行I/O 91

3.7.5设备中断和IO 93

3.8 I/O性能 93

3.9 I/O总线 94

3.9.1总线仲裁 95

3.9.2菊花链方式 96

3.9.3独立总线请求方式 96

3.9.4总线轮询方式 97

3.10面向网络的总线仲裁 97

3.11总线 98

3.11.1体系结构:单层、双层和多层 98

3.11.2仲裁:集中式和分布式 98

3.11.3定时 99

3.11.4总线性能 100

3.12多级总线 100

本章小结 101

关键词及其定义 102

复习题 105

实践练习题 105

第4章 高级体系结构和处理器-存储器的组织 107

4.1处理器和存储器组织 108

4.1.1 Harvard存储器体系结构 108

4.1.2 Von Neumann(Princeton)存储器体系结构 110

4.1.3 Harvard体系结构的存储器接口电路 110

4.1.4通用存储器接口电路 110

4.2高级处理器体系结构介绍 111

4.2.1处理器中的结构单元 112

4.2.2高级处理器体系结构 113

4.3处理器的组织 115

4.3.1处理器组织方式:处理器的CISC设计 115

4.3.2处理器组织方式:处理器的RISC设计 116

4.4指令级并行性 117

4.5 INTEL x86体系结构(8086、80386、 80486和奔腾) 119

4.5.1 80386的体系结构 120

4.5.2 80486的体系结构 120

4.5.3奔腾P5(80586)和P6的体系结构 120

4.6 ARM 120

4.7 SHARC 122

4.8存储器类型和地址 124

4.8.1合并存储器 124

4.8.2嵌入式存储器 126

4.8.3 ROM变种 126

4.8.4 RAM、SRAM和DRAM 128

4.8.5闪存 129

4.8.6闪存卡 130

4.9存储器地址 130

4.9.1将内存分配给程序段和块 130

4.9.2存储器映射 130

4.10存储器层次结构和缓存 131

4.11性能指标 132

4.11.1处理器的性能 133

4.11.2存储器的性能 133

4.11.3嵌入式系统的性能 133

4.12处理器和存储器设备的选择 134

4.12.1处理器的选择 134

4.12.2处理器或微控制器版本的选择 134

4.12.3微控制器版本的选择 135

本章小结 135

关键词及其定义 136

复习题 138

实践练习题 139

第5章 IO设备、通信总线和分布式联网的嵌入式体系结构 141

5.1 I/O的类型和示例 142

5.1.1同步串行输入 143

5.1.2.同步串行输出 144

5.1.3同步串行输入/输出 144

5.1.4异步串行输入 144

5.1.5异步串行输出 145

5.1.6半双工与全双工 145

5.1.7串行I/O示例 145

5.1.8并口 146

5.1.9串并输出和输入 146

5.1.10并行IO的示例 146

5.2串行通信设备 147

5.2.1串行设备的同步、准同步和异步通信 147

5.2.2 UART模式(协议)异步串行通信 148

5.2.3 IBM PC COM端口上的串行RS232C通信 150

5.2.4 HDLC协议 151

5.2.5同步串行数据通信的SPI端口 152

5.2.6 异步UART串行数据通信的SCI端口 153

5.2.7同步和异步串行数据通信的串行接口(SI) 153

5.2.8 SDIO、SPI1-SD和4-SD数据通信 154

5.3并行设备端口 155

5.3.1与开关和小键盘连接的并行端口 156

5.3.2与编码器连接的并行端口 157

5.3.3与步进电机连接的并行端口 158

5.3.4与LCD控制器连接的并行端口 158

5.3.5与触摸屏连接的并行端口 159

5.4设备端口的复杂接口特性 159

5.5无线设备 160

5.6定时器和计数设备 160

5.6.1定时设备 161

5.6.2计数设备 161

5.6.3带计数设备的定时器 161

5.6.4两个实例之间的时间间隔 161

5.6.5预设时间的输出动作 161

5.6.6软件定时器 162

5.6.7 watchdog定时器 162

5.6.8实时时钟 162

5.7分布式网络嵌入式系统结构 163

5.7.1总线的优点 163

5.7.2总线的缺点 164

5.8串行总线通信协议 164

5.8.1 12C总线 165

5.8.2 CAN总线 166

5.8.3 USB总线 168

5.8.4 FireWire——IEEE 1394总线标准 169

5.8.5先进的串行高速总线 170

5.9并行总线设备协议——使用ISA、 PCI、 PCI-X和高级总线的并行通信网络 170

5.9.1 ISA和EISA总线 171

5.9.2 PCI和PCI/X总线 171

5.9.3 ARM总线 173

5.9.4高级并行高速总线 174

5.10支持Intemet的系统——网络协议 174

5.10.1超文本传输协议(HTTP) 175

5.10.2传输控制协议(TCP) 176

5.10.3用户数据报协议(UDP) 176

5.10.4 Internet协议(IP) 176

5.10.5 Ethernet(以太网) 177

5.11无线和移动系统协议 177

5.11.1红外数据协会(IrDA) 177

5.11.2蓝牙 178

5.11.3 802.11. 179

5.11.4 ZigBee 180

本章小结 180

关键词及其定义 181

复习题 185

实践练习题 186

第6章 设备驱动程序和中断服务机制 189

6.1不使用中断服务机制的编程式I/O的设备访问端口 189

6.1.1 Intel I/O结构 192

6.1.2同步 193

6.1.3传输率 194

6.1.4延迟 194

6.2中断驱动的输入输出 195

6.3 ISR的概念 196

6.4中断源 197

6.5硬件中断 198

6.6软件中断 199

6.6.1异常和异常处理程序 200

6.6.2信号和信号处理程序 201

6.7中断服务机制 202

6.7.1阻止中断的溢出 202

6.7.2禁用中断 203

6.7.3不可屏蔽的中断和可屏蔽的中断 203

6.7.4中断状态寄存器或中断挂起寄存器 204

6.7.5中断向量 204

6.8多中断 206

6.8.1多中断调用 206

6.8.2硬件分配的优先级 206

6.8.3软件重写硬件优先级,以满足服务的最后期限 207

6.8.4启用和禁用中断,重写硬件优先级,以满足服务的最后期限 207

6.9中断服务线程作为二级中断处理程序 207

6.10上下文和上下文切换周期 208

6.11中断延迟 210

6.12中断服务的最终期限 211

6.13从上下文保存的角度对处理器中断服务机制的分类 211

6.14直接存储器访问驱动的I/O 212

6.14.1 DMA 212

6.14.2同一中断源生成多个快速连续中断时的DMA通道使用 212

6.14.3 DMA控制器 212

6.15 设备驱动程序编程 214

6.15.1编写系统中的物理设备驱动ISR 215

6.15.2操作系统中的设备驱动程序组件 215

6.15.3用系统软件函数模拟物理设备 215

6.15.4作为设备驱动和网络函数的Linux内幕 216

本章小结 217

关键词及其定义 218

复习题 220

实践练习题 221

第7章 编程概念及C、 C+和Java的嵌入式编程 223

7.1用汇编语言(ALP)和高级语言C进行软件编程 224

7.1.1汇编语言编程 224

7.1.2高级语言编程 224

7.2 C程序中的元素:头文件、源文件以及预处理指令 225

7.2.1用于包含文件的include指令 226

7.2.2源文件 227

7.2.3配置文件 227

7.2.4预处理指令 227

7.3程序元素:宏与函数 227

7.4程序元素:数据类型、数据结构、修饰符、语句、循环和指针 229

7.4.1数据类型 229

7.4.2修饰符的使用 230

7.4.3指针和NULL指针 230

7.4.4使用数据结构:堆栈、队列、数组、链表、树、管道、表格和哈希表 230

7.4.5堆栈 232

7.4.6多个堆栈 232

7.4.7数组 233

7.4.8队列 233

7.4.9链表 234

7.4.10循环队列 234

7.4.11优先队列 235

7.4.12管道 235

7.4.13表和哈希表 236

7.5循环、无限循环以及条件语句 237

7.6函数调用 242

7.7按照循环顺序进行的多函数调用 242

7.8函数指针和函数队列 244

7.9发生中断时函数的排列和中断服务例程队列 245

7.10嵌入式C和C++:其他功能 246

7.10.1编译器和优化 247

7.10.2编程和汇编 248

7.10.3寄存器的使用约定 248

7.10.4寻址选项和指令序列的典型用法 249

7.10.5过程调用和返回 250

7.10.6参数的传递 250

7.10.7检索参数 250

7.10.8按值传递的临时变量 251

7.11面向对象编程 251

7.12 C++嵌入式编程 251

7.12.1 C+++的优点 251

7.12.2 C+++的缺点 252

7.13嵌入式C++程序的代码优化以消除缺点 253

7.14用Java进行嵌入式编程 253

7.14.1 Java编程基础 253

7.14.2使用Java编程的优点 255

7.14.3 Java的缺点 255

本章小结 255

关键词及其定义 256

复习题 259

实践练习题 259

第8章 程序建模的概念 261

8.1程序模型 262

8.2基于数据流图的程序模型 265

8.2.1数据流图 266

8.2.2控制数据流图模型 267

8.2.3同步数据流图(SDFG)模型 269

8.3用于事件控制程序的状态机编程模型 270

8.3.1状态机编程模型 270

8.3.2有限状态机(FSM)模型 271

8.3.3 FSM状态表 272

8.4多处理器系统的建模 275

8.4.1多处理器系统 275

8.4.2图在多处理器系统中的应用:划分和调度 278

8.5 UML建模 279

本章小结 283

关键词及其定义 284

复习题 285

实践练习题 285

第9章 实时操作系统Ⅰ:进程间通信与进程、任务和线程的同步 287

9.1应用程序中的多个进程 288

9.1.1进程 288

9.1.2进程控制块(PCB) 289

9.1.3进程上下文 289

9.2应用程序中的多线程 290

9.2.1进程的多个线程 290

9.2.2多线程的编程 290

9.2.3抢占式和非抢占式 291

9.3任务 291

9.4任务和线程状态 292

9.4.1调度线程和线程状态 292

9.4.2挂起的线程 293

9.4.3上下文切换 293

9.5任务和数据 294

9.5.1上下文 294

9.5.2上下文切换 295

9.5.3任务控制块 295

9.5.4无限事件等待循环的任务编码 295

9.6通过函数、ISR、IST和任务的特征进行区分 296

9.7进程间通信和同步 297

9.8信号函数 298

9.9信号量的概念 300

9.9.1 OS的信号量IPC函数 300

9.9.2作为事件信号变量或通报变量的信号量的使用 301

9.9.3作为资源键的信号量以及信号量在临界段中的使用 302

9.9.4使用多个信号量同步任务 304

9.9.5多个任务等待同一信号量 306

9.9.6计数信号量 307

9.9.7 P和V信号量 307

9.10禁用和启用函数 312

9.10.1禁用和启用中断 312

9.10.2锁定和解锁函数 312

9.11共享数据问题 313

9.11.1多任务和多中断服务例程的数据共享问题 313

9.11.2共享数据问题的解决方法 314

9.11.3优先级反转问题和优先级继承 315

9.11.4死锁情况 316

9.12队列和邮箱 316

9.12.1队列 316

9.12.2邮箱 318

9.13管道和套接字 321

9.13.1管道 321

9.13.2套接字 323

9.14远程过程调用(RPC)函数 326

本章小结 326

关键词及其定义 327

复习题 328

实践练习题 329

第10章 实时操作系统Ⅱ:OS和RTOS的基本功能 331

10.1 OS服务 332

10.1.1 Os服务目标 332

10.1.2用户和管态结构 332

10.1.3结构 333

10.1.4内核 333

10.2进程管理 334

10.3定时器函数 334

10.4事件函数 336

10.5存储器管理 336

10.6设备、文件及IO子系统管理 337

10.6.1设备管理 337

10.6.2文件系统的组织和实现 339

10.6.3 I/O子系统 342

10.7 RTOS环境中的中断例程和中断源调用处理 342

10.7.1通过中断源以及ISR发送ISR输入消息直接调用ISR 343

10.7.2 RTOS首先响应中断,接着Os调用相应的ISR 343

10.7.3 RTOS首先响应中断,调用对应的ISR,之后ISR把消息发送给中断服务线程 344

10.7.4通过ISR接收IPC事件 345

10.8实时操作系统 345

10.9使用RTOS进行基本设计 346

10.9.1 RTOS基本设计原则:15个设计策略 347

10.9.2节约存储器和功耗 350

10.10 RTOS任务调度模型 353

10.11操作系统的安全问题 354

10.12 OS标准:POSIX 354

10.12.1 IEEE标准POSIX 1003.1b的RTOS标准化和进程间通信函数 355

10.12.2 IEEE标准POSIX 1003.1b的 IO函数 356

10.12.3 IEEE标准POSIX 1003.1b的文件函数 356

10.13作为性能指标的中断延迟和任务响应时间 356

10.13.1周期、突发以及非周期任务的调度模型中延迟和最后期限的性能指标 356

10.13.2使用CPU负载作为性能指标 357

10.13.3突发任务模型作为性能指标 357

10.14 OS性能准则 358

10.15中间件:含义和示例 358

10.16应用层软件:含义和例子 358

本章小结 359

关键词及其定义 360

复习题 360

实践练习题 361

第11章 实时操作系统编程:MicroC/OS-Ⅱ和VxWorks 363

11.1 RTOS 364

11.1.1 RTOS中的基本函数 364

11.1.2当前的实时操作系统 365

11.1.3 RTOS的类型 365

11.1.4实时系统的基准简介 367

11.2 μC/OS-Ⅱ (MUCOS) 367

11.2.1系统级函数 369

11.2.2任务服务函数 374

11.2.3与存储器分配相关的函数 381

11.2.4信号量相关函数 384

11.2.5邮箱相关函数 388

11.2.6队列相关函数 393

11.3基于UNIX的实时操作系统 398

11.3.1 pSOS 398

11.3.2 VrTx 398

11.3.3 QNX RTOS 398

11.4 RTOS VxWorks 399

11.4.1基本特性 400

11.4.2系统库头文件中的任务管理库 402

11.4.3 VxWorks系统函数和系统任务 405

11.4.4 IPC函数 408

本章小结 419

关键词及其定义 421

复习题 422

实践练习题 423

第12章 实时Linux、 Windows CE、OSEK、手持设备和汽车操作系统 425

12.1 POSIX兼容操作系统 426

12.2实时Linux操作系统 426

12.2.1用于嵌入式系统的Linux——嵌入式Linux 426

12.2.2 RTLinux 431

12.3 Windows CE 435

12.3.1 Windows CE的特点 436

12.3.2 Windows CE编程 438

12.3.3窗口和窗口管理 439

12.3.4内存管理 439

12.3.5文件和注册表 440

12.3.6 Windows CE数据库 441

12.3.7进程、线程和IPC 442

12.3.8按键、触摸屏、鼠标的输入 445

12.3.9通信和网络 446

12.3.10设备间套接字通信函数 448

12.3.11创建窗口 449

12.3.12 Win32 API编程 449

12.3.13嵌入式系统的Windows 8和Windows Embedded Compact 2013 451

12.4 OSEK 451

本章小结 453

关键词及其定义 455

复习题 458

实践练习题 459

第13章RTOS编程和程序建模设计示例与案例研究 461

13.1嵌入式系统设计的案例研究以及使用MUCOS RTOS对巧克力自动售卖机(ACVM)编码 462

13.1.1需求 462

13.1.2规范 463

13.1.3使用UML为规范建模 464

13.1.4 ACVM的硬件体系结构 467

13.1.5软件体系结构 468

13.2数码相机的案例研究 470

13.2.1需求 470

13.2.2类图 473

13.2.3数码相机的硬件体系结构 474

13.2.4数码相机的软件体系结构 475

13.3给IP包应用通信网络路由器 477

13.3.1使用VxWorks将应用层字节流发送到TCP/IP网络的编码案例研究 477

13.3.2需求 477

13.3.3类图、类和对象 478

13.4管弦乐队机器人之间通信的案例研究 483

13.4.1需求 485

13.4.2类和类图 486

13.4.3状态图 488

13.4.4机器人管弦乐队MIDI通信的硬件和软件体系结构 488

13.5汽车中的嵌入式系统 489

13.6汽车中自适应巡航控制(ACC)系统的嵌入式系统案例研究 490

13.6.1需求 491

13.6.2类图 495

13.6.3 ACC硬件体系结构 496

13.6.4 ACC软件体系结构 497

13.6.5 ACC软件任务、同步模型和实现 497

13.7汽车中嵌入式编程的一般语言特征、MISRA-C的特征 497

13.8智能卡中的嵌入式系统案例研究 498

13.8.1需求 498

13.8.2类图 499

13.8.3硬件和软件体系结构 500

13.8.4同步模型 501

13.9移动电话键输入软件案例研究 502

13.9.1需求 503

13.9.2类和类图 507

13.9.3状态图 509

13.9.4 SMS按键硬件 509

本章小结 510

关键词及其定义 512

复习题 515

实践练习题 516

第14章 嵌入式软件开发过程和工具 519

14.1嵌入式软件开发过程和工具概述 519

14.1.1开发过程和软硬件 519

14.1.2软件工具 520

14.1.3源代码工程管理工具 521

14.1.4集成开发环境(IDE) 522

14.2宿主机和目标机 523

14.2.1宿主系统 523

14.2.2目标系统 525

14.3链接和定位软件 526

14.3.1文件、寻址和地址解决方法的区别 527

14.3.2 Motorola S-record和Intel Hex二进制映像格式的定位器输出文件 528

14.3.3用于定位器编码的存储器映射 528

14.4将嵌入式软件植入目标系统 530

14.4.1设备PROM或者闪存编程器 530

14.4.2设备编程器的编程方式 531

14.5 硬件/软件设计和协同设计中的问题 531

14.5.1选择合适的平台 532

14.5.2存储器敏感和处理器敏感软件 535

14.5.3存储器、程序段和设备地址分配 535

14.5.4嵌入式平台中Os的移植问题 538

14.6程序级别的性能分析和性能建模 539

14.6.1程序级别的性能分析和系统性能指标 539

14.6.2多处理器系统性能 539

14.6.3 MIP、MFLOP和DMIPS作为性能指标 539

14.7性能和性能加速器 540

本章小结 540

关键词及其定义 541

复习题 543

实践练习题 543

第15章 测试、模拟和调试技术与工具 545

15.1集成和测试嵌入式硬件 545

15.1.1测试嵌入式系统 546

15.1.2可测试性的设计 547

15.1.3断言宏 547

15.1.4自测的设计 547

15.1.5在宿主机上进行测试 548

15.2测试方法 548

15.2.1错误跟踪 548

15.2.2单元测试 549

15.2.3回归测试 549

15.2.4选择测试用例 549

15.2.5功能测试 550

15.2.6覆盖测试 550

15.2.7测试嵌入式软件 550

15.2.8性能测试 551

15.2.9维护 551

15.3调试技术 551

15.3.1模拟器 551

15.3.2模拟器的特性 552

15.3.3模拟器的局限性 552

15.3.4模拟工具软件 553

15.3.5嵌入式系统的原型开发、测试和调试工具 553

15.4试验工具和目标硬件的调试 554

15.4.1简单的伏特-欧姆表 554

15.4.2简单的LED测试和逻辑探测器 555

15.4.3示波器 555

15.4.4位率测量仪 556

15.4.5逻辑分析仪 556

15.4.6电路内置仿真器(ICE) 557

15.4.7监视器 559

本章小结 560

关键词及其定义 560

复习题 561

实践练习题 561

附录A大学生、研究生、专业培训学生的不同课程的学习路线图 563

附录B参考文献 565