理论篇 2
第1章 概述 2
1.1 嵌入式系统 2
1.1.1 嵌入式系统概述 2
1.1.2 嵌入式系统发展 3
1.2 嵌入式处理器 4
1.2.1 处理器分类 4
1.2.2 ARM处理器 5
1.2.3 ARM处理器系列 7
1.3 嵌入式操作系统 9
1.4 嵌入式系统开发 10
1.4.1 嵌入式系统开发流程 10
1.4.2 嵌入式系统开发环境 11
小结 14
习题 15
第2章 ARM基础开发 16
2.1 S3C2440概述 17
2.2 编程基础 19
2.2.1 S3C2440体系结构 19
2.2.2 汇编指令集 24
2.2.3 汇编与C语言的交互编程 31
2.3 时钟与电源 35
2.3.1 时钟体系 35
2.3.2 电源模式 39
2.4 GPIO 40
2.4.1 概述 40
2.4.2 GPIO寄存器 40
2.4.3 GPIO编程 42
2.5 存储器控制器 45
2.5.1 概述 45
2.5.2 存储器控制器寄存器 46
2.5.3 存储器控制器编程 48
2.6 异常系统 53
2.6.1 异常 53
2.6.2 中断机制 55
2.6.3 中断控制器寄存器 58
2.6.4 中断编程 61
2.7 定时器 66
2.7.1 概述 66
2.7.2 定时器寄存器 67
2.7.3 定时器编程 69
2.8 ADC和触摸屏 70
2.8.1 ADC概述 71
2.8.2 触摸屏 72
2.8.3 ADC寄存器 72
2.8.4 ADC编程 74
小结 77
习题 77
第3章 ARM进阶开发 79
3.1 Flash编程 80
3.1.1 概述 80
3.1.2 NAND Flash控制器 82
3.1.3 NAND Flash控制器寄存器 83
3.1.4 NAND Flash实例 85
3.2 UART 98
3.2.1 概述 98
3.2.2 S3C2440 UART 99
3.2.3 UART编程 104
3.3 USB 110
3.3.1 概述 110
3.3.2 USB主机控制器 117
3.3.3 USB设备控制器 128
3.3.4 USB设备编程 129
3.4 DMA 138
3.4.1 概述 138
3.4.2 DMA控制器 139
3.4.3 DMA控制器寄存器 140
3.4.4 DMA编程 143
3.5 LCD 144
3.5.1 概述 144
3.5.2 LCD控制器 146
3.5.3 LCD控制器寄存器 149
3.5.4 LCD编程 150
3.6 MMU 159
3.6.1 概述 159
3.6.2 MMU内存访问机制 164
3.6.3 Cache 165
3.6.4 ARM协处理器 166
3.6.5 MMU编程 168
小结 170
习题 170
第4章 系统构建 172
4.1 概述 173
4.2 交叉编译环境 173
4.3 Linux内核 174
4.3.1 Linux内核特点 175
4.3.2 内核结构 176
4.4 内核编译配置 177
4.4.1 配置工具 177
4.4.2 内核Makefile 177
4.4.3 配置文件Kconfig 179
4.4.4 配置选项 180
4.5 内核移植 182
4.5.1 移植示例 184
4.5.2 内核映像 187
4.6 构建根文件系统 188
4.6.1 文件系统概述 188
4.6.2 根文件系统 190
4.6.3 Busybox 191
4.6.4 构建根文件系统 195
4.7 Linux内核启动分析 198
小结 205
习题 206
第5章 驱动移植 207
5.1 概述 208
5.1.1 设备驱动程序 208
5.1.2 设备类型与设备号 208
5.1.3 驱动模块 209
5.1.4 驱动程序结构 211
5.1.5 驱动程序开发 211
5.2 字符设备驱动程序 211
5.2.1 字符设备特点 211
5.2.2 相关数据结构与函数 212
5.2.3 驱动程序模型 217
5.2.4 驱动程序实例 218
5.3 块设备驱动程序 224
5.3.1 块设备特点 224
5.3.2 相关的数据结构和函数 225
5.4 网络设备驱动程序 228
5.4.1 网络设备特点 228
5.4.2 相关数据结构和函数 230
5.4.3 DM9000模块 234
5.4.4 DM9000驱动程序 235
5.4.5 移植实例 248
小结 248
习题 249
第6章 应用编程 250
6.1 概述 251
6.1.1 应用程序 251
6 1 2 API 251
6.1.3 系统调用 252
6.1.4 API与系统调用 253
6.2 文件I/O编程 254
6.2.1 概述 254
6.2.2 基本I/O函数 255
6.2.3 标准I/O函数 265
6.3 进程 269
6.3.1 概述 269
6.3.2 基本函数 271
6.3.3 信号 276
6.3.4 管道 282
6.3.5 信号量 288
6.3.6 共享内存 293
6.3.7 消息队列 298
6.4 线程 304
6.4.1 概述 304
6.4.2 基本函数 305
6.4.3 同步与互斥 310
6.5 网络编程 315
6.5.1 TCP/IP协议 315
6.5.2 socket套接字 317
6.5.3 socket编程实例 323
小结 326
习题 327
第7章 GUI程序设计 328
7.1 图形用户界面 329
7.1.1 图形用户界面的特征 329
7.1.2 嵌入式系统图形用户界面特点 329
7.1.3 几种流行的GUI 329
7.1.4 Qt及Qt/Embedded 330
7.2 Q t/Embedded开发平台的搭建 331
7.2.1 Qt Creator集成开发环境的搭建 331
7.2.2 编译安装触摸屏校验库tslib 332
7.2.3 搭建Qt/Embedded开发环境 334
7.3 Qt Creator程序开发流程 335
7.3.1 Qt Creator启动界面简介 335
7.3.2 创建“Hello World”GUI应用程序 337
7.3.3 纯代码编写程序 340
7.4 程序框架类 341
7.4.1 QApplication类 342
7.4.2 QMainWindow类 343
7.4.3 QWidget类 346
7.4.4 QDialog类 349
7.4.5 QObject类 351
7.5 信号与槽机制 352
7.5.1 信号与槽机制概述 352
7.5.2 信号与槽的关联 353
7.5.3 元对象工具 355
7.5.4 信号/槽使用示例 355
7.6 常用窗口部件 357
7.6.1 QFrame类族 357
7.6.2 按钮部件 358
7.6.3 行编辑控件 359
7.6.4 滑块部件 361
小结 361
习题 362
实践篇 364
实践1 概述 364
实践指导 364
实践1.G.1 364
实践1.G.2 367
实践1.G.3 369
实践1.G.4 371
实践2 ARM基础开发 377
实践指导 377
实践2.G.1 377
实践2.G.2 381
实践3 ARM进阶开发 394
实践指导 394
实践3.G.1 394
实践3.G.2 395
实践3.G.3 396
实践3.G.4 398
实践4 系统构建 428
实践指导 428
实践4.G.1 428
实践4.G.2 430
实践4.G.3 433
实践4.G.4 437
实践5 驱动移植 440
实践指导 440
实践5.G.1 440
知识拓展 444
实践6 应用编程 448
实践指导 448
实践6.G.1 448
实践6.G.2 451
实践7 GUI程序设计 462
实践指导 462
实践7.G.1 462
实践7.G.2 464
实践7.G.3 468
实践7.G.4 469