第1章 嵌入式系统概述1
1.1 概述1
1.2 嵌入式系统的概念1
1.3 嵌入式系统的发展2
1.3.1 嵌入式系统的发展历程2
1.3.2 嵌入式处理器的发展3
1.4 嵌入式系统的特点4
1.5 嵌入式系统的组成6
1.5.1 嵌入式处理器7
1.5.2 存储器8
1.5.3 输入/输出接口8
1.6 嵌入式系统的种类8
1.7 嵌入式系统的调试方法9
1.7.1 基于主机的调试10
1.7.2 远程调试器与调试内核10
1.7.3 在线仿真ICE12
1.7.4 BDM16
1.7.5 JTAG19
1.7.6 软件仿真器21
1.8 嵌入式系统的应用22
1.8.1 消费类电子产品23
1.8.2 办公自动化产品23
1.8.3 控制系统与工业自动化23
1.8.4 生物医学系统23
1.8.5 现场仪器23
1.8.6 网络通信设备24
1.8.7 电信设备24
1.9 嵌入式系统的发展趋势24
1.9.1 硬件的发展24
1.9.2 软件的发展25
1.9.3 系统的发展26
1.10 本章小结27
思考题27
第2章 嵌入式系统开发流程28
2.1 概述28
2.2 需求分析阶段28
2.2.1 分析用户的需求28
2.2.2 确定硬件和软件31
2.2.3 对需求分析的结果进行检查31
2.2.4 确定项目的约束条件32
2.2.5 概要设计33
2.3 详细设计阶段35
2.3.1 审查分析资料36
2.3.2 体系结构设计36
2.3.3 硬件与软件的划分37
2.3.4 硬件和软件的设计次序37
2.3.5 硬件设计38
2.3.6 软件设计39
2.3.7 检查设计41
2.4 科研开发阶段41
2.4.1 选择开发平台41
2.4.2 软件开发过程46
2.5 测试阶段48
2.5.1 测试的原因48
2.5.2 何时测试50
2.5.3 测试内容51
2.5.4 何时停止测试52
2.5.5 选择测试实例52
2.5.6 嵌入式系统的实时失败模式54
2.5.7 评估测试的覆盖率55
2.5.8 性能测试57
2.5.9 维护和测试58
2.6 本章小结59
思考题59
第3章 嵌入式处理器60
3.1 概述
嵌入式处理器共性:处理器内核,地址总线、数据总线、控制总线、处理其本身的辅助支持电路(时钟、复位等),片上I/O接口电路。
3.2 嵌入式系统硬件子系统组成
嵌入系统的硬件子系统包括处理器子系统、存储器子系统、附属电路和I/O子系统,他们之间通过系统总线连接在一起。
3.2.1 嵌入系统的方式
嵌入式系统:嵌入通用计算机型;嵌入专用计算机型。
3.2.2 硬件子系统总体组成
嵌入系统的硬件包括处理器、存储器、I/O接口电路和外部设备灯。此外,还有人机交互界面(键盘、液晶显示、语音I/O单元)
3.2.3 嵌入式处理器子系统
嵌入式系统适用的处理器包括通用微处理器、嵌入式微控制器、嵌入式微处理器、DSP、可编程逻辑器件(FPGA、CPLD)。
3.2.4 嵌入式存储器子系统
内部存储器、外部存储器。
存储器一般是存放应用程序与数据,软件以固化的形式存放。
一般应用中,嵌入式微处理器不需要外部存储器,使用其它的处理单元则需要使 用嵌入式微处理器
3.2.5 附属电路和I/O子系统
附属电路:时钟电路、复位电路、调试电路、监视定时器电路、译码器电路等,通常不执行带护具的输入输出功能。
I/O子系统:
I/O子系统:
,通常不执行带护具的输入输出功能。
I/O子系统:
3.2.6 调试子系统
JTAG调试接口和BDM调试接口(freescale公司)
3.2.7 如何选择处理单元68
3.3 嵌入式处理器的技术指标
功能、字宽、处理速度、工作温度、功耗、寻址能力、平均故障间隔时间、性价比、工艺、电磁兼容性指标。
3.4 典型的嵌入式处理器
MicroChip、NXPLPC嵌入式微控制器系列、Freescale微控制器MC68HC08系列、MCS-51系列嵌入式控制器/处理器、Atmel公司的AVR系列微控制器、MC68HC12系列处理器、PowerPC、ColdFire系列32位嵌入式处理器、ARM系列
3.4.1 MicroChip系列嵌入式微控制器70
3.4.2 NXPLPC嵌入式微控制器系列71
3.4.3 Freescale微控制器MC68HC08系列73
3.4.4 MCS-51系列嵌入式控制器/处理器75
3.4.5 Atmel公司的AVR系列微控制器77
3.4.6 MC68HC12系列处理器79
3.4.7 PowerPC系列32位嵌入式处理器79
3.4.8 ColdFire系列32位嵌入式处理器80
3.4.9 ARM系列83
3.5 如何选择嵌入式处理器100
3.5.1 选择处理器的总原则100
3.5.2 选择嵌入式处理器的具体方法101
3.6 嵌入式CPU子系统的设计方法102
3.6.1 设计原则102
3.6.2 基于微控制器的设计104
3.6.3 基于微处理器的设计106
3.7 本章小结111
思考题112
第4章 嵌入式系统的存储器113
4.1 概述113
4.2 嵌入式系统存储器的结构和组织113
4.2.1 存储器的结构113
4.2.2 嵌入式系统存储器子系统的结构114
4.3 存储器的性能指标115
易失性、只读性、位容量(1k*4,1千内存单元,4位数据输入端和4位数据输出端)、速度(访问时间,工艺:双极性工艺,速度块但功耗高价格高;CMOS工艺,速度慢但功耗低)、功耗(hcmos)、可靠性、价格
4.4 存储器的工作时序116
4.5 存储器的分类
存储器的分类:
1)随机存储器RAM(SRAM静态RAM、DRAM动态RAM、双端口RAM)SRAM中的数据只有断电后会消失,DRAM数据寿命很短,只有0.25秒,
2)只读存储器ROM (掩膜ROM、PROM一次可编程ROM、EPROM紫外线可擦除可编写ROM、FLASH:前两种一旦写入就无法擦除,EPROM可以被紫外线擦除且可以反复编程,FLASH可以在线擦除,在线编写)
3)混合ROM(EEPROM、NVROM:EEPROM电可擦写可编程存储器、NVROM是带后备电池的SRAM)
EEPROM、NVROM按字节擦除,FLASH按扇区擦除,EPROM则是擦除整个芯片。
4.6 随机存储器RAM119
4.6.1 静态RAM119
4.6.2 动态RAM122
4.6.3 双端口RAM127
4.6.4 如何选择RAM135
4.7 只读存储器ROM136
4.7.1 EPROM136
4.7.2 EEPROM139
4.7.3 FLASH141
4.7.4 只读存储器的编程147
4.8 混合类型存储器150
4.9 存储器的测试150
4.9.1 存储器芯片本身的问题151
4.9.2 电子线路的问题151
4.9.3 无存储器芯片152
4.9.4 芯片的不正确插入152
4.9.5 制定测试策略152
4.10 验证只读存储器的内容158
4.10.1 校验和158
4.10.2 循环冗余码159
4.11 系统配置数据存储器160
4.12 本章小结162
思考题162
第5章 嵌入式系统的I/O模块163
5.1 概述163
5.2 复位电路163
5.2.1 阻容复位电路163
5.2.2 手动复位电路164
5.2.3 看门狗复位164
5.2.4 专用复位电路165
5.2.5 内部复位电路166
5.2.6 软件复位166
5.3 系统时钟166
5.3.1 RC时钟167
5.3.2 石英晶体167
5.3.3 石英振荡器167
5.3.4 锁相倍频时钟与多时钟源168
5.4 I/O模块169
5.4.1 I/O接口的基本结构169
5.4.2 I/O接口的信号及其作用170
5.4.3 寄存器地址的映射方式170
5.5 嵌入式系统的译码器171
5.5.1 译码器的作用和种类171
5.5.2 可编程器件译码器171
5.5.3 嵌入式处理器上的集成译码模块172
5.5.4 ARM处理器上的译码电路与应用172
5.6 定时器/计数器173
5.6.1 定时器/计数器的功能173
5.6.2 定时器/计数器的基本结构173
5.6.3 定时器/计数器的工作模式174
5.6.4 示例:80186EB定时器/计数器174
5.7 SPI接口模块175
5.7.1 SPI原理175
5.7.2 SPI的数据流动177
5.7.3 SPI功能177
5.7.4 SPI引脚178
5.7.5 SPI寄存器179
5.8 UART182
5.8.1 串行接收机RxMachine182
5.8.2 串行发送机TxMachine183
5.8.3 基本特征184
5.8.4 通信模式184
5.8.5 UART的编程和使用185
5.9 通用并行接口185
5.9.1 通用并口的基本特点185
5.9.2 I/O端口的编程结构189
5.9.3 通用并口的操作189
5.10 IIC接口189
5.11 IIS接口与音频输入输出190
5.12 LCD显示屏接口191
5.12.1 概述191
5.12.2 LCD接口的主要特点192
5.13 触摸屏接口193
5.14 A/D接口194
5.15 实时时钟模块195
5.16 以太网接口196
5.17 其他接口模块198
5.18 本章小结199
思考题199
第6章 裸机系统的软件开发200
6.1 概述200
6.2 嵌入式的软件结构和组成200
6.2.1 裸机嵌入式系统软件的组成201
6.2.2 初始化引导代码201
6.2.3 设备驱动程序202
6.2.4 中断服务程序202
6.2.5 库函数202
6.2.6 应用主程序203
6.2.7 全局变量203
6.2.8 子程序或函数203
6.2.9 监控程序204
6.3 裸机嵌入式软件系统的设计
方法204
6.3.1 前后台系统204
6.3.2 中断(事件)驱动系统208
6.3.3 巡回服务系统210
6.3.4 基于定时器的巡回服务方式211
6.4 程序移植问题212
6.4.1 移植的必要性212
6.4.2 裸机系统的软件移植213
6.4.3 可移植应用软件的设计原则216
6.5 本章小结219
思考题219
第7章 嵌入式实时多任务操作系统与
应用开发220
7.1 概述220
7.2 操作系统介绍221
7.2.1 什么是操作系统221
7.2.2 操作系统的功能组成222
7.3 嵌入式RTOS的基本概念224
7.4 RTOS的关键技术指标225
7.5 RTOS基本术语226
7.6 RTOS要求227
7.7 常用的嵌入式操作系统228
7.7.1 NucleusPlus228
7.7.2 VxWorks230
7.7.3 μC/OS-II231
7.7.4 嵌入式Linux232
7.7.5 QNX233
7.7.6 ThreadX234
7.7.7 WindowsCE235
7.8 利用嵌入式操作系统开发应用238
7.8.1 软件组成与运行流程238
7.8.2 多任务系统的应用程序模板247
7.8.3 任务控制249
7.8.4 任务之间的通信250
7.8.5 任务之间的同步253
7.8.6 定时器258
7.8.7 动态存储器260
7.8.8 分区存储器264
7.9 如何选择嵌入式操作系统266
7.9.1 概述266
7.9.2 选择实时操作系统的依据267
7.10 本章小结271
思考题272
第8章 嵌入式网络与协议栈273
8.1 概述273
8.2 嵌入式网络274
8.2.1 分布式嵌入式系统274
8.2.2 基于网络的设计过程279
8.3 工业网络与现场总线281
8.3.1 FF总线协议283
8.3.2 HART协议285
8.3.3 Profibus协议286
8.3.4 CAN协议288
8.3.5 ControlNet290
8.3.6 DeviceNet290
8.4 嵌入式系统的联网291
8.4.1 选择协议栈291
8.4.2 选择网络技术292
8.4.3 选择成熟的实现方案292
8.4.4 使用标准的应用协议293
8.4.5 流行的网络体系结构293
8.5 嵌入式INTERNET294
8.5.1 嵌入式Internet概述294
8.5.2 嵌入式Internet的应用295
8.5.3 嵌入式Internet的原理296
8.5.4 嵌入式Internet的接入方案举例298
8.5.5 开发工具举例——EMIT开发方法300
8.5.6 嵌入式TCP/IP301
8.6 蓝牙技术304
8.6.1 蓝牙技术及特点304
8.6.2 蓝牙协议栈305
8.6.3 蓝牙应用产品307
8.7 本章小结307
思考题308
第9章 嵌入式软件组件309
9.1 概述309
9.2 嵌入式系统模型309
9.3 键盘310
9.3.1 键盘模型310
9.3.2 模块结构311
9.3.3 接口函数312
9.4 LED显示屏314
9.4.1 模型314
9.4.2 模块结构316
9.4.3 接口函数的定义与使用317
9.5 LCD显示屏319
9.5.1 模型319
9.5.2 模块实现320
9.5.3 接口函数321
9.6 日历时钟324
9.6.1 概述324
9.6.2 模块实现325
9.6.3 接口函数325
9.7 模拟量输入327
9.7.1 模型327
9.7.2 接口函数328
9.7.3 读取模/数转换结果的方法328
9.8 模拟量输出331
9.8.1 模型331
9.8.2 接口函数331
9.8.3 模块实现332
9.9 开关量输入/输出332
9.9.1 模型332
9.9.2 接口函数333
9.9.3 支持位操作的处理器335
9.1 0异步串行通信UART335
9.1 0.1 模型335
9.1 0.2 模块实现336
9.1 0.3 接口函数339
9.11 EEPROM读写模块342
9.11.1 概述342
9.11.2 接口函数342
9.12 其他组件模块343
9.13 本章小结344
思考题344
第10章 嵌入式文件系统345
10.1 概述345
10.2 存储介质345
10.3 嵌入式文件系统的特点345
10.4 文件系统结构346
10.5 嵌入式文件系统分类347
10.5.1 基于FLASH的文件系统348
10.5.2 基于RAM的文件系统352
10.6 YAFFS文件系统分析352
10.6.1 NANDFLASH352
10.6.2 LinuxMTD356
10.6.3 YAFFS相关数据结构分析358
10.6.4 YAFFS函数接口364
10.6.5 YAFFS使用的其他技术365
10.6.6 YAFFS文件系统移植366
思考题370
第11章 嵌入式人机界面371
11.1 概述371
11.2 分类371
11.3 字符型人机界面373
11.3.1 概述373
11.3.2 结构373
11.4 图形用户界面373
11.4.1 概述373
11.4.2 组成375
11.4.3 嵌入式图形界面376
11.4.4 GUI产品简介377
11.5 MINIGUI377
11.5.1 概述377
11.5.2 结构380
11.5.3 开发方法381
11.5.4 应用383
11.6 Qt384
11.6.1 概述384
11.6.2 结构385
11.6.3 Qt/Embedded的开发方法386
11.6.4 应用391
思考题392
第12章 案例分析393
12.1 概述393
12.2 PDA393
12.2.1 PDA概述393
12.2.2 PDA的硬件设计395
12.2.3 PDA的软件设计399
12.3 水表智能抄表系统401
12.3.1 水表智能抄表系统简介401
12.3.2 基于32位机S3C44B0X的抄表手机的设计402
12.4 AT91EB40A评估开发板403
12.5 S3C2410评估开发板405
12.6 信息家电407
12.6.1 信息家电概述407
12.6.2 信息家电的主要功能和特点408
12.6.3 信息家电的分类409
12.6.4 信息家电的硬件平台410
12.6.5 信息家电的结构411
12.6.6 嵌入式Linux在信息家电上的优势411
12.7 本章小结413
思考题413
第13章 低功耗系统的设计414
13.1 概述414
13.2 低功耗的优点414
13.2.1 电池驱动的需要414
13.2.2 安全的需要415
13.2.3 提高电磁兼容性415
13.2.4 节能的需要415
13.3 降低功耗的措施综述416
13.3.1 功耗产生的原因416
13.3.2 与系统功耗有关的因素416
13.3.3 降低功耗的措施417
13.4 元件工艺的低功耗419
13.5 硬件系统的低功耗设计422
13.5.1 选择低功耗的器件423
13.5.2 选用低功耗电路424
13.5.3 单电源、低电压供电424
13.5.4 分区供电降低功耗425
13.5.5 利用I/O引脚为外围器件供电425
13.5.6 电源管理单元的设计426
13.5.7 采用智能电源426
13.5.8 片选信号的处理427
13.5.9 有效利用I/O器件的待机模式427
13.5.1 0降低处理器的时钟频率427
13.5.1 1动态改变CPU的时钟428
13.5.1 2降低持续工作电流428
13.6 软件系统的低功耗设计428
13.6.1 编译低功耗优化技术429
13.6.2 硬件软件化429
13.6.3 采用事件驱动方式,尽量减少处理器的工作时间429
13.6.4 采用快速算法430
13.6.5 通信系统中提高通信的波特率430
13.6.6 数据采集系统中尽量降低采集速率430
13.6.7 延时程序的设计431
13.6.8 睡眠模式431
13.6.9 静态显示与动态显示431
13.7 关于电池供电系统432
13.8 本章小结432
思考题433
第14章 电磁兼容性问题434
14.1 概述434
14.2 电磁兼容的基本概念434
14.3 电磁兼容的基本术语434
14.4 电磁兼容的基本原理435
14.4.1 常见的电磁兼容性问题435
14.4.2 电磁环境特性437
14.4.3 噪声耦合路径438
14.4.4 PCB走线的天线效应439
14.4.5 系统内部电磁干扰产生的原因440
14.5 考虑电磁兼容时元件的模型和特性440
14.6 提高电磁兼容性的一般措施449
14.6.1 时钟源的电源滤波方法449
14.6.2 集成电路的辐射考虑451
14.6.3 电路的布局与布线451
14.7 旁路和去耦452
14.7.1 旁路和去耦概述452
14.7.2 电源层和接地层的分布电容考虑453
14.7.3 并联电容器453
14.7.4 去耦电容参数的计算454
14.7.5 安装454
14.7.6 大电容的使用和选择456
14.7.7 组件内电容概述457
14.8 信号完整性与串扰457
14.8.1 信号完整性要求457
14.8.2 反射和衰减振荡458
14.8.3 计算电长走线460
14.8.4 串扰461
14.9 PCB走线终端463
14.9.1 传输线效应464
14.9.2 终端匹配方法464
14.1 0接地470
14.1 0.1 概述470
14.1 0.2 接地模型470
14.1 0.3 接地方法471
14.1 0.4 消除接地环路473
14.1 0.5 消除多点接地系统中的谐振现象475
14.1 0.6 电路子卡与卡架之间的场耦合475
14.1 0.7 I/O连接器的设计考虑476
14.1 0.8 消除地电位不均匀477
14.11 考虑电磁兼容性的其他措施477
14.11.1 屏蔽477
14.11.2 磁珠的使用478
14.11.3 电源低通滤波器478
14.11.4 其他EMC器件478
14.12 控制噪声的经验小结478
14.12.1 控制噪声源478
14.12.2 从传输路径方面减小噪声的耦合479
14.12.3 在信号接收端减少噪声的接收480
14.13 本章小结480
思考题481