《嵌入式系统 体系结构、编程与设计 第2版》PDF下载

  • 购买积分:20 如何计算积分?
  • 作  者:(印度)RajKamal编著
  • 出 版 社:北京:清华大学出版社
  • 出版年份:2010
  • ISBN:9787302218944
  • 页数:711 页
图书介绍:本书不仅全面介绍了嵌入式系统的基础知识,而且通过大量详尽的示例帮助读者理解理论知识。本书详细讨论了软硬件问题、实时操作系统(RTOS)以及嵌入式设计过程中的新主题,并加入了无线技术和无线网络方面的内容。

第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端口,1O总线和1O接口 14

1.3.7 DAC(使用PWM)和ADC 15

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嵌入式系统中的DSP 33

1.7.4嵌入式系统中的RISC 34

1.7.5嵌入式系统中的ASIP 34

1.7.6 嵌入式系统中的多处理器或者GPP双核处理器 34

1.7.7嵌入式处理器和嵌入式微控制器 35

1.7.8 嵌入式系统中的ARM处理器 37

1.7.9嵌入式系统中的ASSP 37

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总线的现实世界接口IO 76

2.2.2现实接口中的端口和设备的IO地址 80

2.2.3现实接口中的设备地址 82

2.2.4中断和IO 83

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 ARM 93

2.3.4 SHARC 99

2.3.5 DSP 101

2.4处理器和存储器组织 102

2.4.1处理器的组织 102

2.4.2存储器的组织 105

2.5指令级并行 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 UART 144

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.11 186

3.13.4 ZigBee 187

本章小结 187

关键词及其定义 189

问题回顾 192

实践练习 193

第4章 设备驱动程序和中断服务机制 195

4.1不使用中断服务机制的程序查询式I/O忙/等待方法 196

4.2 ISR的概念 198

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编写系统中的物理设备驱动ISR 227

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面向对象编程 270

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 J2ME 276

5.7.5 JavaCard和嵌入式Java 277

本章 小结 277

关键词及其定义 78

问题回顾 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

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.10信号函数 345

7.11信号量函数 347

7.12消息队列函数 348

7.13邮箱函数 350

7.14管道函数 353

7.15套接字函数 355

7.16远程过程调用(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输入消息直接调用ISR 382

8.7.2 RTOS首先响应中断,接着OS调用相应的ISR 383

8.7.3 RTOS首先响应中断,之后初始化ISR并运行ISR 384

8.8实时操作系统 385

8.9使用RTOS进行基本设计 386

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.11操作系统的安全问题 417

本章小结 418

关键词及其定义 419

问题回顾 420

实践练习 421

第9章 实时操作系统编程-Ⅰ:MicroC/OS- Ⅱ和VxWorks 423

9.1 RTOS的基本函数和类型 424

9.1.1基于宿主机/目标机和基于自主主机的开发方法 425

9.1.2 RTOS的类型 426

9.2 RTOS μCOS-II 427

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 RTOS VxWorks 473

9.3.1基本特性 475

9.3.2系统库头文件中的任务管理库 477

9.3.3 VxWorks系统函数和系统任务 481

9.3.4 IPC函数 483

本章 小结 496

关键词及其定义 498

问题回顾 499

实践练习 499

第10章 实时操作系统编程-Ⅱ:Windows CE、 OSEK和实时Linux 函数 501

10.1 Windows CE 502

10.1.1 Windows CE的特点 502

10.1.2 Windows CE编程 504

10.1.3窗口和窗口管理 505

10.1.4内存管理 506

10.1.5文件和注册表 507

10.1.6 Windows CE数据库 508

10.1.7进程、线程和IPC 509

10.1.8按键、触摸屏、鼠标的输入 512

10.1.9通信和网络 514

10.1.10设备间套接字通信函数 516

10.1.11 Win32 API编程 517

10.1.12创建窗口 518

10.2 OSEK 519

10.3 Linux 2.6.x和RTLinux 521

10.3.1实时Linux函数 521

10.3.2 RTLinux 527

本章 小结 531

关键词及其定义 533

问题回顾 536

实践练习 537

第11章 RTOS编程和程序建模设计示例与案例研究-1 539

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创建任务列表、函数和IPC 550

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使用RTOS VxWorks将应用层字节流发送到TCP/IP网络的编码案例研究 566

11.3.1需求 567

11.3.2类图、类和对象 567

11.3.3 TCP栈的硬件和软件体系结构 570

11.3.4编码步骤实例 574

本章小结 595

关键词及其定义 597

问题回顾 598

实践练习 599

第12章 RTOS编程和程序建模设计示例与案例研究-2 601

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 Motorola S-record和Intel Hex二进制映像格式的定位器输出文件 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