第0章 开源文化概述 1
0.1 开源文化概述 2
0.1.1 开源文化 2
0.1.2 关于黑客 2
0.2 开源软件与自由软件 3
0.3 开源教育模式 3
0.3.1 开放教育资源 4
0.3.2 开放教育发展 4
0.3.3 开源教育模式 4
第1章 嵌入式系统基础 6
1.1 嵌入式系统概述 7
1.2 嵌入式处理器 7
1.3 嵌入式操作系统 8
1.4 嵌入式应用 10
思考与实验 13
第2章 嵌入式系统的硬、 软件开发环境 14
2.1 嵌入式Linux系统开发硬、软件环境概述 15
2.2 嵌入式Linux开发环境的硬件连接 16
2.2.1 嵌入式硬件 16
2.2.2 PC宿主机与嵌入式硬件设备的连接 16
2.3 嵌入式Linux开发环境的软件与设置 17
2.3.1 嵌入式开发软件环境配置流程 17
2.3.2 关闭防火墙 18
2.3.3 minicom端口配置及使用 18
2.3.4 TFTP服务配置及使用 24
2.3.5 NFS服务的配置 28
2.3.6 交叉编译器安装 29
思考与实验 32
第3章 Linux内核移植与ramdisk文件系统 33
3.1 Linux内核移植 34
3.1.1 内核移植的基本概念 34
3.1.2 内核移植的准备 34
3 1 3 内核移植的基本过程 34
3.1.4 内核移植的具体操作 35
3.2 Linux根文件系统的制作 40
3.2.1 根文件系统概述 40
3.2.2 建立根文件系统 42
思考与实验 45
第4章 嵌入式C程序调试技术 46
4.1 交叉编译技术 47
4.1.1 交叉编译器 47
4.1.2 GDBServer调试器 48
4.2 make工程管理器 53
4.2.1 Makefile工程文件的编写 53
4.2.2 Makefile变量的使用 58
4.2.3 Makefile文件对其他Makefile文件的引用 61
4.2.4 Makefile中的函数 62
4.2.5 运行make 63
思考与实验 63
第5章 嵌入式系统基础程序设计 65
5.1 嵌入式I/O程序设计 66
5.1.1 不带缓存的文件I/O操作 66
5.1.2 带缓存的流文件操作 72
5.2 嵌入式进程与进程间通信程序设计 76
5.2.1 进程创建 76
5.2.2 进程通信——管道 81
5.2.3 进程通信——信号 83
5.2.4 进程通信——共享内存 92
5.2.5 进程通信——消息队列 95
思考与实验 98
第6章 串口通信程序设计 102
6.1 串行通信概述 103
6.2 串口的分类 103
6.3 常用串口的引脚功能 104
6.4 串口属性参数的设置 107
6.5 串口与ARM的连接方法 109
6.6 串行通信程序的设计 111
6.6.1 串行通信程序设计流程 111
6.6.2 串口通信程序设计主要函数 111
6.6.3 串口通信程序设计实例 112
6.7 基于串口的GPRS应用 123
6.7.1 应用简介 123
6.7.2 原理模块设计 123
6.7.3 在PC机平台上基于串口的GPRS应用 123
6.7.4 基于串口的程序设计模块分析 124
6.7.5 GPRS一般故障排除 127
思考与实验 128
第7章 嵌入式网络应用程序设计 129
7.1 socket简介 130
7.1.1 socket的含义 130
7.1.2 socket套接口的分类 130
7.2 socket套接口的数据结构 130
7.2.1 sockaddr数据结构类型 130
7.2.2 字节顺序转换函数 131
7.2.3 socket编程中的常用函数 132
7.2.4 gethostbyname()函数 134
7.3 TCP编程 135
7.3.1 服务器端的实现 135
7.3.2 客户端的实现 136
思考与实验 152
第8章 图形图像程序设计 153
8.1 图形图像程序概述 154
8.2 graphic接口函数说明 154
8.3 图形处理设计实例 155
8.4 图片显示设计实例 160
思考与实验 162
第9章 嵌入式GUI-Qt应用程序设计 163
9.1 Qt简介 164
9.1.1 Qt的安装 164
9.1.2 Qt的编译器 164
9.1.3 Qt的特征 164
9.2 Qt环境的配置 165
9.3 Qt集成开发工具的使用 167
9.4 Qt实例一 172
9.4.1 应用程序代码编写 173
9.4.2 编译生成工程文件 177
9.5 Qt实例二 179
9.5.1 服务器端代码编写 180
9.5.2 客户端程序代码编写 192
思考与实验 203
第10章 设备驱动程序设计基础 204
10.1 设备驱动程序的概念 205
10.1.1 设备文件的查看 205
10.1.2 主设备号与次设备号 206
10.1.3 与设备驱动相关的数据结构 206
10.2 驱动程序的组成 207
10.3 驱动程序的基本流程 207
10.4 Linux字符设备驱动程序设计 208
10.4.1 字符设备驱动程序数据结构 208
10.4.2 字符设备驱动程序实例——虚拟字符设备 214
10.4.3 字符设备驱动程序实例——GPIO的驱动程序设计 221
思考与实验 229
第11章 数码驱动程序设计 230
11.1 数码驱动原理 231
11.2 数码驱动硬件连接电路 232
11.2.1 LED驱动电路相关器件的功能特性 232
11.2.2 驱动电路相关器件的电路连接 234
11.3 数码驱动程序设计实例 235
11.3.1 系统分析 235
11.3.2 系统硬件设计 236
11.3.3 系统软件设计 237
11.4 系统设计操作步骤 241
11.4.1 键盘驱动程序设计步骤 241
11.4.2 LED驱动程序设计步骤 245
11.5 LED数码显示测试程序设计 249
思考与实验 254
第12章 SD驱动程序设计 255
12.1 SD卡 256
12.1.1 SD卡概述 256
12.1.2 SD卡的辨别 256
12.1.3 SD卡的接口定义及管脚功能 257
12.1.4 S3C2410中的SDI接口 259
12.1.5 SD的寄存器 260
12.1.6 SD卡驱动 261
12.1.7 S3C2410与SD的连接 261
12.2 块设备驱动程序概述 262
12.2.1 简单块设备驱动框架 262
12.2.2 设备驱动程序设计流程 262
12.2.3 块设备及相关数据结构 264
12.3 块设备驱动程序的设计流程 266
12.3.1 驱动程序的注册与注销 266
12.3.2 设备的打开与释放 267
12.3.3 设备的读/写操作 267
12.3.4 设备的控制操作 267
12.3.5 设备的中断和轮询处理 267
12.4 SD卡驱动程序的设计 268
12.5 RJARM9_EDU环境下SD卡驱动程序介绍 270
12.5.1 mmcsd_slot_s3c2410.c文件中的函数 271
12.5.2 mmcsd_disk.c文件中的函数 271
12.5.3 mmcsd_cs.c文件中的函数 272
12.5.4 mmcsd_bus.c文件中的函数 272
12.5.5 RJARM9_EDU上SD卡调试步骤 272
思考与实验 273
第13章 A/D与D/A驱动程序设计 274
13.1 A/D与D/A转换的应用概况 275
13.2 A/D与D/A转换流程 275
13.3 A/D转换原理 275
13.3 1采样定理 276
13.3.2 量化和编码 276
13.4 D/A转换原理 277
13.4.1 D/A转换器的基本工作原理 277
13.4.2 D/A转换特性 277
13.5 A/与D/A转换的硬件电路设计 278
13.5.1 常用A/D转换器件简介 278
13.5.2 A/D转换器件ADC0809 278
13.6 A/D转换程序设计 281
13.6.1 A/D驱动程序分析 281
13.6.2 驱动程序编写的具体步骤 285
13.6.3 A/D驱动程序测试 290
13.7 常用D/A转换器件简介 293
13.8 DAC0832及其接口 294
13.9 D/A转换程序设计 296
13.9.1 D/A驱动程序分析 296
13.9.2 驱动程序编写的具体步骤 297
13.9.3 D/A驱动程序测试 301
思考与实验 303
第14章 LCD驱动程序设计 304
14.1 LCD应用概况 305
14.2 LCD的工作原理 305
14.3 LCD驱动方式 306
14.3.1 静态驱动方式 306
14.3.2 动态驱动方式 307
14.4 LCD常用器件 308
14.5 LCD的控制/驱动与接口概述 309
14.5.1 S3C2410 LCD控制器 309
14.5.2 S3C2410与LCD连接电路 311
14.6 基于FrameBuffer的LCD驱动程序设计 312
14.6.1 FrameBuffer设备驱动结构体 312
14.6.2 FrameBuffer设备驱动应用程序 313
14.7 LCD测试 314
14.8 LCD程序设计实例 318
思考与实验 323
第15章 嵌入式系统设计实例分析 324
15.1 指纹识别门禁系统 325
15.1.1 门禁系统概述 325
15.1.2 系统设计分析 325
15.1.3 系统设计 326
15.1.4 系统实施 327
15.1.5 系统测试 327
15.2 实时视频采集系统 327
15.2.1 实时视频采集系统概述 327
15.2.2 系统设计分析 328
15.2.3 系统设计 329
15.2.4 系统实施 329
15.2.5 系统测试 329
15.3 多媒体网络家庭娱乐系统 330
15.3.1 多媒体网络家庭娱乐系统概述 330
15.3.2 系统设计分析 330
15.3.3 系统设计 331
15.3.4 系统实施 331
15.3.5 系统测试 332
15.4 智能车辆助理 332
15.4.1 智能车辆助理系统概述 332
15.4.2 系统设计分析 333
15.4.3 系统设计 334
15.4.4 系统实施 334
15.4.5 系统测试 335
15.5 野生动物保护区车载终端系统 335
15.5.1 野生动物保护区车载终端系统概述 335
15.5.2 系统设计分析 336
15.5.3 系统设计 337
15.5.4 系统实施 337
15.5.5 系统测试 338
15.6 网络跑步机 338
15.6.1 网络跑步机概述 338
15.6.2 系统设计分析 339
15.6.3 系统设计 339
15.6.4 系统实施 340
15.6.5 系统测试 340
主要参考文献 342