第1章 了解嵌入式系统 1
1.1 嵌入式系统的概念 1
1.2 嵌入式系统介绍 1
1.2.1 嵌入式系统组成 1
1.2.2 嵌入式系统分类与应用 3
1.2.3 嵌入式系统特征 4
1.2.4 嵌入式系统的产生与发展 5
1.3 嵌入式系统的核心 6
1.3.1 嵌入式系统处理器 6
1.3.2 嵌入式操作系统 8
1.3.3 嵌入式系统的软硬件协同设计 12
1.3.4 嵌入式系统开发环境 15
1.4 本章小结 17
第2章 ARM微处理器 18
2.1 ARM应用简介 18
2.1.1 ARM的内核介绍 18
2.1.2 ARM工作状态 21
2.1.3 ARM工作模式 22
2.2 ARM微处理器结构 23
2.2.1 ARM体系结构(RISC) 23
2.2.2 ARM寄存器介绍 24
2.2.3 ARM9系列 31
2.3 异常 33
2.3.1 异常类型 33
2.3.2 异常发生过程 35
2.4 ARM微处理器的选型 35
第3章 ARM指令集 37
3.1 ARM指令集简介 37
3.2 ARM指令集代码表 37
3.3 ARM指令格式 38
3.4 寻址方式 42
3.5 ARM指令集分类介绍 47
3.5.1 跳转指令 48
3.5.2 数据处理指令 51
3.5.3 移位指令 63
3.5.4 ARM存储器访问指令 65
3.5.5 协处理器指令 79
3.5.6 杂项指令 84
3.6 ARM浮点指令集 89
3.7 未定义的指令空间 95
第4章 Thumb指令集 97
4.1 Thumb指令集概述 97
4.1.1 Thumb指令集编码 97
4.1.2 Thumb指令集代码 98
4.2 Thumb存储器访问指令 99
4.2.1 寄存器偏移的加载/存储指令 100
4.2.2 立即数偏移的加载/存储指令 101
4.2.3 SP相对偏移LDR/STR指令 103
4.2.4 PC相对偏移的LDR指令 104
4.2.5 偏移量到堆栈指针的ADD指令 104
4.2.6 寄存器入栈及出栈指令 105
4.2.7 块数据加载/存储指令 106
4.3 Thumb数据处理指令 107
4.3.1 加减算术运算指令(3位操作数) 107
4.3.2 立即数为8位的指令 107
4.3.3 算术逻辑单元(ALU)操作指令 108
4.3.4 对寄存器进行移位并传送的操作指令 112
4.3.5 高寄存器操作指令 113
4.4 Thumb软中断指令 113
4.5 Thumb跳转指令 114
4.6 Thumb指令集与ARM指令集的切换与区别 117
第5章 汇编语言与伪指令 118
5.1 汇编语言的基本语句 118
5.2 语句格式 118
5.2.1 ARM汇编语言中的符号 119
5.2.2 汇编语句中的表达式 121
5.3 伪指令与伪操作 124
5.3.1 数据定义伪指令 124
5.3.2 符号定义伪指令 132
5.3.3 过程定义伪指令 134
5.3.4 报告伪指令 134
5.3.5 汇编控制伪指令 136
5.3.6 他伪指令 138
5.4 源程序结构 145
5.4.1 完整段定义的程序结构 145
5.4.2 简化段定义的程序结构 147
5.4.3 段组定义的程序结构 148
5.5 汇编语言上机与工作环境 148
第6章 ARM汇编与C语言编程 149
6.1 汇编语言的文件格式 149
6.2 ARM汇编程序的规范 149
6.2.1 ARM汇编语言语句格式 149
6.2.2 段定义及宏定义 150
6.2.3 汇编语言的子程序调用 151
6.3 ARM汇编程序实例 152
6.4 嵌入式C语言程序 155
6.4.1 词法介绍 156
6.4.2 常用语句 161
6.4.3 程序结构 166
6.5 ATPCS介绍 171
6.6 C语言与汇编语言混合编程 176
6.6.1 内嵌汇编 177
6.6.2 从汇编程序中访问C程序变量 180
6.6.3 C程序调用汇编程序 181
6.6.4 汇编程序调用C程序 182
第7章 S3C2410嵌入式系统 183
7.1 S3C2410处理器概述 183
7.1.1 S3C2410处理器的特性 183
7.1.2 S3C2410的引脚信号描述 187
7.2 S3C2410A存储控制器 196
7.2.1 S3C2410A存储控制器特性 196
7.2.2 S3C2410A存储控制器功能 196
7.2.3 S3C2410A存储控制器——寄存器 198
7.3 NAND Flash控制器 213
7.3.1 NAND Flash控制器的特性 213
7.3.2 专用寄存器 216
7.4 时钟电源管理器 218
7.5 IIC总线接口 226
7.5.1 IIC总线接口操作 227
7.5.2 IIC总线接口的特殊功能寄存器 232
7.6 UART接口 234
7.6.1 UART接口概述 235
7.6.2 UART的操作 236
7.6.3 UART的特殊功能寄存器 241
7.7 I/O端口 247
7.7.1 S3C2410A端口功能配置 247
7.7.2 S3C2410A端口控制描述 250
7.7.3 I/O端口寄存器及引脚配置 251
7.8 ADC和触摸屏接口 268
7.8.1 ADC结构与工作原理 269
7.8.2 A/D转换器的工作模式 270
7.8.3 编程要点 271
7.8.4 ADC和触摸屏接口专用寄存器 272
7.9 DMA 274
7.9.1 DMA简介 274
7.9.2 DMA工作原理 275
7.9.3 DMA特殊功能寄存器 277
7.10 定时器 282
7.10.1 PWM(脉宽调制)概念 283
7.10.2 PWM定时器结构 283
7.10.3 PWM定时器工作原理 283
7.10.4 计数时钟和输出计算 286
7.10.5 PWM定时器的特殊功能寄存器 286
7.11 中断控制器 291
7.11.1 中断控制器的操作 292
7.11.2 S3C2410A中断源 292
7.11.3 中断控制器的特殊功能寄存器 294
7.12 LCD控制器 302
7.12.1 LCD控制器的特性 303
7.12.2 LCD外部接口信号 304
7.12.3 LCD控制器框图 304
7.12.4 LCD控制操作 305
7.12.5 LCD控制器的特殊功能寄存器 310
第8章 ADS集成开发系统 318
8.1 ADS系统组成与文件 318
8.1.1 ADS系统的组成 318
8.1.2 ADS系统中的文件 318
8.2 命令行开发工具 319
8.3 GUI开发环境(Code Warrior和AXD) 320
8.3.1 CodeWarrior集成开发环境 321
8.3.2 相关术语介绍 323
8.4 ADS创建工程 324
8.4.1 建立一个工程 324
8.4.2 编辑和链接工程 326
8.5 ADS调试器 330
8.5.1 AXD 330
8.5.2 创建工程调试 332
8.6 ADS链接器 335
8.6.1 链接器的基本功能 336
8.6.2 armlinkz的选项 337
8.6.3 取得映像符号 337
8.7 仿真器 338
8.7.1 链接仿真器 338
8.7.2 仿真器设置 339
8.7.3 仿真器应用问题 339
8.8 实用程序与支持软件 340
第9章 嵌入式Linux开发基础 341
9.1 Linux简介以及在嵌入式操作系统中的应用 341
9.1.1 Linux发展概述 341
9.1.2 Linux版本的发展史 342
9.1.3 Linux在嵌入式操作系统中的应用 342
9.2 Linux安装 343
9.2.1 基础概念 343
9.2.2 安装前的注意事项 344
9.2.3 Linux安装过程 345
9.3 Linux文件及文件系统 351
9.3.1 文件类型和文件属性 351
9.3.2 文件系统类型 352
9.3.3 Linux目录结构 353
9.4 Linux基础命令 354
9.4.1 Linux Shell环境 355
9.4.2 用户系统相关命令 355
9.4.3 文件目录相关命令 361
9.4.4 压缩打包相关命令 371
9.4.5 网络相关命令 373
9.5 Linux下的用户界面 377
9.5.1 X Window简介 378
9.5.2 X服务器 378
9.5.3 窗口管理器 379
第10章 嵌入式Linux系统的开发工具 381
10.1 文本编辑器vi的使用 381
10.1.1 vi的基本概念 381
10.1.2 vi的基本操作 381
10.2 编译器GCC的使用 384
10.3 GNU Make的使用 387
10.3.1 makefile基本结构 387
10.3.2 编写make 388
10.3.3 makefile的一个具体例子 391
10.4 调试器GDB的使用 393
10.4.1 GDB使用实例 393
10.4.2 GDB调试常用命令 396
10.4.3 设置断点(breakpoint)命令 396
10.4.4 设置观察点和捕获点 397
10.4.5 单步调试命令 398
10.4.6 源码查看相关命令 398
10.4.7 查看运行数据相关命令 399
第11章 嵌入式Linux的软件开发环境 400
11.1 开发环境的建立 400
11.1.1 交叉编译环境 400
11.1.2 Minicom配置及使用 402
11.1.3 DNW下载器 405
11.2 嵌入式Linux内核移植 407
11.2.1 Linux内核结构 408
11.2.2 编译Linux内核 410
11.3 Bootloader 428
11.3.1 Bootloader的架构和功能 428
11.3.2 U-Boot移植 429
第12章 Windows CE操作系统 438
12.1 Windows CE简介 438
12.1.1 什么是Windows CE 438
12.1.2 Windows CE的主要功能 439
12.1.3 Windows CE发展历史 441
12.2 Windows CE的应用领域 442
12.3 Platform Builder 442
12.3.1 Platform Builder简介 442
12.3.2 Platform Builder的安装和配置 443
12.4 eMbedded Visual C++ 445
12.4.1 eMbedded Visual C++简介 445
12.4.2 eMbedded Visual C++的安装和配置 445
12.4.3 eMbedded Visual C++开发应用程序基本操作 448
12.5 本章小结 453
第13章 Windows CE的体系结构和功能 454
13.1 Windows CE的结构功能概述 454
13.2 Windows CE的内存管理 455
13.2.1 存结构 455
13.2.2 RAM和ROM 457
13.2.3 虚拟内存 457
13.2.4 堆 460
13.2.5 栈 463
13.2.6 静态数据块 464
13.3 Windows CE的系统调度 464
13.3.1 进程 465
13.3.2 线程 466
13.3.3 同步 468
13.4 Windows CE的文件系统 473
13.4.1 ROM文件系统 473
13.4.2 对象存储 473
13.4.3 存储管理器 473
13.5 Windows CE下的注册表 478
13.6 本章小结 481
第14章 Windows CE驱动程序开发基础 482
14.1 Windows CE驱动程序结构概述 482
14.1.1 驱动程序的定义 482
14.1.2 本机设备驱动程序 482
14.1.3 流接口驱动程序 483
14.1.4 独立型驱动程序和层次型驱动程序 484
14.2 驱动程序的中断处理 485
14.2.1 中断体系结构 485
14.2.2 IST中断处理 487
14.2.3 OAL ISR处理 490
14.2.4 可安装的ISR 492
14.2.5 导致延迟的因素 494
14.3 设备文件名 495
14.4 流接口设备驱动程序 496
14.4.1 流接口设备驱动程序的结构 496
14.4.2 流接口设备驱动程序的实现 497
14.5 设备驱动程序的加载 502
14.5.1 驱动程序的加载过程 502
14.5.2 加载设备驱动所需的接口 504
14.6 串口驱动程序初始化过程 505
14.7 本章小结 509