第1章 嵌入式系统基本概述 1
1.1 嵌入式系统的概念 1
1.2 嵌入式系统的组成 1
1.2.1 嵌入式处理器 1
1.2.2 外围设备 2
1.2.3 嵌入式操作系统 2
1.2.4 应用软件 2
1.3 嵌入式处理器 3
1.3.1 嵌入式处理器的分类 3
1.3.2 嵌入式微处理器 4
1.3.3 微控制器 4
1.3.4 DSP处理器 5
1.3.5 片上系统 6
1.3.6 典型的嵌入式处理器 6
1.4 嵌入式操作系统 8
1.4.1 操作系统的概念和分类 8
1.4.2 实时操作系统 12
1.4.3 常见的嵌入式操作系统 14
1.5 嵌入式系统的应用 18
1.6 嵌入式系统的发展趋势 18
1.6.1 嵌入式应用软件的开发需要强大的开发工具和操作系统的支持 19
1.6.2 联网成为必然趋势 19
1.6.3 支持小型电子设备,实现小尺寸、微功耗和低成本 19
1.6.4 提供精巧的多媒体人机界面 19
第2章 嵌入式系统开发基础 20
2.1 嵌入式系统的组成结构 20
2.1.1 硬件层 21
2.1.2 中间层 21
2.1.3 软件层 22
2.1.4 功能层 23
2.2 嵌入式系统的选型 23
2.2.1 嵌入式处理器 23
2.2.2 嵌入式实时操作系统 24
2.2.3 仿真器和调试器 25
2.3 嵌入式软件开发的特点 26
2.4 嵌入式软件的开发流程 28
2.4.1 需求分析阶段 28
2.4.2 设计阶段 28
2.4.3 生成代码阶段 30
2.4.4 固化阶段 32
2.4.5 嵌入式软件开发的要点 32
2.5 嵌入式系统初始化 33
2.5.1 目标机系统工具和映像传输 34
2.5.2 目标机自举案况 36
2.5.3 目标机系统软件初始化顺序 42
第3章 ARM处理器基础 46
3.1 ARM体系结构概述 46
3.1.1 ARM介绍 46
3.1.2 CISC的体系结构 47
3.1.3 RISC的体系结构 48
3.1.4 ARM体系结构的技术特征 51
3.1.5 ARM体系结构的特点 52
3.2 ARM体系结构的版本及命名方法 55
3.2.1 ARM体系结构的版本 55
3.2.2 ARM体系的变种 57
3.2.3 ARM/Thumb体系版本的命名方法 59
3.3 ARM处理器结构 59
3.3.1 ARM体系结构 59
3.3.2 ARM的流水线结构 60
3.3.3 ARM存储器结构 64
3.3.4 ARM I/O结构 64
3.3.5 ARM协处理器接口 65
3.3.6 ARM AMBA接口 66
3.3.7 ARM JTAG调试接口 67
3.4 ARM处理器系列 69
3.4.1 ARM7系列处理器核介绍 70
3.4.2 ARM9系列处理器核介绍 77
3.4.3 ARM10E系列处理器核介绍 81
3.4.4 ARM11系列处理器核介绍 84
3.4.5 SecurCore系列处理器核介绍 85
3.4.6 基于ARM的Intel微处理器介绍 85
3.4.7 基于ARM核的芯片选择 86
3.5 ARM编程模型 89
3.5.1 数据类型 89
3.5.2 处理器模式 90
3.5.3 处理器工作状态 91
3.5.4 寄存器组织 91
3.5.5 异常中断 97
3.5.6 存储器和存储器映射I/O 101
3.6 基于JTAG的ARM系统调试 103
3.6.1 ARM开发工具综述 103
3.6.2 Multi-ICE的JTAG调试机理 104
第4章 ARM指令集 107
4.1 ARM指令集概述 107
4.1.1 ARM指令集编码 107
4.1.2 条件执行 107
4.1.3 指令分类及指令格式 109
4.2 ARM寻址方式 110
4.2.1 立即寻址 110
4.2.2 寄存器寻址 110
4.2.3 寄存器间接寻址 112
4.2.4 基址加偏址寻址 112
4.2.5 堆栈寻址 114
4.2.6 块拷贝寻址 114
4.2.7 相对寻址 116
4.3 ARM指令详细介绍 117
4.3.1 数据处理指令 117
4.3.2 Load/Store指令 123
4.3.3 状态寄存器与通用寄存器之间的传送指令 131
4.3.4 转移指令 134
4.3.5 异常中断产生指令 137
4.3.6 协处理器指令 140
4.3.7 未使用的指令空间 143
第5章 基于ARM的嵌入式程序设计 146
5.1 ARM汇编语言程序设计 146
5.1.1 ARM汇编语言的伪操作、宏指令与伪指令 146
5.1.2 ADS编译环境下的ARM伪操作和宏指令 146
5.1.3 ARM汇编语言的伪指令 166
5.1.4 ARM汇编语言程序设计 169
5.2 嵌入式C语言程序设计 183
5.2.1 C语言的“预处理伪指令”在嵌入式程序设计中的应用 184
5.2.2 嵌入式程序设计中的函数 188
5.2.3 嵌入式程序设计中常用的C语言语句 190
5.2.4 嵌入式程序设计中C语言的变量、数组、结构和联合 194
5.2.5 嵌入式C语言程序设计实例 199
5.2.6 嵌入式C语言程序设计技巧 203
5.3 C语言与汇编语言混合编程 206
5.3.1 ATPCS简介 206
5.3.2 内嵌汇编 210
5.3.3 C语言和ARM汇编程序间相互调用 210
5.4 基于ADS集成开发环境的软件开发 212
5.4.1 ADS集成开发环境组成简介 212
5.4.2 使用ADS创建工程 217
5.4.3 用AXD进行代码调试 223
第6章 基于S3C44B0X的硬件开发与应用 226
6.1 基于S3C44B0X的Hm701ESP嵌入式平台介绍 226
6.1.1 Hm701ESP基本功能介绍 226
6.1.2 Hm701ESP的基本组成结构 226
6.1.3 Hm701ESP的启动程序和地址空间分配 227
6.2 S3C44B0X处理器简介 229
6.2.1 S3C44B0X简介 229
6.2.2 S3C44B0X存储控制器功能 237
6.2.3 S3C44B0X通用I/O端口功能 242
6.2.4 S3C44B0X的DMA功能 250
6.2.5 S3C44B0X UART接口功能 260
6.2.6 S3C44B0X中断控制功能 269
6.2.7 S3C44B0X时钟电源管理器功能 278
6.2.8 S3C44B0X PWM定时器功能 284
6.2.9 S3C44B0X LCD控制器功能 291
6.2.10 S3C44B0X A/D转换器功能 301
6.2.11 S3C44B0X RTC功能 305
6.2.12 S3C44B0X看门狗定时器功能 312
6.2.13 S3C44B0X I2C总线接口功能 315
6.2.14 S3C44B0X IIS总线接口功能 321
6.2.15 S3C44B0X SIO功能 327
6.3 存储器接口 331
6.3.1 Flash ROM器件 331
6.3.2 Nand-Flash存储器器件 335
6.3.3 SDRAM器件 347
6.4 USB设备接口 355
6.4.1 USB接口工作原理概述 356
6.4.2 USB接口控制器PDIUSBD12 357
6.4.3 固件程序的开发 357
6.4.4 参考例程 359
6.5 以太网控制器接口 360
6.5.1 以太网基础知识 360
6.5.2 以太网控制器RTL 8019 362
6.5.3 网卡的物理地址 365
6.5.4 参考例程 366
第7章 μC/OS-Ⅱ及应用开发 370
7.1 μC/OS-Ⅱ操作系统 370
7.1.1 μC/OS-Ⅱ简介 370
7.1.2 μC/OS-Ⅱ的特点 371
7.1.3 μC/OS-Ⅱ的内核结构 373
7.2 μC/OS-Ⅱ的内核 377
7.2.1 任务调度 378
7.2.2 任务间的通信与同步 378
7.2.3 任务管理 381
7.2.4 时间管理 382
7.2.5 内存管理 383
7.2.6 μC/OS-Ⅱ的文件体系 384
7.3 μC/OS-Ⅱ应用程序开发 385
7.3.1 变量类型 385
7.3.2 应用程序基本结构 385
7.3.3 μC/OS-Ⅱ API介绍 386
7.3.4 μC/OS-Ⅱ多任务实现机制 387
7.3.5 基于μC/OS-Ⅱ建立完整的嵌入式实时系统 388
7.4 μC/OS-Ⅱ在Hm701ESP上的移植 388
7.4.1 移植条件 388
7.4.2 移植步骤 389
第8章 eCos及应用开发 395
8.1 eCos操作系统概述 395
8.1.1 eCos概述 395
8.1.2 eCos的可配置性 400
8.1.3 eCos的组织结构 402
8.1.4 eCos的安装 406
8.1.5 eCos的配置工具 407
8.1.6 eCos应用程序开发 411
8.1.7 RedBoot命令 418
8.2 eCos的系统内核 422
8.2.1 系统内核 422
8.2.2 内核调度机制 423
8.2.3 内存分配 426
8.2.4 中断处理 431
8.2.5 例外处理 435
8.2.6 计数器与时钟 437
8.2.7 应用程序入口 441
8.3 线程与同步 444
8.3.1 线程的创建 445
8.3.2 线程信息的获取 447
8.3.3 同步原语 448
8.4 eCos设备驱动程序 449
8.4.1 eCos设备驱动程序体系结构 449
8.4.2 eCos设备驱动程序的编写 450
8.4.3 设备驱动的工作原理 453
8.5 eCos在Hm701ESP上的移植 454
8.5.1 硬件抽象层的移植 454
8.5.2 平台抽象层的移植 455
8.5.3 驱动程序设计 462