第1章 嵌入式系统基础 1
1.1嵌入式系统概述 1
1.1.1嵌入式系统的基本概念 1
1.1.2嵌入式系统的应用领域 2
1.1.3嵌入式系统的组成 4
1.1.4嵌入式系统的特点 5
1.1.5嵌入式系统的发展趋势 6
1.2嵌入式操作系统 10
1.2.1操作系统的基本功能 10
1.2.2嵌入式操作系统 11
1.2.3嵌入式操作系统体系结构 12
1.2.4嵌入式操作系统的选择 16
1.2.5几种代表性嵌入式操作系统比较 17
1.3嵌入式Linux基础 19
1.3.1 Linux简介 19
1.3.2嵌入式Linux 23
1.3.3 Linux的安装基础 24
1.3.4基于虚拟机的Linux的安装 27
1.3.5 Linux虚拟机的设置 33
1.4 Linux目录结构及文件 37
1.4.1 Linux文件系统 37
1.4.2 Linux目录结构 40
1.4.3文件类型及文件属性 42
1.5 Linux常用操作命令 46
1.5.1 Shell命令基础 46
1.5.2文件与目录相关命令 47
1.5.3磁盘管理与维护命令 57
1.5.4系统管理与设置命令 59
1.5.5网络相关命令 61
1.5.6压缩备份命令 63
1.6 Linux下Shell编程 66
1.6.1 Shell程序概述 66
1.6.2 Shell变量 66
1.6.3 Shell特殊字符 69
1.6.4 Shell流程控制 71
1.6.5 Shell函数定义 76
1.6.6 Shell程序示例 77
1.7 Linux启动过程分析 79
习题一 84
第2章Linux编程基础 85
2.1 Linux下的C语言编程 85
2.1.1 Linux下的C语言编程概述 85
2.1.2 Linux下的C语言开发流程 87
2.2 Vim编辑器 90
2.2.1 Vim的模式 90
2.2.2 Vim常用操作 92
2.3 GCC编译器 96
2.3.1 GCC编译器简介 96
2.3.2 GCC编译流程 97
2.3.3 GCC常用编译选项 101
2.3.4库依赖 103
2.4 GDB调试器 104
2.4.1 GDB概述 104
2.4.2 GDB使用流程 104
2.4.3 GDB基本命令 110
2.4.4 GdbServer远程调试 115
2.5 Make 工程管理器 116
2.5.1 Make工程管理器概述 116
2.5.2 Makefile基本结构 117
2.5.3 Makefile变量 122
2.5.4 Makefile规则 126
2.5.5 MakeFlie常用函数 127
2.5.6使用自动生成工具生成Makefile 133
2.6 Linux下的集成开发环境 137
2.6.1 Eclipse集成开发环境简介 137
2.6.2 Eclipse的开发流程 140
2.6.3使用CVS进行版本管理 143
2.7文件I/O编程 149
2.7.1文件I/O编程基础 149
2.7.2基本I/O操作 150
2.7.3标准I/O操作 154
2.7.4嵌入式Linux串口通信编程 158
2.8进程控制编程 167
2.8.1 Linux下的进程概述 167
2.8.2 Linux进程编程 170
2.8.3 Zombie进程 180
2.8.4 Linux守护进程 181
2.9进程间的通信和同步 186
2.9.1 Linux下进程间通信概述 186
2.9.2管道通信 187
2.9.3共享内存通信 196
2.9.4其他方式通信 199
2.10多线程编程 200
2.10.1线程的基本概念 200
2.10.2线程的实现 201
2.10.3修改线程属性 203
2.10.4多线程访问控制 205
习题二 208
第3章 基于Linux的嵌入式软件开发 209
3.1嵌入式软件结构 209
3.1.1嵌入式软件体系结构 209
3.1.2基于Linux的嵌入式软件 212
3.2嵌入式软件开发流程 213
3.2.1嵌入式Linux设计概述 213
3.2.2基于开发板的二次开发 214
3.2.3基于Linux的嵌入式软件开发流程 216
3.3嵌入式Linux开发环境 217
3.3.1 ARM处理器硬件开发平台 217
3.3.2建立嵌入式交叉编译环境 218
3.3.3配置开发环境 218
3.4嵌入式系统引导代码 229
3.4.1 BootLoader简介 229
3.4.2常用的BootLoader 231
3.4.3 BootLoader基本原理 232
3.4.4 BootLoader移植实例一:U-Boot 237
3.4.5 BootLoader移植实例二:Vivi 246
3.5 Linux内核结构及移植 248
3.5.1 Linux内核结构 248
3.5.2 Linux的移植 253
3.5.3修改Linux内核源码 256
3.5.4内核的裁减 258
3.5.5内核的编译和下载 261
3.6嵌入式文件系统及移植 261
3.6.1嵌入式文件系统的基础 261
3.6.2嵌入式文件系统的设计 265
3.6.3嵌入式根文件系统的制作 267
3.7 Linux设备驱动概述 268
3.7.1 Linux设备驱动的作用 268
3.7.2 Linux设备驱动程序的基本结构 269
3.7.3 Linux设备驱动的分类 270
3.7.4 Linux设备文件和设备文件系统 271
3.8设备驱动程序接口 272
3.8.1 Linux设备驱动的加载方式 272
3.8.2设备驱动程序接口 275
3.8.3 Linux设备的控制方式 276
3.9 Linux设备驱动开发流程 278
3.9.1设备驱动开发流程 278
3.9.2字符设备驱动框架 282
习题三 290
第4章 嵌入式应用程序设计 291
4.1嵌入式应用程序设计概述 291
4.1.1嵌入式软件的分类 291
4.1.2嵌入式GUI 292
4.1.3常用嵌入式GUI 293
4.2 QT编程基础 295
4.2.1 QT简介 295
4.2.2 QT /Embedded 297
4.2.3 QT开发环境的搭建 299
4.2.4 QT程序设计基本流程 300
4.3信号和槽机制 302
4.3.1基本概念 302
4.3.2信号和槽机制的原理 304
4.3.3信号和槽实例 307
4.4图形界面设计 309
4.4.1 QT的窗口类Widget 309
4.4.2使用QTDesigner编写QT程序 310
4.4.3 QT中常用的控件 316
4.5使用Eclipse开发QT程序 319
4.5.1 QT插件的安装 319
4.5.2 Eclipse平台下QT开发过程 320
4.6 QT程序综合实例 323
4.6.1需求说明 323
4.6.2界面设计 323
4.6.3功能实现 324
习题四 327
第5章 嵌入式数据库 328
5.1嵌入式数据库概述 328
5.1.1嵌入式数据库简介 328
5.1.2嵌入式数据库的特点及分类 330
5.1.3嵌入式数据库的应用 332
5.2 SQLite数据库 333
5.2.1 SQLite数据库概述 333
5.2.2 SQLite数据库的安装 335
5.2.3 SQLite数据库的基本命令 336
5.2.4 SQLite数据库的管理命令 338
5.2.5 SQLite数据库的API函数 340
5.2.6 SQLite数据库的实例分析 342
习题五 344
第6章 嵌入式Linux网络编程 345
6.1网络协议概述 345
6.1.1网络协议参考模型 345
6.1.2 TCP/IP协议族 346
6.1.3 TCP和UDP 347
6.2网络编程基础 351
6.2.1 Socket概述 351
6.2.2基本数据结构和函数 351
6.2.3 Socket基础编程 354
6.3 TCP通信编程 355
6.3.1 TCP通信过程 355
6.3.2 TCP Server程序设计 361
6.3.3 TCP Client程序设计 364
6.3.4 TCP程序测试过程 365
6.4 UDP通信编程 366
6.4.1 UDP通信过程 366
6.4.2 UDP服务器端程序设计 367
6.4.3 UDP客户端程序设计 368
6.4.4 UDP程序测试过程 370
习题六 371
第7章 嵌入式操作系统实验 372
7.1 Linux常用命令 372
7.2 Linux下C语言开发环境 378
7.3文件I/O及进程控制编程 383
7.4进程通信以及多线程编程 388
7.5嵌入式Linux开发环境 397
7.6 BootLoader内核和根文件系统 402
7.7驱动程序设计 408
7.8 QT应用编程 412
7.9嵌入式数据库 414
7.10网络通信编程 415
参考文献 418