第1章 绪论 1
1.1 嵌入式系统概述 1
1.1.1 嵌入式系统的定义 1
1.1.2 嵌入式系统的应用领域及主要产品 1
1.1.3 嵌入式系统的组成 3
1.1.4 嵌入式系统的特点 4
1.1.5 嵌入式系统的发展 4
1.2 嵌入式处理器 5
1.2.1 嵌入式微处理器 6
1.2.2 嵌入式微控制器 7
1.2.3 嵌入式DSP处理器 7
1.2.4 嵌入式片上系统 7
1.3 嵌入式操作系统 8
1.3.1 嵌入式操作系统概述 8
1.3.2 嵌入式操作系统的特点 8
1.3.3 嵌入式实时操作系统 9
1.4 嵌入式系统工程设计 12
本章小结 17
思考题 17
第2章 ARM Cortex-A8体系结构 18
2.1 ARM微处理器 18
2.1.1 ARM简介 18
2.1.2 ARM内核基本版本 19
2.1.3 ARM微处理器系列 21
2.1.4 ARM微处理器结构 25
2.2 Cortex-A8内核结构 26
2.3 Samsung S5PV210微处理器简介 28
2.4 Samsung S5PV210处理器开发工具 31
2.4.1 ARM集成开发工具RVDS介绍 31
2.4.2 Eclipse for ARM开发环境介绍 34
本章小结 38
思考题 39
第3章 Cortex-A8处理器编程模型 40
3.1 ARM编程简介 40
3.2 Cortex-A8处理器模式和状态 40
3.2.1 处理器模式 40
3.2.2 处理器状态 41
3.3 Cortex-A8存储器组织 41
3.3.1 数据类型 41
3.3.2 存储格式 42
3.3.3 寄存器组 42
3.4 异常 46
3.4.1 异常入口 46
3.4.2 退出异常 47
3.4.3 复位异常 47
3.4.4 快速中断异常FIQ 47
3.4.5 中断异常IRQ 48
3.4.6 中止异常 48
3.4.7 软件中断 48
3.4.8 监控异常 49
3.4.9 未定义指令异常 49
3.4.10 断点指令 49
3.4.11 异常向量 49
3.4.12 异常优先级 50
3.5 寻址方式 50
3.6 指令系统 53
3.6.1 概述 53
3.6.2 ARM指令集 53
3.7 ARM汇编程序设计 65
3.7.1 伪操作 65
3.7.2 ARM汇编语言伪指令 66
3.7.3 ARM汇编语言语句格式 69
3.7.4 ARM汇编语言程序格式 73
3.7.5 汇编程序设计举例 75
本章小结 77
思考题 77
第4章 GPIO编程 79
4.1 S5PV210芯片硬件资源 79
4.1.1 微处理器 79
4.1.2 内存子系统 80
4.1.3 多媒体 81
4.1.4 音频子系统 83
4.1.5 安全子系统 83
4.1.6 接口 84
4.1.7 系统外设 86
4.1.8 封装与引脚 87
4.2 S5PV210的GPIO 104
4.2.1 GPIO概述 104
4.2.2 S5PV210芯片的GPIO特性 105
4.2.3 GPIO功能概括图 105
4.3 S5PV210的GPIO常用寄存器 106
4.4 GPIO编程实例 107
本章小结 110
思考题 110
第5章 存储器管理 112
5.1 存储器分类 112
5.1.1 存储器组织结构 112
5.1.2 随机存储器和只读存储器 112
5.2 内存管理单元 114
5.2.1 虚拟内存与虚拟地址 114
5.2.2 地址映射 114
5.2.3 系统初始化 116
5.3 S5PV210的存储系统 117
5.3.1 S5PV210的存储系统框图 117
5.3.2 S5PV210的虚拟内存映射 118
5.3.3 S5PV210微处理器的启动过程 119
5.4 S5PV210的内存控制器 120
5.4.1 DRAM控制器 120
5.4.2 SROM控制器 121
5.4.3 OneNAND控制器 122
5.4.4 NAND闪存控制器 123
本章小结 125
思考题 126
第6章 异常与中断处理 128
6.1 概述 128
6.2 S5PV210的异常与中断 128
6.3 SWI软中断异常 129
6.4 IRQ中断与FIQ中断 130
6.5 中断相关寄存器 135
6.6 S5PV210的中断编程 137
6.6.1 中断跳转流程 137
6.6.2 中断示例硬件电路 138
6.6.3 中断示例程序代码 139
本章小结 149
思考题 149
第7章 定时器 150
7.1 通用定时器概述 150
7.2 S5PV210的脉宽调制(PWM)定时器 150
7.2.1 PWM定时器概述 150
7.2.2 PWM定时器的寄存器 151
7.2.3 PWM双缓冲定时器 155
7.2.4 S5PV210的PWM定时器控制示例 157
7.3 看门狗定时器 159
7.3.1 看门狗定时器概述 159
7.3.2 看门狗定时器寄存器 159
7.3.3 看门狗定时器控制参考程序 160
7.4 RTC实时时钟 162
7.4.1 实时时钟简介 162
7.4.2 RTC控制器 162
7.4.3 RTC寄存器 163
7.4.4 RTC编程 165
本章小结 167
思考题 167
第8章 A-D转换器 169
8.1 A-D转换原理 169
8.1.1 A-D转换概念 169
8.1.2 A-D转换过程 169
8.1.3 A-D转换的主要技术指标 169
8.1.4 A-D转换器的主要类型 170
8.2 S5PV210的A-D转换器 171
8.2.1 概述 171
8.2.2 特性 171
8.2.3 模块图 172
8.2.4 转换速率 172
8.3 S5PV210的A-D转换寄存器 172
8.4 S5PV210的A-D编程 175
本章小结 178
思考题 178
第9章 DMA控制器 179
9.1 DMA的工作原理 179
9.2 S5PV210的DMA控制器 179
9.3 PL330指令集 180
9.4 DMA控制器请求 184
9.5 S5PV210的DMA相关寄存器 187
9.6 S5PV210微处理器的DMA编程 187
本章小结 190
思考题 190
第10章 S5PV210通信接口 192
10.1 UART接口 192
10.1.1 UART(异步串行通信)接口概念 192
10.1.2 RS-232C串行接口标准 193
10.1.3 S5PV210芯片的异步串行通信 194
10.1.4 UART寄存器 197
10.1.5 UART实例 202
10.2 SPI接口 205
10.2.1 SPI接口概述 205
10.2.2 S5PV210微处理器的SPI接口 206
10.2.3 SPI相关的寄存器 210
10.2.4 S5PV210微处理器的SPI实例 213
10.3 I2C接口 221
10.3.1 I2C总线工作原理 221
10.3.2 S5PV210微处理器的I2C总线接口 223
10.3.3 S5PV210微处理器的I2C接口寄存器 226
10.3.4 S5PV210微处理器的I2C应用实例 228
本章小结 229
思考题 230
第11章 人机交互接口 231
11.1 LCD接口 231
11.1.1 LCD控制器综述 231
11.1.2 S5PV210的LCD控制器 231
11.1.3 LCD相关寄存器 235
11.1.4 LCD应用实例 241
11.2 键盘功能 246
11.2.1 键盘接口概述 246
11.2.2 去抖动滤波器 247
11.2.3 键盘扫描步骤 247
11.2.4 键盘的I/O接口 249
11.2.5 键盘接口相关寄存器 250
11.2.6 键盘接口实例 252
本章小结 255
思考题 255
第12章 Windows CE操作系统移植与开发 256
12.1 Windows CE 6.0介绍 256
12.1.1 Windows CE嵌入式操作系统简介 256
12.1.2 Windows CE 6.0简介 256
12.1.3 Windows CE 6.0开发环境架构 257
12.2 基于Windows CE的嵌入式系统开发流程 259
12.2.1 硬件设计 259
12.2.2 运行Windows CE 260
12.2.3 定制操作系统 260
12.2.4 应用程序开发 260
12.3 Windows CE操作系统移植 260
12.3.1 Windows CE操作系统移植原理 260
12.3.2 开发BSP 261
12.4 Windows CE操作系统定制流程 263
12.4.1 选择BSP 264
12.4.2 编译生成镜像文件 265
12.4.3 下载到开发板上进行调试 266
12.5 Windows CE操作系统硬件驱动 267
12.5.1 驱动程序简介 267
12.5.2 Windows CE下的硬件驱动程序 268
12.5.3 Windows CE流式设备驱动 268
12.6 Windows CE应用程序开发与实践 269
12.6.1 导出并安装SDK 269
12.6.2 使用SDK编译Hello World 271
本章小结 271
思考题 271
第13章 Android系统移植与开发 272
13.1 Android操作系统简介 272
13.2 Android基本架构 272
13.2.1 应用程序层 273
13.2.2 应用程序框架层 273
13.2.3 系统运行库层 273
13.2.4 Linux核心层 274
13.2.5 Android操作系统源码结构 274
13.3 Android操作系统移植 275
13.4 Android应用开发环境 278
13.4.1 JDK安装 279
13.4.2 Eclipse安装 281
13.4.3 Android SDK安装和配置 281
13.4.4 ADT安装 282
13.4.5 创建模拟器 283
13.5 创建第一个Android应用程序 283
13.5.1 创建HelloWorld工程 283
13.5.2 HelloWorld源码分析 284
13.5.3 在模拟器上运行HelloWorld 286
13.5.4 在ARM嵌入式硬件平台上建立开发环境 288
本章小结 291
思考题 291
参考文献 292