第1章 嵌入式系统概述及项目分析 1
1.1 嵌入式Linux系统概述 1
1.1.1 嵌入式Linux简介 1
1.1.2 嵌入式系统中使用Linux的优势 1
1.2 农业信息采集控制系统总体分析设计 2
1.2.1 农业信息采集控制系统介绍 2
1.2.2 农业信息采集控制系统硬件设计 3
1.2.3 农业信息采集控制系统软件设计 9
习题1 11
第2章 嵌入式Linux开发环境 12
2.1 项目目标 12
2.2 Linux Shell与常用命令 12
2.2.1 Linux Shell简介 12
2.2.2 Linux常用命令与使用 14
2.3 Linux文本编辑器vi 37
2.3.1 vi编辑器简介 37
2.3.2 vi的操作模式 38
2.3.3 命令模式命令 39
2.3.4 底行模式命令 40
2.4 Shell脚本编程 41
2.4.1 Shell脚本的建立与执行 41
2.4.2 变量 41
2.4.3 命令的执行顺序 44
2.4.4 命令替换 45
2.4.5 算术运算 45
2.4.6 Shell特殊字符 46
2.4.7 位置参数 47
2.4.8 条件测试 48
2.4.9 控制流结构 50
2.5 嵌入式Linux开发工具 56
2.5.1 编译工具gcc 56
2.5.2 工程管理Makefile 62
2.5.3 调试工具gdb 66
2.5.4 交叉编译工具链 70
2.6 嵌入式Linux开发环境搭建 71
2.6.1 安装Linux操作系统 71
2.6.2 超级终端minicom 89
2.6.3 网络文件系统NFS 90
2.6.4 简单文件传输协议TFTP 92
2.6.5 安装交叉编译工具 94
习题2 96
第3章 嵌入式Linux系统移植 97
3.1 项目目标 97
3.2 Bootloader移植 97
3.2.1 Bootloader简介 97
3.2.2 Bootloader启动流程 98
3.2.3 Bootloader的工作模式 98
3.2.4 常用Bootloader介绍 99
3.2.5 U-Boot工程简介 100
3.2.6 U-Boot源码结构 100
3.2.7 U-Boot的编译 101
3.2.8 U-Boot的移植 104
3.2.9 U-Boot的使用 112
3.3 嵌入式Linux内核移植 113
3.3.1 Linux内核结构 113
3.3.2 Linux内核配置 116
3.3.3 嵌入式Linux内核移植 123
3.4 嵌入式Linux文件系统移植 136
3.4.1 Linux文件系统介绍 136
3.4.2 常见的嵌入式文件系统 138
3.4.3 嵌入式系统存储设备及其管理机制 140
3.4.4 Busybox 141
3.4.5 嵌入式Linux文件系统移植 142
习题3 149
第4章 嵌入式Linux驱动开发 150
4.1 项目目标 150
4.2 Linux设备驱动程序概述 150
4.2.1 驱动程序介绍 150
4.2.2 内核态和用户态 151
4.2.3 设备文件 151
4.3 模块的构造与运行 153
4.3.1 Linux的模块化机制 153
4.3.2 模块操作相关命令 153
4.3.3 内核模块的程序结构 155
4.3.4 内核模块编译和运行 155
4.4 内核调试技术 157
4.4.1 打印调试 157
4.4.2 查询调试 158
4.4.3 使用strace命令进行调试 158
4.5 字符设备驱动 160
4.5.1 确定设备号 160
4.5.2 字符设备的注册与注销 161
4.5.3 cdev结构体 163
4.5.4 创建字符设备节点 164
4.5.5 设备驱动程序接口 165
4.5.6 交互数据 169
4.5.7 一个简单的字符设备驱动实例 169
4.5.8 设备I/O端口和I/O内存的访问 175
4.6 项目驱动开发实例 177
4.6.1 LED设备驱动开发 177
4.6.2 矩阵键盘驱动开发 183
4.6.3 温湿度传感器驱动开发 192
4.6.4 大气压力传感器应用程序 202
4.6.5 直流电机驱动开发 206
4.6.6 继电器开关驱动开发 212
习题4 216
第5章 嵌入式Linux文件编程 217
5.1 项目目标 217
5.2 文件编程概述 217
5.2.1 文件描述符 217
5.2.2 系统调用 217
5.2.3 应用程序编程接口 218
5.3 基于文件描述符的文件I/O操作 218
5.3.1 文件的创建、打开和关闭 218
5.3.2 文件的读写操作 222
5.3.3 文件定位 225
5.3.4 设备控制接口函数ioctl 227
5.4 嵌入式Linux串口应用编程 228
5.4.1 串口概述 228
5.4.2 串口属性设置 230
5.4.3 串口的使用 240
5.5 农业信息采集控制系统GPS通信 242
5.5.1 GPS概述 242
5.5.2 GPS通信实现 243
习题5 249
第6章 嵌入式Linux时间编程 250
6.1 项目目标 250
6.2 时间类型 250
6.3 常用时间函数 251
6.3.1 返回时间函数 251
6.3.2 时间转换函数 251
6.3.3 时间格式化函数 252
6.3.4 获取精确时间函数 253
6.4 农业信息采集控制系统中时间的应用 255
习题6 255
第7章 进程控制程序设计 256
7.1 项目目标 256
7.2 进程控制概述 256
7.2.1 进程及相关概念 256
7.2.2 进程控制块和标识符 257
7.2.3 进程调度 258
7.2.4 进程同步互斥 258
7.2.5 Linux下的进程管理常用命令 259
7.3 Linux进程控制编程 261
7.3.1 获取进程ID 261
7.3.2 进程的创建 261
7.3.3 进程终止 264
7.3.4 进程等待 265
7.3.5 exec函数族 268
7.4 Linux守护进程 270
7.4.1 守护进程的编写 271
7.4.2 守护进程实例 272
7.5 农业信息采集控制系统主程序设计 273
7.5.1 农业信息采集控制系统主程序流程 273
7.5.2 农业信息采集控制系统主程序 274
习题7 277
第8章 进程间通信 278
8.1 项目目标 278
8.2 进程间通信概述 278
8.3 管道通信 279
8.3.1 无名管道 279
8.3.2 命名管道 282
8.4 信号通信 286
8.4.1 信号的定义 286
8.4.2 信号来源 287
8.4.3 信号的种类 287
8.4.4 信号的处理 288
8.4.5 信号的安装 288
8.4.6 信号发送 293
8.4.7 信号通信总结 299
8.5 信号量通信 300
8.5.1 信号量概述 300
8.5.2 信号量的使用 300
8.5.3 信号量控制函数 301
8.5.4 信号量应用举例 304
8.6 共享内存 309
8.6.1 共享内存概述 309
8.6.2 共享内存的操作 309
8.6.3 共享内存应用 311
8.7 消息队列 315
8.7.1 消息队列概述 315
8.7.2 消息队列操作 315
8.8 农业信息采集控制系统中进程间通信的应用 321
8.8.1 信号通信在农业信息采集系统中的应用 321
8.8.2 管道在农业信息采集系统中的应用 322
习题8 324
第9章 多线程编程 325
9.1 项目目标 325
9.2 Linux多线程概述 325
9.3 Linux多线程编程 326
9.3.1 Linux线程的基本函数 327
9.3.2 多线程实例分析 328
9.3.3 修改线程的属性 330
9.4 线程的并发访问 333
9.4.1 互斥锁 333
9.4.2 信号量线程控制 335
9.5 农业信息采集控制系统多线程应用 339
习题9 341
第10章 嵌入式Linux网络编程 343
10.1 项目目标 343
10.2 TCP/IP概述 343
10.2.1 OSI网络模型 343
10.2.2 TCP/IP概述 346
10.3 Linux网络编程概述 356
10.3.1 套接字基础 356
10.3.2 网络字节顺序转换 358
10.3.3 多字节数据处理 360
10.3.4 IP地址格式转换 362
10.3.5 端口 364
10.4 TCP socket编程 365
10.4.1 常用函数介绍 365
10.4.2 TCP网络编程流程 373
10.5 UDP socket编程 375
10.5.1 UDP socket编程主要函数 376
10.5.2 UDP socket编程流程 378
10.6 农业信息采集控制系统数据上传的实现 379
10.6.1 基于TCP协议的农业信息采集控制系统数据上传 379
10.6.2 基于UDP协议的农业信息采集控制系统数据上传 386
习题10 389
第11章 嵌入式GUI程序开发 390
11.1 项目目标 390
11.2 Qt编程基础 390
11.2.1 Qt对象模型 390
11.2.2 事件系统 397
11.2.3 一个完整的Qt程序 405
11.3 Qt/Embedded环境配置 407
11.3.1 获得源码 408
11.3.2 编译Qt-X11环境 408
11.3.3 安装Qt/Embedded环境 409
11.4 Qt Designer介绍 411
11.5 农业信息采集控制系统设计 415
11.5.1 窗口部件 415
11.5.2 布局管理 418
11.5.3 农业信息采集控制系统终端GUI设计 420
11.5.4 农业信息采集控制系统GUI显示与控制的实现 421
习题11 426
附录A 农业信息采集控制系统源程序 428
参考文献 441