第1章 嵌入式系统基础知识 1
1.1嵌入式系统的定义和组成 1
1.1.1嵌入式系统的定义 1
1.1.2嵌入式系统的发展趋势 1
1.1.3嵌入式系统的组成 3
1.1.4 RTOS 6
1.2嵌入式微处理器体系结构 8
1.2.1冯·诺依曼结构与哈佛结构 8
1.2.2精简指令集计算机 9
1.2.3流水线技术 10
1.2.4信息存储的字节顺序 11
1.3嵌入式微处理器的结构和类型 14
1.3.1嵌入式微控制器 14
1.3.2嵌入式微处理器 14
1.3.3 DSP处理器 17
1.3.4嵌入式片上系统 18
1.3.5多核处理器 19
思考题与习题 19
第2章ARM体系结构 21
2.1 ARM体系结构简介 21
2.2 ARM微处理器结构 24
2.2.1 ARM7微处理器 24
2.2.2 ARMS微处理器 24
2.2.3 ARM11微处理器 25
2.2.4 Cortex-A微处理器 26
2.2.5 Cortex-R微处理器 30
2.2.6 Cortex-M微处理器 31
2.2.7 SecurCore微处理器 33
2.3 ARM微处理器的寄存器结构 34
2.3.1处理器的运行模式 34
2.3.2处理器的工作状态 35
2.3.3处理器的寄存器组织 35
2.3.4 Thumb状态的寄存器集 39
2.4 ARM微处理器的异常处理 40
2.4.1 ARM体系结构的异常类型 40
2.4.2异常类型的含义 41
2.4.3异常的响应过程 42
2.4.4应用程序中的异常处理 42
2.5 ARM的存储器结构 43
2.6 ARM微处理器指令系统 44
2.6.1基本寻址方式 44
2.6.2 ARM指令集 47
2.6.3 Thumb指令集 53
2.7 ARM微处理器的接口 56
2.7.1 ARM协处理器接口 56
2.7.2 ARM AMBA接口 57
2.7.3 ARM I/O结构 57
2.7.4 ARM JTAG调试接口 58
思考题与习题 61
第3章32位RISC微处理器S3C2410A 63
3.1 S3C2410A简介 63
3.1.1 S3C2410A的内部结构 63
3.1.2 S3C2410A的技术特点 65
3.2 S3C2410A存储器控制器 69
3.2.1 S3C2410A存储器控制器特性 69
3.2.2 S3C2410A存储器映射 69
3.3复位、时钟和电源管理 70
3.4 S3C2410A的I/O口 74
3.4.1 S3C2410A的I/O口配置 74
3.4.2 S3C2410A的I/O口寄存器 76
3.5 S3C2410A的中断控制 77
3.5.1 ARM系统的中断处理 77
3.5.2 S3C2410A的中断控制器 77
3.5.3 S3C2410A的中断编程实例 80
3.6 S3C2410A的DMA控制 82
3.6.1 DMA工作原理 82
3.6.2 S3C2410A的DMA控制器 83
3.6.3 S3C2410A的DMA编程实例 85
思考题与习题 85
第4章 嵌入式系统的存储器系统 87
4.1存储器系统概述 87
4.1.1存储器系统的层次结构 87
4.1.2高速缓冲存储器 88
4.1.3存储管理单元 88
4.2嵌入式系统存储设备分类 90
4.2.1存储器部件的分类 90
4.2.2存储器的组织和结构 90
4.2.3常见的嵌入式系统存储器 91
4.3 NOR Flash接口电路 95
4.3.1 NOR Flash存储器Am29LV160D 95
4.3.2 S3C2410A与NOR Flash存储器的接口电路 96
4.4 NAND Flash接口电路 97
4.4.1 S3C2410A NAND Flash控制器 97
4.4.2 S3C2410A与NAND Flash存储器的接口电路 100
4.5 SDRAM接口电路 101
4.6 CF卡接口电路 103
4.6.1 PCMCIA接口规范 103
4.6.2 S3C2410A的CF卡接口电路 104
4.6.3 CF卡的读/写操作 104
4.7 SD卡接口电路 106
4.7.1 SD卡的接口规范 106
4.7.2 S3C2410A的SD卡接口电路 107
4.8 IDE接口电路 107
4.8.1 S3C2410A的IDE接口电路 107
4.8.2 IDE硬盘读/写操作 107
思考题与习题 110
第5章 嵌入式系统输入/输出设备接口 112
5.1通用输入/输出接口 112
5.1.1通用输入/输出接口原理与结构 112
5.1.2 S3C2410A输入/输出接口编程实例 113
5.2 A/D转换器接口 114
5.2.1 A/D转换的方法和原理 114
5.2.2 S3C2410A的A/D转换器 117
5.2.3 S3C2410A A/D接口编程实例 120
5.3 D/A转换器接口 122
5.3.1 D/A转换器的工作原理 122
5.3.2 S3C2410A与D/A转换器的接口电路 125
5.4键盘与LED数码管接口 127
5.4.1键盘与LED数码管接口基本原理与结构 127
5.4.2用I/O口实现键盘接口 129
5.4.3采用专用芯片实现键盘及LED接口 129
5.5 LCD显示接口 132
5.5.1 LCD显示接口原理与结构 132
5.5.2 S3C2410A的LCD控制器 134
5.5.3 S3C2410A LCD显示的编程实例 137
5.6触摸屏接口 139
5.6.1触摸屏工作原理与结构 139
5.6.2采用专用芯片的触摸屏控制接口 140
5.6.3 S3C2410A的触摸屏接口电路 142
思考题与习题 146
第6章 嵌入式系统总线接口 148
6.1串行接口 148
6.1.1串行接口基本原理与结构 148
6.1.2 S3C2410A的UART 152
6.1.3与S3C2410A的UART连接的串行接口电路 158
6.1.4 S3C2410A的UART编程实例 159
6.2 I2 C接口 163
6.2.1 I2 C接口基本原理与结构 163
6.2.2 S3C2410A的I2C接口 165
6.2.3 S3C2410A的I2 C接口应用实例 167
6.3 USB接口 170
6.3.1 USB接口基本原理与结构 170
6.3.2 S3C2410A的USB控制器 173
6.3.3 S3C2410A的USB接口电路与驱动程序 175
6.4 SPI接口 177
6.4.1 SPI接口基本原理与结构 177
6.4.2 S3C2410A的SPI接口电路 178
6.4.3 S3C2410A的SPI接口编程实例 183
6.5 PCI接口 185
6.5.1 PCI接口基本结构 185
6.5.2 PCI接口电路 187
6.6 I2S总线接口 188
6.6.1数字音频简介 188
6.6.2 I2 S总线结构 190
6.6.3 S3C2410A的I2S总线接口 191
6.6.4 S3C2410A的I2S总线接口电路与编程 195
思考题与习题 196
第7章 嵌入式系统网络接口 199
7.1以太网接口 199
7.1.1以太网基础知识 199
7.1.2嵌入式以太网接口的实现方法 201
7.1.3在嵌入式系统中主要处理的以太网协议 201
7.1.4网络编程接口 203
7.1.5以太网的物理层接口及编程 204
7.2 CAN总线接口 208
7.2.1 CAN总线概述 208
7.2.2在嵌入式处理器上扩展CAN总线接口 209
7.2.3 S3C2410A与MCP2510的CAN通信接口电路 214
思考题与习题 215
第8章 嵌入式系统软件及操作系统基础 217
8.1嵌入式软件基础 217
8.1.1嵌入式软件的特点 217
8.1.2嵌入式软件的分类 218
8.1.3嵌入式软件的体系结构 218
8.1.4嵌入式系统的设备驱动层 220
8.1.5嵌入式中间件 222
8.2嵌入式操作系统基础 222
8.2.1嵌入式操作系统的功能 222
8.2.2嵌入式操作系统的分类 223
8.2.3常见的嵌入式操作系统简介 225
8.3嵌入式系统的任务管理 227
8.3.1单道程序设计和多道程序设计 227
8.3.2进程、线程和任务 228
8.3.3进程间通信与线程间同步 230
8.3.4任务的实现 231
8.3.5任务的调度 234
8.3.6实时系统调度 237
8.4嵌入式系统的存储管理 238
8.4.1嵌入式存储管理方式的特点 238
8.4.2存储管理的实模式与保护模式 239
8.4.3分区存储管理 240
8.4.4地址映射 241
8.4.5页式存储管理 242
8.4.6虚拟页式存储管理 243
8.5 I/O设备管理 243
8.5.1 I/O编址 243
8.5.2 I/O设备的控制方式 244
8.5.3 I/O软件 245
思考题与习题 247
第9章ARM汇编语言程序设计基础 248
9.1 MDK-ARM开发工具 248
9.1.1 μVision4IDE 248
9.1.2 RealView编译工具集 249
9.1.3 RealView实时库 249
9.1.4 μVision IDE调试器 250
9.1.5创建工程 251
9.1.6工程调试 255
9.1.7工程下载 257
9.2 ARM汇编伪指令 259
9.2.1数据常量定义伪指令 259
9.2.2数据变量定义伪指令 259
9.2.3内存分配伪指令 261
9.2.4汇编控制伪指令 263
9.2.5其他常用的伪指令 265
9.3 ARM的汇编语言结构 269
9.3.1 ARM汇编语言程序结构 269
9.3.2 ARM汇编语言的语句格式 270
9.3.3基于Windows下MDK的汇编语言程序结构 271
9.3.4基于Linux下GCC的汇编语言程序结构 272
9.4 ARM汇编语言程序调试 274
9.4.1 MDK环境下的程序调试 274
9.4.2 Linux环境下的gdb程序调试 274
9.5 ARM汇编语言与C语言混合编程 276
9.5.1基本的ATPCS 277
9.5.2汇编程序中调用C程序 278
9.5.3 C程序中调用汇编程序 279
9.5.4 C程序中内嵌汇编语句 280
9.5.5从汇编程序中访问C程序变量 281
思考题与习题 282
第10章Bootloader设计基础 283
10.1 Bootloader概述 283
10.1.1 Bootloader的作用 283
10.1.2 Bootloader的工作模式 285
10.1.3 Bootloader的启动流程 286
10.2 S3C2410平台下Linux的Bootloader 288
10.2.1 vivi 288
10.2.2 U-boot 305
10.3其他常见的Bootloader 308
10.3.1 Windows CE.NET的Bootloader 308
10.3.2 Blob 310
思考题与习题 311
第11章Linux操作系统基础 312
11.1嵌入式Linux的开发环境 312
11.1.1交叉开发概述 312
11.1.2桌面Linux的开发工具链 313
11.1.3嵌入式Linux的交叉开发工具链 314
11.2桌面Linux的安装 318
11.2.1双操作系统环境 318
11.2.2 Cygwin模拟环境 319
11.2.3 VMware虚拟机环境 319
11.3 Linux的使用 320
11.3.1 Linux基本命令 320
11.3.2 vi编辑器的使用 335
11.3.3环境变量 337
11.3.4 gcc编译器 338
11.3.5 make工具和Makefile文件 339
11.3.6 Kconfig文件 343
11.4 Linux内核结构 344
11.4.1核心子系统 344
11.4.2设备驱动程序 346
11.5 Linux目录结构 348
11.5.1 Linux源文件的目录结构 348
11.5.2 Linux运行系统的目录结构 350
11.6 Linux文件系统 351
11.6.1文件系统与内核的关系 351
11.6.2常见通用Linux文件系统 353
11.6.3常见嵌入式Linux文件系统 354
11.6.4根文件系统的选择 357
思考题与习题 358
第12章 嵌入式Linux软件设计 359
12.1移植的基本概念 359
12.2 Bootloader的移植 360
12.2.1关键文件的修改 360
12.2.2串口设置示例 362
12.2.3 Bootloader的交叉编译 363
12.2.4 Bootloader的下载 363
12.3嵌入式Linux内核的移植 365
12.3.1内核移植的准备 365
12.3.2关键文件的修改 365
12.3.3内核的配置与裁剪 370
12.3.4内核的编译 372
12.3.5内核的下载 373
12.4嵌入式Linux文件系统的移植 374
12.5 Linux下设备驱动程序的开发 375
12.5.1 Linux设备管理概述 375
12.5.2驱动程序概述 376
12.5.3重要的数据结构和函数 379
12.5.4字符设备驱动程序的组成 384
12.5.5动态加载方式和静态加载方式 385
12.5.6字符设备驱动开发示例 388
12.6应用程序开发 393
12.6.1应用程序的加载方式 394
12.6.2应用程序的GDB/GDBSERVER联机调试 398
12.6.3字符设备应用程序的开发 401
思考题与习题 402
第13章 图形用户接口(GUI) 403
13.1图形用户接口的层次结构 403
13.1.1图形基础设施 403
13.1.2高级图形函数库 404
13.1.3 GUI窗口管理系统 405
13.2桌面Linux系统GUI 405
13.2.1 KDE 406
13.2.2 GNOME 407
13.3嵌入式Linux系统GUI 408
13.3.1 MiniGUI 408
13.3.2 Qtopia 410
13.3.3 Nano-X 411
13.4 MiniGUI应用入门 411
13.4.1 MiniGUI的软件架构 411
13.4.2 MiniGUI的开发环境 413
13.4.3 MiniGUI的移植 414
13.4.4 MiniGUI的运行模式 418
13.4.5 MiniGUI应用程序编写示例 419
13.5 Qt应用入门 424
13.5.1 Qt支持的平台 424
13.5.2 Qt的授权 426
13.5.3 Qt Creator 428
13.5.4 Qt Designer 434
13.5.5 Qt Assistant 438
13.5.6 Qt Demo 439
13.5.7 Qt应用程序的开发示例 441
13.5.8 Qt资源 449
思考题与习题 451
参考文献 452