本书是嵌入式系统的基础教程,主要面向初级系统设计人员。书中详细介绍了嵌入式系统最基本的软件和硬件要素,以及将代码嵌入到系统中的一些软件技术和接口技术。
目录
第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.7中断处理器 19
1.3.8DAC(使用PWM)和ADC 19
1.3.9LCD和LED显示 20
1.3.10小键盘/键盘 21
1.3.11脉冲拨号电路、调制解调器和收发器 21
1.3.12GPIB(IEEE488)连接 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.2ASIP 36
1.6.3IP核 36
1.6.4嵌入GPP 37
1.6.5具有一个或者多个处理器的FPGA核 37
1.6.6示例SoC中的组成部分--智能卡 38
第2章处理器和存储器组织 45
2.1处理器中的结构单元 46
2.2嵌入式系统的处理器选择 55
2.3存储器设备 58
2.3.1ROM:使用方法、形式和变种 59
2.3.2RAM设备 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.1I/O设备 88
3.1.1I/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.1I2C总线 102
3.3.2CAN总线 103
3.3.3USB总线 105
3.3.4先进的串行高速总线 105
3.4多个互连I/O设备之间通过ISA、PCI、PCI-X和高级总线进行的计算机
或者主机系统并行通信 106
3.4.1ISA总线 106
3.4.2PCI和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中断服务(处理)机制 135
4.5.1硬件和软件相关的中断源 135
4.5.2软件错误相关的硬件中断 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.3使用DMA通道帮助缩短中断延迟周期 144
4.6.4满足服务最终期限的优先级分配 144
4.6.5硬件优先级的软件覆盖 145
第5章编程概念及C与C++的嵌入式编程 150
5.1用汇编语言和高级语言C进行软件编程 151
5.2C程序中的元素:头文件、源文件以及预处理指令 152
5.2.1用于包含文件的include指令 152
5.2.2源文件 154
5.2.3配置文件 154
5.2.4预处理指令 154
5.3程序元素:宏与函数 154
5.4程序元素:数据类型、数据结构、修饰符、语句、循环和指针 156
5.4.1数据类型 156
5.4.2使用数据结构:队列、堆栈、链表和树 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.8C++嵌入式编程 189
5.8.1面向对象的编程 189
5.8.2C++的嵌入式编程 189
5.9用Java进行嵌入式编程 191
5.9.1什么时候用Java编程 191
5.9.2Java的缺点 191
5.10C程序编译器与交叉编译器 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.2Petri网模型 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.2RAD模型 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操作系统服务 293
9.1.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.2I/O子系统 302
9.3网络操作系统 302
9.4实时操作系统与嵌入式操作系统 304
9.4.1实时操作系统 304
9.4.2在嵌入式系统中何时需要RTOS 304
9.4.3RTOS的多任务调度管理 306
9.4.4实时系统中通过RTOS进行的多任务调度 308
9.5RTOS环境中的中断例程:RTOS的中断源调用处理 309
9.5.1通过中断源直接调用ISR 310
9.5.2通过中断源以及调度任务的暂时挂起,直接调用RTOS 311
9.5.3通过中断源以及RTOS对任务和ISR的调度,直接调用RTOS 311
9.6RTOS任务调度模型,作为性能测度的中断延迟和任务响应时间 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标准POSIX1003.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-II和VxWorks 334
10.1测试稳定且调试合格的实时操作系统的必要性 335
10.2μC/OS-II 337
10.2.1RTOS系统级函数 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.3VxWorks 381
10.3.1基本特性 382
10.3.2系统库头文件中的任务管理库 384
10.3.3VxWorks系统函数和系统任务 388
10.3.4进程(任务)间通信函数 391
第11章RTOS编程案例研究 405
11.1使用MUCOSRTOS对巧克力自动售卖机编码 406
11.1.1案例定义、多任务及其函数 406
11.1.2创建任务、函数和IPC 408
11.1.3编码步骤示例 411
11.2使用RTOSVxWorks将应用层字节流发送到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.4.3用于将最终代码下载到ROM中的设备编程器 483
12.5嵌入式系统开发中的软件工具 483
12.5.1代码生成工具(汇编器、编译器、加载器和链接器) 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.3逻辑分析仪 491
12.6.4位率测量仪 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
附录ACISC和RISC处理器体系结构和指令集示例 504
A.1CISC和RISC处理器的指令及其处理 504
A.1.1指令和数据的格式 504
A.1.2寻址模式 505
A.1.3指令集 506
A.1.4CISC和RISC体系结构 507
A.2指令集示例--ARM7 508
A.3ARM处理器的汇编语言程序示例 510
附录B嵌入式系统高性能处理器 511
B.1ARM处理器示例 511
B.2高性能处理器示例 514
B.3加速器 515
附录C嵌入式系统8/16/32位微处理器及其体系结构概述 517
C.1Intel、Motorola和PIC系列微控制器的体系结构概述 517
C.2Motorola系列CISC和RISC的新一代微控制器 519
附录D嵌入式数字信号处理器 522
D.1数字信号处理器的体系结构 522
D.2DSP处理器和传统处理器的比较 524
D.3定点运算和浮点运算的比较 525
D.4嵌入式系统的DSP 525
D.4.1TMS320C2000TM平台 526
D.4.2TMS320C5000TM平台 526
D.4.3TMS320C6000TM平台 526
D.4.4DSP的TMS320C24x和C28X代产品 527
D.4.5TMS320C54x和TMS320C55x代DSP 528
D.4.6TMS320C62x、64x和C67x代DSP 529
D.4.7RISC环境下的OMAP5910嵌入式处理器DSP 530
D.4.8基于SoC的解决方案TexasDSPTMS320DM310 530
附录E嵌入式系统应用的新型处理器 532
附录F串行和并行总线 537
F.1新的串行总线标准(USB2.0,IEEE1394) 537
F.2新的并行总线标准(CompactPCI、PCI-X) 537
附录G嵌入式系统中的设备 539
G.1各种形式的ROM设备 539
G.2ROM设备编程器 540
G.2.1二进制映像 540
G.2.2MotorolaS-Record格式 540
G.2.3IntelHex-File格式 541
G.2.4设备编程器的编程方法 542
G.3RAM设备 544
G.3.1静态和动态RAM 544
G.3.2EDORAM 544
G.3.3SDRAM 545
G.3.4RDRAM 545
G.3.5参数化的分布式RAM 545
G.3.6参数化的块RAM 545
G.4微控制器中的并口 545
G.5串行通信设备 546
G.5.1Motorola68HC11中的SPI和SCI 546
G.5.2微控制器中的串行通信设备 547
G.6微处理器中的定时器 548
G.7各种处理器系列中的中断源及其控制 550
G.880x86处理器的中断 552
G.968HC11中的中断 552
G.9.1中断服务 552
G.9.2中断源 553
附录H嵌入式系统体系结构、编程和设计中的重要内容 554
H.1推荐使用的教学大纲 554
H.2CDAC嵌入式系统课程教学大纲涉及的内容 556
猜您喜欢
推荐内容
开源项目推荐 更多
热门活动
热门器件
用户搜过
随便看看
热门下载
热门文章
评论