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

  • 购买积分:17 如何计算积分?
  • 作  者:(印)Raj Kamal编著;陈曙晖等译
  • 出 版 社:北京:清华大学出版社
  • 出版年份:2005
  • ISBN:7302096244
  • 页数:561 页
图书介绍:本书主要介绍了嵌入式体系结构,在系统开发过程中使用的基本硬件和软件元素,编程模型和软件工程实践。还介绍了将代码嵌入到系统中的软件技术和方法。

目录 1

第1章 嵌入式系统简介 1

1.1 嵌入式系统 2

1.1.1 系统 2

1.1.2 嵌入式系统 3

1.1.3 嵌入式系统的分类 4

1.1.4 嵌入式系统设计者需要具备的技能 5

1.2 系统中的处理器 6

1.2.1 系统中的处理器 6

1.2.2 微处理器 7

1.2.3 微控制器 8

1.2.4 复杂系统的嵌入式处理器 10

1.2.5 数字信号处理器 11

1.2.6 嵌入式系统的专用系统处理器 11

1.2.7 使用通用处理器的多处理器系统 12

1.3 其他硬件单元 13

1.3.1 电源和低功耗管理 13

1.3.2 时钟振荡电路和时钟单元 15

1.3.3 系统需要的各种计时和计数功能的实时时钟和定时器 16

1.3.4 复位电路、加电复位和Watchdog定时器复位 16

1.3.5 存储器 17

1.3.6 输入、输出和I/O端口,IO总线和IO接口 18

1.3.8 DAC(使用PWM)和ADC 19

1.3.7 中断处理器 19

1.3.9 LCD和LED显示 20

1.3.10 小键盘/键盘 21

1.3.11 脉冲拨号电路、调制解调器和收发器 21

1.3.12 GPIB(IEEE 488)连接 21

1.3.13 嵌入式系统硬件的连接和接口总线及单元 22

1.3.14 案例中所需要的硬件单元 22

1.4 嵌入系统软件 24

1.4.1 产品的最终机器可实现软件 24

1.4.2 用机器码编写软件 25

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

1.4.4 用高级语言编写软件 27

1.4.5 使用操作系统的设备驱动程序和设备管理软件 29

1.4.6 多任务调度和使用RTOS设备的软件设计 30

1.4.7 设计嵌入式系统的软件工具 30

1.4.8 示例中需要的软件工具 32

1.4.9 软件设计模型 32

1.5 示例嵌入式系统 33

1.6 嵌入式片上系统(SOC)和内部VLSI电路 35

1.6.1 用于便携式电话的SoC示例 35

1.6.2 ASIP 36

1.6.3 IP核 36

1.6.5 具有一个或者多个处理器的FPGA核 37

1.6.4 嵌入GPP 37

1.6.6 示例SoC中的组成部分——智能卡 38

第2章 处理器和存储器组织 45

2.1 处理器中的结构单元 46

2.2 嵌入式系统的处理器选择 55

2.3 存储器设备 58

2.3.1 ROM:使用方法、形式和变种 59

2.3.2 RAM设备 60

2.4 嵌入式系统的存储器选择 61

2.5 程序段和块的存储器分配及系统的存储器映射 64

2.5.1 各种存储器段中的函数、过程、数据和堆栈 64

2.5.2 不同数据结构和数据集合元素的存储器块 66

2.5.3 存储器映射 71

2.5.4 内部设备和I/O设备在映射中的地址 77

2.6 直接存储器访问 79

2.7 处理器、存储器和I/O设备的接口 80

第3章 设备网络的设备和总线 87

3.1 I/O设备 88

3.1.1 I/O设备的类型和示例 88

3.1.2 串行设备的同步、准同步和异步通信 90

3.1.3 内部串行通信设备的示例 93

3.1.4 并口设备 95

3.1.5 设备端口的复杂接口特性 97

3.2 定时器和计数设备 98

3.3 互连的多个设备之间通过I2C、CAN和高级I/O总线进行串行通信 102

3.3.1 I2C总线 102

3.3.2 CAN总线 103

3.3.3 USB总线 105

3.3.4 先进的串行高速总线 105

3.4 多个互连I/O设备之间通过ISA、PCI、PCI-X和高级总线进行的计算机或者主机系统并行通信 106

3.4.1 ISA总线 106

3.4.2 PCI和PCI/X总线 107

3.4.3 高级并行高速总线 108

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

4.1 设备驱动程序 117

4.1.1 不使用ISR 设备服务 117

4.1.2 设备驱动程序ISR 118

4.1.3 设备驱动程序 120

4.1.4 作为设备驱动和网络函数的Linux内幕 121

4.1.5 编写系统中的物理设备驱动ISR 122

4.1.6 虚拟设备 123

4.2 系统中的并口设备驱动程序 124

4.3 系统中的串口设备驱动程序 130

4.4 内部可编程定时设备的设备驱动程序 134

4.5.2 软件错误相关的硬件中断 135

4.5 中断服务(处理)机制 135

4.5.1 硬件和软件相关的中断源 135

4.5.3 软件指令相关的中断源 137

4.5.4 内部设备相关的硬件中断 138

4.5.5 中断向量 138

4.5.6 根据可屏蔽和不可屏蔽的中断分类 138

4.5.7 所有可屏蔽中断源的激活(未屏蔽)和禁用(屏蔽) 139

4.5.8 中断挂起寄存器或者状态寄存器 139

4.6 上下文和上下文切换周期、最终期限和中断延迟 139

4.6.1 上下文、延迟和最终期限 139

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

4.6.4 满足服务最终期限的优先级分配 144

4.6.3 使用DMA通道帮助缩短中断延迟周期 144

4.6.5 硬件优先级的软件覆盖 145

第5章 编程概念及C与C++的嵌入式编程 150

5.1 用汇编语言和高级语言C进行软件编程 151

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

5.2.1 用于包含文件的include指令 152

5.2.2 源文件 154

5.2.3 配置文件 154

5.2.4 预处理指令 154

5.3 程序元素:宏与函数 154

5.4.2 使用数据结构:队列、堆栈、链表和树 156

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

5.4.1 数据类型 156

5.4.3 修饰符 158

5.4.4 条件语句、循环语句以及无限循环语句 159

5.4.5 指针和NULL指针 161

5.4.6 函数调用 163

5.4.7 主程序中按照循环顺序进行的多函数调用 164

5.4.8 函数指针、函数队列和中断服务例程队列 166

5.5 队列 167

5.5.1 队列 167

5.5.2 实现网络协议的队列 170

5.5.3 发生中断时函数的排列 172

5.5.4 网络中进行流控制的FIPO队列 174

5.6 堆栈 175

5.7 链表与有序链表 178

5.7.1 链表 178

5.7.2 活动设备驱动器(软件时钟)的链表 186

5.7.3 就绪链表中的任务链表 187

5.8 C++嵌入式编程 189

5.8.1 面向对象的编程 189

5.8.2 C++的嵌入式编程 189

5.9.2 Java的缺点 191

5.9.1 什么时候用Java编程 191

5.9 用Java进行嵌入式编程 191

5.10 C程序编译器与交叉编译器 193

5.11 嵌入式C/C++的源代码工程管理工具 194

5.12 存储器需求的优化 194

第6章 单处理器和多处理器系统软件开发过程中的程序建模概念 201

6.1 软件实现之前对软件分析过程的建模 202

6.1.1 数据流图在程序分析中的用法 202

6.1.2 用于程序分析的控制数据流图的用法 204

6.2 用于事件控制或者响应时间受到约束的实时程序的编程模型 205

6.2.1 有限状态机模型 205

6.2.2 Petri网模型 209

6.3 多处理器系统的建模 215

6.3.1 多处理器系统中的问题 216

6.3.2 模型 217

6.3.3 同步数据流图模型 218

6.3.4 同构的同步数据流图模型 219

6.3.5 无环优先扩展图模型 220

6.3.6 定时的Petri网和扩展预测/转换网模型 221

6.3.7 多线程图系统模型 222

6.3.8 图和Petri网在多处理器系统中的应用 223

第7章 嵌入式软件开发过程中的软件工程实践 233

7.1 软件的算法复杂度 234

7.2 软件开发生命周期及其模型 236

7.2.1 软件开发过程中的线性顺序模型(瀑布模型或者生命周期模型) 236

7.2.2 RAD模型 237

7.2.3 增量模型 237

7.2.4 并发模型 238

7.2.5 基于组件(面向对象)的软件开发过程模型 238

7.2.6 基于第四代工具的软件开发过程模型 238

7.2.7 基于面向对象和基于第四代工具的方法 239

7.3 软件分析 239

7.4 软件设计 241

7.5 软件实现 242

7.6 软件测试、确认以及调试 243

7.6.1 测试、验证以及确认 243

7.6.2 调试 246

7.7 软件开发过程中的实时程序设计问题 248

7.7.1 在需求和规范的分析中存在的问题 248

7.7.2 设计和实现中存在的问题 249

7.7.3 系统集成中的问题 249

7.7.4 测试中的问题 249

7.8 软件项目管理 250

7.8.1 项目管理 250

7.8.2 项目测度 251

7.9 软件维护 253

7.10 统一建模语言(UML) 255

第8章 进程间通信与进程、任务和线程的同步 265

8.1 应用程序中的多个进程 266

8.1.1 进程 266

8.1.2 任务 266

8.1.3 线程 268

8.1.4 通过函数、ISR和任务的特征进行区分 269

8.2 多任务和多例程的数据共享问题 270

8.2.1 数据共享问题及其解决方案 270

8.2.2 对任务或者任务的临界段使用信号量 271

8.2.3 优先级倒置问题和死锁情况 279

8.3 进程间通信 280

8.3.1 信号 281

8.3.2 信号量标识或者互斥体用作资源键(用于进程的资源加锁和解锁) 281

8.3.3 消息队列 282

8.3.4 邮箱 284

8.3.5 管道 285

8.3.6 虚拟(逻辑)套接字 287

8.3.7 远程过程调用(RPC) 287

第9章 实时操作系统 292

9.1.1 目标 293

9.1 操作系统服务 293

9.1.2 结构 294

9.1.3 内核 295

9.1.4 进程管理 296

9.1.5 存储器管理 297

9.1.6 设备管理 298

9.1.7 文件系统的组织和实现 300

9.2 I/O子系统 302

9.3 网络操作系统 302

9.4.1 实时操作系统 304

9.4.2 在嵌入式系统中何时需要RTOS 304

9.4 实时操作系统与嵌入式操作系统 304

9.4.3 RTOS的多任务调度管理 306

9.4.4 实时系统中通过RTOS进行的多任务调度 308

9.5 RTOS环境中的中断例程:RTOS的中断源调用处理 309

9.5.1 通过中断源直接调用ISR 310

9.5.2 通过中断源以及调度任务的暂时挂起,直接调用RTOS 311

9.5.3 通过中断源以及RTOS对任务和ISR的调度,直接调用RTOS 311

9.6 RTOS任务调度模型,作为性能测度的中断延迟和任务响应时间 311

9.6.1 使用就绪任务循环队列的协作轮转调度 312

9.6.2 使用按照优先级约束排序列表的就绪任务的协作调度 313

9.6.3 时间分片的循环调度(速率单调的协作调度) 315

9.6.4 调度程序控制的抢占式调度模型策略 316

9.6.5 抢占式调度程序提供的临界段服务 318

9.6.6 任务的固定(静态)实时调度 320

9.6.7 调度算法中的优先级分配 320

9.6.8 使用概率定时Petri网(随机)和多线程图(MTG)的高级调度算法 321

9.7 周期、零散以及非周期任务的调度模型的性能测度 321

9.7.1 使用CPU负载作为性能尺度 321

9.7.2 零散任务模型 322

9.8 为RTOS的标准化和任务内部通信函数采用的IEEE标准POSIX 1003.1B 322

9.9 抢占式调度程序的基本操作及其在处理器上预期耗费的时间 324

9.10 用于进程间、ISR间、OS函数间和任务之间同步及资源管理的15条策略 325

9.11 嵌入式LINUX的内部组织:设备驱动程序和嵌入式系统的LINUX内核 326

9.12 操作系统的安全问题 329

9.13 移动式操作系统 330

第10章 实时操作系统编程工具:MicroC/OS-Ⅱ和V×Works 334

10.1 测试稳定且调试合格的实时操作系统的必要性 335

10.2 μC/OS-Ⅱ 337

10.2.1 RTOS系统级函数 338

10.2.2 任务服务函数及其使用范例 341

10.2.3 时间延迟函数 347

10.2.4 函数相关的存储器分配 349

10.2.5 信号量相关函数 351

10.2.6 邮箱相关函数 363

10.2.7 队列相关函数 372

10.3 VxWorks 381

10.3.1 基本特性 382

10.3.2 系统库头文件中的任务管理库 384

10.3.3 VxWorks系统函数和系统任务 388

10.3.4 进程(任务)间通信函数 391

第11章 RTOS编程案例研究 405

11.1 使用MUCOS RTOS对巧克力自动售卖机编码 406

11.1.1 案例定义、多任务及其函数 406

11.1.2 创建任务、函数和IPC 408

11.1.3 编码步骤示例 411

11.2 使用RTOS VxWorks将应用层字节流发送到TCP/IP网络上 420

11.2.1 案例定义、多任务及其函数 421

11.2.2 创建任务、函数和IPC 424

11.2.3 编码步骤示例 425

11.3 汽车自适应巡航控制系统的嵌入式系统 443

11.4 智能卡中的嵌入式系统 456

11.4.1 嵌入式硬件 457

11.4.2 嵌入式软件 458

第12章 嵌入式系统中的软硬件协同设计 472

12.1 嵌入式系统项目管理 473

12.2 系统开发过程中嵌入式系统设计和协同设计问题 474

12.2.1 嵌入式系统开发过程的目标 474

12.2.2 行动计划 474

12.2.3 完整的规范和系统需求 475

12.2.4 原理设计 476

12.2.5 软硬件布局设计 477

12.2.6 详细设计 478

12.2.7 实现工具 478

12.2.8 测试 479

12.3 嵌入式系统开发阶段中的设计周期 479

12.4 目标系统或其仿真器和内置电路仿真器(ICE) 480

12.4.1 使用目标系统 480

12.4.2 仿真器和ICE 481

12.5.1 代码生成工具(汇编器、编译器、加载器和链接器) 483

12.4.3 用于将最终代码下载到ROM中的设备编程器 483

12.5 嵌入式系统开发中的软件工具 483

12.5.2 模拟器 484

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

12.5.4 集成开发环境 487

12.5.5 存储器、处理器敏感程序和设备驱动程序 489

12.5.6 动态链接库 489

12.6 示波器和逻辑分析仪在系统硬件测试中的使用 490

12.6.1 逻辑探测器或者LED测试 490

12.6.2 示波器 490

12.6.4 位率测量仪 491

12.6.3 逻辑分析仪 491

12.6.5 用于ROM调试的系统监控代码 492

12.7 嵌入式系统设计中的问题 492

12.7.1 选择合适的平台 492

12.7.2 嵌入式系统处理器的选择 493

12.7.3 需要考虑的因素和必需的特性 494

12.7.4 软硬件权衡 495

12.7.5 性能建模 495

12.7.6 性能加速器 496

12.7.7 嵌入式系统中OS的移植问题 496

A.1.1 指令和数据的格式 504

附录A CISC和RISC处理器体系结构和指令集示例 504

A.1 CISC和RISC处理器的指令及其处理 504

A.1.2 寻址模式 505

A.1.3 指令集 506

A.1.4 CISC和RISC体系结构 507

A.2 指令集示例——ARM7 508

A.3 ARM处理器的汇编语言程序示例 510

附录B 嵌入式系统高性能处理器 511

B.1 ARM处理器示例 511

B.2 高性能处理器示例 514

B.3 加速器 515

C.1 Intel、Motorola和PIC系列微控制器的体系结构概述 517

附录C 嵌入式系统8/16/32位微处理器及其体系结构概述 517

C.2 Motorola系列CISC和RISC的新一代微控制器 519

附录D 嵌入式数字信号处理器 522

D.1 数字信号处理器的体系结构 522

D.2 DSP处理器和传统处理器的比较 524

D.3 定点运算和浮点运算的比较 525

D.4 嵌入式系统的 DSP 525

D.4.1 TMS320C2000 TM平台 526

D.4.2 TMS320C5000 TM平台 526

D.4.3 TMS320C6000 TM平台 526

D.4.4 DSP的TMS320C24x和C28X代产品 527

D.4.5 TMS320C54x和 TMS320C55x代DSP 528

D.4.6 TMS320C62x、64x和 C67x代DSP 529

D.4.7 RISC环境下的OMAP5910嵌入式处理DSP 530

D.4.8 基于 SoC的解决方Texas DSPTMS320DM310 530

附录E 嵌入式系统应用的新型处理器 532

附录F 串行和并行总线 537

F.1 新的串行总线标准(USB 2.0,IEEE 1394) 537

F.2 新的并行总线标准(CompactPCI、PCI-X) 537

附录G 嵌入式系统中的设备 539

G.1 各种形式的 ROM设备 539

G.2.2 Motorola S-Record格式 540

G.2.1 二进制映像 540

G.2 ROM设备编程器 540

G.2.3 Intel Hex-File格式 541

G.2.4 设备编程器的编程方法 542

G.3 RAM设备 544

G.3.1 静态和动态RAM 544

G.3.2 EDO RAM 544

G.3.3 SDRAM 545

G.3.4 RDRAM 545

G.3.5 参数化的分布式RAM 545

G.3.6 参数化的块RAM 545

G.4 微控制器中的并口 545

G.5.1 Motorola 68HC11中的SPI和SCI 546

G.5 串行通信设备 546

G.5.2 微控制器中的串行通信设备 547

G.6 微处理器中的定时器 548

G.7 各种处理器系列中的中断源及其控制 550

G.8 80x86处理器的中断 552

G.9 68HC11中的中断 552

G.9.1 中断服务 552

G.9.2 中断源 553

附录H 嵌入式系统体系结构、编程和设计中的重要内容 554

H.1 推荐使用的教学大纲 554

H.2 CDAC嵌入式系统课程教学大纲涉及的内容 556