第1章 嵌入式硬件系统概述 1
1.1 嵌入式系统的应用领域 1
1.2 嵌入式系统的特点 3
1.3 嵌入式硬件系统的组成 5
1.4 嵌入式微处理器概述 6
1.5 主流的嵌入式微处理器 8
1.6 嵌入式系统的发展趋势 9
1.7 本章小结 11
第2章 嵌入式微处理器核心 12
2.1 ARM CPU ISA的发展历史 12
2.2 典型ARM CPU Core体系结构 17
2.3 ARM编程模型 20
2.3.1 数据宽度(类型) 20
2.3.2 工作状态和工作模式 20
2.3.3 寄存器 22
2.3.4 中断与异常 28
2.4 内存和I/O 41
2.4.1 大小端 41
2.4.2 I/O端口编址方式 42
2.5 JTAG和ARM7TDMI Embedded ICE相关技术 43
2.5.1 JTAG的基本原理 43
2.5.2 JTAG的结构 44
2.5.3 TAP控制器的状态机 45
2.5.4 ARM7TDMI上的JTAG 47
2.6 PowerPC CPU Core 53
2.7 SuperH CPU Core 59
2.7.1 SuperH系列嵌入式微处理器简介 59
2.7.2 SuperH体系的特点 60
2.7.3 SH3编程模型 64
2.8 本章小结 68
第3章 ARM嵌入式微处理器指令集概览 70
3.1 ARM指令集概述 70
3.1.1 ARM指令集 70
3.1.2 Thumb指令集 71
3.1.3 Thumb-2指令集 72
3.1.4 Jazelle 72
3.1.5 为什么需要学习汇编指令 73
3.2 ARM v4T架构指令体系 73
3.2.1 条件执行和标志位 73
3.2.2 数据处理指令 74
3.2.3 乘法和除法 76
3.2.4 分支指令 77
3.2.5 单寄存器数据传输(加载/存储指令) 77
3.2.6 批量加载/存储指令 79
3.2.7 交换(SWP)指令 80
3.2.8 软中断指令(SWI) 81
3.2.9 程序状态寄存器访问指令 81
3.2.10 协处理器指令 81
3.3 ARM v5TE架构指令体系 82
3.3.1 前导0计数指令 82
3.3.2 符号乘法操作指令 82
3.3.3 饱和运算指令 83
3.3.4 加载/存储2个寄存器指令 84
3.3.5 断点指令 84
3.3.6 高速缓存预加载指令 84
3.4 ARM v6架构指令体系新特性 84
3.4.1 打包数据类型指令 85
3.4.2 字节选择指令 85
3.4.3 单指令多数据处理指令 86
3.4.4 绝对差值求和指令 87
3.4.5 SETEND指令 87
3.4.6 字节反转指令 88
3.4.7 饱和指令 88
3.4.8 排他的加载/存储指令 88
3.4.9 异常进入与退出指令 89
3.5 Thumb指令集 89
3.5.1 v4T和v5TE的Thumb指令集 90
3.5.2 v6的Thumb指令集 91
3.6 本章小结 91
第4章 SoC嵌入式微处理器系统 92
4.1 SoC的概念 92
4.2 典型的SoC结构 92
4.2.1 处理器存储器子系统 93
4.2.2 嵌入式微处理器片内总线 98
4.2.3 嵌入式微处理器片内外设 102
4.3 典型的SoC嵌入式系统硬件介绍 104
4.3.1 WinBond W90P710系统 104
4.3.2 Atmel AT91RM9200系统介绍 108
4.3.3 Freescale MPC5554嵌入式微处理器介绍 110
4.3.4 SH7709S嵌入式微处理器介绍 111
4.4 本章小结 113
第5章 嵌入式系统的片外存储系统 114
5.1 RAM 114
5.1.1 静态存储器SRAM(Static RAM)原理及特点 114
5.1.2 DRAM(Dynamic RAM)原理及特点 116
5.1.3 SDRAM(Synchronous DRAM)原理及特点 120
5.1.4 DDR SDRAM原理及特点 123
5.1.5 RAM芯片的选型和组合应用 126
5.2 ROM 129
5.2.1 NOR Flash的原理及特点 130
5.2.2 NAND Flash 132
5.2.3 EPROM原理及特点 137
5.2.4 EEPROM原理及特点 138
5.2.5 FRAM原理及特点 139
5.3 电子存储器 141
5.3.1 CF卡 141
5.3.2 MMC卡 142
5.3.3 SD卡 144
5.3.4 SM卡 145
5.3.5 xD卡 146
5.3.6 Memory Stick 146
5.4 微硬盘 147
5.5 本章小结 148
第6章 32位嵌入式系统常用总线 150
6.1 概述 150
6.2 EBI总线 150
6.2.1 EBI总线介绍 150
6.2.2 EBI总线接口信号 150
6.2.3 EBI总线读操作 152
6.2.4 EBI总线写操作 152
6.3 LCD总线 153
6.3.1 LCD总线介绍 153
6.3.2 LCD总线信号 153
6.3.3 LCD接口工作时序 154
6.4 SPI总线 155
6.4.1 SPI总线介绍 155
6.4.2 SPI接口信号 156
6.4.3 SPI总线工作时序 157
6.5 I2C总线 158
6.5.1 I2C总线介绍 158
6.5.2 I2C总线工作原理 158
6.5.3 I2C总线工作时序 159
6.6 UART接口 161
6.6.1 UART接口介绍 161
6.6.2 UART接口的组成 162
6.6.3 UART的工作原理 162
6.7 USB总线 164
6.7.1 USB总线介绍 164
6.7.2 USB总线信号组成 164
6.7.3 USB总线的体系结构 164
6.7.4 USB总线数据流 164
6.8 I2S音频总线 169
6.8.1 I2S总线介绍 169
6.8.2 I2S总线组成 169
6.8.3 I2S总线工作时序 169
6.9 SDIO总线 170
6.9.1 SDIO总线介绍 170
6.9.2 SDIO接口信号 170
6.9.3 SDIO总线工作时序 170
6.10 MII(RMII,SMII)总线 171
6.10.1 MII总线介绍 171
6.10.2 MII总线组成 171
6.10.3 MII总线工作时序 171
6.11 CAN总线 172
6.11.1 CAN总线介绍 172
6.11.2 CAN协议层次及帧格式 173
6.11.3 CAN总线的应用 173
6.12 LIN总线 174
6.12.1 LIN总线介绍 174
6.12.2 LIN总线工作原理 176
6.13 本章小结 178
第7章 嵌入式硬件系统开发流程 180
7.1 嵌入式系统的总体开发流程概述 180
7.2 嵌入式硬件系统开发流程 182
7.2.1 硬件分配需求 183
7.2.2 电路图规划 183
7.2.3 器件选型 184
7.2.4 原理图设计 187
7.2.5 原理图复查 191
7.2.6 PCB图设计 193
7.2.7 PCB图复查 199
7.2.8 PCB制板 200
7.2.9 器件采购、备料 200
7.2.10 PCB焊接及调试 201
7.3 32位嵌入式系统的设计原则 202
7.4 嵌入式系统硬件需求实例 205
7.5 本章小结 208
第8章 ARM7学习板核心模块的设计 209
8.1 微处理器部分的设计 209
8.1.1 设计要点 209
8.1.2 微处理器总线接口设计 209
8.1.3 微处理器时钟电路设计 211
8.1.4 微处理器复位电路设计 212
8.1.5 微处理器JTAG调试接口电路设计 213
8.1.6 微处理器特殊引脚配置电路设计 214
8.1.7 微处理器电源引脚退耦电路设计 215
8.2 SDRAM部分的设计 215
8.2.1 设计要点 215
8.2.2 原理图及分析 215
8.3 BOOT Flash部分的设计 217
8.3.1 设计要点 217
8.3.2 原理图及分析 217
8.4 本章小结 222
第9章 系统外设及接口模块设计 223
9.1 LCD显示模块的设计 223
9.1.1 设计要点 223
9.1.2 原理图及说明 224
9.2 I2C接口与SPI接口的设计 226
9.2.1 设计要点 227
9.2.2 I2C与SPI接口设计原理图及说明 227
9.3 UART通信接口的设计 228
9.3.1 设计要点 229
9.3.2 原理图及说明 229
9.4 USB通信接口的设计 231
9.4.1 设计要点 232
9.4.2 原理图及说明 232
9.5 音频输出接口的设计 233
9.5.1 设计要点 233
9.5.2 原理图及说明 233
9.6 以太网接口的设计 236
9.6.1 设计要点 237
9.6.2 原理图及说明 237
9.7 LED指示灯模块的设计 239
9.7.1 设计要点 239
9.7.2 原理图及说明 239
9.8 LED数码管模块的设计 240
9.8.1 设计要点 241
9.8.2 原理图及说明 241
9.9 矩阵键盘输入模块的设计 243
9.9.1 设计要点 243
9.9.2 原理图及说明 243
9.10 SD/MMC接口的设计 244
9.11 数据存储模块的设计 246
9.11.1 设计要点 246
9.11.2 原理图及说明 246
9.12 本章小结 248
第10章 电源电路设计 249
10.1 稳压电源的分类 249
10.2 稳压电源的主要指标 250
10.3 引起稳压电源输出不稳定的主要因素 251
10.4 稳压电源设计实例 251
10.4.1 设计要点 251
10.4.2 原理图及说明 252
10.5 本章小结 254
第11章 嵌入式系统启动程序开发 255
11.1 嵌入式系统的典型启动过程及Boot Loader概念 255
11.1.1 板级初始化 256
11.1.2 系统引导/升级 257
11.2 几种典型的嵌入式系统启动程序简介 259
11.2.1 UBoot 259
11.2.2 RedBoot 268
11.3 基于W90P710学习板的RedBoot移植实例 271
11.3.1 移植环境 271
11.3.2 移植过程 273
11.3.3 RedBoot的调试代理功能 293
11.4 本章小结 295
第12章 嵌入式系统驱动软件开发 296
12.1 嵌入式系统驱动软件概述 296
12.2 嵌入式系统设备的特性及操作界面 296
12.2.1 嵌入式系统设备特性 296
12.2.2 设备接口寄存器概述 298
12.2.3 设备接口寄存器实例:W90P710的UART接口寄存器 298
12.2.4 MPC5554嵌入式微处理器的串口相关寄存器 306
12.3 设备操作的基本原理 313
12.3.1 概述 313
12.3.2 轮循方式 314
12.3.3 中断方式 314
12.3.4 DMA方式 324
12.4 W90P710串口驱动开发实例 326
12.4.1 W90P710的串口操作流程 326
12.4.2 串口驱动程序头文件Uart.h 327
12.4.3 串口驱动程序实现文件Uart.c 330
12.4.4 驱动程序的应用及简单功能测试 337
12.5 MPC5554 SCI驱动开发实例 339
12.5.1 数据结构设计 340
12.5.2 功能函数的定义及实现 340
12.6 设备驱动开发需注意的问题 350
12.6.1 可重入函数与互斥 350
12.6.2 中断嵌套与可重入的中断处理程序 351
12.6.3 错误处理 353
12.6.4 cache处理、缓冲和优化问题 355
12.6.5 编程语言与规范 355
12.7 驱动软件与操作系统的关系 360
12.7.1 操作系统提供I/O管理的机制 361
12.7.2 操作系统提供统一的中断相关功能调用 363
12.7.3 驱动软件使用操作系统的功能与任务协同工作 364
12.8 本章小结 364
第13章 嵌入式实时操作系统内核硬件相关设计与代码移植 367
13.1 嵌入式实时操作系统内核硬件相关设计 367
13.1.1 嵌入式实时操作系统内核硬件相关内容 367
13.1.2 任务管理 368
13.1.3 中断管理 371
13.1.4 操作系统相关BSP部分 373
13.2 嵌入式操作系统uCOS-Ⅱ的移植 373
13.2.1 uCOS代码结构分析及必要知识介绍 373
13.2.2 移植的函数结构 375
13.2.3 BSP层的移植 377
13.2.4 os_cpu_a.S文件的修改 382
13.2.5 移植测试 387
13.3 本章小结 389
附录A 硬件规格书示例 390
A1 概述 391
A2 产品组成 391
A3 关键元器件清单 393
A4 硬件规格 393
A4.1 系统内存地址分配 393
A4.2 微处理器资源使用情况 393
A4.3 时钟配置 394
A4.4 系统配置 395
A4.5 GPIO功能选择和中断分配 395
A4.6 Flash ROM 397
A4.7 SDRAM 397
A4.8 LCD模块接口 398
A4.9 串口 398
A4.10 USB接口 398
A4.11 以太网接口 399
A4.12 矩阵键盘 400
A4.13 SD接口插座 400
A4.14 I2S AUDIO接口 400
A4.15 PWM蜂鸣器 401
A4.16 I2C接口的EEPROM 401
A4.17 SPI接口的EEPROM 401
A4.18 LED数码管接口 402
A4.19 LED指示灯接口 402
A4.20 扩展总线接口 402
A4.21 电源输入 402
附录B 完整的硬件设计原理图 403
B1 核心模块电路设计原理图 403
B2 底板设计原理图 407
B3 LCD板设计原理图 415
B4 LED板设计原理图 416
B5 NAND Flash板设计原理图 417
附录C BOM清单示例 418
参考文献 420