第1章 绪论 1
1.1 Linux系统简介 1
1.1.1早期操作系统的发展 1
1.1.2 Linux系统的发展过程 2
1.1.3 Linux的版权 2
1.2 Linux操作系统特点 3
1.2.1 Linux系统特性 3
1.2.2 Linux与其他操作系统的比较 5
1.3 Linux内核组成 7
1.3.1进程管理 8
1.3.2内存管理 9
1.3.3虚拟文件系统 9
1.3.4网络子系统 11
1.4 Linux在嵌入式系统中的应用 12
1.4.1嵌入式Linux系统优势 12
1.4.2嵌入式Linux交叉编译过程 13
1.4.3嵌入式Linux的不足及改进 14
习题 16
第2章 嵌入式系统概述 17
2.1计算机系统发展及分类 17
2.1.1计算机的主要应用领域 17
2.1.2计算机系统分类 20
2.2嵌入式系统简介 21
2.2.1嵌入式系统定义 21
2.2.2嵌入式系统的分类与特点 22
2.2.3嵌入式系统发展历史 23
2.2.4嵌入式系统组成 24
2.3 ARM简介 27
2.3.1 ARM体系结构特点 27
2.3.2 ARM系列微处理器 28
2.3.3 ARM编程模型 33
2.4嵌入式操作系统 36
2.4.1嵌入式Linux 36
2.4.2 VxWorks 37
2.4.3 QNX 37
2.4.4 Windows CE 37
2.4.5 Palm OS 37
2.5嵌入式系统开发过程 38
2.5.1嵌入式系统整体开发过程 38
2.5.2 嵌入式硬件开发流程 41
2.5.3嵌入式软件开发流程 43
习题 44
第3章Linux系统安装与配置 45
3.1 Linux系统版本 45
3.1.1 Linux内核版本 45
3.1.2 Linux系统发行版本 49
3.2 Linux的安装过程 51
3.2.1系统最低配置与推荐配置 51
3.2.2安装前准备工作 51
3.2.3硬盘分区 52
3.2.4安装系统 52
3.3 Linux系统目录结构及基本配置 60
3.3.1 Linux目录结构 60
3.3.2系统启动过程 61
3.3.3登录切换 64
3.3.4安装程序 65
习题 67
第4章Linux系统操作基础 68
4.1 Shell与命令行 68
4.1.1 Shell概述 68
4.1.2 Shell命令的分类 69
4.1.3 Shell命令使用技巧 69
4.2文件管理 70
4.2.1什么是文件 70
4.2.2 Linux文件系统 70
4.2.3 Linux文件系统相关命令 71
4.3用户管理 82
4.3.1用户类型 82
4.3.2用户账号管理 83
4.3.3组管理 86
4.4网络管理 87
4.4.1网络的基本配置 87
4.4.2网络状态命令 89
4.5进程管理 93
4.5.1什么是进程 93
4.5.2进程管理命令 93
4.5.3进程查看命令 95
习题 97
第5章Linux系统C语言程序设计 98
5.1 C语言概述 98
5.1.1 C语言发展过程 98
5.1.2 C语言的特点 99
5.1.3 C语言与Linux系统 100
5.2 Linux系统C语言程序设计过程 102
5.2.1 Linux系统C语言程序流程 102
5.2.2 gcc的编译选项 103
5.3 GDB调试器用法 105
5.3.1 gdb使用流程 105
5.3.2 gdb基本命令 109
5.4 make工程管理器 113
5.4.1 makefile基本结构 114
5.4.2 makefile变量 115
5.4.3 makefile规则 118
5.5模块化程序设计 119
5.5.1静态库的实现 119
5.5.2动态库的实现 121
5.6 ARM平台Linux交叉编译环境 121
5.6.1源码编译方式 122
5.6.2二进制解压安装 123
5.7集成开发环境 124
5.7.1 Qt Creator 125
5.7.2 KDevelop 125
5.7.3 Code::Blocks 125
5.7.4 NetBeans 126
5.7.5 Eclipse 127
习题 128
第6章Linux系统移植 129
6.1 U-Boot移植 129
6.1.1 BootLoader简介 129
6.1.2 U-Boot介绍 133
6.1.3 U-Boot装载过程 133
6.1.4 OK6410开发板U-Boot的移植 149
6.2 Linux内核移植 150
6.2.1计算机处理器架构 150
6.2.2 Linux内核及源码结构 153
6.2.3 Linux内核移植 155
6.3根文件系统移植 163
6.3.1虚拟文件系统 164
6.3.2文件系统分类 165
6.3.3根文件系统的挂载过程 167
6.3.4根文件系统制作 170
习题 173
第7章Linux并发程序设计 174
7.1 Linux进程 174
7.2进程控制 175
7.2.1获取进程ID 176
7.2.2创建进程 176
7.2.3进程调度 179
7.2.4进程终止 180
7.2.5等待进程结束 181
7.2.6守护进程 183
7.3进程之间的通信 186
7.3.1管道 186
7.3.2信号 193
7.3.3消息队列 203
7.3.4信号量 208
7.3.5共享内存 213
7.4线程 216
7.4.1创建轻量级进程 217
7.4.2 POSIX线程 218
7.4.3线程属性 222
7.4.4线程之间的同步与互斥 226
习题 237
第8章Linux网络编程 238
8.1网络编程的基本知识 238
8.2套接字 239
8.2.1套接字函数 239
8.2.2本地套接字 243
8.2.3网络套接字 246
8.3 TCP程序设计 253
8.4 UDP程序设计 257
8.5套接字属性设置 261
习题 265
第9章Linux文件编程 266
9.1底层文件I/O 266
9.1.1文件描述符 267
9.1.2底层文件I/O函数 267
9.2高级文件操作 270
9.2.1文件加锁 270
9.2.2多路复用 276
9.3标准文件I/O 285
9.3.1打开和关闭文件 286
9.3.2文件读写 288
习题 291
第10章Linux设备驱动程序设计 292
10.1设备驱动模型简介 292
10.1.1底层数据模型 292
10.1.2上层设备模型 297
10.1.3字符设备驱动模型应用接口 302
10.2 platform设备驱动程序设计 306
10.2.1 platform-device注册 306
10.2.2 platform-driver注册 307
10.2.3 platform设备驱动框架源码 310
10.3设备驱动程序编译及加载 313
10.3.1编译Linux设备驱动程序 313
10.3.2驱动程序的加载 314
10.4设备驱动程序硬件访问 317
10.4.1内存与I/O设备 317
10.4.2中断 320
10.5驱动程序设计实例分析 321
10.5.1蜂鸣器驱动程序设计 321
10.5.2中断驱动程序 333
10.5.3混杂设备驱动程序 336
习题 339
第11章 用户界面程序设计 340
11.1 Qt简介及安装 340
11.1.1 Qt简介 340
11.1.2 Qt安装 341
11.2 Qt程序设计入门 343
11.2.1命令行方式编程 343
11.2.2 Qt Creator方式 345
11.2.3 Qt程序的运行机制 353
11.3 Qt常用类介绍 357
11.3.1 Qt分组类库 357
11.3.2 Qt类库介绍 359
习题 382