第1章 嵌入式系统基础 1
1.1嵌入式系统概述 1
1.1.1嵌入式系统的基本概念 1
1.1.2嵌入式系统的应用领域 2
1.1.3嵌入式系统的组成 3
1.1.4嵌入式系统的特点 4
1.1.5嵌入式系统的发展趋势 5
1.2嵌入式操作系统 8
1.2.1操作系统的基本功能 8
1.2.2嵌入式操作系统 9
1.2.3嵌入式操作系统体系结构 10
1.2.4嵌入式操作系统的选择 14
1.2.5几种代表性嵌入式操作系统比较 15
1.3嵌入式Linux基础 16
1.3.1 Linux简介 16
1.3.2嵌入式Linux 21
1.3.3 Linux的安装基础 22
1.3.4基于虚拟机的Linux的安装 25
1.3.5 Linux虚拟机的设置 31
1.4 Linux目录结构及文件 36
1.4.1 Linux文件系统 36
1.4.2 Linux目录结构 39
1.4.3文件类型及文件属性 41
1.5 Linux常用操作命令 45
1.5.1 Shell命令基础 45
1.5.2文件与目录相关命令 46
1.5.3磁盘管理与维护命令 55
1.5.4系统管理与设置命令 57
1.5.5网络相关命令 60
1.5.6压缩备份命令 62
习题一 64
第2章 Linux编程基础 66
2.1 Linux下的C语言编程 66
2.1.1 Linux下的C语言编程概述 66
2.1.2 Linux下的C语言开发流程 68
2.2 Vim编辑器 71
2.2.1 Vim的模式 71
2.2.2 Vim常用操作 73
2.3 GCC编译器 77
2.3.1 GCC编译器简介 77
2.3.2 GCC编译流程 79
2.3.3 GCC常用编译选项 82
2.3.4库依赖 85
2.4 GDB调试器 85
2.4.1 GDB概述 85
2.4.2 GDB使用流程 86
2.4.3 GDB基本命令 91
2.4.4 Gdbserver远程调试 97
2.5 Make工程管理器 97
2.5.1 Make工程管理器概述 97
2.5.2 Makefile基本结构 99
2.5.3 Makefile变量 104
2.5.4 Makefile规则 108
2.5.5使用自动生成工具生成Makefile 109
2.6 Linux下的集成开发环境 113
2.6.1 Eclipse集成开发环境简介 113
2.6.2 Eclipse的开发流程 116
2.6.3使用CVS进行版本管理 119
2.7文件I/O编程 125
2.7.1文件I/O编程基础 125
2.7.2基本I/O操作 126
2.7.3标准I/O操作 130
2.8进程控制编程 134
2.8.1 Linux下的进程概述 134
2.8.2 Linux进程编程 137
2.8.3 Zombie进程 147
2.9进程间的通信和同步 149
2.9.1 Linux下进程间通信概述 149
2.9.2管道通信 149
2.9.3共享内存通信 159
2.9.4其他方式通信 163
2.10多线程编程 163
2.10.1线程的基本概念 163
2.10.2线程的实现 164
2.10.3修改线程属性 167
2.10.4多线程访问控制 168
习题二 171
第3章 基于Linux的嵌入式软件开发 172
3.1嵌入式软件结构 172
3.1.1嵌入式软件体系结构 172
3.1.2基于Linux的嵌入式软件 175
3.2嵌入式软件开发流程 176
3.2.1嵌入式Linux设计概述 176
3.2.2基于开发板的二次开发 177
3.2.3基于Linux的嵌入式软件开发流程 178
3.3嵌入式Linux开发环境 180
3.3.1 ARM处理器硬件开发平台 180
3.3.2建立嵌入式交叉编译环境 181
3.3.3配置开发环境 182
3.4嵌入式系统引导代码 193
3.4.1 BootLoader简介 193
3.4.2常用的BootLoader 194
3.4.3 BootLoader基本原理 196
3.4.4 BootLoader移植实例一:U-Boot 200
3.4.5 BootLoader移植实例二:Vivi 204
3.5 Linux内核结构及移植 206
3.5.1 Linux内核结构 206
3.5.2 Linux的移植 211
3.5.3修改Linux内核源码 215
3.5.4内核的裁剪 217
3.5.5内核的编译和下载 219
3.6嵌入式文件系统及移植 220
3.6.1嵌入式文件系统的基础 220
3.6.2嵌入式文件系统的设计 224
3.6.3嵌入式根文件系统的制作 226
3.7 Linux设备驱动概述 227
3.7.1 Linux设备驱动的作用 227
3.7.2 Linux设备驱动程序的基本结构 228
3.7.3 Linux设备驱动的分类 229
3.7.4 Linux设备文件和设备文件系统 230
3.8设备驱动程序接口 231
3.8.1 Linux设备驱动的加载方式 231
3.8.2设备驱动程序接口 233
3.8.3 Linux设备的控制方式 235
3.9 Linux设备驱动开发流程 237
3.9.1设备驱动开发流程 237
3.9.2字符设备驱动框架 240
习题三 249
第4章 嵌入式应用程序设计 250
4.1嵌入式应用程序设计概述 250
4.1.1嵌入式软件的分类 250
4.1.2嵌入式GUI 251
4.1.3常用嵌入式GUI 252
4.2 MiniGUI概述 254
4.2.1 MiniGUI简介 254
4.2.2 MiniGUI的架构 256
4.2.3 MiniGUI的移植 257
4.2.4 MiniGUI的编译和安装 258
4.3 MiniGUI编程基础 261
4.3.1 MiniGUI的窗口与消息机制 261
4.3.2 MiniGUI的控件 264
4.3.3 MiniGUI的对话框 266
4.4 MiniGUI程序框架 266
4.4.1 MiniGUI程序框架 266
4.4.2编译、链接和运行 273
4.4.3利用Eclipse编写MiniGUI程序 273
4.5 QT编程基础 278
4.5.1 QT简介 278
4.5.2 QT/Embedded 280
4.5.3 QT开发环境的搭建 282
4.5.4 QT程序设计基本流程 283
4.6信号和槽机制 285
4.6.1基本概念 285
4.6.2信号和槽机制的原理 287
4.6.3信号和槽实例 290
4.7图形界面设计 292
4.7.1 QT的窗口类Widgets 292
4.7.2使用QT Designer编写QT程序 293
4.7.3 QT中常用的控件 300
4.8使用Eclipse开发QT程序 303
4.8.1 QT插件的安装 303
4.8.2 Eclipse平台下QT开发过程 304
4.9 QT程序综合实例 307
4.9.1需求说明 307
4.9.2界面设计 308
4.9.3功能实现 308
习题四 312
第5章 嵌入式数据库 313
5.1嵌入式数据库概述 313
5.1.1嵌入式数据库简介 313
5.1.2嵌入式数据库的特点及分类 314
5.1.3嵌入式数据库的应用 317
5.2 SQLite数据库 318
5.2.1 SQLite数据库概述 318
5.2.2 SQLite数据库的安装 319
5.2.3 SQLite数据库的基本命令 321
5.2.4 SQLite数据库的管理命令 323
5.2.5 SQLite数据库的API函数 325
5.2.6 SQLite数据库的实例分析 327
5.3 mSQL数据库 330
5.3.1 mSQL数据库的简介 330
5.3.2 mSQL数据库的安装 330
5.3.3 mSQL数据库的常用API函数 332
5.3.4 mSQL数据库的使用 332
5.4 Berkeley DB数据库 334
5.4.1 Berkeley DB数据库的简介 334
5.4.2 Berkeley DB数据库的安装 335
习题五 336
第6章 嵌入式Linux网络编程 337
6.1网络协议概述 337
6.1.1网络协议参考模型 337
6.1.2 TCP/IP协议族 338
6.1.3 TCP和UDP 339
6.2网络编程基础 343
6.2.1 Socket概述 343
6.2.2基本数据结构和函数 343
6.2.3 Socket基础编程 346
6.3 TCP通信编程 348
6.3.1 TCP通信过程 348
6.3.2 TCP Server程序设计 354
6.3.3 TCP Client程序设计 356
6.3.4 TCP程序测试过程 358
6.4 UDP通信编程 358
6.4.1 UDP通信过程 358
6.4.2 UDP服务器端程序设计 359
6.4.3 UDP客户端程序设计 361
6.4.4 UDP程序测试过程 363
习题六 363
第7章 嵌入式操作系统实验 364
7.1 Linux常用命令 364
7.2 Linux下C语言开发环境 370
7.3文件I/O及进程控制编程 375
7.4进程通信以及多线程编程 381
7.5嵌入式Linux开发环境 391
7.6 BootLoader内核和根文件系统 395
7.7驱动程序设计 403
7.8 MiniGUI应用编程 407
7.9 QT应用编程 409
7.10嵌入式数据库 410
7.11网络通信编程 412
参考文献 415